Remove libcurl_on_cronet and dependencies.

This project was never finished, and we have no current plans to
continue development.

Bug: 973603,1055065
Change-Id: I929730aec39d84ea3c31e5d726d7b0af6d9f15cb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2079205
Reviewed-by: Zhongyi Shi <zhongyi@chromium.org>
Reviewed-by: Misha Efimov <mef@chromium.org>
Commit-Queue: Caleb Raitto <caraitto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#745626}
diff --git a/components/cronet/libcurl_on_cronet/OWNERS b/components/cronet/libcurl_on_cronet/OWNERS
deleted file mode 100644
index 611895d..0000000
--- a/components/cronet/libcurl_on_cronet/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-caraitto@chromium.org
-pauljensen@chromium.org
diff --git a/components/cronet/libcurl_on_cronet/README.md b/components/cronet/libcurl_on_cronet/README.md
deleted file mode 100644
index 2bc2222..0000000
--- a/components/cronet/libcurl_on_cronet/README.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# libcurl_on_cronet - libcurl wrapper on Cronet native API
-
-The libcurl_on_cronet library is a C++ wrapper library implemented via the
-Cronet Native C API, providing synchronous behavior for URL requests using
-the Chrome Network Stack. It uses the
-[libcurl-easy](https://curl.haxx.se/libcurl/c/libcurl-easy.html) C89 interface,
-the subset of libcurl's C API that supports synchronous URL transfers, and is
-implemented in C++ 14.
-
-## Overview
-
-The Cronet library provides a cross-platform Native API on top of the Chrome
-Network Stack, making it possible to use advanced protocols that would
-otherwise be difficult for an application to implement from scratch. The base
-asynchronous API offered by Cronet requires little overhead on top of the
-Chrome Network Stack, optimizing performance. However, it is non-trivial
-to get started using it for URL transfers, as it requires implementation of
-asynchronous components such as executors and callbacks regardless of whether
-the consuming application has or supports asynchronous, multithreaded behavior.
-
-To lower the bar for trying out Cronet, this library supports synchronous URL
-requests by implementing the underlying details required by the base
-asynchronous API. It defines a minimally functional executor and
-callback and handles management of the Cronet Engine and UrlRequest objects,
-supporting a subset of the configuration options available in the
-libcurl-easy API. This allows developers who are already familiar with libcurl 
-to more easily try out Cronet, without having to initially learn a new interface 
-and its corresponding workflow.
-
-### Command Line Tool
-
-There are also plans to develop a command line tool that can invoke a subset of
-the implemented API functions in the terminal. This would aid in debugging
-networking issues or test the functionality of the Chrome Network Stack in an
-easily reproducible manner, acting as a lightweight end-to-end integration test
-of the stack without the bulk of the rest of the Chromium browser. With a
-simpler binary it would be easier to narrow down the possible points of failure
-and pinpoint the root cause of a specific networking issue.
-
-This tool uses the same command line flags as the curl command supported by
-libcurl, supporting only a smaller subset of curl's available options. This
-smaller binary would be easier to debug and maintain while still maintaining
-a sense of familiarity, allowing for easy compatibility with the
-["copy as cURL"](https://developers.google.com/web/updates/2015/05/replay-a-network-request-in-curl)
-Chromium devtools feature.
-
-This library is currently in active development.
-
-## Details
-
-TODO(michelleroxas): Add more description to this as the project details
-become more fleshed out.
diff --git a/components/cronet/third_party/curl_headers/BUILD.gn b/components/cronet/third_party/curl_headers/BUILD.gn
deleted file mode 100644
index b97609d..0000000
--- a/components/cronet/third_party/curl_headers/BUILD.gn
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2019 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-config("curl_headers_include_config") {
-  include_dirs = [ "//components/cronet/third_party/curl_headers/include" ]
-}
-
-source_set("curl_headers") {
-  configs += [ ":curl_headers_include_config" ]
-  public_configs = [ ":curl_headers_include_config" ]
-
-  public = [
-    "include/curl/curl.h",
-    "include/curl/curlver.h",
-    "include/curl/easy.h",
-    "include/curl/mprintf.h",
-    "include/curl/multi.h",
-    "include/curl/stdcheaders.h",
-    "include/curl/system.h",
-    "include/curl/typecheck-gcc.h",
-    "include/curl/urlapi.h",
-  ]
-}
diff --git a/components/cronet/third_party/curl_headers/COPYING b/components/cronet/third_party/curl_headers/COPYING
deleted file mode 100644
index 3528bd7..0000000
--- a/components/cronet/third_party/curl_headers/COPYING
+++ /dev/null
@@ -1,22 +0,0 @@
-COPYRIGHT AND PERMISSION NOTICE
-
-Copyright (c) 1996 - 2019, Daniel Stenberg, <daniel@haxx.se>, and many
-contributors, see the THANKS file.
-
-All rights reserved.
-
-Permission to use, copy, modify, and distribute this software for any purpose
-with or without fee is hereby granted, provided that the above copyright
-notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
-NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
-OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder shall not
-be used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization of the copyright holder.
diff --git a/components/cronet/third_party/curl_headers/LICENSE b/components/cronet/third_party/curl_headers/LICENSE
deleted file mode 100644
index 3528bd7..0000000
--- a/components/cronet/third_party/curl_headers/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-COPYRIGHT AND PERMISSION NOTICE
-
-Copyright (c) 1996 - 2019, Daniel Stenberg, <daniel@haxx.se>, and many
-contributors, see the THANKS file.
-
-All rights reserved.
-
-Permission to use, copy, modify, and distribute this software for any purpose
-with or without fee is hereby granted, provided that the above copyright
-notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
-NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
-OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder shall not
-be used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization of the copyright holder.
diff --git a/components/cronet/third_party/curl_headers/OWNERS b/components/cronet/third_party/curl_headers/OWNERS
deleted file mode 100644
index bc62f31..0000000
--- a/components/cronet/third_party/curl_headers/OWNERS
+++ /dev/null
@@ -1,4 +0,0 @@
-pauljensen@chromium.org
-caraitto@chromium.org
-
-# Component: Internals>Network>Library
diff --git a/components/cronet/third_party/curl_headers/README.chromium b/components/cronet/third_party/curl_headers/README.chromium
deleted file mode 100644
index e6e9bc3..0000000
--- a/components/cronet/third_party/curl_headers/README.chromium
+++ /dev/null
@@ -1,15 +0,0 @@
-Name: libcurl (headers and examples only)
-Short Name: libcurl
-URL: https://github.com/curl/curl
-Version: 7.65.1
-Revision: 69248b58f649e35b09a126c12781353e3471f5c6
-License: MIT/X11-like
-License File: NOT_SHIPPED
-Security Critical: no
-Description:
-Headers and examples from the libcurl repository. Useful for creating
-alternative implementations of the libcurl API.
-Local Modifications:
-Only includes COPYING, include/, and docs/examples/ -- all other files and
-directories from the original repository are not included -- DOES NOT contain
-the implementation of the libcurl API.
diff --git a/components/cronet/third_party/curl_headers/docs/examples/.gitignore b/components/cronet/third_party/curl_headers/docs/examples/.gitignore
deleted file mode 100644
index 3873712..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/.gitignore
+++ /dev/null
@@ -1,91 +0,0 @@
-10-at-a-time
-anyauthput
-certinfo
-chkspeed
-cookie_interface
-debug
-externalsocket
-fileupload
-fopen
-ftp-wildcard
-ftpget
-ftpgetinfo
-ftpgetresp
-ftpsget
-ftpupload
-ftpuploadfrommem
-ftpuploadresume
-getinfo
-getinmemory
-getredirect
-http-post
-http2-download
-http2-pushinmemory
-http2-serverpush
-http2-upload
-httpcustomheader
-httpput
-https
-imap
-imap-append
-imap-copy
-imap-create
-imap-delete
-imap-examine
-imap-fetch
-imap-list
-imap-lsub
-imap-multi
-imap-noop
-imap-search
-imap-ssl
-imap-store
-imap-tls
-multi-app
-multi-debugcallback
-multi-double
-multi-formadd
-multi-post
-multi-single
-parseurl
-persistent
-pop3-dele
-pop3-list
-pop3-multi
-pop3-noop
-pop3-retr
-pop3-ssl
-pop3-stat
-pop3-tls
-pop3-top
-pop3-uidl
-pop3s
-pop3slist
-post-callback
-postinmemory
-postit2
-postit2-formadd
-progressfunc
-resolve
-rtsp
-sendrecv
-sepheaders
-sftpget
-sftpuploadresume
-shared-connection-cache
-simple
-simplepost
-simplesmtp
-simplessl
-smtp-expn
-smtp-mail
-smtp-mime
-smtp-multi
-smtp-ssl
-smtp-tls
-smtp-vrfy
-sslbackend
-urlapi
-url2file
-usercertinmem
-xmlstream
diff --git a/components/cronet/third_party/curl_headers/docs/examples/10-at-a-time.c b/components/cronet/third_party/curl_headers/docs/examples/10-at-a-time.c
deleted file mode 100644
index b50eaa6..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/10-at-a-time.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Download many files in parallel, in the same thread.
- * </DESC>
- */
-
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#ifndef WIN32
-#  include <unistd.h>
-#endif
-#include <curl/curl.h>
-
-static const char *urls[] = {
-  "https://www.microsoft.com",
-  "https://opensource.org",
-  "https://www.google.com",
-  "https://www.yahoo.com",
-  "https://www.ibm.com",
-  "https://www.mysql.com",
-  "https://www.oracle.com",
-  "https://www.ripe.net",
-  "https://www.iana.org",
-  "https://www.amazon.com",
-  "https://www.netcraft.com",
-  "https://www.heise.de",
-  "https://www.chip.de",
-  "https://www.ca.com",
-  "https://www.cnet.com",
-  "https://www.mozilla.org",
-  "https://www.cnn.com",
-  "https://www.wikipedia.org",
-  "https://www.dell.com",
-  "https://www.hp.com",
-  "https://www.cert.org",
-  "https://www.mit.edu",
-  "https://www.nist.gov",
-  "https://www.ebay.com",
-  "https://www.playstation.com",
-  "https://www.uefa.com",
-  "https://www.ieee.org",
-  "https://www.apple.com",
-  "https://www.symantec.com",
-  "https://www.zdnet.com",
-  "https://www.fujitsu.com/global/",
-  "https://www.supermicro.com",
-  "https://www.hotmail.com",
-  "https://www.ietf.org",
-  "https://www.bbc.co.uk",
-  "https://news.google.com",
-  "https://www.foxnews.com",
-  "https://www.msn.com",
-  "https://www.wired.com",
-  "https://www.sky.com",
-  "https://www.usatoday.com",
-  "https://www.cbs.com",
-  "https://www.nbc.com/",
-  "https://slashdot.org",
-  "https://www.informationweek.com",
-  "https://apache.org",
-  "https://www.un.org",
-};
-
-#define MAX_PARALLEL 10 /* number of simultaneous transfers */
-#define NUM_URLS sizeof(urls)/sizeof(char *)
-
-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;
-}
-
-static void add_transfer(CURLM *cm, int i)
-{
-  CURL *eh = curl_easy_init();
-  curl_easy_setopt(eh, CURLOPT_WRITEFUNCTION, write_cb);
-  curl_easy_setopt(eh, CURLOPT_URL, urls[i]);
-  curl_easy_setopt(eh, CURLOPT_PRIVATE, urls[i]);
-  curl_multi_add_handle(cm, eh);
-}
-
-int main(void)
-{
-  CURLM *cm;
-  CURLMsg *msg;
-  unsigned int transfers = 0;
-  int msgs_left = -1;
-  int still_alive = 1;
-
-  curl_global_init(CURL_GLOBAL_ALL);
-  cm = curl_multi_init();
-
-  /* Limit the amount of simultaneous connections curl should allow: */
-  curl_multi_setopt(cm, CURLMOPT_MAXCONNECTS, (long)MAX_PARALLEL);
-
-  for(transfers = 0; transfers < MAX_PARALLEL; transfers++)
-    add_transfer(cm, transfers);
-
-  do {
-    curl_multi_perform(cm, &still_alive);
-
-    while((msg = curl_multi_info_read(cm, &msgs_left))) {
-      if(msg->msg == CURLMSG_DONE) {
-        char *url;
-        CURL *e = msg->easy_handle;
-        curl_easy_getinfo(msg->easy_handle, CURLINFO_PRIVATE, &url);
-        fprintf(stderr, "R: %d - %s <%s>\n",
-                msg->data.result, curl_easy_strerror(msg->data.result), url);
-        curl_multi_remove_handle(cm, e);
-        curl_easy_cleanup(e);
-      }
-      else {
-        fprintf(stderr, "E: CURLMsg (%d)\n", msg->msg);
-      }
-      if(transfers < NUM_URLS)
-        add_transfer(cm, transfers++);
-    }
-    if(still_alive)
-      curl_multi_wait(cm, NULL, 0, 1000, NULL);
-
-  } while(still_alive || (transfers < NUM_URLS));
-
-  curl_multi_cleanup(cm);
-  curl_global_cleanup();
-
-  return EXIT_SUCCESS;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/Makefile.am b/components/cronet/third_party/curl_headers/docs/examples/Makefile.am
deleted file mode 100644
index 53867cb..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/Makefile.am
+++ /dev/null
@@ -1,70 +0,0 @@
-#***************************************************************************
-#                                  _   _ ____  _
-#  Project                     ___| | | |  _ \| |
-#                             / __| | | | |_) | |
-#                            | (__| |_| |  _ <| |___
-#                             \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
-#
-###########################################################################
-
-AUTOMAKE_OPTIONS = foreign nostdinc
-
-EXTRA_DIST = README Makefile.example Makefile.inc Makefile.m32 \
-  Makefile.netware makefile.dj $(COMPLICATED_EXAMPLES)
-
-# 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
-# being currently built and tested are searched before the library which
-# might possibly already be installed in the system.
-#
-# $(top_srcdir)/include is for libcurl's external include files
-
-AM_CPPFLAGS = -I$(top_srcdir)/include
-
-LIBDIR = $(top_builddir)/lib
-
-# Avoid libcurl obsolete stuff
-AM_CPPFLAGS += -DCURL_NO_OLDIES
-
-if USE_CPPFLAG_CURL_STATICLIB
-AM_CPPFLAGS += -DCURL_STATICLIB
-endif
-
-# Prevent LIBS from being used for all link targets
-LIBS = $(BLANK_AT_MAKETIME)
-
-# Dependencies
-if USE_EXPLICIT_LIB_DEPS
-LDADD = $(LIBDIR)/libcurl.la @LIBCURL_LIBS@
-else
-LDADD = $(LIBDIR)/libcurl.la
-endif
-
-# This might hold -Werror
-CFLAGS += @CURL_CFLAG_EXTRAS@
-
-# Makefile.inc provides the check_PROGRAMS and COMPLICATED_EXAMPLES defines
-include Makefile.inc
-
-all: $(check_PROGRAMS)
-
-CHECKSRC = $(CS_$(V))
-CS_0 = @echo "  RUN     " $@;
-CS_1 =
-CS_ = $(CS_0)
-
-checksrc:
-	$(CHECKSRC)(@PERL@ $(top_srcdir)/lib/checksrc.pl -ASNPRINTF $(srcdir)/*.c)
diff --git a/components/cronet/third_party/curl_headers/docs/examples/Makefile.example b/components/cronet/third_party/curl_headers/docs/examples/Makefile.example
deleted file mode 100644
index 17e614e..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/Makefile.example
+++ /dev/null
@@ -1,53 +0,0 @@
-#***************************************************************************
-#                                  _   _ ____  _
-#  Project                     ___| | | |  _ \| |
-#                             / __| | | | |_) | |
-#                            | (__| |_| |  _ <| |___
-#                             \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, 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.
-#
-###########################################################################
-
-# What to call the final executable
-TARGET = example
-
-# Which object files that the executable consists of
-OBJS= ftpget.o
-
-# What compiler to use
-CC = gcc
-
-# Compiler flags, -g for debug, -c to make an object file
-CFLAGS = -c -g
-
-# This should point to a directory that holds libcurl, if it isn't
-# in the system's standard lib dir
-# We also set a -L to include the directory where we have the openssl
-# libraries
-LDFLAGS = -L/home/dast/lib -L/usr/local/ssl/lib
-
-# We need -lcurl for the curl stuff
-# We need -lsocket and -lnsl when on Solaris
-# We need -lssl and -lcrypto when using libcurl with SSL support
-# We need -lpthread for the pthread example
-LIBS = -lcurl -lsocket -lnsl -lssl -lcrypto
-
-# Link the target with all objects and libraries
-$(TARGET) : $(OBJS)
-	$(CC)  -o $(TARGET) $(OBJS) $(LDFLAGS) $(LIBS)
-
-# Compile the source files into object files
-ftpget.o : ftpget.c
-	$(CC) $(CFLAGS) $<
diff --git a/components/cronet/third_party/curl_headers/docs/examples/Makefile.inc b/components/cronet/third_party/curl_headers/docs/examples/Makefile.inc
deleted file mode 100644
index 8dd55b9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/Makefile.inc
+++ /dev/null
@@ -1,47 +0,0 @@
-#***************************************************************************
-#                                  _   _ ____  _
-#  Project                     ___| | | |  _ \| |
-#                             / __| | | | |_) | |
-#                            | (__| |_| |  _ <| |___
-#                             \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
-#
-###########################################################################
-
-# These are all libcurl example programs to be test compiled
-check_PROGRAMS = 10-at-a-time anyauthput cookie_interface debug fileupload \
-  fopen ftpget ftpgetresp ftpupload getinfo getinmemory http-post httpput  \
-  https multi-app multi-debugcallback multi-double multi-post multi-single \
-  persistent post-callback postit2 sepheaders simple simplepost simplessl  \
-  sendrecv httpcustomheader certinfo chkspeed ftpgetinfo ftp-wildcard      \
-  smtp-mail smtp-mime smtp-multi smtp-ssl smtp-tls smtp-vrfy smtp-expn     \
-  rtsp externalsocket resolve progressfunc pop3-retr pop3-list pop3-uidl   \
-  pop3-dele pop3-top pop3-stat pop3-noop pop3-ssl pop3-tls pop3-multi      \
-  imap-list imap-lsub imap-fetch imap-store imap-append imap-examine       \
-  imap-search imap-create imap-delete imap-copy imap-noop imap-ssl         \
-  imap-tls imap-multi url2file sftpget ftpsget postinmemory http2-download \
-  http2-upload http2-serverpush getredirect ftpuploadfrommem               \
-  ftpuploadresume sslbackend postit2-formadd multi-formadd                 \
-  shared-connection-cache sftpuploadresume http2-pushinmemory parseurl     \
-  urlapi
-
-# These examples require external dependencies that may not be commonly
-# available on POSIX systems, so don't bother attempting to compile them here.
-COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c \
-  ghiper.c hiperfifo.c htmltidy.c multithread.c opensslthreadlock.c \
-  sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \
-  smooth-gtk-thread.c version-check.pl href_extractor.c asiohiper.cpp \
-  multi-uv.c xmlstream.c usercertinmem.c sessioninfo.c \
-  threaded-shared-conn.c crawler.c ephiperfifo.c
diff --git a/components/cronet/third_party/curl_headers/docs/examples/Makefile.m32 b/components/cronet/third_party/curl_headers/docs/examples/Makefile.m32
deleted file mode 100644
index 160afb6..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/Makefile.m32
+++ /dev/null
@@ -1,366 +0,0 @@
-#***************************************************************************
-#                                  _   _ ____  _
-#  Project                     ___| | | |  _ \| |
-#                             / __| | | | |_) | |
-#                            | (__| |_| |  _ <| |___
-#                             \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
-#
-#***************************************************************************
-
-###########################################################################
-#
-## 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)
-##
-## 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
-#
-###########################################################################
-
-# 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 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 libmetalink package.
-ifndef LIBMETALINK_PATH
-LIBMETALINK_PATH = ../../../libmetalink-0.1.3
-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 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
-
-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!
-
-ifeq ($(findstring -dyn,$(CFG)),-dyn)
-DYN = 1
-endif
-ifeq ($(findstring -ares,$(CFG)),-ares)
-ARES = 1
-endif
-ifeq ($(findstring -rtmp,$(CFG)),-rtmp)
-RTMP = 1
-SSL = 1
-ZLIB = 1
-endif
-ifeq ($(findstring -ssh2,$(CFG)),-ssh2)
-SSH2 = 1
-SSL = 1
-ZLIB = 1
-endif
-ifeq ($(findstring -ssl,$(CFG)),-ssl)
-SSL = 1
-endif
-ifeq ($(findstring -zlib,$(CFG)),-zlib)
-ZLIB = 1
-endif
-ifeq ($(findstring -brotli,$(CFG)),-brotli)
-BROTLI = 1
-endif
-ifeq ($(findstring -idn2,$(CFG)),-idn2)
-IDN2 = 1
-endif
-ifeq ($(findstring -winidn,$(CFG)),-winidn)
-WINIDN = 1
-endif
-ifeq ($(findstring -sspi,$(CFG)),-sspi)
-SSPI = 1
-endif
-ifeq ($(findstring -ldaps,$(CFG)),-ldaps)
-LDAPS = 1
-endif
-ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
-IPV6 = 1
-endif
-ifeq ($(findstring -metalink,$(CFG)),-metalink)
-METALINK = 1
-endif
-ifeq ($(findstring -winssl,$(CFG)),-winssl)
-WINSSL = 1
-SSPI = 1
-endif
-ifeq ($(findstring -nghttp2,$(CFG)),-nghttp2)
-NGHTTP2 = 1
-endif
-
-INCLUDES = -I. -I$(PROOT) -I$(PROOT)/include -I$(PROOT)/lib
-
-ifdef DYN
-  curl_DEPENDENCIES = $(PROOT)/lib/libcurldll.a $(PROOT)/lib/libcurl.dll
-  curl_LDADD = -L$(PROOT)/lib -lcurldll
-else
-  curl_DEPENDENCIES = $(PROOT)/lib/libcurl.a
-  curl_LDADD = -L$(PROOT)/lib -lcurl
-  CFLAGS += -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 WINSSL
-    ifndef DYN
-      curl_LDADD += -lbcrypt -lcrypt32
-    endif
-  endif
-endif
-ifdef SSL
-  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 WINSSL
-  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 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 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 METALINK
-  INCLUDES += -I"$(LIBMETALINK_PATH)/include"
-  CFLAGS += -DUSE_METALINK
-  curl_LDADD += -L"$(LIBMETALINK_PATH)/lib" -lmetalink
-  ifndef DYN
-    ifeq ($(findstring libexpat_metalink_parser.o,$(shell $(AR) t "$(LIBMETALINK_PATH)/lib/libmetalink.a")),libexpat_metalink_parser.o)
-      curl_LDADD += -L"$(LIBEXPAT_PATH)/lib" -lexpat
-    else
-      curl_LDADD += -L"$(LIBXML2_PATH)/lib" -lxml2
-    endif
-  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
-
-# 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
-
-.PRECIOUS: %.o
-
-
-all: $(check_PROGRAMS)
-
-%.exe: %.o $(curl_DEPENDENCIES)
-	$(CC) $(LDFLAGS) -o $@ $< $(curl_LDADD)
-
-%.o: %.c
-	$(CC) $(INCLUDES) $(CFLAGS) -c $<
-
-%.res: %.rc
-	$(RC) $(RCFLAGS) -i $< -o $@
-
-clean:
-	@$(call DEL, $(check_PROGRAMS:.exe=.o))
-
-distclean vclean: clean
-	@$(call DEL, $(check_PROGRAMS))
diff --git a/components/cronet/third_party/curl_headers/docs/examples/Makefile.netware b/components/cronet/third_party/curl_headers/docs/examples/Makefile.netware
deleted file mode 100644
index 1f50a926..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/Makefile.netware
+++ /dev/null
@@ -1,415 +0,0 @@
-#################################################################
-#
-## 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
diff --git a/components/cronet/third_party/curl_headers/docs/examples/README b/components/cronet/third_party/curl_headers/docs/examples/README
deleted file mode 100644
index 078cabe..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/README
+++ /dev/null
@@ -1,38 +0,0 @@
-                                  _   _ ____  _
-                              ___| | | |  _ \| |
-                             / __| | | | |_) | |
-                            | (__| |_| |  _ <| |___
-                             \___|\___/|_| \_\_____|
-
-This directory is for libcurl programming examples. They are meant to show
-some simple steps on how you can build your own application to take full
-advantage of libcurl.
-
-If you end up with other small but still useful example sources, please mail
-them for submission in future packages and on the web site.
-
-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.
-
-Most examples should build fine using a command line like this:
-
-  $ `curl-config --cc --cflags --libs` -o example example.c
-
-Some compilers don't like having the arguments in this order but instead
-want you do reorganize them like:
-
-  $ `curl-config --cc` -o example example.c `curl-config --cflags --libs`
-
-*PLEASE* do not use the curl.haxx.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 doesn't mean that the URLs work or that we expect you to
-actually torture our web site with your tests!  Thanks.
-
-EXAMPLES
-
-Each example source code file is designed to be and work stand-alone and
-rather self-explanatory. The examples may at times lack the level of error
-checks you need in a real world, but that is then only for the sake of
-readability: to make the code smaller and easier to follow.
diff --git a/components/cronet/third_party/curl_headers/docs/examples/adddocsref.pl b/components/cronet/third_party/curl_headers/docs/examples/adddocsref.pl
deleted file mode 100755
index ce6f582..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/adddocsref.pl
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env perl
-
-# pass files as argument(s)
-
-my $docroot="https://curl.haxx.se/libcurl/c";
-
-for $f (@ARGV) {
-    open(NEW, ">$f.new");
-    open(F, "<$f");
-    while(<F>) {
-        my $l = $_;
-        if($l =~ /\/* $docroot/) {
-            # just ignore preciously added refs
-        }
-        elsif($l =~ /^( *).*curl_easy_setopt\([^,]*, *([^ ,]*) *,/) {
-            my ($prefix, $anc) = ($1, $2);
-            $anc =~ s/_//g;
-            print NEW "$prefix/* $docroot/curl_easy_setopt.html#$anc */\n";
-            print NEW $l;
-        }
-        elsif($l =~ /^( *).*(curl_([^\(]*))\(/) {
-            my ($prefix, $func) = ($1, $2);
-            print NEW "$prefix/* $docroot/$func.html */\n";
-            print NEW $l;
-        }
-        else {
-            print NEW $l;
-        }
-    }
-    close(F);
-    close(NEW);
-
-    system("mv $f $f.org");
-    system("mv $f.new $f");
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/anyauthput.c b/components/cronet/third_party/curl_headers/docs/examples/anyauthput.c
deleted file mode 100644
index 14da10c..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/anyauthput.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * HTTP PUT upload with authentiction using "any" method. libcurl picks the
- * one the server supports/wants.
- * </DESC>
- */
-#include <stdio.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <curl/curl.h>
-
-#ifdef WIN32
-#  include <io.h>
-#  define READ_3RD_ARG unsigned int
-#else
-#  include <unistd.h>
-#  define READ_3RD_ARG size_t
-#endif
-
-#if LIBCURL_VERSION_NUM < 0x070c03
-#error "upgrade your libcurl to no less than 7.12.3"
-#endif
-
-/*
- * This example shows a HTTP PUT operation with authentiction using "any"
- * 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
- * function.
- *
- * This example also uses its own read callback.
- */
-
-/* ioctl callback function */
-static curlioerr my_ioctl(CURL *handle, curliocmd cmd, void *userp)
-{
-  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;
-
-    break;
-
-  default: /* ignore unknown commands */
-    return CURLIOE_UNKNOWNCMD;
-  }
-  return CURLIOE_OK; /* success! */
-}
-
-/* read callback function, fread() look alike */
-static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
-{
-  ssize_t retcode;
-  curl_off_t nread;
-
-  int *fdp = (int *)stream;
-  int fd = *fdp;
-
-  retcode = read(fd, ptr, (READ_3RD_ARG)(size * nmemb));
-
-  nread = (curl_off_t)retcode;
-
-  fprintf(stderr, "*** We read %" CURL_FORMAT_CURL_OFF_T
-          " bytes from file\n", nread);
-
-  return retcode;
-}
-
-int main(int argc, char **argv)
-{
-  CURL *curl;
-  CURLcode res;
-  int hd;
-  struct stat file_info;
-
-  char *file;
-  char *url;
-
-  if(argc < 3)
-    return 1;
-
-  file = argv[1];
-  url = argv[2];
-
-  /* get the file size of the local file */
-  hd = open(file, O_RDONLY);
-  fstat(hd, &file_info);
-
-  /* In windows, this will init the winsock stuff */
-  curl_global_init(CURL_GLOBAL_ALL);
-
-  /* get a curl handle */
-  curl = curl_easy_init();
-  if(curl) {
-    /* we want to use our own read function */
-    curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
-
-    /* which file to upload */
-    curl_easy_setopt(curl, CURLOPT_READDATA, (void *)&hd);
-
-    /* set the ioctl function */
-    curl_easy_setopt(curl, CURLOPT_IOCTLFUNCTION, my_ioctl);
-
-    /* pass the file descriptor to the ioctl callback as well */
-    curl_easy_setopt(curl, CURLOPT_IOCTLDATA, (void *)&hd);
-
-    /* enable "uploading" (which means PUT when doing HTTP) */
-    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
-    /* specify target URL, and note that this URL should also include a file
-       name, not only a directory (as you can do with GTP uploads) */
-    curl_easy_setopt(curl, CURLOPT_URL, url);
-
-    /* and give the size of the upload, this supports large file sizes
-       on systems that have general support for it */
-    curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
-                     (curl_off_t)file_info.st_size);
-
-    /* tell libcurl we can use "any" auth, which lets the lib pick one, but it
-       also costs one extra round-trip and possibly sending of all the PUT
-       data twice!!! */
-    curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_ANY);
-
-    /* set user name and password for the authentication */
-    curl_easy_setopt(curl, CURLOPT_USERPWD, "user:password");
-
-    /* Now run off and do what you've been told! */
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-  close(hd); /* close the local file */
-
-  curl_global_cleanup();
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/asiohiper.cpp b/components/cronet/third_party/curl_headers/docs/examples/asiohiper.cpp
deleted file mode 100644
index de14805..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/asiohiper.cpp
+++ /dev/null
@@ -1,496 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 2012 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * demonstrate the use of multi socket interface with boost::asio
- * </DESC>
- */
-/*
- * This program is in c++ and uses boost::asio instead of libevent/libev.
- * Requires boost::asio, boost::bind and boost::system
- *
- * This is an adaptation of libcurl's "hiperfifo.c" and "evhiperfifo.c"
- * sample programs. This example implements a subset of the functionality from
- * hiperfifo.c, for full functionality refer hiperfifo.c or evhiperfifo.c
- *
- * Written by Lijo Antony based on hiperfifo.c by Jeff Pohlmeyer
- *
- * When running, the program creates an easy handle for a URL and
- * uses the curl_multi API to fetch it.
- *
- * Note:
- *  For the sake of simplicity, URL is hard coded to "www.google.com"
- *
- * This is purely a demo app, all retrieved data is simply discarded by the
- * write callback.
- *
- * ===========================================================================
- * WARNING: This example program is known to have flaws:
- * https://github.com/curl/curl/issues/2407
- *
- * It still kept in the example repository with the hope that it might be
- * useful, and maybe some day someone who knows enough about boost::asio will
- * read this text, accept the challenge and make the example code work
- * correctly. Until then: expect this example program to fail occasionally.
- * ===========================================================================
- */
-
-
-#include <curl/curl.h>
-#include <boost/asio.hpp>
-#include <boost/bind.hpp>
-#include <iostream>
-
-#define MSG_OUT stdout /* Send info to stdout, change to stderr if you want */
-
-/* boost::asio related objects
- * using global variables for simplicity
- */
-boost::asio::io_service io_service;
-boost::asio::deadline_timer timer(io_service);
-std::map<curl_socket_t, boost::asio::ip::tcp::socket *> socket_map;
-
-/* Global information, common to all connections */
-typedef struct _GlobalInfo
-{
-  CURLM *multi;
-  int still_running;
-} GlobalInfo;
-
-/* Information associated with a specific easy handle */
-typedef struct _ConnInfo
-{
-  CURL *easy;
-  char *url;
-  GlobalInfo *global;
-  char error[CURL_ERROR_SIZE];
-} ConnInfo;
-
-static void timer_cb(const boost::system::error_code & error, GlobalInfo *g);
-
-/* Update the event timer after curl_multi library calls */
-static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
-{
-  fprintf(MSG_OUT, "\nmulti_timer_cb: timeout_ms %ld", timeout_ms);
-
-  /* cancel running timer */
-  timer.cancel();
-
-  if(timeout_ms > 0) {
-    /* update timer */
-    timer.expires_from_now(boost::posix_time::millisec(timeout_ms));
-    timer.async_wait(boost::bind(&timer_cb, _1, g));
-  }
-  else if(timeout_ms == 0) {
-    /* call timeout function immediately */
-    boost::system::error_code error; /*success*/
-    timer_cb(error, g);
-  }
-
-  return 0;
-}
-
-/* Die if we get a bad CURLMcode somewhere */
-static void mcode_or_die(const char *where, CURLMcode code)
-{
-  if(CURLM_OK != code) {
-    const char *s;
-    switch(code) {
-    case CURLM_CALL_MULTI_PERFORM:
-      s = "CURLM_CALL_MULTI_PERFORM";
-      break;
-    case CURLM_BAD_HANDLE:
-      s = "CURLM_BAD_HANDLE";
-      break;
-    case CURLM_BAD_EASY_HANDLE:
-      s = "CURLM_BAD_EASY_HANDLE";
-      break;
-    case CURLM_OUT_OF_MEMORY:
-      s = "CURLM_OUT_OF_MEMORY";
-      break;
-    case CURLM_INTERNAL_ERROR:
-      s = "CURLM_INTERNAL_ERROR";
-      break;
-    case CURLM_UNKNOWN_OPTION:
-      s = "CURLM_UNKNOWN_OPTION";
-      break;
-    case CURLM_LAST:
-      s = "CURLM_LAST";
-      break;
-    default:
-      s = "CURLM_unknown";
-      break;
-    case CURLM_BAD_SOCKET:
-      s = "CURLM_BAD_SOCKET";
-      fprintf(MSG_OUT, "\nERROR: %s returns %s", where, s);
-      /* ignore this error */
-      return;
-    }
-
-    fprintf(MSG_OUT, "\nERROR: %s returns %s", where, s);
-
-    exit(code);
-  }
-}
-
-/* Check for completed transfers, and remove their easy handles */
-static void check_multi_info(GlobalInfo *g)
-{
-  char *eff_url;
-  CURLMsg *msg;
-  int msgs_left;
-  ConnInfo *conn;
-  CURL *easy;
-  CURLcode res;
-
-  fprintf(MSG_OUT, "\nREMAINING: %d", g->still_running);
-
-  while((msg = curl_multi_info_read(g->multi, &msgs_left))) {
-    if(msg->msg == CURLMSG_DONE) {
-      easy = msg->easy_handle;
-      res = msg->data.result;
-      curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
-      curl_easy_getinfo(easy, CURLINFO_EFFECTIVE_URL, &eff_url);
-      fprintf(MSG_OUT, "\nDONE: %s => (%d) %s", eff_url, res, conn->error);
-      curl_multi_remove_handle(g->multi, easy);
-      free(conn->url);
-      curl_easy_cleanup(easy);
-      free(conn);
-    }
-  }
-}
-
-/* Called by asio when there is an action on a socket */
-static void event_cb(GlobalInfo *g, curl_socket_t s,
-                     int action, const boost::system::error_code & error,
-                     int *fdp)
-{
-  fprintf(MSG_OUT, "\nevent_cb: action=%d", action);
-
-  if(socket_map.find(s) == socket_map.end()) {
-    fprintf(MSG_OUT, "\nevent_cb: socket already closed");
-    return;
-  }
-
-  /* make sure the event matches what are wanted */
-  if(*fdp == action || *fdp == CURL_POLL_INOUT) {
-    CURLMcode rc;
-    if(error)
-      action = CURL_CSELECT_ERR;
-    rc = curl_multi_socket_action(g->multi, s, action, &g->still_running);
-
-    mcode_or_die("event_cb: curl_multi_socket_action", rc);
-    check_multi_info(g);
-
-    if(g->still_running <= 0) {
-      fprintf(MSG_OUT, "\nlast transfer done, kill timeout");
-      timer.cancel();
-    }
-
-    /* keep on watching.
-     * the socket may have been closed and/or fdp may have been changed
-     * in curl_multi_socket_action(), so check them both */
-    if(!error && socket_map.find(s) != socket_map.end() &&
-       (*fdp == action || *fdp == CURL_POLL_INOUT)) {
-      boost::asio::ip::tcp::socket *tcp_socket = socket_map.find(s)->second;
-
-      if(action == CURL_POLL_IN) {
-        tcp_socket->async_read_some(boost::asio::null_buffers(),
-                                    boost::bind(&event_cb, g, s,
-                                                action, _1, fdp));
-      }
-      if(action == CURL_POLL_OUT) {
-        tcp_socket->async_write_some(boost::asio::null_buffers(),
-                                     boost::bind(&event_cb, g, s,
-                                                 action, _1, fdp));
-      }
-    }
-  }
-}
-
-/* Called by asio when our timeout expires */
-static void timer_cb(const boost::system::error_code & error, GlobalInfo *g)
-{
-  if(!error) {
-    fprintf(MSG_OUT, "\ntimer_cb: ");
-
-    CURLMcode rc;
-    rc = curl_multi_socket_action(g->multi, CURL_SOCKET_TIMEOUT, 0,
-                                  &g->still_running);
-
-    mcode_or_die("timer_cb: curl_multi_socket_action", rc);
-    check_multi_info(g);
-  }
-}
-
-/* Clean up any data */
-static void remsock(int *f, GlobalInfo *g)
-{
-  fprintf(MSG_OUT, "\nremsock: ");
-
-  if(f) {
-    free(f);
-  }
-}
-
-static void setsock(int *fdp, curl_socket_t s, CURL *e, int act, int oldact,
-                    GlobalInfo *g)
-{
-  fprintf(MSG_OUT, "\nsetsock: socket=%d, act=%d, fdp=%p", s, act, fdp);
-
-  std::map<curl_socket_t, boost::asio::ip::tcp::socket *>::iterator it =
-    socket_map.find(s);
-
-  if(it == socket_map.end()) {
-    fprintf(MSG_OUT, "\nsocket %d is a c-ares socket, ignoring", s);
-    return;
-  }
-
-  boost::asio::ip::tcp::socket * tcp_socket = it->second;
-
-  *fdp = act;
-
-  if(act == CURL_POLL_IN) {
-    fprintf(MSG_OUT, "\nwatching for socket to become readable");
-    if(oldact != CURL_POLL_IN && oldact != CURL_POLL_INOUT) {
-      tcp_socket->async_read_some(boost::asio::null_buffers(),
-                                  boost::bind(&event_cb, g, s,
-                                              CURL_POLL_IN, _1, fdp));
-    }
-  }
-  else if(act == CURL_POLL_OUT) {
-    fprintf(MSG_OUT, "\nwatching for socket to become writable");
-    if(oldact != CURL_POLL_OUT && oldact != CURL_POLL_INOUT) {
-      tcp_socket->async_write_some(boost::asio::null_buffers(),
-                                   boost::bind(&event_cb, g, s,
-                                               CURL_POLL_OUT, _1, fdp));
-    }
-  }
-  else if(act == CURL_POLL_INOUT) {
-    fprintf(MSG_OUT, "\nwatching for socket to become readable & writable");
-    if(oldact != CURL_POLL_IN && oldact != CURL_POLL_INOUT) {
-      tcp_socket->async_read_some(boost::asio::null_buffers(),
-                                  boost::bind(&event_cb, g, s,
-                                              CURL_POLL_IN, _1, fdp));
-    }
-    if(oldact != CURL_POLL_OUT && oldact != CURL_POLL_INOUT) {
-      tcp_socket->async_write_some(boost::asio::null_buffers(),
-                                   boost::bind(&event_cb, g, s,
-                                               CURL_POLL_OUT, _1, fdp));
-    }
-  }
-}
-
-static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
-{
-  /* fdp is used to store current action */
-  int *fdp = (int *) calloc(sizeof(int), 1);
-
-  setsock(fdp, s, easy, action, 0, g);
-  curl_multi_assign(g->multi, s, fdp);
-}
-
-/* CURLMOPT_SOCKETFUNCTION */
-static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
-{
-  fprintf(MSG_OUT, "\nsock_cb: socket=%d, what=%d, sockp=%p", s, what, sockp);
-
-  GlobalInfo *g = (GlobalInfo*) cbp;
-  int *actionp = (int *) sockp;
-  const char *whatstr[] = { "none", "IN", "OUT", "INOUT", "REMOVE"};
-
-  fprintf(MSG_OUT,
-          "\nsocket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
-
-  if(what == CURL_POLL_REMOVE) {
-    fprintf(MSG_OUT, "\n");
-    remsock(actionp, g);
-  }
-  else {
-    if(!actionp) {
-      fprintf(MSG_OUT, "\nAdding data: %s", whatstr[what]);
-      addsock(s, e, what, g);
-    }
-    else {
-      fprintf(MSG_OUT,
-              "\nChanging action from %s to %s",
-              whatstr[*actionp], whatstr[what]);
-      setsock(actionp, s, e, what, *actionp, g);
-    }
-  }
-
-  return 0;
-}
-
-/* CURLOPT_WRITEFUNCTION */
-static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
-{
-  size_t written = size * nmemb;
-  char *pBuffer = (char *)malloc(written + 1);
-
-  strncpy(pBuffer, (const char *)ptr, written);
-  pBuffer[written] = '\0';
-
-  fprintf(MSG_OUT, "%s", pBuffer);
-
-  free(pBuffer);
-
-  return written;
-}
-
-/* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb(void *p, double dltotal, double dlnow, double ult,
-                   double uln)
-{
-  ConnInfo *conn = (ConnInfo *)p;
-
-  (void)ult;
-  (void)uln;
-
-  fprintf(MSG_OUT, "\nProgress: %s (%g/%g)", conn->url, dlnow, dltotal);
-  fprintf(MSG_OUT, "\nProgress: %s (%g)", conn->url, ult);
-
-  return 0;
-}
-
-/* CURLOPT_OPENSOCKETFUNCTION */
-static curl_socket_t opensocket(void *clientp, curlsocktype purpose,
-                                struct curl_sockaddr *address)
-{
-  fprintf(MSG_OUT, "\nopensocket :");
-
-  curl_socket_t sockfd = CURL_SOCKET_BAD;
-
-  /* restrict to IPv4 */
-  if(purpose == CURLSOCKTYPE_IPCXN && address->family == AF_INET) {
-    /* create a tcp socket object */
-    boost::asio::ip::tcp::socket *tcp_socket =
-      new boost::asio::ip::tcp::socket(io_service);
-
-    /* open it and get the native handle*/
-    boost::system::error_code ec;
-    tcp_socket->open(boost::asio::ip::tcp::v4(), ec);
-
-    if(ec) {
-      /* An error occurred */
-      std::cout << std::endl << "Couldn't open socket [" << ec << "][" <<
-        ec.message() << "]";
-      fprintf(MSG_OUT, "\nERROR: Returning CURL_SOCKET_BAD to signal error");
-    }
-    else {
-      sockfd = tcp_socket->native_handle();
-      fprintf(MSG_OUT, "\nOpened socket %d", sockfd);
-
-      /* save it for monitoring */
-      socket_map.insert(std::pair<curl_socket_t,
-                        boost::asio::ip::tcp::socket *>(sockfd, tcp_socket));
-    }
-  }
-
-  return sockfd;
-}
-
-/* CURLOPT_CLOSESOCKETFUNCTION */
-static int close_socket(void *clientp, curl_socket_t item)
-{
-  fprintf(MSG_OUT, "\nclose_socket : %d", item);
-
-  std::map<curl_socket_t, boost::asio::ip::tcp::socket *>::iterator it =
-    socket_map.find(item);
-
-  if(it != socket_map.end()) {
-    delete it->second;
-    socket_map.erase(it);
-  }
-
-  return 0;
-}
-
-/* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g)
-{
-  ConnInfo *conn;
-  CURLMcode rc;
-
-  conn = (ConnInfo *) calloc(1, sizeof(ConnInfo));
-
-  conn->easy = curl_easy_init();
-  if(!conn->easy) {
-    fprintf(MSG_OUT, "\ncurl_easy_init() failed, exiting!");
-    exit(2);
-  }
-
-  conn->global = g;
-  conn->url = strdup(url);
-  curl_easy_setopt(conn->easy, CURLOPT_URL, conn->url);
-  curl_easy_setopt(conn->easy, CURLOPT_WRITEFUNCTION, write_cb);
-  curl_easy_setopt(conn->easy, CURLOPT_WRITEDATA, &conn);
-  curl_easy_setopt(conn->easy, CURLOPT_VERBOSE, 1L);
-  curl_easy_setopt(conn->easy, CURLOPT_ERRORBUFFER, conn->error);
-  curl_easy_setopt(conn->easy, CURLOPT_PRIVATE, conn);
-  curl_easy_setopt(conn->easy, CURLOPT_NOPROGRESS, 1L);
-  curl_easy_setopt(conn->easy, CURLOPT_PROGRESSFUNCTION, prog_cb);
-  curl_easy_setopt(conn->easy, CURLOPT_PROGRESSDATA, conn);
-  curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_TIME, 3L);
-  curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_LIMIT, 10L);
-
-  /* call this function to get a socket */
-  curl_easy_setopt(conn->easy, CURLOPT_OPENSOCKETFUNCTION, opensocket);
-
-  /* call this function to close a socket */
-  curl_easy_setopt(conn->easy, CURLOPT_CLOSESOCKETFUNCTION, close_socket);
-
-  fprintf(MSG_OUT,
-          "\nAdding easy %p to multi %p (%s)", conn->easy, g->multi, url);
-  rc = curl_multi_add_handle(g->multi, conn->easy);
-  mcode_or_die("new_conn: curl_multi_add_handle", rc);
-
-  /* note that the add_handle() will set a time-out to trigger very soon so
-     that the necessary socket_action() call will be called by this app */
-}
-
-int main(int argc, char **argv)
-{
-  GlobalInfo g;
-
-  (void)argc;
-  (void)argv;
-
-  memset(&g, 0, sizeof(GlobalInfo));
-  g.multi = curl_multi_init();
-
-  curl_multi_setopt(g.multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
-  curl_multi_setopt(g.multi, CURLMOPT_SOCKETDATA, &g);
-  curl_multi_setopt(g.multi, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
-  curl_multi_setopt(g.multi, CURLMOPT_TIMERDATA, &g);
-
-  new_conn((char *)"www.google.com", &g);  /* add a URL */
-
-  /* enter io_service run loop */
-  io_service.run();
-
-  curl_multi_cleanup(g.multi);
-
-  fprintf(MSG_OUT, "\ndone.\n");
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/cacertinmem.c b/components/cronet/third_party/curl_headers/docs/examples/cacertinmem.c
deleted file mode 100644
index ea295d01..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/cacertinmem.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * CA cert in memory with OpenSSL to get a HTTPS page.
- * </DESC>
- */
-
-#include <openssl/err.h>
-#include <openssl/ssl.h>
-#include <curl/curl.h>
-#include <stdio.h>
-
-static size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream)
-{
-  fwrite(ptr, size, nmemb, (FILE *)stream);
-  return (nmemb*size);
-}
-
-static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
-{
-  CURLcode rv = CURLE_ABORTED_BY_CALLBACK;
-
-  /** This example uses two (fake) certificates **/
-  static const char mypem[] =
-    "-----BEGIN CERTIFICATE-----\n"
-    "MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE\n"
-    "AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw\n"
-    "CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ\n"
-    "BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND\n"
-    "VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb\n"
-    "qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY\n"
-    "HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo\n"
-    "G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA\n"
-    "0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH\n"
-    "k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47\n"
-    "JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m\n"
-    "AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD\n"
-    "vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms\n"
-    "tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH\n"
-    "7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h\n"
-    "I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA\n"
-    "h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF\n"
-    "d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H\n"
-    "pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7\n"
-    "-----END CERTIFICATE-----\n"
-    "-----BEGIN CERTIFICATE-----\n"
-    "MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UE\n"
-    "AwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00x\n"
-    "CzAJBgNVBAYTAkVTMB4XDTA4MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEW\n"
-    "MBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZF\n"
-    "RElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\n"
-    "AgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHkWLn7\n"
-    "09gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7\n"
-    "XBZXehuDYAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5P\n"
-    "gvoFNTPhNahXwOf9jU8/kzJPeGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKe\n"
-    "I6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1PwkzQSulgUV1qzOMPPKC8W64iLgpq0i\n"
-    "5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1ThCojz2GuHURwCRi\n"
-    "ipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oIKiMn\n"
-    "MCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZ\n"
-    "o5NjEFIqnxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6\n"
-    "zqylfDJKZ0DcMDQj3dcEI2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacN\n"
-    "GHk0vFQYXlPKNFHtRQrmjseCNj6nOGOpMCwXEGCSn1WHElkQwg9naRHMTh5+Spqt\n"
-    "r0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3otkYNbn5XOmeUwssfnHdK\n"
-    "Z05phkOTOPu220+DkdRgfks+KzgHVZhepA==\n"
-    "-----END CERTIFICATE-----\n";
-
-  BIO *cbio = BIO_new_mem_buf(mypem, sizeof(mypem));
-  X509_STORE  *cts = SSL_CTX_get_cert_store((SSL_CTX *)sslctx);
-  int i;
-  STACK_OF(X509_INFO) *inf;
-  (void)curl;
-  (void)parm;
-
-  if(!cts || !cbio) {
-    return rv;
-  }
-
-  inf = PEM_X509_INFO_read_bio(cbio, NULL, NULL, NULL);
-
-  if(!inf) {
-    BIO_free(cbio);
-    return rv;
-  }
-
-  for(i = 0; i < sk_X509_INFO_num(inf); i++) {
-    X509_INFO *itmp = sk_X509_INFO_value(inf, i);
-    if(itmp->x509) {
-      X509_STORE_add_cert(cts, itmp->x509);
-    }
-    if(itmp->crl) {
-      X509_STORE_add_crl(cts, itmp->crl);
-    }
-  }
-
-  sk_X509_INFO_pop_free(inf, X509_INFO_free);
-  BIO_free(cbio);
-
-  rv = CURLE_OK;
-  return rv;
-}
-
-int main(void)
-{
-  CURL *ch;
-  CURLcode rv;
-
-  curl_global_init(CURL_GLOBAL_ALL);
-  ch = curl_easy_init();
-  curl_easy_setopt(ch, CURLOPT_VERBOSE, 0L);
-  curl_easy_setopt(ch, CURLOPT_HEADER, 0L);
-  curl_easy_setopt(ch, CURLOPT_NOPROGRESS, 1L);
-  curl_easy_setopt(ch, CURLOPT_NOSIGNAL, 1L);
-  curl_easy_setopt(ch, CURLOPT_WRITEFUNCTION, *writefunction);
-  curl_easy_setopt(ch, CURLOPT_WRITEDATA, stdout);
-  curl_easy_setopt(ch, CURLOPT_HEADERFUNCTION, *writefunction);
-  curl_easy_setopt(ch, CURLOPT_HEADERDATA, stderr);
-  curl_easy_setopt(ch, CURLOPT_SSLCERTTYPE, "PEM");
-  curl_easy_setopt(ch, CURLOPT_SSL_VERIFYPEER, 1L);
-  curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/");
-
-  /* Turn off the default CA locations, otherwise libcurl will load CA
-   * certificates from the locations that were detected/specified at
-   * build-time
-   */
-  curl_easy_setopt(ch, CURLOPT_CAINFO, NULL);
-  curl_easy_setopt(ch, CURLOPT_CAPATH, NULL);
-
-  /* first try: retrieve page without ca certificates -> should fail
-   * unless libcurl was built --with-ca-fallback enabled at build-time
-   */
-  rv = curl_easy_perform(ch);
-  if(rv == CURLE_OK)
-    printf("*** transfer succeeded ***\n");
-  else
-    printf("*** transfer failed ***\n");
-
-  /* use a fresh connection (optional)
-   * this option seriously impacts performance of multiple transfers but
-   * it is necessary order to demonstrate this example. recall that the
-   * ssl ctx callback is only called _before_ an SSL connection is
-   * established, therefore it will not affect existing verified SSL
-   * connections already in the connection cache associated with this
-   * handle. normally you would set the ssl ctx function before making
-   * any transfers, and not use this option.
-   */
-  curl_easy_setopt(ch, CURLOPT_FRESH_CONNECT, 1L);
-
-  /* second try: retrieve page using cacerts' certificate -> will succeed
-   * load the certificate by installing a function doing the necessary
-   * "modifications" to the SSL CONTEXT just before link init
-   */
-  curl_easy_setopt(ch, CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
-  rv = curl_easy_perform(ch);
-  if(rv == CURLE_OK)
-    printf("*** transfer succeeded ***\n");
-  else
-    printf("*** transfer failed ***\n");
-
-  curl_easy_cleanup(ch);
-  curl_global_cleanup();
-  return rv;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/certinfo.c b/components/cronet/third_party/curl_headers/docs/examples/certinfo.c
deleted file mode 100644
index 1aee614..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/certinfo.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Extract lots of TLS certificate info.
- * </DESC>
- */
-#include <stdio.h>
-
-#include <curl/curl.h>
-
-static size_t wrfu(void *ptr,  size_t  size,  size_t  nmemb,  void *stream)
-{
-  (void)stream;
-  (void)ptr;
-  return size * nmemb;
-}
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-
-  curl_global_init(CURL_GLOBAL_DEFAULT);
-
-  curl = curl_easy_init();
-  if(curl) {
-    curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/");
-
-    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, wrfu);
-
-    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
-    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
-
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
-    curl_easy_setopt(curl, CURLOPT_CERTINFO, 1L);
-
-    res = curl_easy_perform(curl);
-
-    if(!res) {
-      struct curl_certinfo *certinfo;
-
-      res = curl_easy_getinfo(curl, CURLINFO_CERTINFO, &certinfo);
-
-      if(!res && certinfo) {
-        int i;
-
-        printf("%d certs!\n", certinfo->num_of_certs);
-
-        for(i = 0; i < certinfo->num_of_certs; i++) {
-          struct curl_slist *slist;
-
-          for(slist = certinfo->certinfo[i]; slist; slist = slist->next)
-            printf("%s\n", slist->data);
-
-        }
-      }
-
-    }
-
-    curl_easy_cleanup(curl);
-  }
-
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/chkspeed.c b/components/cronet/third_party/curl_headers/docs/examples/chkspeed.c
deleted file mode 100644
index 0b0ba72a..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/chkspeed.c
+++ /dev/null
@@ -1,213 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Show transfer timing info after download completes.
- * </DESC>
- */
-/* Example source code to show how the callback function can be used to
- * download data into a chunk of memory instead of storing it in a file.
- * After successful download we use curl_easy_getinfo() calls to get the
- * amount of downloaded bytes, the time used for the whole download, and
- * the average download speed.
- * On Linux you can create the download test files with:
- * dd if=/dev/urandom of=file_1M.bin bs=1M count=1
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-
-#include <curl/curl.h>
-
-#define URL_BASE "http://speedtest.your.domain/"
-#define URL_1M   URL_BASE "file_1M.bin"
-#define URL_2M   URL_BASE "file_2M.bin"
-#define URL_5M   URL_BASE "file_5M.bin"
-#define URL_10M  URL_BASE "file_10M.bin"
-#define URL_20M  URL_BASE "file_20M.bin"
-#define URL_50M  URL_BASE "file_50M.bin"
-#define URL_100M URL_BASE "file_100M.bin"
-
-#define CHKSPEED_VERSION "1.0"
-
-static size_t WriteCallback(void *ptr, size_t size, size_t nmemb, void *data)
-{
-  /* we are not interested in the downloaded bytes itself,
-     so we only return the size we would have saved ... */
-  (void)ptr;  /* unused */
-  (void)data; /* unused */
-  return (size_t)(size * nmemb);
-}
-
-int main(int argc, char *argv[])
-{
-  CURL *curl_handle;
-  CURLcode res;
-  int prtall = 0, prtsep = 0, prttime = 0;
-  const char *url = URL_1M;
-  char *appname = argv[0];
-
-  if(argc > 1) {
-    /* parse input parameters */
-    for(argc--, argv++; *argv; argc--, argv++) {
-      if(strncasecmp(*argv, "-", 1) == 0) {
-        if(strncasecmp(*argv, "-H", 2) == 0) {
-          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) {
-          fprintf(stderr, "\r%s %s - %s\n",
-                  appname, CHKSPEED_VERSION, curl_version());
-          exit(1);
-        }
-        else if(strncasecmp(*argv, "-A", 2) == 0) {
-          prtall = 1;
-        }
-        else if(strncasecmp(*argv, "-X", 2) == 0) {
-          prtsep = 1;
-        }
-        else if(strncasecmp(*argv, "-T", 2) == 0) {
-          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 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 {
-          fprintf(stderr, "\r%s: invalid or unknown option %s\n",
-                  appname, *argv);
-          exit(1);
-        }
-      }
-      else {
-        url = *argv;
-      }
-    }
-  }
-
-  /* print separator line */
-  if(prtsep) {
-    printf("-------------------------------------------------\n");
-  }
-  /* print localtime */
-  if(prttime) {
-    time_t t = time(NULL);
-    printf("Localtime: %s", ctime(&t));
-  }
-
-  /* init libcurl */
-  curl_global_init(CURL_GLOBAL_ALL);
-
-  /* init the curl session */
-  curl_handle = curl_easy_init();
-
-  /* specify URL to get */
-  curl_easy_setopt(curl_handle, CURLOPT_URL, url);
-
-  /* send all data to this function  */
-  curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteCallback);
-
-  /* some servers don't like requests that are made without a user-agent
-     field, so we provide one */
-  curl_easy_setopt(curl_handle, CURLOPT_USERAGENT,
-                   "libcurl-speedchecker/" CHKSPEED_VERSION);
-
-  /* get it! */
-  res = curl_easy_perform(curl_handle);
-
-  if(CURLE_OK == res) {
-    curl_off_t val;
-
-    /* check for bytes downloaded */
-    res = curl_easy_getinfo(curl_handle, CURLINFO_SIZE_DOWNLOAD_T, &val);
-    if((CURLE_OK == res) && (val>0))
-      printf("Data downloaded: %" CURL_FORMAT_CURL_OFF_T " bytes.\n", val);
-
-    /* check for total download time */
-    res = curl_easy_getinfo(curl_handle, CURLINFO_TOTAL_TIME_T, &val);
-    if((CURLE_OK == res) && (val>0))
-      printf("Total download time: %" CURL_FORMAT_CURL_OFF_T ".%06ld sec.\n",
-             (val / 1000000), (long)(val % 1000000));
-
-    /* check for average download speed */
-    res = curl_easy_getinfo(curl_handle, CURLINFO_SPEED_DOWNLOAD_T, &val);
-    if((CURLE_OK == res) && (val>0))
-      printf("Average download speed: %" CURL_FORMAT_CURL_OFF_T
-             " kbyte/sec.\n", val / 1024);
-
-    if(prtall) {
-      /* check for name resolution time */
-      res = curl_easy_getinfo(curl_handle, CURLINFO_NAMELOOKUP_TIME_T, &val);
-      if((CURLE_OK == res) && (val>0))
-        printf("Name lookup time: %" CURL_FORMAT_CURL_OFF_T ".%06ld sec.\n",
-               (val / 1000000), (long)(val % 1000000));
-
-      /* check for connect time */
-      res = curl_easy_getinfo(curl_handle, CURLINFO_CONNECT_TIME_T, &val);
-      if((CURLE_OK == res) && (val>0))
-        printf("Connect time: %" CURL_FORMAT_CURL_OFF_T ".%06ld sec.\n",
-               (val / 1000000), (long)(val % 1000000));
-    }
-  }
-  else {
-    fprintf(stderr, "Error while fetching '%s' : %s\n",
-            url, curl_easy_strerror(res));
-  }
-
-  /* cleanup curl stuff */
-  curl_easy_cleanup(curl_handle);
-
-  /* we're done with libcurl, so clean it up */
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/cookie_interface.c b/components/cronet/third_party/curl_headers/docs/examples/cookie_interface.c
deleted file mode 100644
index 32e9a1d1..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/cookie_interface.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Import and export cookies with COOKIELIST.
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <time.h>
-
-#include <curl/curl.h>
-
-static void
-print_cookies(CURL *curl)
-{
-  CURLcode res;
-  struct curl_slist *cookies;
-  struct curl_slist *nc;
-  int i;
-
-  printf("Cookies, curl knows:\n");
-  res = curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies);
-  if(res != CURLE_OK) {
-    fprintf(stderr, "Curl curl_easy_getinfo failed: %s\n",
-            curl_easy_strerror(res));
-    exit(1);
-  }
-  nc = cookies;
-  i = 1;
-  while(nc) {
-    printf("[%d]: %s\n", i, nc->data);
-    nc = nc->next;
-    i++;
-  }
-  if(i == 1) {
-    printf("(none)\n");
-  }
-  curl_slist_free_all(cookies);
-}
-
-int
-main(void)
-{
-  CURL *curl;
-  CURLcode res;
-
-  curl_global_init(CURL_GLOBAL_ALL);
-  curl = curl_easy_init();
-  if(curl) {
-    char nline[256];
-
-    curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/");
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-    curl_easy_setopt(curl, CURLOPT_COOKIEFILE, ""); /* start cookie engine */
-    res = curl_easy_perform(curl);
-    if(res != CURLE_OK) {
-      fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
-      return 1;
-    }
-
-    print_cookies(curl);
-
-    printf("Erasing curl's knowledge of cookies!\n");
-    curl_easy_setopt(curl, CURLOPT_COOKIELIST, "ALL");
-
-    print_cookies(curl);
-
-    printf("-----------------------------------------------\n"
-           "Setting a cookie \"PREF\" via cookie interface:\n");
-#ifdef WIN32
-#define snprintf _snprintf
-#endif
-    /* Netscape format cookie */
-    snprintf(nline, sizeof(nline), "%s\t%s\t%s\t%s\t%lu\t%s\t%s",
-             ".example.com", "TRUE", "/", "FALSE",
-             (unsigned long)time(NULL) + 31337UL,
-             "PREF", "hello example, i like you very much!");
-    res = curl_easy_setopt(curl, CURLOPT_COOKIELIST, nline);
-    if(res != CURLE_OK) {
-      fprintf(stderr, "Curl curl_easy_setopt failed: %s\n",
-              curl_easy_strerror(res));
-      return 1;
-    }
-
-    /* HTTP-header style cookie. If you use the Set-Cookie format and don't
-    specify a domain then the cookie is sent for any domain and will not be
-    modified, likely not what you intended. Starting in 7.43.0 any-domain
-    cookies will not be exported either. For more information refer to the
-    CURLOPT_COOKIELIST documentation.
-    */
-    snprintf(nline, sizeof(nline),
-      "Set-Cookie: OLD_PREF=3d141414bf4209321; "
-      "expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.example.com");
-    res = curl_easy_setopt(curl, CURLOPT_COOKIELIST, nline);
-    if(res != CURLE_OK) {
-      fprintf(stderr, "Curl curl_easy_setopt failed: %s\n",
-              curl_easy_strerror(res));
-      return 1;
-    }
-
-    print_cookies(curl);
-
-    res = curl_easy_perform(curl);
-    if(res != CURLE_OK) {
-      fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
-      return 1;
-    }
-
-    curl_easy_cleanup(curl);
-  }
-  else {
-    fprintf(stderr, "Curl init failed!\n");
-    return 1;
-  }
-
-  curl_global_cleanup();
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/crawler.c b/components/cronet/third_party/curl_headers/docs/examples/crawler.c
deleted file mode 100644
index 496d88c..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/crawler.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Web crawler based on curl and libxml2.
- * Copyright (C) 2018 Jeroen Ooms <jeroenooms@gmail.com>
- * License: MIT
- *
- * To compile:
- *   gcc crawler.c $(pkg-config --cflags --libs libxml-2.0 libcurl)
- *
- */
-/* <DESC>
- * Web crawler based on curl and libxml2 to stress-test curl with
- * hundreds of concurrent connections to various servers.
- * </DESC>
- */
-
-/* Parameters */
-int max_con = 200;
-int max_total = 20000;
-int max_requests = 500;
-int max_link_per_page = 5;
-int follow_relative_links = 0;
-char *start_page = "https://www.reuters.com";
-
-#include <libxml/HTMLparser.h>
-#include <libxml/xpath.h>
-#include <libxml/uri.h>
-#include <curl/curl.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <signal.h>
-
-int pending_interrupt = 0;
-void sighandler(int dummy)
-{
-  pending_interrupt = 1;
-}
-
-/* resizable buffer */
-typedef struct {
-  char *buf;
-  size_t size;
-} memory;
-
-size_t grow_buffer(void *contents, size_t sz, size_t nmemb, void *ctx)
-{
-  size_t realsize = sz * nmemb;
-  memory *mem = (memory*) ctx;
-  char *ptr = realloc(mem->buf, mem->size + realsize);
-  if(!ptr) {
-    /* out of memory */
-    printf("not enough memory (realloc returned NULL)\n");
-    return 0;
-  }
-  mem->buf = ptr;
-  memcpy(&(mem->buf[mem->size]), contents, realsize);
-  mem->size += realsize;
-  return realsize;
-}
-
-CURL *make_handle(char *url)
-{
-  CURL *handle = curl_easy_init();
-
-  /* Important: use HTTP2 over HTTPS */
-  curl_easy_setopt(handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS);
-  curl_easy_setopt(handle, CURLOPT_URL, url);
-
-  /* buffer body */
-  memory *mem = malloc(sizeof(memory));
-  mem->size = 0;
-  mem->buf = malloc(1);
-  curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, grow_buffer);
-  curl_easy_setopt(handle, CURLOPT_WRITEDATA, mem);
-  curl_easy_setopt(handle, CURLOPT_PRIVATE, mem);
-
-  /* For completeness */
-  curl_easy_setopt(handle, CURLOPT_ACCEPT_ENCODING, "");
-  curl_easy_setopt(handle, CURLOPT_TIMEOUT, 5L);
-  curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1L);
-  curl_easy_setopt(handle, CURLOPT_MAXREDIRS, 10L);
-  curl_easy_setopt(handle, CURLOPT_CONNECTTIMEOUT, 2L);
-  curl_easy_setopt(handle, CURLOPT_COOKIEFILE, "");
-  curl_easy_setopt(handle, CURLOPT_FILETIME, 1L);
-  curl_easy_setopt(handle, CURLOPT_USERAGENT, "mini crawler");
-  curl_easy_setopt(handle, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
-  curl_easy_setopt(handle, CURLOPT_UNRESTRICTED_AUTH, 1L);
-  curl_easy_setopt(handle, CURLOPT_PROXYAUTH, CURLAUTH_ANY);
-  curl_easy_setopt(handle, CURLOPT_EXPECT_100_TIMEOUT_MS, 0L);
-  return handle;
-}
-
-/* HREF finder implemented in libxml2 but could be any HTML parser */
-size_t follow_links(CURLM *multi_handle, memory *mem, char *url)
-{
-  int opts = HTML_PARSE_NOBLANKS | HTML_PARSE_NOERROR | \
-             HTML_PARSE_NOWARNING | HTML_PARSE_NONET;
-  htmlDocPtr doc = htmlReadMemory(mem->buf, mem->size, url, NULL, opts);
-  if(!doc)
-    return 0;
-  xmlChar *xpath = (xmlChar*) "//a/@href";
-  xmlXPathContextPtr context = xmlXPathNewContext(doc);
-  xmlXPathObjectPtr result = xmlXPathEvalExpression(xpath, context);
-  xmlXPathFreeContext(context);
-  if(!result)
-    return 0;
-  xmlNodeSetPtr nodeset = result->nodesetval;
-  if(xmlXPathNodeSetIsEmpty(nodeset)) {
-    xmlXPathFreeObject(result);
-    return 0;
-  }
-  size_t count = 0;
-  for(int i = 0; i < nodeset->nodeNr; i++) {
-    double r = rand();
-    int x = r * nodeset->nodeNr / RAND_MAX;
-    const xmlNode *node = nodeset->nodeTab[x]->xmlChildrenNode;
-    xmlChar *href = xmlNodeListGetString(doc, node, 1);
-    if(follow_relative_links) {
-      xmlChar *orig = href;
-      href = xmlBuildURI(href, (xmlChar *) url);
-      xmlFree(orig);
-    }
-    char *link = (char *) href;
-    if(!link || strlen(link) < 20)
-      continue;
-    if(!strncmp(link, "http://", 7) || !strncmp(link, "https://", 8)) {
-      curl_multi_add_handle(multi_handle, make_handle(link));
-      if(count++ == max_link_per_page)
-        break;
-    }
-    xmlFree(link);
-  }
-  xmlXPathFreeObject(result);
-  return count;
-}
-
-int is_html(char *ctype)
-{
-  return ctype != NULL && strlen(ctype) > 10 && strstr(ctype, "text/html");
-}
-
-int main(void)
-{
-  signal(SIGINT, sighandler);
-  LIBXML_TEST_VERSION;
-  curl_global_init(CURL_GLOBAL_DEFAULT);
-  CURLM *multi_handle = curl_multi_init();
-  curl_multi_setopt(multi_handle, CURLMOPT_MAX_TOTAL_CONNECTIONS, max_con);
-  curl_multi_setopt(multi_handle, CURLMOPT_MAX_HOST_CONNECTIONS, 6L);
-
-  /* enables http/2 if available */
-#ifdef CURLPIPE_MULTIPLEX
-  curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
-#endif
-
-  /* sets html start page */
-  curl_multi_add_handle(multi_handle, make_handle(start_page));
-
-  int msgs_left;
-  int pending = 0;
-  int complete = 0;
-  int still_running = 1;
-  while(still_running && !pending_interrupt) {
-    int numfds;
-    curl_multi_wait(multi_handle, NULL, 0, 1000, &numfds);
-    curl_multi_perform(multi_handle, &still_running);
-
-    /* See how the transfers went */
-    CURLMsg *m = NULL;
-    while((m = curl_multi_info_read(multi_handle, &msgs_left))) {
-      if(m->msg == CURLMSG_DONE) {
-        CURL *handle = m->easy_handle;
-        char *url;
-        memory *mem;
-        curl_easy_getinfo(handle, CURLINFO_PRIVATE, &mem);
-        curl_easy_getinfo(handle, CURLINFO_EFFECTIVE_URL, &url);
-        if(m->data.result == CURLE_OK) {
-          long res_status;
-          curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, &res_status);
-          if(res_status == 200) {
-            char *ctype;
-            curl_easy_getinfo(handle, CURLINFO_CONTENT_TYPE, &ctype);
-            printf("[%d] HTTP 200 (%s): %s\n", complete, ctype, url);
-            if(is_html(ctype) && mem->size > 100) {
-              if(pending < max_requests && (complete + pending) < max_total) {
-                pending += follow_links(multi_handle, mem, url);
-                still_running = 1;
-              }
-            }
-          }
-          else {
-            printf("[%d] HTTP %d: %s\n", complete, (int) res_status, url);
-          }
-        }
-        else {
-          printf("[%d] Connection failure: %s\n", complete, url);
-        }
-        curl_multi_remove_handle(multi_handle, handle);
-        curl_easy_cleanup(handle);
-        free(mem->buf);
-        free(mem);
-        complete++;
-        pending--;
-      }
-    }
-  }
-  curl_multi_cleanup(multi_handle);
-  curl_global_cleanup();
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/curlgtk.c b/components/cronet/third_party/curl_headers/docs/examples/curlgtk.c
deleted file mode 100644
index 4083c8f..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/curlgtk.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*****************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- *  Copyright (c) 2000 David Odin (aka DindinX) for MandrakeSoft
- */
-/* <DESC>
- * use the libcurl in a gtk-threaded application
- * </DESC>
- */
-
-#include <stdio.h>
-#include <gtk/gtk.h>
-
-#include <curl/curl.h>
-
-GtkWidget *Bar;
-
-size_t my_write_func(void *ptr, size_t size, size_t nmemb, FILE *stream)
-{
-  return fwrite(ptr, size, nmemb, stream);
-}
-
-size_t my_read_func(void *ptr, size_t size, size_t nmemb, FILE *stream)
-{
-  return fread(ptr, size, nmemb, stream);
-}
-
-int my_progress_func(GtkWidget *bar,
-                     double t, /* dltotal */
-                     double d, /* dlnow */
-                     double ultotal,
-                     double ulnow)
-{
-/*  printf("%d / %d (%g %%)\n", d, t, d*100.0/t);*/
-  gdk_threads_enter();
-  gtk_progress_set_value(GTK_PROGRESS(bar), d*100.0/t);
-  gdk_threads_leave();
-  return 0;
-}
-
-void *my_thread(void *ptr)
-{
-  CURL *curl;
-
-  curl = curl_easy_init();
-  if(curl) {
-    gchar *url = ptr;
-    const char *filename = "test.curl";
-    FILE *outfile = fopen(filename, "wb");
-
-    curl_easy_setopt(curl, CURLOPT_URL, url);
-    curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile);
-    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_write_func);
-    curl_easy_setopt(curl, CURLOPT_READFUNCTION, my_read_func);
-    curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);
-    curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, my_progress_func);
-    curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, Bar);
-
-    curl_easy_perform(curl);
-
-    fclose(outfile);
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return NULL;
-}
-
-int main(int argc, char **argv)
-{
-  GtkWidget *Window, *Frame, *Frame2;
-  GtkAdjustment *adj;
-
-  /* Must initialize libcurl before any threads are started */
-  curl_global_init(CURL_GLOBAL_ALL);
-
-  /* Init thread */
-  g_thread_init(NULL);
-
-  gtk_init(&argc, &argv);
-  Window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-  Frame = gtk_frame_new(NULL);
-  gtk_frame_set_shadow_type(GTK_FRAME(Frame), GTK_SHADOW_OUT);
-  gtk_container_add(GTK_CONTAINER(Window), Frame);
-  Frame2 = gtk_frame_new(NULL);
-  gtk_frame_set_shadow_type(GTK_FRAME(Frame2), GTK_SHADOW_IN);
-  gtk_container_add(GTK_CONTAINER(Frame), Frame2);
-  gtk_container_set_border_width(GTK_CONTAINER(Frame2), 5);
-  adj = (GtkAdjustment*)gtk_adjustment_new(0, 0, 100, 0, 0, 0);
-  Bar = gtk_progress_bar_new_with_adjustment(adj);
-  gtk_container_add(GTK_CONTAINER(Frame2), Bar);
-  gtk_widget_show_all(Window);
-
-  if(!g_thread_create(&my_thread, argv[1], FALSE, NULL) != 0)
-    g_warning("can't create the thread");
-
-
-  gdk_threads_enter();
-  gtk_main();
-  gdk_threads_leave();
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/curlx.c b/components/cronet/third_party/curl_headers/docs/examples/curlx.c
deleted file mode 100644
index df4ab3f..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/curlx.c
+++ /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 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;
-  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);
-
-  p.verbose = 0;
-  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 == NULL || mimetypeaccept == NULL)
-    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 == NULL) {
-    BIO_printf(p.errorbio, "Error setting input bio\n");
-    goto err;
-  }
-  else if(infile == NULL)
-    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 == NULL) {
-    BIO_printf(p.errorbio, "Error setting output bio.\n");
-    goto err;
-  }
-  else if(outfile == NULL)
-    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 != 0) { /* 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 "
-                 "cherching in others certificats\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 certificats,"
-               " 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);
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/debug.c b/components/cronet/third_party/curl_headers/docs/examples/debug.c
deleted file mode 100644
index 884184a..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/debug.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Show how CURLOPT_DEBUGFUNCTION can be used.
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-struct data {
-  char trace_ascii; /* 1 or 0 */
-};
-
-static
-void dump(const char *text,
-          FILE *stream, unsigned char *ptr, size_t size,
-          char nohex)
-{
-  size_t i;
-  size_t c;
-
-  unsigned int width = 0x10;
-
-  if(nohex)
-    /* without the hex output, we can fit more on screen */
-    width = 0x40;
-
-  fprintf(stream, "%s, %10.10lu bytes (0x%8.8lx)\n",
-          text, (unsigned long)size, (unsigned long)size);
-
-  for(i = 0; i<size; i += width) {
-
-    fprintf(stream, "%4.4lx: ", (unsigned long)i);
-
-    if(!nohex) {
-      /* hex not disabled, show it */
-      for(c = 0; c < width; c++)
-        if(i + c < size)
-          fprintf(stream, "%02x ", ptr[i + c]);
-        else
-          fputs("   ", stream);
-    }
-
-    for(c = 0; (c < width) && (i + c < size); c++) {
-      /* check for 0D0A; if found, skip past and start a new line of output */
-      if(nohex && (i + c + 1 < size) && ptr[i + c] == 0x0D &&
-         ptr[i + c + 1] == 0x0A) {
-        i += (c + 2 - width);
-        break;
-      }
-      fprintf(stream, "%c",
-              (ptr[i + c] >= 0x20) && (ptr[i + c]<0x80)?ptr[i + c]:'.');
-      /* check again for 0D0A, to avoid an extra \n if it's at width */
-      if(nohex && (i + c + 2 < size) && ptr[i + c + 1] == 0x0D &&
-         ptr[i + c + 2] == 0x0A) {
-        i += (c + 3 - width);
-        break;
-      }
-    }
-    fputc('\n', stream); /* newline */
-  }
-  fflush(stream);
-}
-
-static
-int my_trace(CURL *handle, curl_infotype type,
-             char *data, size_t size,
-             void *userp)
-{
-  struct data *config = (struct data *)userp;
-  const char *text;
-  (void)handle; /* prevent compiler warning */
-
-  switch(type) {
-  case CURLINFO_TEXT:
-    fprintf(stderr, "== Info: %s", data);
-    /* FALLTHROUGH */
-  default: /* in case a new one is introduced to shock us */
-    return 0;
-
-  case CURLINFO_HEADER_OUT:
-    text = "=> Send header";
-    break;
-  case CURLINFO_DATA_OUT:
-    text = "=> Send data";
-    break;
-  case CURLINFO_SSL_DATA_OUT:
-    text = "=> Send SSL data";
-    break;
-  case CURLINFO_HEADER_IN:
-    text = "<= Recv header";
-    break;
-  case CURLINFO_DATA_IN:
-    text = "<= Recv data";
-    break;
-  case CURLINFO_SSL_DATA_IN:
-    text = "<= Recv SSL data";
-    break;
-  }
-
-  dump(text, stderr, (unsigned char *)data, size, config->trace_ascii);
-  return 0;
-}
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-  struct data config;
-
-  config.trace_ascii = 1; /* enable ascii tracing */
-
-  curl = curl_easy_init();
-  if(curl) {
-    curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, my_trace);
-    curl_easy_setopt(curl, CURLOPT_DEBUGDATA, &config);
-
-    /* the DEBUGFUNCTION has no effect until we enable VERBOSE */
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
-    /* example.com is redirected, so we tell libcurl to follow redirection */
-    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
-
-    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ephiperfifo.c b/components/cronet/third_party/curl_headers/docs/examples/ephiperfifo.c
deleted file mode 100644
index bc4b0f0..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ephiperfifo.c
+++ /dev/null
@@ -1,551 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * multi socket API usage with epoll and timerfd
- * </DESC>
- */
-/* Example application source code using the multi socket interface to
- * download many files at once.
- *
- * This example features the same basic functionality as hiperfifo.c does,
- * but this uses epoll and timerfd instead of libevent.
- *
- * Written by Jeff Pohlmeyer, converted to use epoll by Josh Bialkowski
-
-Requires a linux system with epoll
-
-When running, the program creates the named pipe "hiper.fifo"
-
-Whenever there is input into the fifo, the program reads the input as a list
-of URL's and creates some new easy handles to fetch each URL via the
-curl_multi "hiper" API.
-
-
-Thus, you can try a single URL:
-  % echo http://www.yahoo.com > hiper.fifo
-
-Or a whole bunch of them:
-  % cat my-url-list > hiper.fifo
-
-The fifo buffer is handled almost instantly, so you can even add more URL's
-while the previous requests are still being downloaded.
-
-Note:
-  For the sake of simplicity, URL length is limited to 1023 char's !
-
-This is purely a demo app, all retrieved data is simply discarded by the write
-callback.
-
-*/
-
-#include <errno.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/epoll.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <sys/timerfd.h>
-#include <sys/types.h>
-#include <time.h>
-#include <unistd.h>
-
-#include <curl/curl.h>
-
-#ifdef __GNUC__
-#define _Unused __attribute__((unused))
-#else
-#define _Unused
-#endif
-
-#define MSG_OUT stdout /* Send info to stdout, change to stderr if you want */
-
-
-/* Global information, common to all connections */
-typedef struct _GlobalInfo
-{
-  int epfd;    /* epoll filedescriptor */
-  int tfd;     /* timer filedescriptor */
-  int fifofd;  /* fifo filedescriptor */
-  CURLM *multi;
-  int still_running;
-  FILE *input;
-} GlobalInfo;
-
-
-/* Information associated with a specific easy handle */
-typedef struct _ConnInfo
-{
-  CURL *easy;
-  char *url;
-  GlobalInfo *global;
-  char error[CURL_ERROR_SIZE];
-} ConnInfo;
-
-
-/* Information associated with a specific socket */
-typedef struct _SockInfo
-{
-  curl_socket_t sockfd;
-  CURL *easy;
-  int action;
-  long timeout;
-  GlobalInfo *global;
-} SockInfo;
-
-#define __case(code) \
-  case code: s = __STRING(code)
-
-/* Die if we get a bad CURLMcode somewhere */
-static void mcode_or_die(const char *where, CURLMcode code)
-{
-  if(CURLM_OK != code) {
-    const char *s;
-    switch(code) {
-      __case(CURLM_BAD_HANDLE); break;
-      __case(CURLM_BAD_EASY_HANDLE); break;
-      __case(CURLM_OUT_OF_MEMORY); break;
-      __case(CURLM_INTERNAL_ERROR); break;
-      __case(CURLM_UNKNOWN_OPTION); break;
-      __case(CURLM_LAST); break;
-      default: s = "CURLM_unknown"; break;
-      __case(CURLM_BAD_SOCKET);
-      fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
-      /* ignore this error */
-      return;
-    }
-    fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
-    exit(code);
-  }
-}
-
-static void timer_cb(GlobalInfo* g, int revents);
-
-/* Update the timer after curl_multi library does it's thing. Curl will
- * inform us through this callback what it wants the new timeout to be,
- * after it does some work. */
-static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
-{
-  struct itimerspec its;
-
-  fprintf(MSG_OUT, "multi_timer_cb: Setting timeout to %ld ms\n", timeout_ms);
-
-  if(timeout_ms > 0) {
-    its.it_interval.tv_sec = 1;
-    its.it_interval.tv_nsec = 0;
-    its.it_value.tv_sec = timeout_ms / 1000;
-    its.it_value.tv_nsec = (timeout_ms % 1000) * 1000 * 1000;
-  }
-  else if(timeout_ms == 0) {
-    /* libcurl wants us to timeout now, however setting both fields of
-     * new_value.it_value to zero disarms the timer. The closest we can
-     * do is to schedule the timer to fire in 1 ns. */
-    its.it_interval.tv_sec = 1;
-    its.it_interval.tv_nsec = 0;
-    its.it_value.tv_sec = 0;
-    its.it_value.tv_nsec = 1;
-  }
-  else {
-    memset(&its, 0, sizeof(struct itimerspec));
-  }
-
-  timerfd_settime(g->tfd, /*flags=*/0, &its, NULL);
-  return 0;
-}
-
-
-/* Check for completed transfers, and remove their easy handles */
-static void check_multi_info(GlobalInfo *g)
-{
-  char *eff_url;
-  CURLMsg *msg;
-  int msgs_left;
-  ConnInfo *conn;
-  CURL *easy;
-  CURLcode res;
-
-  fprintf(MSG_OUT, "REMAINING: %d\n", g->still_running);
-  while((msg = curl_multi_info_read(g->multi, &msgs_left))) {
-    if(msg->msg == CURLMSG_DONE) {
-      easy = msg->easy_handle;
-      res = msg->data.result;
-      curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
-      curl_easy_getinfo(easy, CURLINFO_EFFECTIVE_URL, &eff_url);
-      fprintf(MSG_OUT, "DONE: %s => (%d) %s\n", eff_url, res, conn->error);
-      curl_multi_remove_handle(g->multi, easy);
-      free(conn->url);
-      curl_easy_cleanup(easy);
-      free(conn);
-    }
-  }
-}
-
-/* Called by libevent when we get action on a multi socket filedescriptor*/
-static void event_cb(GlobalInfo *g, int fd, int revents)
-{
-  CURLMcode rc;
-  struct itimerspec its;
-
-  int action = ((revents & EPOLLIN) ? CURL_CSELECT_IN : 0) |
-               ((revents & EPOLLOUT) ? CURL_CSELECT_OUT : 0);
-
-  rc = curl_multi_socket_action(g->multi, fd, action, &g->still_running);
-  mcode_or_die("event_cb: curl_multi_socket_action", rc);
-
-  check_multi_info(g);
-  if(g->still_running <= 0) {
-    fprintf(MSG_OUT, "last transfer done, kill timeout\n");
-    memset(&its, 0, sizeof(struct itimerspec));
-    timerfd_settime(g->tfd, 0, &its, NULL);
-  }
-}
-
-/* Called by main loop when our timeout expires */
-static void timer_cb(GlobalInfo* g, int revents)
-{
-  CURLMcode rc;
-  uint64_t count = 0;
-  ssize_t err = 0;
-
-  err = read(g->tfd, &count, sizeof(uint64_t));
-  if(err == -1) {
-    /* Note that we may call the timer callback even if the timerfd isn't
-     * readable. It's possible that there are multiple events stored in the
-     * epoll buffer (i.e. the timer may have fired multiple times). The
-     * event count is cleared after the first call so future events in the
-     * epoll buffer will fail to read from the timer. */
-    if(errno == EAGAIN) {
-      fprintf(MSG_OUT, "EAGAIN on tfd %d\n", g->tfd);
-      return;
-    }
-  }
-  if(err != sizeof(uint64_t)) {
-    fprintf(stderr, "read(tfd) == %ld", err);
-    perror("read(tfd)");
-  }
-
-  rc = curl_multi_socket_action(g->multi,
-                                  CURL_SOCKET_TIMEOUT, 0, &g->still_running);
-  mcode_or_die("timer_cb: curl_multi_socket_action", rc);
-  check_multi_info(g);
-}
-
-
-
-/* Clean up the SockInfo structure */
-static void remsock(SockInfo *f, GlobalInfo* g)
-{
-  if(f) {
-    if(f->sockfd) {
-      if(epoll_ctl(g->epfd, EPOLL_CTL_DEL, f->sockfd, NULL))
-        fprintf(stderr, "EPOLL_CTL_DEL failed for fd: %d : %s\n",
-                f->sockfd, strerror(errno));
-    }
-    free(f);
-  }
-}
-
-
-
-/* Assign information to a SockInfo structure */
-static void setsock(SockInfo *f, curl_socket_t s, CURL *e, int act,
-                    GlobalInfo *g)
-{
-  struct epoll_event ev;
-  int kind = ((act & CURL_POLL_IN) ? EPOLLIN : 0) |
-             ((act & CURL_POLL_OUT) ? EPOLLOUT : 0);
-
-  if(f->sockfd) {
-    if(epoll_ctl(g->epfd, EPOLL_CTL_DEL, f->sockfd, NULL))
-      fprintf(stderr, "EPOLL_CTL_DEL failed for fd: %d : %s\n",
-              f->sockfd, strerror(errno));
-  }
-
-  f->sockfd = s;
-  f->action = act;
-  f->easy = e;
-
-  ev.events = kind;
-  ev.data.fd = s;
-  if(epoll_ctl(g->epfd, EPOLL_CTL_ADD, s, &ev))
-    fprintf(stderr, "EPOLL_CTL_ADD failed for fd: %d : %s\n",
-            s, strerror(errno));
-}
-
-
-
-/* Initialize a new SockInfo structure */
-static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
-{
-  SockInfo *fdp = (SockInfo*)calloc(sizeof(SockInfo), 1);
-
-  fdp->global = g;
-  setsock(fdp, s, easy, action, g);
-  curl_multi_assign(g->multi, s, fdp);
-}
-
-/* CURLMOPT_SOCKETFUNCTION */
-static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
-{
-  GlobalInfo *g = (GlobalInfo*) cbp;
-  SockInfo *fdp = (SockInfo*) sockp;
-  const char *whatstr[]={ "none", "IN", "OUT", "INOUT", "REMOVE" };
-
-  fprintf(MSG_OUT,
-          "socket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
-  if(what == CURL_POLL_REMOVE) {
-    fprintf(MSG_OUT, "\n");
-    remsock(fdp, g);
-  }
-  else {
-    if(!fdp) {
-      fprintf(MSG_OUT, "Adding data: %s\n", whatstr[what]);
-      addsock(s, e, what, g);
-    }
-    else {
-      fprintf(MSG_OUT,
-              "Changing action from %s to %s\n",
-              whatstr[fdp->action], whatstr[what]);
-      setsock(fdp, s, e, what, g);
-    }
-  }
-  return 0;
-}
-
-
-
-/* CURLOPT_WRITEFUNCTION */
-static size_t write_cb(void *ptr _Unused, size_t size, size_t nmemb,
-                       void *data)
-{
-  size_t realsize = size * nmemb;
-  (void)_Unused;
-  (void)data;
-
-  return realsize;
-}
-
-
-/* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb(void *p, double dltotal, double dlnow, double ult _Unused,
-                   double uln _Unused)
-{
-  ConnInfo *conn = (ConnInfo *)p;
-
-  fprintf(MSG_OUT, "Progress: %s (%g/%g)\n", conn->url, dlnow, dltotal);
-  return 0;
-}
-
-
-/* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g)
-{
-  ConnInfo *conn;
-  CURLMcode rc;
-
-  conn = (ConnInfo*)calloc(1, sizeof(ConnInfo));
-  conn->error[0]='\0';
-
-  conn->easy = curl_easy_init();
-  if(!conn->easy) {
-    fprintf(MSG_OUT, "curl_easy_init() failed, exiting!\n");
-    exit(2);
-  }
-  conn->global = g;
-  conn->url = strdup(url);
-  curl_easy_setopt(conn->easy, CURLOPT_URL, conn->url);
-  curl_easy_setopt(conn->easy, CURLOPT_WRITEFUNCTION, write_cb);
-  curl_easy_setopt(conn->easy, CURLOPT_WRITEDATA, conn);
-  curl_easy_setopt(conn->easy, CURLOPT_VERBOSE, 1L);
-  curl_easy_setopt(conn->easy, CURLOPT_ERRORBUFFER, conn->error);
-  curl_easy_setopt(conn->easy, CURLOPT_PRIVATE, conn);
-  curl_easy_setopt(conn->easy, CURLOPT_NOPROGRESS, 0L);
-  curl_easy_setopt(conn->easy, CURLOPT_PROGRESSFUNCTION, prog_cb);
-  curl_easy_setopt(conn->easy, CURLOPT_PROGRESSDATA, conn);
-  curl_easy_setopt(conn->easy, CURLOPT_FOLLOWLOCATION, 1L);
-  curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_TIME, 3L);
-  curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_LIMIT, 10L);
-  fprintf(MSG_OUT,
-          "Adding easy %p to multi %p (%s)\n", conn->easy, g->multi, url);
-  rc = curl_multi_add_handle(g->multi, conn->easy);
-  mcode_or_die("new_conn: curl_multi_add_handle", rc);
-
-  /* note that the add_handle() will set a time-out to trigger very soon so
-     that the necessary socket_action() call will be called by this app */
-}
-
-/* This gets called whenever data is received from the fifo */
-static void fifo_cb(GlobalInfo* g, int revents)
-{
-  char s[1024];
-  long int rv = 0;
-  int n = 0;
-
-  do {
-    s[0]='\0';
-    rv = fscanf(g->input, "%1023s%n", s, &n);
-    s[n]='\0';
-    if(n && s[0]) {
-      new_conn(s, g); /* if we read a URL, go get it! */
-    }
-    else
-      break;
-  } while(rv != EOF);
-}
-
-/* Create a named pipe and tell libevent to monitor it */
-static const char *fifo = "hiper.fifo";
-static int init_fifo(GlobalInfo *g)
-{
-  struct stat st;
-  curl_socket_t sockfd;
-  struct epoll_event epev;
-
-  fprintf(MSG_OUT, "Creating named pipe \"%s\"\n", fifo);
-  if(lstat (fifo, &st) == 0) {
-    if((st.st_mode & S_IFMT) == S_IFREG) {
-      errno = EEXIST;
-      perror("lstat");
-      exit(1);
-    }
-  }
-  unlink(fifo);
-  if(mkfifo (fifo, 0600) == -1) {
-    perror("mkfifo");
-    exit(1);
-  }
-  sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
-  if(sockfd == -1) {
-    perror("open");
-    exit(1);
-  }
-
-  g->fifofd = sockfd;
-  g->input = fdopen(sockfd, "r");
-
-  epev.events = EPOLLIN;
-  epev.data.fd = sockfd;
-  epoll_ctl(g->epfd, EPOLL_CTL_ADD, sockfd, &epev);
-
-  fprintf(MSG_OUT, "Now, pipe some URL's into > %s\n", fifo);
-  return 0;
-}
-
-static void clean_fifo(GlobalInfo *g)
-{
-    epoll_ctl(g->epfd, EPOLL_CTL_DEL, g->fifofd, NULL);
-    fclose(g->input);
-    unlink(fifo);
-}
-
-
-int g_should_exit_ = 0;
-
-void SignalHandler(int signo)
-{
-  if(signo == SIGINT) {
-    g_should_exit_ = 1;
-  }
-}
-
-int main(int argc _Unused, char **argv _Unused)
-{
-  GlobalInfo g;
-  struct itimerspec its;
-  struct epoll_event ev;
-  struct epoll_event events[10];
-
-  g_should_exit_ = 0;
-  signal(SIGINT, SignalHandler);
-
-  memset(&g, 0, sizeof(GlobalInfo));
-  g.epfd = epoll_create1(EPOLL_CLOEXEC);
-  if(g.epfd == -1) {
-    perror("epoll_create1 failed");
-    exit(1);
-  }
-
-  g.tfd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK | TFD_CLOEXEC);
-  if(g.tfd == -1) {
-    perror("timerfd_create failed");
-    exit(1);
-  }
-
-  memset(&its, 0, sizeof(struct itimerspec));
-  its.it_interval.tv_sec = 1;
-  its.it_value.tv_sec = 1;
-  timerfd_settime(g.tfd, 0, &its, NULL);
-
-  ev.events = EPOLLIN;
-  ev.data.fd = g.tfd;
-  epoll_ctl(g.epfd, EPOLL_CTL_ADD, g.tfd, &ev);
-
-  init_fifo(&g);
-  g.multi = curl_multi_init();
-
-  /* setup the generic multi interface options we want */
-  curl_multi_setopt(g.multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
-  curl_multi_setopt(g.multi, CURLMOPT_SOCKETDATA, &g);
-  curl_multi_setopt(g.multi, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
-  curl_multi_setopt(g.multi, CURLMOPT_TIMERDATA, &g);
-
-  /* we don't call any curl_multi_socket*() function yet as we have no handles
-     added! */
-
-  fprintf(MSG_OUT, "Entering wait loop\n");
-  fflush(MSG_OUT);
-  while(!g_should_exit_) {
-    int idx;
-    int err = epoll_wait(g.epfd, events,
-                         sizeof(events)/sizeof(struct epoll_event), 10000);
-    if(err == -1) {
-      if(errno == EINTR) {
-        fprintf(MSG_OUT, "note: wait interrupted\n");
-        continue;
-      }
-      else {
-        perror("epoll_wait");
-        exit(1);
-      }
-    }
-
-    for(idx = 0; idx < err; ++idx) {
-      if(events[idx].data.fd == g.fifofd) {
-        fifo_cb(&g, events[idx].events);
-      }
-      else if(events[idx].data.fd == g.tfd) {
-        timer_cb(&g, events[idx].events);
-      }
-      else {
-        event_cb(&g, events[idx].data.fd, events[idx].events);
-      }
-    }
-  }
-
-  fprintf(MSG_OUT, "Exiting normally.\n");
-  fflush(MSG_OUT);
-
-  curl_multi_cleanup(g.multi);
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/evhiperfifo.c b/components/cronet/third_party/curl_headers/docs/examples/evhiperfifo.c
deleted file mode 100644
index 4d77d52..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/evhiperfifo.c
+++ /dev/null
@@ -1,448 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * multi socket interface together with libev
- * </DESC>
- */
-/* Example application source code using the multi socket interface to
- * download many files at once.
- *
- * This example features the same basic functionality as hiperfifo.c does,
- * but this uses libev instead of libevent.
- *
- * Written by Jeff Pohlmeyer, converted to use libev by Markus Koetter
-
-Requires libev and a (POSIX?) system that has mkfifo().
-
-This is an adaptation of libcurl's "hipev.c" and libevent's "event-test.c"
-sample programs.
-
-When running, the program creates the named pipe "hiper.fifo"
-
-Whenever there is input into the fifo, the program reads the input as a list
-of URL's and creates some new easy handles to fetch each URL via the
-curl_multi "hiper" API.
-
-
-Thus, you can try a single URL:
-  % echo http://www.yahoo.com > hiper.fifo
-
-Or a whole bunch of them:
-  % cat my-url-list > hiper.fifo
-
-The fifo buffer is handled almost instantly, so you can even add more URL's
-while the previous requests are still being downloaded.
-
-Note:
-  For the sake of simplicity, URL length is limited to 1023 char's !
-
-This is purely a demo app, all retrieved data is simply discarded by the write
-callback.
-
-*/
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <sys/time.h>
-#include <time.h>
-#include <unistd.h>
-#include <sys/poll.h>
-#include <curl/curl.h>
-#include <ev.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <errno.h>
-
-#define DPRINT(x...) printf(x)
-
-#define MSG_OUT stdout /* Send info to stdout, change to stderr if you want */
-
-
-/* Global information, common to all connections */
-typedef struct _GlobalInfo
-{
-  struct ev_loop *loop;
-  struct ev_io fifo_event;
-  struct ev_timer timer_event;
-  CURLM *multi;
-  int still_running;
-  FILE *input;
-} GlobalInfo;
-
-
-/* Information associated with a specific easy handle */
-typedef struct _ConnInfo
-{
-  CURL *easy;
-  char *url;
-  GlobalInfo *global;
-  char error[CURL_ERROR_SIZE];
-} ConnInfo;
-
-
-/* Information associated with a specific socket */
-typedef struct _SockInfo
-{
-  curl_socket_t sockfd;
-  CURL *easy;
-  int action;
-  long timeout;
-  struct ev_io ev;
-  int evset;
-  GlobalInfo *global;
-} SockInfo;
-
-static void timer_cb(EV_P_ struct ev_timer *w, int revents);
-
-/* Update the event timer after curl_multi library calls */
-static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
-{
-  DPRINT("%s %li\n", __PRETTY_FUNCTION__,  timeout_ms);
-  ev_timer_stop(g->loop, &g->timer_event);
-  if(timeout_ms >= 0) {
-    /* -1 means delete, other values are timeout times in milliseconds */
-    double  t = timeout_ms / 1000;
-    ev_timer_init(&g->timer_event, timer_cb, t, 0.);
-    ev_timer_start(g->loop, &g->timer_event);
-  }
-  return 0;
-}
-
-/* Die if we get a bad CURLMcode somewhere */
-static void mcode_or_die(const char *where, CURLMcode code)
-{
-  if(CURLM_OK != code) {
-    const char *s;
-    switch(code) {
-    case CURLM_BAD_HANDLE:
-      s = "CURLM_BAD_HANDLE";
-      break;
-    case CURLM_BAD_EASY_HANDLE:
-      s = "CURLM_BAD_EASY_HANDLE";
-      break;
-    case CURLM_OUT_OF_MEMORY:
-      s = "CURLM_OUT_OF_MEMORY";
-      break;
-    case CURLM_INTERNAL_ERROR:
-      s = "CURLM_INTERNAL_ERROR";
-      break;
-    case CURLM_UNKNOWN_OPTION:
-      s = "CURLM_UNKNOWN_OPTION";
-      break;
-    case CURLM_LAST:
-      s = "CURLM_LAST";
-      break;
-    default:
-      s = "CURLM_unknown";
-      break;
-    case CURLM_BAD_SOCKET:
-      s = "CURLM_BAD_SOCKET";
-      fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
-      /* ignore this error */
-      return;
-    }
-    fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
-    exit(code);
-  }
-}
-
-
-
-/* Check for completed transfers, and remove their easy handles */
-static void check_multi_info(GlobalInfo *g)
-{
-  char *eff_url;
-  CURLMsg *msg;
-  int msgs_left;
-  ConnInfo *conn;
-  CURL *easy;
-  CURLcode res;
-
-  fprintf(MSG_OUT, "REMAINING: %d\n", g->still_running);
-  while((msg = curl_multi_info_read(g->multi, &msgs_left))) {
-    if(msg->msg == CURLMSG_DONE) {
-      easy = msg->easy_handle;
-      res = msg->data.result;
-      curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
-      curl_easy_getinfo(easy, CURLINFO_EFFECTIVE_URL, &eff_url);
-      fprintf(MSG_OUT, "DONE: %s => (%d) %s\n", eff_url, res, conn->error);
-      curl_multi_remove_handle(g->multi, easy);
-      free(conn->url);
-      curl_easy_cleanup(easy);
-      free(conn);
-    }
-  }
-}
-
-
-
-/* Called by libevent when we get action on a multi socket */
-static void event_cb(EV_P_ struct ev_io *w, int revents)
-{
-  DPRINT("%s  w %p revents %i\n", __PRETTY_FUNCTION__, w, revents);
-  GlobalInfo *g = (GlobalInfo*) w->data;
-  CURLMcode rc;
-
-  int action = ((revents & EV_READ) ? CURL_POLL_IN : 0) |
-    ((revents & EV_WRITE) ? CURL_POLL_OUT : 0);
-  rc = curl_multi_socket_action(g->multi, w->fd, action, &g->still_running);
-  mcode_or_die("event_cb: curl_multi_socket_action", rc);
-  check_multi_info(g);
-  if(g->still_running <= 0) {
-    fprintf(MSG_OUT, "last transfer done, kill timeout\n");
-    ev_timer_stop(g->loop, &g->timer_event);
-  }
-}
-
-/* Called by libevent when our timeout expires */
-static void timer_cb(EV_P_ struct ev_timer *w, int revents)
-{
-  DPRINT("%s  w %p revents %i\n", __PRETTY_FUNCTION__, w, revents);
-
-  GlobalInfo *g = (GlobalInfo *)w->data;
-  CURLMcode rc;
-
-  rc = curl_multi_socket_action(g->multi, CURL_SOCKET_TIMEOUT, 0,
-                                &g->still_running);
-  mcode_or_die("timer_cb: curl_multi_socket_action", rc);
-  check_multi_info(g);
-}
-
-/* Clean up the SockInfo structure */
-static void remsock(SockInfo *f, GlobalInfo *g)
-{
-  printf("%s  \n", __PRETTY_FUNCTION__);
-  if(f) {
-    if(f->evset)
-      ev_io_stop(g->loop, &f->ev);
-    free(f);
-  }
-}
-
-
-
-/* Assign information to a SockInfo structure */
-static void setsock(SockInfo *f, curl_socket_t s, CURL *e, int act,
-                    GlobalInfo *g)
-{
-  printf("%s  \n", __PRETTY_FUNCTION__);
-
-  int kind = ((act & CURL_POLL_IN) ? EV_READ : 0) |
-             ((act & CURL_POLL_OUT) ? EV_WRITE : 0);
-
-  f->sockfd = s;
-  f->action = act;
-  f->easy = e;
-  if(f->evset)
-    ev_io_stop(g->loop, &f->ev);
-  ev_io_init(&f->ev, event_cb, f->sockfd, kind);
-  f->ev.data = g;
-  f->evset = 1;
-  ev_io_start(g->loop, &f->ev);
-}
-
-
-
-/* Initialize a new SockInfo structure */
-static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
-{
-  SockInfo *fdp = calloc(sizeof(SockInfo), 1);
-
-  fdp->global = g;
-  setsock(fdp, s, easy, action, g);
-  curl_multi_assign(g->multi, s, fdp);
-}
-
-/* CURLMOPT_SOCKETFUNCTION */
-static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
-{
-  DPRINT("%s e %p s %i what %i cbp %p sockp %p\n",
-         __PRETTY_FUNCTION__, e, s, what, cbp, sockp);
-
-  GlobalInfo *g = (GlobalInfo*) cbp;
-  SockInfo *fdp = (SockInfo*) sockp;
-  const char *whatstr[]={ "none", "IN", "OUT", "INOUT", "REMOVE"};
-
-  fprintf(MSG_OUT,
-          "socket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
-  if(what == CURL_POLL_REMOVE) {
-    fprintf(MSG_OUT, "\n");
-    remsock(fdp, g);
-  }
-  else {
-    if(!fdp) {
-      fprintf(MSG_OUT, "Adding data: %s\n", whatstr[what]);
-      addsock(s, e, what, g);
-    }
-    else {
-      fprintf(MSG_OUT,
-              "Changing action from %s to %s\n",
-              whatstr[fdp->action], whatstr[what]);
-      setsock(fdp, s, e, what, g);
-    }
-  }
-  return 0;
-}
-
-
-/* CURLOPT_WRITEFUNCTION */
-static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
-{
-  size_t realsize = size * nmemb;
-  ConnInfo *conn = (ConnInfo*) data;
-  (void)ptr;
-  (void)conn;
-  return realsize;
-}
-
-
-/* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb(void *p, double dltotal, double dlnow, double ult,
-                   double uln)
-{
-  ConnInfo *conn = (ConnInfo *)p;
-  (void)ult;
-  (void)uln;
-
-  fprintf(MSG_OUT, "Progress: %s (%g/%g)\n", conn->url, dlnow, dltotal);
-  return 0;
-}
-
-
-/* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g)
-{
-  ConnInfo *conn;
-  CURLMcode rc;
-
-  conn = calloc(1, sizeof(ConnInfo));
-  conn->error[0]='\0';
-
-  conn->easy = curl_easy_init();
-  if(!conn->easy) {
-    fprintf(MSG_OUT, "curl_easy_init() failed, exiting!\n");
-    exit(2);
-  }
-  conn->global = g;
-  conn->url = strdup(url);
-  curl_easy_setopt(conn->easy, CURLOPT_URL, conn->url);
-  curl_easy_setopt(conn->easy, CURLOPT_WRITEFUNCTION, write_cb);
-  curl_easy_setopt(conn->easy, CURLOPT_WRITEDATA, conn);
-  curl_easy_setopt(conn->easy, CURLOPT_VERBOSE, 1L);
-  curl_easy_setopt(conn->easy, CURLOPT_ERRORBUFFER, conn->error);
-  curl_easy_setopt(conn->easy, CURLOPT_PRIVATE, conn);
-  curl_easy_setopt(conn->easy, CURLOPT_NOPROGRESS, 0L);
-  curl_easy_setopt(conn->easy, CURLOPT_PROGRESSFUNCTION, prog_cb);
-  curl_easy_setopt(conn->easy, CURLOPT_PROGRESSDATA, conn);
-  curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_TIME, 3L);
-  curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_LIMIT, 10L);
-
-  fprintf(MSG_OUT,
-          "Adding easy %p to multi %p (%s)\n", conn->easy, g->multi, url);
-  rc = curl_multi_add_handle(g->multi, conn->easy);
-  mcode_or_die("new_conn: curl_multi_add_handle", rc);
-
-  /* note that the add_handle() will set a time-out to trigger very soon so
-     that the necessary socket_action() call will be called by this app */
-}
-
-/* This gets called whenever data is received from the fifo */
-static void fifo_cb(EV_P_ struct ev_io *w, int revents)
-{
-  char s[1024];
-  long int rv = 0;
-  int n = 0;
-  GlobalInfo *g = (GlobalInfo *)w->data;
-
-  do {
-    s[0]='\0';
-    rv = fscanf(g->input, "%1023s%n", s, &n);
-    s[n]='\0';
-    if(n && s[0]) {
-      new_conn(s, g);  /* if we read a URL, go get it! */
-    }
-    else
-      break;
-  } while(rv != EOF);
-}
-
-/* Create a named pipe and tell libevent to monitor it */
-static int init_fifo(GlobalInfo *g)
-{
-  struct stat st;
-  static const char *fifo = "hiper.fifo";
-  curl_socket_t sockfd;
-
-  fprintf(MSG_OUT, "Creating named pipe \"%s\"\n", fifo);
-  if(lstat (fifo, &st) == 0) {
-    if((st.st_mode & S_IFMT) == S_IFREG) {
-      errno = EEXIST;
-      perror("lstat");
-      exit(1);
-    }
-  }
-  unlink(fifo);
-  if(mkfifo (fifo, 0600) == -1) {
-    perror("mkfifo");
-    exit(1);
-  }
-  sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
-  if(sockfd == -1) {
-    perror("open");
-    exit(1);
-  }
-  g->input = fdopen(sockfd, "r");
-
-  fprintf(MSG_OUT, "Now, pipe some URL's into > %s\n", fifo);
-  ev_io_init(&g->fifo_event, fifo_cb, sockfd, EV_READ);
-  ev_io_start(g->loop, &g->fifo_event);
-  return (0);
-}
-
-int main(int argc, char **argv)
-{
-  GlobalInfo g;
-  (void)argc;
-  (void)argv;
-
-  memset(&g, 0, sizeof(GlobalInfo));
-  g.loop = ev_default_loop(0);
-
-  init_fifo(&g);
-  g.multi = curl_multi_init();
-
-  ev_timer_init(&g.timer_event, timer_cb, 0., 0.);
-  g.timer_event.data = &g;
-  g.fifo_event.data = &g;
-  curl_multi_setopt(g.multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
-  curl_multi_setopt(g.multi, CURLMOPT_SOCKETDATA, &g);
-  curl_multi_setopt(g.multi, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
-  curl_multi_setopt(g.multi, CURLMOPT_TIMERDATA, &g);
-
-  /* we don't call any curl_multi_socket*() function yet as we have no handles
-     added! */
-
-  ev_loop(g.loop, 0);
-  curl_multi_cleanup(g.multi);
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/externalsocket.c b/components/cronet/third_party/curl_headers/docs/examples/externalsocket.c
deleted file mode 100644
index d89b041..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/externalsocket.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * An example demonstrating how an application can pass in a custom
- * socket to libcurl to use. This example also handles the connect itself.
- * </DESC>
- */
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <curl/curl.h>
-
-#ifdef WIN32
-#include <windows.h>
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#define close closesocket
-#else
-#include <sys/types.h>        /*  socket types              */
-#include <sys/socket.h>       /*  socket definitions        */
-#include <netinet/in.h>
-#include <arpa/inet.h>        /*  inet (3) functions         */
-#include <unistd.h>           /*  misc. Unix functions      */
-#endif
-
-#include <errno.h>
-
-/* The IP address and port number to connect to */
-#define IPADDR "127.0.0.1"
-#define PORTNUM 80
-
-#ifndef INADDR_NONE
-#define INADDR_NONE 0xffffffff
-#endif
-
-static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
-{
-  size_t written = fwrite(ptr, size, nmemb, (FILE *)stream);
-  return written;
-}
-
-static int closecb(void *clientp, curl_socket_t item)
-{
-  (void)clientp;
-  printf("libcurl wants to close %d now\n", (int)item);
-  return 0;
-}
-
-static curl_socket_t opensocket(void *clientp,
-                                curlsocktype purpose,
-                                struct curl_sockaddr *address)
-{
-  curl_socket_t sockfd;
-  (void)purpose;
-  (void)address;
-  sockfd = *(curl_socket_t *)clientp;
-  /* the actual externally set socket is passed in via the OPENSOCKETDATA
-     option */
-  return sockfd;
-}
-
-static int sockopt_callback(void *clientp, curl_socket_t curlfd,
-                            curlsocktype purpose)
-{
-  (void)clientp;
-  (void)curlfd;
-  (void)purpose;
-  /* This return code was added in libcurl 7.21.5 */
-  return CURL_SOCKOPT_ALREADY_CONNECTED;
-}
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-  struct sockaddr_in servaddr;  /*  socket address structure  */
-  curl_socket_t sockfd;
-
-#ifdef WIN32
-  WSADATA wsaData;
-  int initwsa = WSAStartup(MAKEWORD(2, 0), &wsaData);
-  if(initwsa != 0) {
-    printf("WSAStartup failed: %d\n", initwsa);
-    return 1;
-  }
-#endif
-
-  curl = curl_easy_init();
-  if(curl) {
-    /*
-     * Note that libcurl will internally think that you connect to the host
-     * and port that you specify in the URL option.
-     */
-    curl_easy_setopt(curl, CURLOPT_URL, "http://99.99.99.99:9999");
-
-    /* Create the socket "manually" */
-    sockfd = socket(AF_INET, SOCK_STREAM, 0);
-    if(sockfd == CURL_SOCKET_BAD) {
-      printf("Error creating listening socket.\n");
-      return 3;
-    }
-
-    memset(&servaddr, 0, sizeof(servaddr));
-    servaddr.sin_family = AF_INET;
-    servaddr.sin_port   = htons(PORTNUM);
-
-    servaddr.sin_addr.s_addr = inet_addr(IPADDR);
-    if(INADDR_NONE == servaddr.sin_addr.s_addr) {
-      close(sockfd);
-      return 2;
-    }
-
-    if(connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) ==
-       -1) {
-      close(sockfd);
-      printf("client error: connect: %s\n", strerror(errno));
-      return 1;
-    }
-
-    /* no progress meter please */
-    curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
-
-    /* send all data to this function  */
-    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
-
-    /* call this function to get a socket */
-    curl_easy_setopt(curl, CURLOPT_OPENSOCKETFUNCTION, opensocket);
-    curl_easy_setopt(curl, CURLOPT_OPENSOCKETDATA, &sockfd);
-
-    /* call this function to close sockets */
-    curl_easy_setopt(curl, CURLOPT_CLOSESOCKETFUNCTION, closecb);
-    curl_easy_setopt(curl, CURLOPT_CLOSESOCKETDATA, &sockfd);
-
-    /* call this function to set options for the socket */
-    curl_easy_setopt(curl, CURLOPT_SOCKOPTFUNCTION, sockopt_callback);
-
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
-
-    res = curl_easy_perform(curl);
-
-    curl_easy_cleanup(curl);
-
-    close(sockfd);
-
-    if(res) {
-      printf("libcurl error: %d\n", res);
-      return 4;
-    }
-  }
-
-#ifdef WIN32
-  WSACleanup();
-#endif
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/fileupload.c b/components/cronet/third_party/curl_headers/docs/examples/fileupload.c
deleted file mode 100644
index 8128608..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/fileupload.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Upload to a file:// URL
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-  struct stat file_info;
-  curl_off_t speed_upload, total_time;
-  FILE *fd;
-
-  fd = fopen("debugit", "rb"); /* open file to upload */
-  if(!fd)
-    return 1; /* can't continue */
-
-  /* to get the file size */
-  if(fstat(fileno(fd), &file_info) != 0)
-    return 1; /* can't continue */
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* upload to this place */
-    curl_easy_setopt(curl, CURLOPT_URL,
-                     "file:///home/dast/src/curl/debug/new");
-
-    /* tell it to "upload" to the URL */
-    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
-    /* set where to read from (on Windows you need to use READFUNCTION too) */
-    curl_easy_setopt(curl, CURLOPT_READDATA, fd);
-
-    /* and give the size of the upload (optional) */
-    curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
-                     (curl_off_t)file_info.st_size);
-
-    /* enable verbose for easier tracing */
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK) {
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    }
-    else {
-      /* now extract transfer info */
-      curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD_T, &speed_upload);
-      curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME_T, &total_time);
-
-      fprintf(stderr, "Speed: %" CURL_FORMAT_CURL_OFF_T " bytes/sec during %"
-              CURL_FORMAT_CURL_OFF_T ".%06ld seconds\n",
-              speed_upload,
-              (total_time / 1000000), (long)(total_time % 1000000));
-
-    }
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-  fclose(fd);
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/fopen.c b/components/cronet/third_party/curl_headers/docs/examples/fopen.c
deleted file mode 100644
index f1706fb..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/fopen.c
+++ /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, 2017 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 == NULL) {
-      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
-   * doesn't 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) <= 0) {
-    /* 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 */
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ftp-wildcard.c b/components/cronet/third_party/curl_headers/docs/examples/ftp-wildcard.c
deleted file mode 100644
index f249bc1..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ftp-wildcard.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * FTP wildcard pattern matching
- * </DESC>
- */
-#include <curl/curl.h>
-#include <stdio.h>
-
-struct callback_data {
-  FILE *output;
-};
-
-static long file_is_coming(struct curl_fileinfo *finfo,
-                           struct callback_data *data,
-                           int remains);
-
-static long file_is_downloaded(struct callback_data *data);
-
-static size_t write_it(char *buff, size_t size, size_t nmemb,
-                       void *cb_data);
-
-int main(int argc, char **argv)
-{
-  int rc = CURLE_OK;
-
-  /* curl easy handle */
-  CURL *handle;
-
-  /* help data */
-  struct callback_data data = { 0 };
-
-  /* global initialization */
-  rc = curl_global_init(CURL_GLOBAL_ALL);
-  if(rc)
-    return rc;
-
-  /* initialization of easy handle */
-  handle = curl_easy_init();
-  if(!handle) {
-    curl_global_cleanup();
-    return CURLE_OUT_OF_MEMORY;
-  }
-
-  /* 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 after data from the file have been transferred */
-  curl_easy_setopt(handle, CURLOPT_CHUNK_END_FUNCTION, file_is_downloaded);
-
-  /* this callback will write contents into files */
-  curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, write_it);
-
-  /* put transfer data into callbacks */
-  curl_easy_setopt(handle, CURLOPT_CHUNK_DATA, &data);
-  curl_easy_setopt(handle, CURLOPT_WRITEDATA, &data);
-
-  /* curl_easy_setopt(handle, CURLOPT_VERBOSE, 1L); */
-
-  /* set an URL containing wildcard pattern (only in the last part) */
-  if(argc == 2)
-    curl_easy_setopt(handle, CURLOPT_URL, argv[1]);
-  else
-    curl_easy_setopt(handle, CURLOPT_URL, "ftp://example.com/test/*");
-
-  /* and start transfer! */
-  rc = curl_easy_perform(handle);
-
-  curl_easy_cleanup(handle);
-  curl_global_cleanup();
-  return rc;
-}
-
-static long file_is_coming(struct curl_fileinfo *finfo,
-                           struct callback_data *data,
-                           int remains)
-{
-  printf("%3d %40s %10luB ", remains, finfo->filename,
-         (unsigned long)finfo->size);
-
-  switch(finfo->filetype) {
-  case CURLFILETYPE_DIRECTORY:
-    printf(" DIR\n");
-    break;
-  case CURLFILETYPE_FILE:
-    printf("FILE ");
-    break;
-  default:
-    printf("OTHER\n");
-    break;
-  }
-
-  if(finfo->filetype == CURLFILETYPE_FILE) {
-    /* do not transfer files >= 50B */
-    if(finfo->size > 50) {
-      printf("SKIPPED\n");
-      return CURL_CHUNK_BGN_FUNC_SKIP;
-    }
-
-    data->output = fopen(finfo->filename, "wb");
-    if(!data->output) {
-      return CURL_CHUNK_BGN_FUNC_FAIL;
-    }
-  }
-
-  return CURL_CHUNK_BGN_FUNC_OK;
-}
-
-static long file_is_downloaded(struct callback_data *data)
-{
-  if(data->output) {
-    printf("DOWNLOADED\n");
-    fclose(data->output);
-    data->output = 0x0;
-  }
-  return CURL_CHUNK_END_FUNC_OK;
-}
-
-static size_t write_it(char *buff, size_t size, size_t nmemb,
-                       void *cb_data)
-{
-  struct callback_data *data = cb_data;
-  size_t written = 0;
-  if(data->output)
-    written = fwrite(buff, size, nmemb, data->output);
-  else
-    /* listing output */
-    written = fwrite(buff, size, nmemb, stdout);
-  return written;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ftpget.c b/components/cronet/third_party/curl_headers/docs/examples/ftpget.c
deleted file mode 100644
index fc7ab4a39..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ftpget.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-#include <stdio.h>
-
-#include <curl/curl.h>
-
-/* <DESC>
- * Get a single file from an FTP server.
- * </DESC>
- */
-
-struct FtpFile {
-  const char *filename;
-  FILE *stream;
-};
-
-static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream)
-{
-  struct FtpFile *out = (struct FtpFile *)stream;
-  if(!out->stream) {
-    /* open file for writing */
-    out->stream = fopen(out->filename, "wb");
-    if(!out->stream)
-      return -1; /* failure, can't open file to write */
-  }
-  return fwrite(buffer, size, nmemb, out->stream);
-}
-
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-  struct FtpFile ftpfile = {
-    "curl.tar.gz", /* name to store the file as if successful */
-    NULL
-  };
-
-  curl_global_init(CURL_GLOBAL_DEFAULT);
-
-  curl = curl_easy_init();
-  if(curl) {
-    /*
-     * You better replace the URL with one that works!
-     */
-    curl_easy_setopt(curl, CURLOPT_URL,
-                     "ftp://ftp.example.com/curl/curl-7.9.2.tar.gz");
-    /* Define our callback to get called when there's data to be written */
-    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
-    /* Set a pointer to our struct to pass to the callback */
-    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile);
-
-    /* Switch on full protocol/debug output */
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
-    res = curl_easy_perform(curl);
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-
-    if(CURLE_OK != res) {
-      /* we failed */
-      fprintf(stderr, "curl told us %d\n", res);
-    }
-  }
-
-  if(ftpfile.stream)
-    fclose(ftpfile.stream); /* close the local file */
-
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ftpgetinfo.c b/components/cronet/third_party/curl_headers/docs/examples/ftpgetinfo.c
deleted file mode 100644
index db16408..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ftpgetinfo.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-#include <stdio.h>
-#include <string.h>
-
-#include <curl/curl.h>
-
-/* <DESC>
- * Checks a single file's size and mtime from an FTP server.
- * </DESC>
- */
-
-static size_t throw_away(void *ptr, size_t size, size_t nmemb, void *data)
-{
-  (void)ptr;
-  (void)data;
-  /* we are not interested in the headers itself,
-     so we only return the size we would have saved ... */
-  return (size_t)(size * nmemb);
-}
-
-int main(void)
-{
-  char ftpurl[] = "ftp://ftp.example.com/gnu/binutils/binutils-2.19.1.tar.bz2";
-  CURL *curl;
-  CURLcode res;
-  long filetime = -1;
-  double filesize = 0.0;
-  const char *filename = strrchr(ftpurl, '/') + 1;
-
-  curl_global_init(CURL_GLOBAL_DEFAULT);
-
-  curl = curl_easy_init();
-  if(curl) {
-    curl_easy_setopt(curl, CURLOPT_URL, ftpurl);
-    /* No download if the file */
-    curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
-    /* Ask for filetime */
-    curl_easy_setopt(curl, CURLOPT_FILETIME, 1L);
-    curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, throw_away);
-    curl_easy_setopt(curl, CURLOPT_HEADER, 0L);
-    /* Switch on full protocol/debug output */
-    /* curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); */
-
-    res = curl_easy_perform(curl);
-
-    if(CURLE_OK == res) {
-      /* https://curl.haxx.se/libcurl/c/curl_easy_getinfo.html */
-      res = curl_easy_getinfo(curl, CURLINFO_FILETIME, &filetime);
-      if((CURLE_OK == res) && (filetime >= 0)) {
-        time_t file_time = (time_t)filetime;
-        printf("filetime %s: %s", filename, ctime(&file_time));
-      }
-      res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD,
-                              &filesize);
-      if((CURLE_OK == res) && (filesize>0.0))
-        printf("filesize %s: %0.0f bytes\n", filename, filesize);
-    }
-    else {
-      /* we failed */
-      fprintf(stderr, "curl told us %d\n", res);
-    }
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ftpgetresp.c b/components/cronet/third_party/curl_headers/docs/examples/ftpgetresp.c
deleted file mode 100644
index 7dc34407..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ftpgetresp.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-#include <stdio.h>
-
-#include <curl/curl.h>
-
-/* <DESC>
- * Similar to ftpget.c but also stores the received response-lines
- * in a separate file using our own callback!
- * </DESC>
- */
-static size_t
-write_response(void *ptr, size_t size, size_t nmemb, void *data)
-{
-  FILE *writehere = (FILE *)data;
-  return fwrite(ptr, size, nmemb, writehere);
-}
-
-#define FTPBODY "ftp-list"
-#define FTPHEADERS "ftp-responses"
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-  FILE *ftpfile;
-  FILE *respfile;
-
-  /* local file name to store the file as */
-  ftpfile = fopen(FTPBODY, "wb"); /* b is binary, needed on win32 */
-
-  /* local file name to store the FTP server's response lines in */
-  respfile = fopen(FTPHEADERS, "wb"); /* b is binary, needed on win32 */
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Get a file listing from sunet */
-    curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.example.com/");
-    curl_easy_setopt(curl, CURLOPT_WRITEDATA, ftpfile);
-    /* If you intend to use this on windows with a libcurl DLL, you must use
-       CURLOPT_WRITEFUNCTION as well */
-    curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, write_response);
-    curl_easy_setopt(curl, CURLOPT_HEADERDATA, respfile);
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  fclose(ftpfile); /* close the local file */
-  fclose(respfile); /* close the response file */
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ftpsget.c b/components/cronet/third_party/curl_headers/docs/examples/ftpsget.c
deleted file mode 100644
index 91162e62..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ftpsget.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-#include <stdio.h>
-
-#include <curl/curl.h>
-
-/* <DESC>
- * Get a single file from an FTPS server.
- * </DESC>
- */
-
-struct FtpFile {
-  const char *filename;
-  FILE *stream;
-};
-
-static size_t my_fwrite(void *buffer, size_t size, size_t nmemb,
-                        void *stream)
-{
-  struct FtpFile *out = (struct FtpFile *)stream;
-  if(!out->stream) {
-    /* open file for writing */
-    out->stream = fopen(out->filename, "wb");
-    if(!out->stream)
-      return -1; /* failure, can't open file to write */
-  }
-  return fwrite(buffer, size, nmemb, out->stream);
-}
-
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-  struct FtpFile ftpfile = {
-    "yourfile.bin", /* name to store the file as if successful */
-    NULL
-  };
-
-  curl_global_init(CURL_GLOBAL_DEFAULT);
-
-  curl = curl_easy_init();
-  if(curl) {
-    /*
-     * You better replace the URL with one that works! Note that we use an
-     * FTP:// URL with standard explicit FTPS. You can also do FTPS:// URLs if
-     * you want to do the rarer kind of transfers: implicit.
-     */
-    curl_easy_setopt(curl, CURLOPT_URL,
-                     "ftp://user@server/home/user/file.txt");
-    /* Define our callback to get called when there's data to be written */
-    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
-    /* Set a pointer to our struct to pass to the callback */
-    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile);
-
-    /* We activate SSL and we require it for both control and data */
-    curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL);
-
-    /* Switch on full protocol/debug output */
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
-    res = curl_easy_perform(curl);
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-
-    if(CURLE_OK != res) {
-      /* we failed */
-      fprintf(stderr, "curl told us %d\n", res);
-    }
-  }
-
-  if(ftpfile.stream)
-    fclose(ftpfile.stream); /* close the local file */
-
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ftpupload.c b/components/cronet/third_party/curl_headers/docs/examples/ftpupload.c
deleted file mode 100644
index bd77bb1..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ftpupload.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-#include <stdio.h>
-#include <string.h>
-
-#include <curl/curl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-#ifdef WIN32
-#include <io.h>
-#else
-#include <unistd.h>
-#endif
-
-/* <DESC>
- * Performs an FTP upload and renames the file just after a successful
- * transfer.
- * </DESC>
- */
-
-#define LOCAL_FILE      "/tmp/uploadthis.txt"
-#define UPLOAD_FILE_AS  "while-uploading.txt"
-#define REMOTE_URL      "ftp://example.com/"  UPLOAD_FILE_AS
-#define RENAME_FILE_TO  "renamed-and-fine.txt"
-
-/* NOTE: if you want this example to work on Windows with libcurl as a
-   DLL, you MUST also provide a read callback with CURLOPT_READFUNCTION.
-   Failing to do so will give you a crash since a DLL may not use the
-   variable's memory when passed in to it from an app like this. */
-static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
-{
-  curl_off_t nread;
-  /* in real-world cases, this would probably get this data differently
-     as this fread() stuff is exactly what the library already would do
-     by default internally */
-  size_t retcode = fread(ptr, size, nmemb, stream);
-
-  nread = (curl_off_t)retcode;
-
-  fprintf(stderr, "*** We read %" CURL_FORMAT_CURL_OFF_T
-          " bytes from file\n", nread);
-  return retcode;
-}
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-  FILE *hd_src;
-  struct stat file_info;
-  curl_off_t fsize;
-
-  struct curl_slist *headerlist = NULL;
-  static const char buf_1 [] = "RNFR " UPLOAD_FILE_AS;
-  static const char buf_2 [] = "RNTO " RENAME_FILE_TO;
-
-  /* get the file size of the local file */
-  if(stat(LOCAL_FILE, &file_info)) {
-    printf("Couldn't open '%s': %s\n", LOCAL_FILE, strerror(errno));
-    return 1;
-  }
-  fsize = (curl_off_t)file_info.st_size;
-
-  printf("Local file size: %" CURL_FORMAT_CURL_OFF_T " bytes.\n", fsize);
-
-  /* get a FILE * of the same file */
-  hd_src = fopen(LOCAL_FILE, "rb");
-
-  /* In windows, this will init the winsock stuff */
-  curl_global_init(CURL_GLOBAL_ALL);
-
-  /* get a curl handle */
-  curl = curl_easy_init();
-  if(curl) {
-    /* build a list of commands to pass to libcurl */
-    headerlist = curl_slist_append(headerlist, buf_1);
-    headerlist = curl_slist_append(headerlist, buf_2);
-
-    /* we want to use our own read function */
-    curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
-
-    /* enable uploading */
-    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
-    /* specify target */
-    curl_easy_setopt(curl, CURLOPT_URL, REMOTE_URL);
-
-    /* pass in that last of FTP commands to run after the transfer */
-    curl_easy_setopt(curl, CURLOPT_POSTQUOTE, headerlist);
-
-    /* now specify which file to upload */
-    curl_easy_setopt(curl, CURLOPT_READDATA, hd_src);
-
-    /* Set the size of the file to upload (optional).  If you give a *_LARGE
-       option you MUST make sure that the type of the passed-in argument is a
-       curl_off_t. If you use CURLOPT_INFILESIZE (without _LARGE) you must
-       make sure that to pass in a type 'long' argument. */
-    curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
-                     (curl_off_t)fsize);
-
-    /* Now run off and do what you've been told! */
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* clean up the FTP commands list */
-    curl_slist_free_all(headerlist);
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-  fclose(hd_src); /* close the local file */
-
-  curl_global_cleanup();
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ftpuploadfrommem.c b/components/cronet/third_party/curl_headers/docs/examples/ftpuploadfrommem.c
deleted file mode 100644
index 134cda3..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ftpuploadfrommem.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * FTP upload a file from memory
- * </DESC>
- */
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-static const char data[]=
-  "Lorem ipsum dolor sit amet, consectetur adipiscing elit. "
-  "Nam rhoncus odio id venenatis volutpat. Vestibulum dapibus "
-  "bibendum ullamcorper. Maecenas finibus elit augue, vel "
-  "condimentum odio maximus nec. In hac habitasse platea dictumst. "
-  "Vestibulum vel dolor et turpis rutrum finibus ac at nulla. "
-  "Vivamus nec neque ac elit blandit pretium vitae maximus ipsum. "
-  "Quisque sodales magna vel erat auctor, sed pellentesque nisi "
-  "rhoncus. Donec vehicula maximus pretium. Aliquam eu tincidunt "
-  "lorem.";
-
-struct WriteThis {
-  const char *readptr;
-  size_t sizeleft;
-};
-
-static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp)
-{
-  struct WriteThis *upload = (struct WriteThis *)userp;
-  size_t max = size*nmemb;
-
-  if(max < 1)
-    return 0;
-
-  if(upload->sizeleft) {
-    size_t copylen = max;
-    if(copylen > upload->sizeleft)
-      copylen = upload->sizeleft;
-    memcpy(ptr, upload->readptr, copylen);
-    upload->readptr += copylen;
-    upload->sizeleft -= copylen;
-    return copylen;
-  }
-
-  return 0;                          /* no more data left to deliver */
-}
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-
-  struct WriteThis upload;
-
-  upload.readptr = data;
-  upload.sizeleft = strlen(data);
-
-  /* In windows, this will init the winsock stuff */
-  res = curl_global_init(CURL_GLOBAL_DEFAULT);
-  /* Check for errors */
-  if(res != CURLE_OK) {
-    fprintf(stderr, "curl_global_init() failed: %s\n",
-            curl_easy_strerror(res));
-    return 1;
-  }
-
-  /* get a curl handle */
-  curl = curl_easy_init();
-  if(curl) {
-    /* First set the URL, the target file */
-    curl_easy_setopt(curl, CURLOPT_URL,
-                     "ftp://example.com/path/to/upload/file");
-
-    /* User and password for the FTP login */
-    curl_easy_setopt(curl, CURLOPT_USERPWD, "login:secret");
-
-    /* Now specify we want to UPLOAD data */
-    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
-    /* we want to use our own read function */
-    curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
-
-    /* pointer to pass to our read function */
-    curl_easy_setopt(curl, CURLOPT_READDATA, &upload);
-
-    /* get verbose debug output please */
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
-    /* Set the expected upload size. */
-    curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
-                     (curl_off_t)upload.sizeleft);
-
-    /* Perform the request, res will get the return code */
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-  curl_global_cleanup();
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ftpuploadresume.c b/components/cronet/third_party/curl_headers/docs/examples/ftpuploadresume.c
deleted file mode 100644
index fc7f803..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ftpuploadresume.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Upload to FTP, resuming failed transfers.
- * </DESC>
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* parse headers for Content-Length */
-static size_t getcontentlengthfunc(void *ptr, size_t size, size_t nmemb,
-                                   void *stream)
-{
-  int r;
-  long len = 0;
-
-  r = sscanf(ptr, "Content-Length: %ld\n", &len);
-  if(r)
-    *((long *) stream) = len;
-
-  return size * nmemb;
-}
-
-/* discard downloaded data */
-static size_t discardfunc(void *ptr, size_t size, size_t nmemb, void *stream)
-{
-  (void)ptr;
-  (void)stream;
-  return size * nmemb;
-}
-
-/* read data to upload */
-static size_t readfunc(void *ptr, size_t size, size_t nmemb, void *stream)
-{
-  FILE *f = stream;
-  size_t n;
-
-  if(ferror(f))
-    return CURL_READFUNC_ABORT;
-
-  n = fread(ptr, size, nmemb, f) * size;
-
-  return n;
-}
-
-
-static int upload(CURL *curlhandle, const char *remotepath,
-                  const char *localpath, long timeout, long tries)
-{
-  FILE *f;
-  long uploaded_len = 0;
-  CURLcode r = CURLE_GOT_NOTHING;
-  int c;
-
-  f = fopen(localpath, "rb");
-  if(!f) {
-    perror(NULL);
-    return 0;
-  }
-
-  curl_easy_setopt(curlhandle, CURLOPT_UPLOAD, 1L);
-
-  curl_easy_setopt(curlhandle, CURLOPT_URL, remotepath);
-
-  if(timeout)
-    curl_easy_setopt(curlhandle, CURLOPT_FTP_RESPONSE_TIMEOUT, timeout);
-
-  curl_easy_setopt(curlhandle, CURLOPT_HEADERFUNCTION, getcontentlengthfunc);
-  curl_easy_setopt(curlhandle, CURLOPT_HEADERDATA, &uploaded_len);
-
-  curl_easy_setopt(curlhandle, CURLOPT_WRITEFUNCTION, discardfunc);
-
-  curl_easy_setopt(curlhandle, CURLOPT_READFUNCTION, readfunc);
-  curl_easy_setopt(curlhandle, CURLOPT_READDATA, f);
-
-  /* disable passive mode */
-  curl_easy_setopt(curlhandle, CURLOPT_FTPPORT, "-");
-  curl_easy_setopt(curlhandle, CURLOPT_FTP_CREATE_MISSING_DIRS, 1L);
-
-  curl_easy_setopt(curlhandle, CURLOPT_VERBOSE, 1L);
-
-  for(c = 0; (r != CURLE_OK) && (c < tries); c++) {
-    /* are we resuming? */
-    if(c) { /* yes */
-      /* determine the length of the file already written */
-
-      /*
-       * With NOBODY and NOHEADER, libcurl will issue a SIZE
-       * command, but the only way to retrieve the result is
-       * to parse the returned Content-Length header. Thus,
-       * getcontentlengthfunc(). We need discardfunc() above
-       * because HEADER will dump the headers to stdout
-       * without it.
-       */
-      curl_easy_setopt(curlhandle, CURLOPT_NOBODY, 1L);
-      curl_easy_setopt(curlhandle, CURLOPT_HEADER, 1L);
-
-      r = curl_easy_perform(curlhandle);
-      if(r != CURLE_OK)
-        continue;
-
-      curl_easy_setopt(curlhandle, CURLOPT_NOBODY, 0L);
-      curl_easy_setopt(curlhandle, CURLOPT_HEADER, 0L);
-
-      fseek(f, uploaded_len, SEEK_SET);
-
-      curl_easy_setopt(curlhandle, CURLOPT_APPEND, 1L);
-    }
-    else { /* no */
-      curl_easy_setopt(curlhandle, CURLOPT_APPEND, 0L);
-    }
-
-    r = curl_easy_perform(curlhandle);
-  }
-
-  fclose(f);
-
-  if(r == CURLE_OK)
-    return 1;
-  else {
-    fprintf(stderr, "%s\n", curl_easy_strerror(r));
-    return 0;
-  }
-}
-
-int main(void)
-{
-  CURL *curlhandle = NULL;
-
-  curl_global_init(CURL_GLOBAL_ALL);
-  curlhandle = curl_easy_init();
-
-  upload(curlhandle, "ftp://user:pass@example.com/path/file", "C:\\file",
-         0, 3);
-
-  curl_easy_cleanup(curlhandle);
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/getinfo.c b/components/cronet/third_party/curl_headers/docs/examples/getinfo.c
deleted file mode 100644
index d5a820d..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/getinfo.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Use getinfo to get content-type after completed transfer.
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-
-  curl = curl_easy_init();
-  if(curl) {
-    curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/");
-    res = curl_easy_perform(curl);
-
-    if(CURLE_OK == res) {
-      char *ct;
-      /* ask for the content-type */
-      res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);
-
-      if((CURLE_OK == res) && ct)
-        printf("We received Content-Type: %s\n", ct);
-    }
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/getinmemory.c b/components/cronet/third_party/curl_headers/docs/examples/getinmemory.c
deleted file mode 100644
index 130d821..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/getinmemory.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Shows how the write callback function can be used to download data into a
- * chunk of memory instead of storing it in a file.
- * </DESC>
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <curl/curl.h>
-
-struct MemoryStruct {
-  char *memory;
-  size_t size;
-};
-
-static size_t
-WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
-{
-  size_t realsize = size * nmemb;
-  struct MemoryStruct *mem = (struct MemoryStruct *)userp;
-
-  char *ptr = realloc(mem->memory, mem->size + realsize + 1);
-  if(ptr == NULL) {
-    /* out of memory! */
-    printf("not enough memory (realloc returned NULL)\n");
-    return 0;
-  }
-
-  mem->memory = ptr;
-  memcpy(&(mem->memory[mem->size]), contents, realsize);
-  mem->size += realsize;
-  mem->memory[mem->size] = 0;
-
-  return realsize;
-}
-
-int main(void)
-{
-  CURL *curl_handle;
-  CURLcode res;
-
-  struct MemoryStruct chunk;
-
-  chunk.memory = malloc(1);  /* will be grown as needed by the realloc above */
-  chunk.size = 0;    /* no data at this point */
-
-  curl_global_init(CURL_GLOBAL_ALL);
-
-  /* init the curl session */
-  curl_handle = curl_easy_init();
-
-  /* specify URL to get */
-  curl_easy_setopt(curl_handle, CURLOPT_URL, "https://www.example.com/");
-
-  /* send all data to this function  */
-  curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
-
-  /* we pass our 'chunk' struct to the callback function */
-  curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk);
-
-  /* some servers don't like requests that are made without a user-agent
-     field, so we provide one */
-  curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0");
-
-  /* get it! */
-  res = curl_easy_perform(curl_handle);
-
-  /* check for errors */
-  if(res != CURLE_OK) {
-    fprintf(stderr, "curl_easy_perform() failed: %s\n",
-            curl_easy_strerror(res));
-  }
-  else {
-    /*
-     * Now, our chunk.memory points to a memory block that is chunk.size
-     * bytes big and contains the remote file.
-     *
-     * Do something nice with it!
-     */
-
-    printf("%lu bytes retrieved\n", (unsigned long)chunk.size);
-  }
-
-  /* cleanup curl stuff */
-  curl_easy_cleanup(curl_handle);
-
-  free(chunk.memory);
-
-  /* we're done with libcurl, so clean it up */
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/getredirect.c b/components/cronet/third_party/curl_headers/docs/examples/getredirect.c
deleted file mode 100644
index 64157f9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/getredirect.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Show how to extract Location: header and URL to redirect to.
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-  char *location;
-  long response_code;
-
-  curl = curl_easy_init();
-  if(curl) {
-    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
-
-    /* example.com is redirected, figure out the redirection! */
-
-    /* Perform the request, res will get the return code */
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-    else {
-      res = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);
-      if((res == CURLE_OK) &&
-         ((response_code / 100) != 3)) {
-        /* a redirect implies a 3xx response code */
-        fprintf(stderr, "Not a redirect.\n");
-      }
-      else {
-        res = curl_easy_getinfo(curl, CURLINFO_REDIRECT_URL, &location);
-
-        if((res == CURLE_OK) && location) {
-          /* This is the new absolute URL that you could redirect to, even if
-           * the Location: response header may have been a relative URL. */
-          printf("Redirected to: %s\n", location);
-        }
-      }
-    }
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/ghiper.c b/components/cronet/third_party/curl_headers/docs/examples/ghiper.c
deleted file mode 100644
index 1fa3b59..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/ghiper.c
+++ /dev/null
@@ -1,436 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * multi socket API usage together with with glib2
- * </DESC>
- */
-/* Example application source code using the multi socket interface to
- * download many files at once.
- *
- * Written by Jeff Pohlmeyer
-
- Requires glib-2.x and a (POSIX?) system that has mkfifo().
-
- This is an adaptation of libcurl's "hipev.c" and libevent's "event-test.c"
- sample programs, adapted to use glib's g_io_channel in place of libevent.
-
- When running, the program creates the named pipe "hiper.fifo"
-
- Whenever there is input into the fifo, the program reads the input as a list
- of URL's and creates some new easy handles to fetch each URL via the
- curl_multi "hiper" API.
-
-
- Thus, you can try a single URL:
- % echo http://www.yahoo.com > hiper.fifo
-
- Or a whole bunch of them:
- % cat my-url-list > hiper.fifo
-
- The fifo buffer is handled almost instantly, so you can even add more URL's
- while the previous requests are still being downloaded.
-
- This is purely a demo app, all retrieved data is simply discarded by the write
- callback.
-
-*/
-
-#include <glib.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <curl/curl.h>
-
-#define MSG_OUT g_print   /* Change to "g_error" to write to stderr */
-#define SHOW_VERBOSE 0    /* Set to non-zero for libcurl messages */
-#define SHOW_PROGRESS 0   /* Set to non-zero to enable progress callback */
-
-/* Global information, common to all connections */
-typedef struct _GlobalInfo {
-  CURLM *multi;
-  guint timer_event;
-  int still_running;
-} GlobalInfo;
-
-/* Information associated with a specific easy handle */
-typedef struct _ConnInfo {
-  CURL *easy;
-  char *url;
-  GlobalInfo *global;
-  char error[CURL_ERROR_SIZE];
-} ConnInfo;
-
-/* Information associated with a specific socket */
-typedef struct _SockInfo {
-  curl_socket_t sockfd;
-  CURL *easy;
-  int action;
-  long timeout;
-  GIOChannel *ch;
-  guint ev;
-  GlobalInfo *global;
-} SockInfo;
-
-/* Die if we get a bad CURLMcode somewhere */
-static void mcode_or_die(const char *where, CURLMcode code)
-{
-  if(CURLM_OK != code) {
-    const char *s;
-    switch(code) {
-    case     CURLM_BAD_HANDLE:         s = "CURLM_BAD_HANDLE";         break;
-    case     CURLM_BAD_EASY_HANDLE:    s = "CURLM_BAD_EASY_HANDLE";    break;
-    case     CURLM_OUT_OF_MEMORY:      s = "CURLM_OUT_OF_MEMORY";      break;
-    case     CURLM_INTERNAL_ERROR:     s = "CURLM_INTERNAL_ERROR";     break;
-    case     CURLM_BAD_SOCKET:         s = "CURLM_BAD_SOCKET";         break;
-    case     CURLM_UNKNOWN_OPTION:     s = "CURLM_UNKNOWN_OPTION";     break;
-    case     CURLM_LAST:               s = "CURLM_LAST";               break;
-    default: s = "CURLM_unknown";
-    }
-    MSG_OUT("ERROR: %s returns %s\n", where, s);
-    exit(code);
-  }
-}
-
-/* Check for completed transfers, and remove their easy handles */
-static void check_multi_info(GlobalInfo *g)
-{
-  char *eff_url;
-  CURLMsg *msg;
-  int msgs_left;
-  ConnInfo *conn;
-  CURL *easy;
-  CURLcode res;
-
-  MSG_OUT("REMAINING: %d\n", g->still_running);
-  while((msg = curl_multi_info_read(g->multi, &msgs_left))) {
-    if(msg->msg == CURLMSG_DONE) {
-      easy = msg->easy_handle;
-      res = msg->data.result;
-      curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
-      curl_easy_getinfo(easy, CURLINFO_EFFECTIVE_URL, &eff_url);
-      MSG_OUT("DONE: %s => (%d) %s\n", eff_url, res, conn->error);
-      curl_multi_remove_handle(g->multi, easy);
-      free(conn->url);
-      curl_easy_cleanup(easy);
-      free(conn);
-    }
-  }
-}
-
-/* Called by glib when our timeout expires */
-static gboolean timer_cb(gpointer data)
-{
-  GlobalInfo *g = (GlobalInfo *)data;
-  CURLMcode rc;
-
-  rc = curl_multi_socket_action(g->multi,
-                                CURL_SOCKET_TIMEOUT, 0, &g->still_running);
-  mcode_or_die("timer_cb: curl_multi_socket_action", rc);
-  check_multi_info(g);
-  return FALSE;
-}
-
-/* Update the event timer after curl_multi library calls */
-static int update_timeout_cb(CURLM *multi, long timeout_ms, void *userp)
-{
-  struct timeval timeout;
-  GlobalInfo *g = (GlobalInfo *)userp;
-  timeout.tv_sec = timeout_ms/1000;
-  timeout.tv_usec = (timeout_ms%1000)*1000;
-
-  MSG_OUT("*** update_timeout_cb %ld => %ld:%ld ***\n",
-          timeout_ms, timeout.tv_sec, timeout.tv_usec);
-
-  /*
-   * if timeout_ms is -1, just delete the timer
-   *
-   * For other values of timeout_ms, this should set or *update* the timer to
-   * the new value
-   */
-  if(timeout_ms >= 0)
-    g->timer_event = g_timeout_add(timeout_ms, timer_cb, g);
-  return 0;
-}
-
-/* Called by glib when we get action on a multi socket */
-static gboolean event_cb(GIOChannel *ch, GIOCondition condition, gpointer data)
-{
-  GlobalInfo *g = (GlobalInfo*) data;
-  CURLMcode rc;
-  int fd = g_io_channel_unix_get_fd(ch);
-
-  int action =
-    ((condition & G_IO_IN) ? CURL_CSELECT_IN : 0) |
-    ((condition & G_IO_OUT) ? CURL_CSELECT_OUT : 0);
-
-  rc = curl_multi_socket_action(g->multi, fd, action, &g->still_running);
-  mcode_or_die("event_cb: curl_multi_socket_action", rc);
-
-  check_multi_info(g);
-  if(g->still_running) {
-    return TRUE;
-  }
-  else {
-    MSG_OUT("last transfer done, kill timeout\n");
-    if(g->timer_event) {
-      g_source_remove(g->timer_event);
-    }
-    return FALSE;
-  }
-}
-
-/* Clean up the SockInfo structure */
-static void remsock(SockInfo *f)
-{
-  if(!f) {
-    return;
-  }
-  if(f->ev) {
-    g_source_remove(f->ev);
-  }
-  g_free(f);
-}
-
-/* Assign information to a SockInfo structure */
-static void setsock(SockInfo *f, curl_socket_t s, CURL *e, int act,
-                    GlobalInfo *g)
-{
-  GIOCondition kind =
-    ((act & CURL_POLL_IN) ? G_IO_IN : 0) |
-    ((act & CURL_POLL_OUT) ? G_IO_OUT : 0);
-
-  f->sockfd = s;
-  f->action = act;
-  f->easy = e;
-  if(f->ev) {
-    g_source_remove(f->ev);
-  }
-  f->ev = g_io_add_watch(f->ch, kind, event_cb, g);
-}
-
-/* Initialize a new SockInfo structure */
-static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
-{
-  SockInfo *fdp = g_malloc0(sizeof(SockInfo));
-
-  fdp->global = g;
-  fdp->ch = g_io_channel_unix_new(s);
-  setsock(fdp, s, easy, action, g);
-  curl_multi_assign(g->multi, s, fdp);
-}
-
-/* CURLMOPT_SOCKETFUNCTION */
-static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
-{
-  GlobalInfo *g = (GlobalInfo*) cbp;
-  SockInfo *fdp = (SockInfo*) sockp;
-  static const char *whatstr[]={ "none", "IN", "OUT", "INOUT", "REMOVE" };
-
-  MSG_OUT("socket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
-  if(what == CURL_POLL_REMOVE) {
-    MSG_OUT("\n");
-    remsock(fdp);
-  }
-  else {
-    if(!fdp) {
-      MSG_OUT("Adding data: %s%s\n",
-              (what & CURL_POLL_IN) ? "READ" : "",
-              (what & CURL_POLL_OUT) ? "WRITE" : "");
-      addsock(s, e, what, g);
-    }
-    else {
-      MSG_OUT(
-        "Changing action from %d to %d\n", fdp->action, what);
-      setsock(fdp, s, e, what, g);
-    }
-  }
-  return 0;
-}
-
-/* CURLOPT_WRITEFUNCTION */
-static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
-{
-  size_t realsize = size * nmemb;
-  ConnInfo *conn = (ConnInfo*) data;
-  (void)ptr;
-  (void)conn;
-  return realsize;
-}
-
-/* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb(void *p, double dltotal, double dlnow, double ult,
-                   double uln)
-{
-  ConnInfo *conn = (ConnInfo *)p;
-  MSG_OUT("Progress: %s (%g/%g)\n", conn->url, dlnow, dltotal);
-  return 0;
-}
-
-/* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g)
-{
-  ConnInfo *conn;
-  CURLMcode rc;
-
-  conn = g_malloc0(sizeof(ConnInfo));
-  conn->error[0]='\0';
-  conn->easy = curl_easy_init();
-  if(!conn->easy) {
-    MSG_OUT("curl_easy_init() failed, exiting!\n");
-    exit(2);
-  }
-  conn->global = g;
-  conn->url = g_strdup(url);
-  curl_easy_setopt(conn->easy, CURLOPT_URL, conn->url);
-  curl_easy_setopt(conn->easy, CURLOPT_WRITEFUNCTION, write_cb);
-  curl_easy_setopt(conn->easy, CURLOPT_WRITEDATA, &conn);
-  curl_easy_setopt(conn->easy, CURLOPT_VERBOSE, (long)SHOW_VERBOSE);
-  curl_easy_setopt(conn->easy, CURLOPT_ERRORBUFFER, conn->error);
-  curl_easy_setopt(conn->easy, CURLOPT_PRIVATE, conn);
-  curl_easy_setopt(conn->easy, CURLOPT_NOPROGRESS, SHOW_PROGRESS?0L:1L);
-  curl_easy_setopt(conn->easy, CURLOPT_PROGRESSFUNCTION, prog_cb);
-  curl_easy_setopt(conn->easy, CURLOPT_PROGRESSDATA, conn);
-  curl_easy_setopt(conn->easy, CURLOPT_FOLLOWLOCATION, 1L);
-  curl_easy_setopt(conn->easy, CURLOPT_CONNECTTIMEOUT, 30L);
-  curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_LIMIT, 1L);
-  curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_TIME, 30L);
-
-  MSG_OUT("Adding easy %p to multi %p (%s)\n", conn->easy, g->multi, url);
-  rc = curl_multi_add_handle(g->multi, conn->easy);
-  mcode_or_die("new_conn: curl_multi_add_handle", rc);
-
-  /* note that the add_handle() will set a time-out to trigger very soon so
-     that the necessary socket_action() call will be called by this app */
-}
-
-/* This gets called by glib whenever data is received from the fifo */
-static gboolean fifo_cb(GIOChannel *ch, GIOCondition condition, gpointer data)
-{
-#define BUF_SIZE 1024
-  gsize len, tp;
-  gchar *buf, *tmp, *all = NULL;
-  GIOStatus rv;
-
-  do {
-    GError *err = NULL;
-    rv = g_io_channel_read_line(ch, &buf, &len, &tp, &err);
-    if(buf) {
-      if(tp) {
-        buf[tp]='\0';
-      }
-      new_conn(buf, (GlobalInfo*)data);
-      g_free(buf);
-    }
-    else {
-      buf = g_malloc(BUF_SIZE + 1);
-      while(TRUE) {
-        buf[BUF_SIZE]='\0';
-        g_io_channel_read_chars(ch, buf, BUF_SIZE, &len, &err);
-        if(len) {
-          buf[len]='\0';
-          if(all) {
-            tmp = all;
-            all = g_strdup_printf("%s%s", tmp, buf);
-            g_free(tmp);
-          }
-          else {
-            all = g_strdup(buf);
-          }
-        }
-        else {
-          break;
-        }
-      }
-      if(all) {
-        new_conn(all, (GlobalInfo*)data);
-        g_free(all);
-      }
-      g_free(buf);
-    }
-    if(err) {
-      g_error("fifo_cb: %s", err->message);
-      g_free(err);
-      break;
-    }
-  } while((len) && (rv == G_IO_STATUS_NORMAL));
-  return TRUE;
-}
-
-int init_fifo(void)
-{
-  struct stat st;
-  const char *fifo = "hiper.fifo";
-  int socket;
-
-  if(lstat (fifo, &st) == 0) {
-    if((st.st_mode & S_IFMT) == S_IFREG) {
-      errno = EEXIST;
-      perror("lstat");
-      exit(1);
-    }
-  }
-
-  unlink(fifo);
-  if(mkfifo (fifo, 0600) == -1) {
-    perror("mkfifo");
-    exit(1);
-  }
-
-  socket = open(fifo, O_RDWR | O_NONBLOCK, 0);
-
-  if(socket == -1) {
-    perror("open");
-    exit(1);
-  }
-  MSG_OUT("Now, pipe some URL's into > %s\n", fifo);
-
-  return socket;
-}
-
-int main(int argc, char **argv)
-{
-  GlobalInfo *g;
-  GMainLoop*gmain;
-  int fd;
-  GIOChannel* ch;
-  g = g_malloc0(sizeof(GlobalInfo));
-
-  fd = init_fifo();
-  ch = g_io_channel_unix_new(fd);
-  g_io_add_watch(ch, G_IO_IN, fifo_cb, g);
-  gmain = g_main_loop_new(NULL, FALSE);
-  g->multi = curl_multi_init();
-  curl_multi_setopt(g->multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
-  curl_multi_setopt(g->multi, CURLMOPT_SOCKETDATA, g);
-  curl_multi_setopt(g->multi, CURLMOPT_TIMERFUNCTION, update_timeout_cb);
-  curl_multi_setopt(g->multi, CURLMOPT_TIMERDATA, g);
-
-  /* we don't call any curl_multi_socket*() function yet as we have no handles
-     added! */
-
-  g_main_loop_run(gmain);
-  curl_multi_cleanup(g->multi);
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/hiperfifo.c b/components/cronet/third_party/curl_headers/docs/examples/hiperfifo.c
deleted file mode 100644
index a50522a..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/hiperfifo.c
+++ /dev/null
@@ -1,458 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * multi socket API usage with libevent 2
- * </DESC>
- */
-/* Example application source code using the multi socket interface to
-   download many files at once.
-
-Written by Jeff Pohlmeyer
-
-Requires libevent version 2 and a (POSIX?) system that has mkfifo().
-
-This is an adaptation of libcurl's "hipev.c" and libevent's "event-test.c"
-sample programs.
-
-When running, the program creates the named pipe "hiper.fifo"
-
-Whenever there is input into the fifo, the program reads the input as a list
-of URL's and creates some new easy handles to fetch each URL via the
-curl_multi "hiper" API.
-
-
-Thus, you can try a single URL:
-  % echo http://www.yahoo.com > hiper.fifo
-
-Or a whole bunch of them:
-  % cat my-url-list > hiper.fifo
-
-The fifo buffer is handled almost instantly, so you can even add more URL's
-while the previous requests are still being downloaded.
-
-Note:
-  For the sake of simplicity, URL length is limited to 1023 char's !
-
-This is purely a demo app, all retrieved data is simply discarded by the write
-callback.
-
-*/
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <sys/time.h>
-#include <time.h>
-#include <unistd.h>
-#include <sys/poll.h>
-#include <curl/curl.h>
-#include <event2/event.h>
-#include <event2/event_struct.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <sys/cdefs.h>
-
-#ifdef __GNUC__
-#define _Unused __attribute__((unused))
-#else
-#define _Unused
-#endif
-
-#define MSG_OUT stdout /* Send info to stdout, change to stderr if you want */
-
-
-/* Global information, common to all connections */
-typedef struct _GlobalInfo
-{
-  struct event_base *evbase;
-  struct event fifo_event;
-  struct event timer_event;
-  CURLM *multi;
-  int still_running;
-  FILE *input;
-  int stopped;
-} GlobalInfo;
-
-
-/* Information associated with a specific easy handle */
-typedef struct _ConnInfo
-{
-  CURL *easy;
-  char *url;
-  GlobalInfo *global;
-  char error[CURL_ERROR_SIZE];
-} ConnInfo;
-
-
-/* Information associated with a specific socket */
-typedef struct _SockInfo
-{
-  curl_socket_t sockfd;
-  CURL *easy;
-  int action;
-  long timeout;
-  struct event ev;
-  GlobalInfo *global;
-} SockInfo;
-
-#define __case(code) \
-  case code: s = __STRING(code)
-
-/* Die if we get a bad CURLMcode somewhere */
-static void mcode_or_die(const char *where, CURLMcode code)
-{
-  if(CURLM_OK != code) {
-    const char *s;
-    switch(code) {
-      __case(CURLM_BAD_HANDLE); break;
-      __case(CURLM_BAD_EASY_HANDLE); break;
-      __case(CURLM_OUT_OF_MEMORY); break;
-      __case(CURLM_INTERNAL_ERROR); break;
-      __case(CURLM_UNKNOWN_OPTION); break;
-      __case(CURLM_LAST); break;
-      default: s = "CURLM_unknown"; break;
-      __case(CURLM_BAD_SOCKET);
-      fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
-      /* ignore this error */
-      return;
-    }
-    fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
-    exit(code);
-  }
-}
-
-
-/* Update the event timer after curl_multi library calls */
-static int multi_timer_cb(CURLM *multi _Unused, long timeout_ms, GlobalInfo *g)
-{
-  struct timeval timeout;
-
-  timeout.tv_sec = timeout_ms/1000;
-  timeout.tv_usec = (timeout_ms%1000)*1000;
-  fprintf(MSG_OUT, "multi_timer_cb: Setting timeout to %ld ms\n", timeout_ms);
-
-  /*
-   * if timeout_ms is -1, just delete the timer
-   *
-   * For all other values of timeout_ms, this should set or *update* the timer
-   * to the new value
-   */
-  if(timeout_ms == -1)
-    evtimer_del(&g->timer_event);
-  else /* includes timeout zero */
-    evtimer_add(&g->timer_event, &timeout);
-  return 0;
-}
-
-
-/* Check for completed transfers, and remove their easy handles */
-static void check_multi_info(GlobalInfo *g)
-{
-  char *eff_url;
-  CURLMsg *msg;
-  int msgs_left;
-  ConnInfo *conn;
-  CURL *easy;
-  CURLcode res;
-
-  fprintf(MSG_OUT, "REMAINING: %d\n", g->still_running);
-  while((msg = curl_multi_info_read(g->multi, &msgs_left))) {
-    if(msg->msg == CURLMSG_DONE) {
-      easy = msg->easy_handle;
-      res = msg->data.result;
-      curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
-      curl_easy_getinfo(easy, CURLINFO_EFFECTIVE_URL, &eff_url);
-      fprintf(MSG_OUT, "DONE: %s => (%d) %s\n", eff_url, res, conn->error);
-      curl_multi_remove_handle(g->multi, easy);
-      free(conn->url);
-      curl_easy_cleanup(easy);
-      free(conn);
-    }
-  }
-  if(g->still_running == 0 && g->stopped)
-    event_base_loopbreak(g->evbase);
-}
-
-
-
-/* Called by libevent when we get action on a multi socket */
-static void event_cb(int fd, short kind, void *userp)
-{
-  GlobalInfo *g = (GlobalInfo*) userp;
-  CURLMcode rc;
-
-  int action =
-    ((kind & EV_READ) ? CURL_CSELECT_IN : 0) |
-    ((kind & EV_WRITE) ? CURL_CSELECT_OUT : 0);
-
-  rc = curl_multi_socket_action(g->multi, fd, action, &g->still_running);
-  mcode_or_die("event_cb: curl_multi_socket_action", rc);
-
-  check_multi_info(g);
-  if(g->still_running <= 0) {
-    fprintf(MSG_OUT, "last transfer done, kill timeout\n");
-    if(evtimer_pending(&g->timer_event, NULL)) {
-      evtimer_del(&g->timer_event);
-    }
-  }
-}
-
-
-
-/* Called by libevent when our timeout expires */
-static void timer_cb(int fd _Unused, short kind _Unused, void *userp)
-{
-  GlobalInfo *g = (GlobalInfo *)userp;
-  CURLMcode rc;
-
-  rc = curl_multi_socket_action(g->multi,
-                                  CURL_SOCKET_TIMEOUT, 0, &g->still_running);
-  mcode_or_die("timer_cb: curl_multi_socket_action", rc);
-  check_multi_info(g);
-}
-
-
-
-/* Clean up the SockInfo structure */
-static void remsock(SockInfo *f)
-{
-  if(f) {
-    event_del(&f->ev);
-    free(f);
-  }
-}
-
-
-
-/* Assign information to a SockInfo structure */
-static void setsock(SockInfo *f, curl_socket_t s, CURL *e, int act,
-                    GlobalInfo *g)
-{
-  int kind =
-     ((act & CURL_POLL_IN) ? EV_READ : 0) |
-     ((act & CURL_POLL_OUT) ? EV_WRITE : 0) | EV_PERSIST;
-
-  f->sockfd = s;
-  f->action = act;
-  f->easy = e;
-  event_del(&f->ev);
-  event_assign(&f->ev, g->evbase, f->sockfd, kind, event_cb, g);
-  event_add(&f->ev, NULL);
-}
-
-
-
-/* Initialize a new SockInfo structure */
-static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
-{
-  SockInfo *fdp = calloc(sizeof(SockInfo), 1);
-
-  fdp->global = g;
-  setsock(fdp, s, easy, action, g);
-  curl_multi_assign(g->multi, s, fdp);
-}
-
-/* CURLMOPT_SOCKETFUNCTION */
-static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
-{
-  GlobalInfo *g = (GlobalInfo*) cbp;
-  SockInfo *fdp = (SockInfo*) sockp;
-  const char *whatstr[]={ "none", "IN", "OUT", "INOUT", "REMOVE" };
-
-  fprintf(MSG_OUT,
-          "socket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
-  if(what == CURL_POLL_REMOVE) {
-    fprintf(MSG_OUT, "\n");
-    remsock(fdp);
-  }
-  else {
-    if(!fdp) {
-      fprintf(MSG_OUT, "Adding data: %s\n", whatstr[what]);
-      addsock(s, e, what, g);
-    }
-    else {
-      fprintf(MSG_OUT,
-              "Changing action from %s to %s\n",
-              whatstr[fdp->action], whatstr[what]);
-      setsock(fdp, s, e, what, g);
-    }
-  }
-  return 0;
-}
-
-
-
-/* CURLOPT_WRITEFUNCTION */
-static size_t write_cb(void *ptr _Unused, size_t size, size_t nmemb,
-                       void *data)
-{
-  size_t realsize = size * nmemb;
-  (void)_Unused;
-  (void)data;
-
-  return realsize;
-}
-
-
-/* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb(void *p, double dltotal, double dlnow, double ult _Unused,
-                   double uln _Unused)
-{
-  ConnInfo *conn = (ConnInfo *)p;
-
-  fprintf(MSG_OUT, "Progress: %s (%g/%g)\n", conn->url, dlnow, dltotal);
-  return 0;
-}
-
-
-/* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g)
-{
-  ConnInfo *conn;
-  CURLMcode rc;
-
-  conn = calloc(1, sizeof(ConnInfo));
-  conn->error[0]='\0';
-
-  conn->easy = curl_easy_init();
-  if(!conn->easy) {
-    fprintf(MSG_OUT, "curl_easy_init() failed, exiting!\n");
-    exit(2);
-  }
-  conn->global = g;
-  conn->url = strdup(url);
-  curl_easy_setopt(conn->easy, CURLOPT_URL, conn->url);
-  curl_easy_setopt(conn->easy, CURLOPT_WRITEFUNCTION, write_cb);
-  curl_easy_setopt(conn->easy, CURLOPT_WRITEDATA, conn);
-  curl_easy_setopt(conn->easy, CURLOPT_VERBOSE, 1L);
-  curl_easy_setopt(conn->easy, CURLOPT_ERRORBUFFER, conn->error);
-  curl_easy_setopt(conn->easy, CURLOPT_PRIVATE, conn);
-  curl_easy_setopt(conn->easy, CURLOPT_NOPROGRESS, 0L);
-  curl_easy_setopt(conn->easy, CURLOPT_PROGRESSFUNCTION, prog_cb);
-  curl_easy_setopt(conn->easy, CURLOPT_PROGRESSDATA, conn);
-  curl_easy_setopt(conn->easy, CURLOPT_FOLLOWLOCATION, 1L);
-  fprintf(MSG_OUT,
-          "Adding easy %p to multi %p (%s)\n", conn->easy, g->multi, url);
-  rc = curl_multi_add_handle(g->multi, conn->easy);
-  mcode_or_die("new_conn: curl_multi_add_handle", rc);
-
-  /* note that the add_handle() will set a time-out to trigger very soon so
-     that the necessary socket_action() call will be called by this app */
-}
-
-/* This gets called whenever data is received from the fifo */
-static void fifo_cb(int fd _Unused, short event _Unused, void *arg)
-{
-  char s[1024];
-  long int rv = 0;
-  int n = 0;
-  GlobalInfo *g = (GlobalInfo *)arg;
-
-  do {
-    s[0]='\0';
-    rv = fscanf(g->input, "%1023s%n", s, &n);
-    s[n]='\0';
-    if(n && s[0]) {
-      if(!strcmp(s, "stop")) {
-        g->stopped = 1;
-        if(g->still_running == 0)
-          event_base_loopbreak(g->evbase);
-      }
-      else
-        new_conn(s, arg);  /* if we read a URL, go get it! */
-    }
-    else
-      break;
-  } while(rv != EOF);
-}
-
-/* Create a named pipe and tell libevent to monitor it */
-static const char *fifo = "hiper.fifo";
-static int init_fifo(GlobalInfo *g)
-{
-  struct stat st;
-  curl_socket_t sockfd;
-
-  fprintf(MSG_OUT, "Creating named pipe \"%s\"\n", fifo);
-  if(lstat (fifo, &st) == 0) {
-    if((st.st_mode & S_IFMT) == S_IFREG) {
-      errno = EEXIST;
-      perror("lstat");
-      exit(1);
-    }
-  }
-  unlink(fifo);
-  if(mkfifo (fifo, 0600) == -1) {
-    perror("mkfifo");
-    exit(1);
-  }
-  sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
-  if(sockfd == -1) {
-    perror("open");
-    exit(1);
-  }
-  g->input = fdopen(sockfd, "r");
-
-  fprintf(MSG_OUT, "Now, pipe some URL's into > %s\n", fifo);
-  event_assign(&g->fifo_event, g->evbase, sockfd, EV_READ|EV_PERSIST,
-               fifo_cb, g);
-  event_add(&g->fifo_event, NULL);
-  return (0);
-}
-
-static void clean_fifo(GlobalInfo *g)
-{
-    event_del(&g->fifo_event);
-    fclose(g->input);
-    unlink(fifo);
-}
-
-int main(int argc _Unused, char **argv _Unused)
-{
-  GlobalInfo g;
-
-  memset(&g, 0, sizeof(GlobalInfo));
-  g.evbase = event_base_new();
-  init_fifo(&g);
-  g.multi = curl_multi_init();
-  evtimer_assign(&g.timer_event, g.evbase, timer_cb, &g);
-
-  /* setup the generic multi interface options we want */
-  curl_multi_setopt(g.multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
-  curl_multi_setopt(g.multi, CURLMOPT_SOCKETDATA, &g);
-  curl_multi_setopt(g.multi, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
-  curl_multi_setopt(g.multi, CURLMOPT_TIMERDATA, &g);
-
-  /* we don't call any curl_multi_socket*() function yet as we have no handles
-     added! */
-
-  event_base_dispatch(g.evbase);
-
-  /* this, of course, won't get called since only way to stop this program is
-     via ctrl-C, but it is here to show how cleanup /would/ be done. */
-  clean_fifo(&g);
-  event_del(&g.timer_event);
-  event_base_free(g.evbase);
-  curl_multi_cleanup(g.multi);
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/href_extractor.c b/components/cronet/third_party/curl_headers/docs/examples/href_extractor.c
deleted file mode 100644
index aa2b4381..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/href_extractor.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 2012 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * Uses the "Streaming HTML parser" to extract the href pieces in a streaming
- * manner from a downloaded HTML.
- * </DESC>
- */
-/*
- * The HTML parser is found at https://github.com/arjunc77/htmlstreamparser
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-#include <htmlstreamparser.h>
-
-
-static size_t write_callback(void *buffer, size_t size, size_t nmemb,
-                             void *hsp)
-{
-  size_t realsize = size * nmemb, p;
-  for(p = 0; p < realsize; p++) {
-    html_parser_char_parse(hsp, ((char *)buffer)[p]);
-    if(html_parser_cmp_tag(hsp, "a", 1))
-      if(html_parser_cmp_attr(hsp, "href", 4))
-        if(html_parser_is_in(hsp, HTML_VALUE_ENDED)) {
-          html_parser_val(hsp)[html_parser_val_length(hsp)] = '\0';
-          printf("%s\n", html_parser_val(hsp));
-        }
-  }
-  return realsize;
-}
-
-int main(int argc, char *argv[])
-{
-  char tag[1], attr[4], val[128];
-  CURL *curl;
-  HTMLSTREAMPARSER *hsp;
-
-  if(argc != 2) {
-    printf("Usage: %s URL\n", argv[0]);
-    return EXIT_FAILURE;
-  }
-
-  curl = curl_easy_init();
-
-  hsp = html_parser_init();
-
-  html_parser_set_tag_to_lower(hsp, 1);
-  html_parser_set_attr_to_lower(hsp, 1);
-  html_parser_set_tag_buffer(hsp, tag, sizeof(tag));
-  html_parser_set_attr_buffer(hsp, attr, sizeof(attr));
-  html_parser_set_val_buffer(hsp, val, sizeof(val)-1);
-
-  curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
-  curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
-  curl_easy_setopt(curl, CURLOPT_WRITEDATA, hsp);
-  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
-
-  curl_easy_perform(curl);
-
-  curl_easy_cleanup(curl);
-
-  html_parser_cleanup(hsp);
-
-  return EXIT_SUCCESS;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/htmltidy.c b/components/cronet/third_party/curl_headers/docs/examples/htmltidy.c
deleted file mode 100644
index 1b48e0a..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/htmltidy.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Download a document and use libtidy to parse the HTML.
- * </DESC>
- */
-/*
- * LibTidy => https://www.html-tidy.org/
- */
-
-#include <stdio.h>
-#include <tidy.h>
-#include <tidybuffio.h>
-#include <curl/curl.h>
-
-/* curl write callback, to fill tidy's input buffer...  */
-uint write_cb(char *in, uint size, uint nmemb, TidyBuffer *out)
-{
-  uint r;
-  r = size * nmemb;
-  tidyBufAppend(out, in, r);
-  return r;
-}
-
-/* Traverse the document tree */
-void dumpNode(TidyDoc doc, TidyNode tnod, int indent)
-{
-  TidyNode child;
-  for(child = tidyGetChild(tnod); child; child = tidyGetNext(child) ) {
-    ctmbstr name = tidyNodeGetName(child);
-    if(name) {
-      /* if it has a name, then it's an HTML tag ... */
-      TidyAttr attr;
-      printf("%*.*s%s ", indent, indent, "<", name);
-      /* walk the attribute list */
-      for(attr = tidyAttrFirst(child); attr; attr = tidyAttrNext(attr) ) {
-        printf(tidyAttrName(attr));
-        tidyAttrValue(attr)?printf("=\"%s\" ",
-                                   tidyAttrValue(attr)):printf(" ");
-      }
-      printf(">\n");
-    }
-    else {
-      /* if it doesn't have a name, then it's probably text, cdata, etc... */
-      TidyBuffer buf;
-      tidyBufInit(&buf);
-      tidyNodeGetText(doc, child, &buf);
-      printf("%*.*s\n", indent, indent, buf.bp?(char *)buf.bp:"");
-      tidyBufFree(&buf);
-    }
-    dumpNode(doc, child, indent + 4); /* recursive */
-  }
-}
-
-
-int main(int argc, char **argv)
-{
-  if(argc == 2) {
-    CURL *curl;
-    char curl_errbuf[CURL_ERROR_SIZE];
-    TidyDoc tdoc;
-    TidyBuffer docbuf = {0};
-    TidyBuffer tidy_errbuf = {0};
-    int err;
-
-    curl = curl_easy_init();
-    curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
-    curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_errbuf);
-    curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_cb);
-
-    tdoc = tidyCreate();
-    tidyOptSetBool(tdoc, TidyForceOutput, yes); /* try harder */
-    tidyOptSetInt(tdoc, TidyWrapLen, 4096);
-    tidySetErrorBuffer(tdoc, &tidy_errbuf);
-    tidyBufInit(&docbuf);
-
-    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &docbuf);
-    err = curl_easy_perform(curl);
-    if(!err) {
-      err = tidyParseBuffer(tdoc, &docbuf); /* parse the input */
-      if(err >= 0) {
-        err = tidyCleanAndRepair(tdoc); /* fix any problems */
-        if(err >= 0) {
-          err = tidyRunDiagnostics(tdoc); /* load tidy error buffer */
-          if(err >= 0) {
-            dumpNode(tdoc, tidyGetRoot(tdoc), 0); /* walk the tree */
-            fprintf(stderr, "%s\n", tidy_errbuf.bp); /* show errors */
-          }
-        }
-      }
-    }
-    else
-      fprintf(stderr, "%s\n", curl_errbuf);
-
-    /* clean-up */
-    curl_easy_cleanup(curl);
-    tidyBufFree(&docbuf);
-    tidyBufFree(&tidy_errbuf);
-    tidyRelease(tdoc);
-    return err;
-
-  }
-  else
-    printf("usage: %s <url>\n", argv[0]);
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/htmltitle.cpp b/components/cronet/third_party/curl_headers/docs/examples/htmltitle.cpp
deleted file mode 100644
index 8148888..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/htmltitle.cpp
+++ /dev/null
@@ -1,294 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Get a web page, extract the title with libxml.
- * </DESC>
-
- Written by Lars Nilsson
-
- GNU C++ compile command line suggestion (edit paths accordingly):
-
- g++ -Wall -I/opt/curl/include -I/opt/libxml/include/libxml2 htmltitle.cpp \
- -o htmltitle -L/opt/curl/lib -L/opt/libxml/lib -lcurl -lxml2
-*/
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <string>
-#include <curl/curl.h>
-#include <libxml/HTMLparser.h>
-
-//
-//  Case-insensitive string comparison
-//
-
-#ifdef _MSC_VER
-#define COMPARE(a, b) (!_stricmp((a), (b)))
-#else
-#define COMPARE(a, b) (!strcasecmp((a), (b)))
-#endif
-
-//
-//  libxml callback context structure
-//
-
-struct Context
-{
-  Context(): addTitle(false) { }
-
-  bool addTitle;
-  std::string title;
-};
-
-//
-//  libcurl variables for error strings and returned data
-
-static char errorBuffer[CURL_ERROR_SIZE];
-static std::string buffer;
-
-//
-//  libcurl write callback function
-//
-
-static int writer(char *data, size_t size, size_t nmemb,
-                  std::string *writerData)
-{
-  if(writerData == NULL)
-    return 0;
-
-  writerData->append(data, size*nmemb);
-
-  return size * nmemb;
-}
-
-//
-//  libcurl connection initialization
-//
-
-static bool init(CURL *&conn, char *url)
-{
-  CURLcode code;
-
-  conn = curl_easy_init();
-
-  if(conn == NULL) {
-    fprintf(stderr, "Failed to create CURL connection\n");
-    exit(EXIT_FAILURE);
-  }
-
-  code = curl_easy_setopt(conn, CURLOPT_ERRORBUFFER, errorBuffer);
-  if(code != CURLE_OK) {
-    fprintf(stderr, "Failed to set error buffer [%d]\n", code);
-    return false;
-  }
-
-  code = curl_easy_setopt(conn, CURLOPT_URL, url);
-  if(code != CURLE_OK) {
-    fprintf(stderr, "Failed to set URL [%s]\n", errorBuffer);
-    return false;
-  }
-
-  code = curl_easy_setopt(conn, CURLOPT_FOLLOWLOCATION, 1L);
-  if(code != CURLE_OK) {
-    fprintf(stderr, "Failed to set redirect option [%s]\n", errorBuffer);
-    return false;
-  }
-
-  code = curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writer);
-  if(code != CURLE_OK) {
-    fprintf(stderr, "Failed to set writer [%s]\n", errorBuffer);
-    return false;
-  }
-
-  code = curl_easy_setopt(conn, CURLOPT_WRITEDATA, &buffer);
-  if(code != CURLE_OK) {
-    fprintf(stderr, "Failed to set write data [%s]\n", errorBuffer);
-    return false;
-  }
-
-  return true;
-}
-
-//
-//  libxml start element callback function
-//
-
-static void StartElement(void *voidContext,
-                         const xmlChar *name,
-                         const xmlChar **attributes)
-{
-  Context *context = (Context *)voidContext;
-
-  if(COMPARE((char *)name, "TITLE")) {
-    context->title = "";
-    context->addTitle = true;
-  }
-  (void) attributes;
-}
-
-//
-//  libxml end element callback function
-//
-
-static void EndElement(void *voidContext,
-                       const xmlChar *name)
-{
-  Context *context = (Context *)voidContext;
-
-  if(COMPARE((char *)name, "TITLE"))
-    context->addTitle = false;
-}
-
-//
-//  Text handling helper function
-//
-
-static void handleCharacters(Context *context,
-                             const xmlChar *chars,
-                             int length)
-{
-  if(context->addTitle)
-    context->title.append((char *)chars, length);
-}
-
-//
-//  libxml PCDATA callback function
-//
-
-static void Characters(void *voidContext,
-                       const xmlChar *chars,
-                       int length)
-{
-  Context *context = (Context *)voidContext;
-
-  handleCharacters(context, chars, length);
-}
-
-//
-//  libxml CDATA callback function
-//
-
-static void cdata(void *voidContext,
-                  const xmlChar *chars,
-                  int length)
-{
-  Context *context = (Context *)voidContext;
-
-  handleCharacters(context, chars, length);
-}
-
-//
-//  libxml SAX callback structure
-//
-
-static htmlSAXHandler saxHandler =
-{
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  StartElement,
-  EndElement,
-  NULL,
-  Characters,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  cdata,
-  NULL
-};
-
-//
-//  Parse given (assumed to be) HTML text and return the title
-//
-
-static void parseHtml(const std::string &html,
-                      std::string &title)
-{
-  htmlParserCtxtPtr ctxt;
-  Context context;
-
-  ctxt = htmlCreatePushParserCtxt(&saxHandler, &context, "", 0, "",
-                                  XML_CHAR_ENCODING_NONE);
-
-  htmlParseChunk(ctxt, html.c_str(), html.size(), 0);
-  htmlParseChunk(ctxt, "", 0, 1);
-
-  htmlFreeParserCtxt(ctxt);
-
-  title = context.title;
-}
-
-int main(int argc, char *argv[])
-{
-  CURL *conn = NULL;
-  CURLcode code;
-  std::string title;
-
-  // Ensure one argument is given
-
-  if(argc != 2) {
-    fprintf(stderr, "Usage: %s <url>\n", argv[0]);
-    exit(EXIT_FAILURE);
-  }
-
-  curl_global_init(CURL_GLOBAL_DEFAULT);
-
-  // Initialize CURL connection
-
-  if(!init(conn, argv[1])) {
-    fprintf(stderr, "Connection initializion failed\n");
-    exit(EXIT_FAILURE);
-  }
-
-  // Retrieve content for the URL
-
-  code = curl_easy_perform(conn);
-  curl_easy_cleanup(conn);
-
-  if(code != CURLE_OK) {
-    fprintf(stderr, "Failed to get '%s' [%s]\n", argv[1], errorBuffer);
-    exit(EXIT_FAILURE);
-  }
-
-  // Parse the (assumed) HTML code
-  parseHtml(buffer, title);
-
-  // Display the extracted title
-  printf("Title: %s\n", title.c_str());
-
-  return EXIT_SUCCESS;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/http-post.c b/components/cronet/third_party/curl_headers/docs/examples/http-post.c
deleted file mode 100644
index 01754527..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/http-post.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * simple HTTP POST using the easy interface
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-
-  /* In windows, this will init the winsock stuff */
-  curl_global_init(CURL_GLOBAL_ALL);
-
-  /* get a curl handle */
-  curl = curl_easy_init();
-  if(curl) {
-    /* First set the URL that is about to receive our POST. This URL can
-       just as well be a https:// URL if that is what should receive the
-       data. */
-    curl_easy_setopt(curl, CURLOPT_URL, "http://postit.example.com/moo.cgi");
-    /* Now specify the POST data */
-    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl");
-
-    /* Perform the request, res will get the return code */
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-  curl_global_cleanup();
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/http2-download.c b/components/cronet/third_party/curl_headers/docs/examples/http2-download.c
deleted file mode 100644
index 333b7df..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/http2-download.c
+++ /dev/null
@@ -1,290 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Multiplexed HTTP/2 downloads over a single connection
- * </DESC>
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* somewhat unix-specific */
-#include <sys/time.h>
-#include <unistd.h>
-
-/* curl stuff */
-#include <curl/curl.h>
-
-#ifndef CURLPIPE_MULTIPLEX
-/* This little trick will just make sure that we don't enable pipelining for
-   libcurls old enough to not have this symbol. It is _not_ defined to zero in
-   a recent libcurl header. */
-#define CURLPIPE_MULTIPLEX 0
-#endif
-
-struct transfer {
-  CURL *easy;
-  unsigned int num;
-  FILE *out;
-};
-
-#define NUM_HANDLES 1000
-
-static
-void dump(const char *text, int num, unsigned char *ptr, size_t size,
-          char nohex)
-{
-  size_t i;
-  size_t c;
-
-  unsigned int width = 0x10;
-
-  if(nohex)
-    /* without the hex output, we can fit more on screen */
-    width = 0x40;
-
-  fprintf(stderr, "%d %s, %lu bytes (0x%lx)\n",
-          num, text, (unsigned long)size, (unsigned long)size);
-
-  for(i = 0; i<size; i += width) {
-
-    fprintf(stderr, "%4.4lx: ", (unsigned long)i);
-
-    if(!nohex) {
-      /* hex not disabled, show it */
-      for(c = 0; c < width; c++)
-        if(i + c < size)
-          fprintf(stderr, "%02x ", ptr[i + c]);
-        else
-          fputs("   ", stderr);
-    }
-
-    for(c = 0; (c < width) && (i + c < size); c++) {
-      /* check for 0D0A; if found, skip past and start a new line of output */
-      if(nohex && (i + c + 1 < size) && ptr[i + c] == 0x0D &&
-         ptr[i + c + 1] == 0x0A) {
-        i += (c + 2 - width);
-        break;
-      }
-      fprintf(stderr, "%c",
-              (ptr[i + c] >= 0x20) && (ptr[i + c]<0x80)?ptr[i + c]:'.');
-      /* check again for 0D0A, to avoid an extra \n if it's at width */
-      if(nohex && (i + c + 2 < size) && ptr[i + c + 1] == 0x0D &&
-         ptr[i + c + 2] == 0x0A) {
-        i += (c + 3 - width);
-        break;
-      }
-    }
-    fputc('\n', stderr); /* newline */
-  }
-}
-
-static
-int my_trace(CURL *handle, curl_infotype type,
-             char *data, size_t size,
-             void *userp)
-{
-  const char *text;
-  struct transfer *t = (struct transfer *)userp;
-  unsigned int num = t->num;
-  (void)handle; /* prevent compiler warning */
-
-  switch(type) {
-  case CURLINFO_TEXT:
-    fprintf(stderr, "== %u Info: %s", num, data);
-    /* FALLTHROUGH */
-  default: /* in case a new one is introduced to shock us */
-    return 0;
-
-  case CURLINFO_HEADER_OUT:
-    text = "=> Send header";
-    break;
-  case CURLINFO_DATA_OUT:
-    text = "=> Send data";
-    break;
-  case CURLINFO_SSL_DATA_OUT:
-    text = "=> Send SSL data";
-    break;
-  case CURLINFO_HEADER_IN:
-    text = "<= Recv header";
-    break;
-  case CURLINFO_DATA_IN:
-    text = "<= Recv data";
-    break;
-  case CURLINFO_SSL_DATA_IN:
-    text = "<= Recv SSL data";
-    break;
-  }
-
-  dump(text, num, (unsigned char *)data, size, 1);
-  return 0;
-}
-
-static void setup(struct transfer *t, int num)
-{
-  char filename[128];
-  CURL *hnd;
-
-  hnd = t->easy = curl_easy_init();
-
-  snprintf(filename, 128, "dl-%d", num);
-
-  t->out = fopen(filename, "wb");
-
-  /* write to this file */
-  curl_easy_setopt(hnd, CURLOPT_WRITEDATA, t->out);
-
-  /* set the same URL */
-  curl_easy_setopt(hnd, CURLOPT_URL, "https://localhost:8443/index.html");
-
-  /* please be verbose */
-  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
-  curl_easy_setopt(hnd, CURLOPT_DEBUGFUNCTION, my_trace);
-  curl_easy_setopt(hnd, CURLOPT_DEBUGDATA, t);
-
-  /* HTTP/2 please */
-  curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
-
-  /* we use a self-signed test server, skip verification during debugging */
-  curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYPEER, 0L);
-  curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYHOST, 0L);
-
-#if (CURLPIPE_MULTIPLEX > 0)
-  /* wait for pipe connection to confirm */
-  curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
-#endif
-}
-
-/*
- * Download many transfers over HTTP/2, using the same connection!
- */
-int main(int argc, char **argv)
-{
-  struct transfer trans[NUM_HANDLES];
-  CURLM *multi_handle;
-  int i;
-  int still_running = 0; /* keep number of running handles */
-  int num_transfers;
-  if(argc > 1) {
-    /* if given a number, do that many transfers */
-    num_transfers = atoi(argv[1]);
-    if((num_transfers < 1) || (num_transfers > NUM_HANDLES))
-      num_transfers = 3; /* a suitable low default */
-  }
-  else
-    num_transfers = 3; /* suitable default */
-
-  /* init a multi stack */
-  multi_handle = curl_multi_init();
-
-  for(i = 0; i < num_transfers; i++) {
-    setup(&trans[i], i);
-
-    /* add the individual transfer */
-    curl_multi_add_handle(multi_handle, trans[i].easy);
-  }
-
-  curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
-
-  /* we start some action by calling perform right away */
-  curl_multi_perform(multi_handle, &still_running);
-
-  while(still_running) {
-    struct timeval timeout;
-    int rc; /* select() return code */
-    CURLMcode mc; /* curl_multi_fdset() return code */
-
-    fd_set fdread;
-    fd_set fdwrite;
-    fd_set fdexcep;
-    int maxfd = -1;
-
-    long curl_timeo = -1;
-
-    FD_ZERO(&fdread);
-    FD_ZERO(&fdwrite);
-    FD_ZERO(&fdexcep);
-
-    /* set a suitable timeout to play around with */
-    timeout.tv_sec = 1;
-    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, &still_running);
-      break;
-    }
-  }
-
-  for(i = 0; i < num_transfers; i++) {
-    curl_multi_remove_handle(multi_handle, trans[i].easy);
-    curl_easy_cleanup(trans[i].easy);
-  }
-
-  curl_multi_cleanup(multi_handle);
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/http2-pushinmemory.c b/components/cronet/third_party/curl_headers/docs/examples/http2-pushinmemory.c
deleted file mode 100644
index 00406a8..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/http2-pushinmemory.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * HTTP/2 server push. Receive all data in memory.
- * </DESC>
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* somewhat unix-specific */
-#include <sys/time.h>
-#include <unistd.h>
-
-/* curl stuff */
-#include <curl/curl.h>
-
-struct Memory {
-  char *memory;
-  size_t size;
-};
-
-static size_t
-write_cb(void *contents, size_t size, size_t nmemb, void *userp)
-{
-  size_t realsize = size * nmemb;
-  struct Memory *mem = (struct Memory *)userp;
-  char *ptr = realloc(mem->memory, mem->size + realsize + 1);
-  if(!ptr) {
-    /* out of memory! */
-    printf("not enough memory (realloc returned NULL)\n");
-    return 0;
-  }
-
-  mem->memory = ptr;
-  memcpy(&(mem->memory[mem->size]), contents, realsize);
-  mem->size += realsize;
-  mem->memory[mem->size] = 0;
-
-  return realsize;
-}
-
-#define MAX_FILES 10
-static struct Memory files[MAX_FILES];
-static int pushindex = 1;
-
-static void init_memory(struct Memory *chunk)
-{
-  chunk->memory = malloc(1);  /* grown as needed with realloc */
-  chunk->size = 0;            /* no data at this point */
-}
-
-static void setup(CURL *hnd)
-{
-  /* set the same URL */
-  curl_easy_setopt(hnd, CURLOPT_URL, "https://localhost:8443/index.html");
-
-  /* HTTP/2 please */
-  curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
-
-  /* we use a self-signed test server, skip verification during debugging */
-  curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYPEER, 0L);
-  curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYHOST, 0L);
-
-  /* write data to a struct  */
-  curl_easy_setopt(hnd, CURLOPT_WRITEFUNCTION, write_cb);
-  init_memory(&files[0]);
-  curl_easy_setopt(hnd, CURLOPT_WRITEDATA, &files[0]);
-
-  /* wait for pipe connection to confirm */
-  curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
-}
-
-/* called when there's an incoming push */
-static int server_push_callback(CURL *parent,
-                                CURL *easy,
-                                size_t num_headers,
-                                struct curl_pushheaders *headers,
-                                void *userp)
-{
-  char *headp;
-  int *transfers = (int *)userp;
-  (void)parent; /* we have no use for this */
-  (void)num_headers; /* unused */
-
-  if(pushindex == MAX_FILES)
-    /* can't fit anymore */
-    return CURL_PUSH_DENY;
-
-  /* write to this buffer */
-  init_memory(&files[pushindex]);
-  curl_easy_setopt(easy, CURLOPT_WRITEDATA, &files[pushindex]);
-  pushindex++;
-
-  headp = curl_pushheader_byname(headers, ":path");
-  if(headp)
-    fprintf(stderr, "* Pushed :path '%s'\n", headp /* skip :path + colon */);
-
-  (*transfers)++; /* one more */
-  return CURL_PUSH_OK;
-}
-
-
-/*
- * Download a file over HTTP/2, take care of server push.
- */
-int main(void)
-{
-  CURL *easy;
-  CURLM *multi;
-  int still_running; /* keep number of running handles */
-  int transfers = 1; /* we start with one */
-  int i;
-  struct CURLMsg *m;
-
-  /* init a multi stack */
-  multi = curl_multi_init();
-
-  easy = curl_easy_init();
-
-  /* set options */
-  setup(easy);
-
-  /* add the easy transfer */
-  curl_multi_add_handle(multi, easy);
-
-  curl_multi_setopt(multi, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
-  curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, server_push_callback);
-  curl_multi_setopt(multi, CURLMOPT_PUSHDATA, &transfers);
-
-  while(transfers) {
-    int rc;
-    CURLMcode mcode = curl_multi_perform(multi, &still_running);
-    if(mcode)
-      break;
-
-    mcode = curl_multi_wait(multi, NULL, 0, 1000, &rc);
-    if(mcode)
-      break;
-
-
-    /*
-     * When doing server push, libcurl itself created and added one or more
-     * easy handles but *we* need to clean them up when they are done.
-     */
-    do {
-      int msgq = 0;;
-      m = curl_multi_info_read(multi, &msgq);
-      if(m && (m->msg == CURLMSG_DONE)) {
-        CURL *e = m->easy_handle;
-        transfers--;
-        curl_multi_remove_handle(multi, e);
-        curl_easy_cleanup(e);
-      }
-    } while(m);
-
-  }
-
-
-  curl_multi_cleanup(multi);
-
-  /* 'pushindex' is now the number of received transfers */
-  for(i = 0; i < pushindex; i++) {
-    /* do something fun with the data, and then free it when done */
-    free(files[i].memory);
-  }
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/http2-serverpush.c b/components/cronet/third_party/curl_headers/docs/examples/http2-serverpush.c
deleted file mode 100644
index 63dff4c..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/http2-serverpush.c
+++ /dev/null
@@ -1,334 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * HTTP/2 server push
- * </DESC>
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* somewhat unix-specific */
-#include <sys/time.h>
-#include <unistd.h>
-
-/* curl stuff */
-#include <curl/curl.h>
-
-#ifndef CURLPIPE_MULTIPLEX
-#error "too old libcurl, can't do HTTP/2 server push!"
-#endif
-
-static
-void dump(const char *text, unsigned char *ptr, size_t size,
-          char nohex)
-{
-  size_t i;
-  size_t c;
-
-  unsigned int width = 0x10;
-
-  if(nohex)
-    /* without the hex output, we can fit more on screen */
-    width = 0x40;
-
-  fprintf(stderr, "%s, %lu bytes (0x%lx)\n",
-          text, (unsigned long)size, (unsigned long)size);
-
-  for(i = 0; i<size; i += width) {
-
-    fprintf(stderr, "%4.4lx: ", (unsigned long)i);
-
-    if(!nohex) {
-      /* hex not disabled, show it */
-      for(c = 0; c < width; c++)
-        if(i + c < size)
-          fprintf(stderr, "%02x ", ptr[i + c]);
-        else
-          fputs("   ", stderr);
-    }
-
-    for(c = 0; (c < width) && (i + c < size); c++) {
-      /* check for 0D0A; if found, skip past and start a new line of output */
-      if(nohex && (i + c + 1 < size) && ptr[i + c] == 0x0D &&
-         ptr[i + c + 1] == 0x0A) {
-        i += (c + 2 - width);
-        break;
-      }
-      fprintf(stderr, "%c",
-              (ptr[i + c] >= 0x20) && (ptr[i + c]<0x80)?ptr[i + c]:'.');
-      /* check again for 0D0A, to avoid an extra \n if it's at width */
-      if(nohex && (i + c + 2 < size) && ptr[i + c + 1] == 0x0D &&
-         ptr[i + c + 2] == 0x0A) {
-        i += (c + 3 - width);
-        break;
-      }
-    }
-    fputc('\n', stderr); /* newline */
-  }
-}
-
-static
-int my_trace(CURL *handle, curl_infotype type,
-             char *data, size_t size,
-             void *userp)
-{
-  const char *text;
-  (void)handle; /* prevent compiler warning */
-  (void)userp;
-  switch(type) {
-  case CURLINFO_TEXT:
-    fprintf(stderr, "== Info: %s", data);
-    /* FALLTHROUGH */
-  default: /* in case a new one is introduced to shock us */
-    return 0;
-
-  case CURLINFO_HEADER_OUT:
-    text = "=> Send header";
-    break;
-  case CURLINFO_DATA_OUT:
-    text = "=> Send data";
-    break;
-  case CURLINFO_SSL_DATA_OUT:
-    text = "=> Send SSL data";
-    break;
-  case CURLINFO_HEADER_IN:
-    text = "<= Recv header";
-    break;
-  case CURLINFO_DATA_IN:
-    text = "<= Recv data";
-    break;
-  case CURLINFO_SSL_DATA_IN:
-    text = "<= Recv SSL data";
-    break;
-  }
-
-  dump(text, (unsigned char *)data, size, 1);
-  return 0;
-}
-
-#define OUTPUTFILE "dl"
-
-static int setup(CURL *hnd)
-{
-  FILE *out = fopen(OUTPUTFILE, "wb");
-  if(!out)
-    /* failed */
-    return 1;
-
-  /* write to this file */
-  curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out);
-
-  /* set the same URL */
-  curl_easy_setopt(hnd, CURLOPT_URL, "https://localhost:8443/index.html");
-
-  /* please be verbose */
-  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
-  curl_easy_setopt(hnd, CURLOPT_DEBUGFUNCTION, my_trace);
-
-  /* HTTP/2 please */
-  curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
-
-  /* we use a self-signed test server, skip verification during debugging */
-  curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYPEER, 0L);
-  curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYHOST, 0L);
-
-#if (CURLPIPE_MULTIPLEX > 0)
-  /* wait for pipe connection to confirm */
-  curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
-#endif
-  return 0; /* all is good */
-}
-
-/* called when there's an incoming push */
-static int server_push_callback(CURL *parent,
-                                CURL *easy,
-                                size_t num_headers,
-                                struct curl_pushheaders *headers,
-                                void *userp)
-{
-  char *headp;
-  size_t i;
-  int *transfers = (int *)userp;
-  char filename[128];
-  FILE *out;
-  static unsigned int count = 0;
-
-  (void)parent; /* we have no use for this */
-
-  snprintf(filename, 128, "push%u", count++);
-
-  /* here's a new stream, save it in a new file for each new push */
-  out = fopen(filename, "wb");
-  if(!out) {
-    /* if we can't save it, deny it */
-    fprintf(stderr, "Failed to create output file for push\n");
-    return CURL_PUSH_DENY;
-  }
-
-  /* write to this file */
-  curl_easy_setopt(easy, CURLOPT_WRITEDATA, out);
-
-  fprintf(stderr, "**** push callback approves stream %u, got %lu headers!\n",
-          count, (unsigned long)num_headers);
-
-  for(i = 0; i<num_headers; i++) {
-    headp = curl_pushheader_bynum(headers, i);
-    fprintf(stderr, "**** header %lu: %s\n", (unsigned long)i, headp);
-  }
-
-  headp = curl_pushheader_byname(headers, ":path");
-  if(headp) {
-    fprintf(stderr, "**** The PATH is %s\n", headp /* skip :path + colon */);
-  }
-
-  (*transfers)++; /* one more */
-  return CURL_PUSH_OK;
-}
-
-
-/*
- * Download a file over HTTP/2, take care of server push.
- */
-int main(void)
-{
-  CURL *easy;
-  CURLM *multi_handle;
-  int still_running; /* keep number of running handles */
-  int transfers = 1; /* we start with one */
-  struct CURLMsg *m;
-
-  /* init a multi stack */
-  multi_handle = curl_multi_init();
-
-  easy = curl_easy_init();
-
-  /* set options */
-  if(setup(easy)) {
-    fprintf(stderr, "failed\n");
-    return 1;
-  }
-
-  /* add the easy transfer */
-  curl_multi_add_handle(multi_handle, easy);
-
-  curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
-  curl_multi_setopt(multi_handle, CURLMOPT_PUSHFUNCTION, server_push_callback);
-  curl_multi_setopt(multi_handle, CURLMOPT_PUSHDATA, &transfers);
-
-  /* we start some action by calling perform right away */
-  curl_multi_perform(multi_handle, &still_running);
-
-  do {
-    struct timeval timeout;
-    int rc; /* select() return code */
-    CURLMcode mc; /* curl_multi_fdset() return code */
-
-    fd_set fdread;
-    fd_set fdwrite;
-    fd_set fdexcep;
-    int maxfd = -1;
-
-    long curl_timeo = -1;
-
-    FD_ZERO(&fdread);
-    FD_ZERO(&fdwrite);
-    FD_ZERO(&fdexcep);
-
-    /* set a suitable timeout to play around with */
-    timeout.tv_sec = 1;
-    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, &still_running);
-      break;
-    }
-
-    /*
-     * A little caution when doing server push is that libcurl itself has
-     * created and added one or more easy handles but we need to clean them up
-     * when we are done.
-     */
-
-    do {
-      int msgq = 0;;
-      m = curl_multi_info_read(multi_handle, &msgq);
-      if(m && (m->msg == CURLMSG_DONE)) {
-        CURL *e = m->easy_handle;
-        transfers--;
-        curl_multi_remove_handle(multi_handle, e);
-        curl_easy_cleanup(e);
-      }
-    } while(m);
-
-  } while(transfers); /* as long as we have transfers going */
-
-  curl_multi_cleanup(multi_handle);
-
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/http2-upload.c b/components/cronet/third_party/curl_headers/docs/examples/http2-upload.c
deleted file mode 100644
index 45864cf..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/http2-upload.c
+++ /dev/null
@@ -1,347 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Multiplexed HTTP/2 uploads over a single connection
- * </DESC>
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-/* somewhat unix-specific */
-#include <sys/time.h>
-#include <unistd.h>
-
-/* curl stuff */
-#include <curl/curl.h>
-
-#ifndef CURLPIPE_MULTIPLEX
-/* This little trick will just make sure that we don't enable pipelining for
-   libcurls old enough to not have this symbol. It is _not_ defined to zero in
-   a recent libcurl header. */
-#define CURLPIPE_MULTIPLEX 0
-#endif
-
-#define NUM_HANDLES 1000
-
-struct input {
-  FILE *in;
-  size_t bytes_read; /* count up */
-  CURL *hnd;
-  int num;
-};
-
-static
-void dump(const char *text, int num, unsigned char *ptr, size_t size,
-          char nohex)
-{
-  size_t i;
-  size_t c;
-  unsigned int width = 0x10;
-
-  if(nohex)
-    /* without the hex output, we can fit more on screen */
-    width = 0x40;
-
-  fprintf(stderr, "%d %s, %lu bytes (0x%lx)\n",
-          num, text, (unsigned long)size, (unsigned long)size);
-
-  for(i = 0; i<size; i += width) {
-
-    fprintf(stderr, "%4.4lx: ", (unsigned long)i);
-
-    if(!nohex) {
-      /* hex not disabled, show it */
-      for(c = 0; c < width; c++)
-        if(i + c < size)
-          fprintf(stderr, "%02x ", ptr[i + c]);
-        else
-          fputs("   ", stderr);
-    }
-
-    for(c = 0; (c < width) && (i + c < size); c++) {
-      /* check for 0D0A; if found, skip past and start a new line of output */
-      if(nohex && (i + c + 1 < size) && ptr[i + c] == 0x0D &&
-         ptr[i + c + 1] == 0x0A) {
-        i += (c + 2 - width);
-        break;
-      }
-      fprintf(stderr, "%c",
-              (ptr[i + c] >= 0x20) && (ptr[i + c]<0x80)?ptr[i + c]:'.');
-      /* check again for 0D0A, to avoid an extra \n if it's at width */
-      if(nohex && (i + c + 2 < size) && ptr[i + c + 1] == 0x0D &&
-         ptr[i + c + 2] == 0x0A) {
-        i += (c + 3 - width);
-        break;
-      }
-    }
-    fputc('\n', stderr); /* newline */
-  }
-}
-
-static
-int my_trace(CURL *handle, curl_infotype type,
-             char *data, size_t size,
-             void *userp)
-{
-  char timebuf[60];
-  const char *text;
-  struct input *i = (struct input *)userp;
-  int num = i->num;
-  static time_t epoch_offset;
-  static int    known_offset;
-  struct timeval tv;
-  time_t secs;
-  struct tm *now;
-  (void)handle; /* prevent compiler warning */
-
-  gettimeofday(&tv, NULL);
-  if(!known_offset) {
-    epoch_offset = time(NULL) - tv.tv_sec;
-    known_offset = 1;
-  }
-  secs = epoch_offset + tv.tv_sec;
-  now = localtime(&secs);  /* not thread safe but we don't care */
-  snprintf(timebuf, sizeof(timebuf), "%02d:%02d:%02d.%06ld",
-           now->tm_hour, now->tm_min, now->tm_sec, (long)tv.tv_usec);
-
-  switch(type) {
-  case CURLINFO_TEXT:
-    fprintf(stderr, "%s [%d] Info: %s", timebuf, num, data);
-    /* FALLTHROUGH */
-  default: /* in case a new one is introduced to shock us */
-    return 0;
-
-  case CURLINFO_HEADER_OUT:
-    text = "=> Send header";
-    break;
-  case CURLINFO_DATA_OUT:
-    text = "=> Send data";
-    break;
-  case CURLINFO_SSL_DATA_OUT:
-    text = "=> Send SSL data";
-    break;
-  case CURLINFO_HEADER_IN:
-    text = "<= Recv header";
-    break;
-  case CURLINFO_DATA_IN:
-    text = "<= Recv data";
-    break;
-  case CURLINFO_SSL_DATA_IN:
-    text = "<= Recv SSL data";
-    break;
-  }
-
-  dump(text, num, (unsigned char *)data, size, 1);
-  return 0;
-}
-
-static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp)
-{
-  struct input *i = userp;
-  size_t retcode = fread(ptr, size, nmemb, i->in);
-  i->bytes_read += retcode;
-  return retcode;
-}
-
-static void setup(struct input *i, int num, const char *upload)
-{
-  FILE *out;
-  char url[256];
-  char filename[128];
-  struct stat file_info;
-  curl_off_t uploadsize;
-  CURL *hnd;
-
-  hnd = i->hnd = curl_easy_init();
-  i->num = num;
-  snprintf(filename, 128, "dl-%d", num);
-  out = fopen(filename, "wb");
-
-  snprintf(url, 256, "https://localhost:8443/upload-%d", num);
-
-  /* get the file size of the local file */
-  stat(upload, &file_info);
-  uploadsize = file_info.st_size;
-
-  i->in = fopen(upload, "rb");
-
-  /* write to this file */
-  curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out);
-
-  /* we want to use our own read function */
-  curl_easy_setopt(hnd, CURLOPT_READFUNCTION, read_callback);
-  /* read from this file */
-  curl_easy_setopt(hnd, CURLOPT_READDATA, i);
-  /* provide the size of the upload */
-  curl_easy_setopt(hnd, CURLOPT_INFILESIZE_LARGE, uploadsize);
-
-  /* send in the URL to store the upload as */
-  curl_easy_setopt(hnd, CURLOPT_URL, url);
-
-  /* upload please */
-  curl_easy_setopt(hnd, CURLOPT_UPLOAD, 1L);
-
-  /* please be verbose */
-  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
-  curl_easy_setopt(hnd, CURLOPT_DEBUGFUNCTION, my_trace);
-  curl_easy_setopt(hnd, CURLOPT_DEBUGDATA, i);
-
-  /* HTTP/2 please */
-  curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
-
-  /* we use a self-signed test server, skip verification during debugging */
-  curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYPEER, 0L);
-  curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYHOST, 0L);
-
-#if (CURLPIPE_MULTIPLEX > 0)
-  /* wait for pipe connection to confirm */
-  curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L);
-#endif
-}
-
-/*
- * Upload all files over HTTP/2, using the same physical connection!
- */
-int main(int argc, char **argv)
-{
-  struct input trans[NUM_HANDLES];
-  CURLM *multi_handle;
-  int i;
-  int still_running = 0; /* keep number of running handles */
-  const char *filename = "index.html";
-  int num_transfers;
-
-  if(argc > 1) {
-    /* if given a number, do that many transfers */
-    num_transfers = atoi(argv[1]);
-
-    if(!num_transfers || (num_transfers > NUM_HANDLES))
-      num_transfers = 3; /* a suitable low default */
-
-    if(argc > 2)
-      /* if given a file name, upload this! */
-      filename = argv[2];
-  }
-  else
-    num_transfers = 3;
-
-  /* init a multi stack */
-  multi_handle = curl_multi_init();
-
-  for(i = 0; i<num_transfers; i++) {
-    setup(&trans[i], i, filename);
-
-    /* add the individual transfer */
-    curl_multi_add_handle(multi_handle, trans[i].hnd);
-  }
-
-  curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
-
-  /* We do HTTP/2 so let's stick to one connection per host */
-  curl_multi_setopt(multi_handle, CURLMOPT_MAX_HOST_CONNECTIONS, 1L);
-
-  /* we start some action by calling perform right away */
-  curl_multi_perform(multi_handle, &still_running);
-
-  while(still_running) {
-    struct timeval timeout;
-    int rc; /* select() return code */
-    CURLMcode mc; /* curl_multi_fdset() return code */
-
-    fd_set fdread;
-    fd_set fdwrite;
-    fd_set fdexcep;
-    int maxfd = -1;
-
-    long curl_timeo = -1;
-
-    FD_ZERO(&fdread);
-    FD_ZERO(&fdwrite);
-    FD_ZERO(&fdexcep);
-
-    /* set a suitable timeout to play around with */
-    timeout.tv_sec = 1;
-    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, &still_running);
-      break;
-    }
-  }
-
-  curl_multi_cleanup(multi_handle);
-
-  for(i = 0; i<num_transfers; i++) {
-    curl_multi_remove_handle(multi_handle, trans[i].hnd);
-    curl_easy_cleanup(trans[i].hnd);
-  }
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/httpcustomheader.c b/components/cronet/third_party/curl_headers/docs/examples/httpcustomheader.c
deleted file mode 100644
index 6712f8c..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/httpcustomheader.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * HTTP request with custom modified, removed and added headers
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-
-  curl = curl_easy_init();
-  if(curl) {
-    struct curl_slist *chunk = NULL;
-
-    /* Remove a header curl would otherwise add by itself */
-    chunk = curl_slist_append(chunk, "Accept:");
-
-    /* Add a custom header */
-    chunk = curl_slist_append(chunk, "Another: yes");
-
-    /* Modify a header curl otherwise adds differently */
-    chunk = curl_slist_append(chunk, "Host: example.com");
-
-    /* Add a header with "blank" contents to the right of the colon. Note that
-       we're then using a semicolon in the string we pass to curl! */
-    chunk = curl_slist_append(chunk, "X-silly-header;");
-
-    /* set our custom set of headers */
-    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
-
-    curl_easy_setopt(curl, CURLOPT_URL, "localhost");
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-
-    /* free the custom headers */
-    curl_slist_free_all(chunk);
-  }
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/httpput.c b/components/cronet/third_party/curl_headers/docs/examples/httpput.c
deleted file mode 100644
index 6be9b8d..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/httpput.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * HTTP PUT with easy interface and read callback
- * </DESC>
- */
-#include <stdio.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <curl/curl.h>
-
-/*
- * This example shows a HTTP PUT operation. PUTs a file given as a command
- * line argument to the URL also given on the command line.
- *
- * This example also uses its own read callback.
- *
- * Here's an article on how to setup a PUT handler for Apache:
- * http://www.apacheweek.com/features/put
- */
-
-static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
-{
-  size_t retcode;
-  curl_off_t nread;
-
-  /* in real-world cases, this would probably get this data differently
-     as this fread() stuff is exactly what the library already would do
-     by default internally */
-  retcode = fread(ptr, size, nmemb, stream);
-
-  nread = (curl_off_t)retcode;
-
-  fprintf(stderr, "*** We read %" CURL_FORMAT_CURL_OFF_T
-          " bytes from file\n", nread);
-
-  return retcode;
-}
-
-int main(int argc, char **argv)
-{
-  CURL *curl;
-  CURLcode res;
-  FILE * hd_src;
-  struct stat file_info;
-
-  char *file;
-  char *url;
-
-  if(argc < 3)
-    return 1;
-
-  file = argv[1];
-  url = argv[2];
-
-  /* get the file size of the local file */
-  stat(file, &file_info);
-
-  /* get a FILE * of the same file, could also be made with
-     fdopen() from the previous descriptor, but hey this is just
-     an example! */
-  hd_src = fopen(file, "rb");
-
-  /* In windows, this will init the winsock stuff */
-  curl_global_init(CURL_GLOBAL_ALL);
-
-  /* get a curl handle */
-  curl = curl_easy_init();
-  if(curl) {
-    /* we want to use our own read function */
-    curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
-
-    /* enable uploading */
-    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
-    /* HTTP PUT please */
-    curl_easy_setopt(curl, CURLOPT_PUT, 1L);
-
-    /* specify target URL, and note that this URL should include a file
-       name, not only a directory */
-    curl_easy_setopt(curl, CURLOPT_URL, url);
-
-    /* now specify which file to upload */
-    curl_easy_setopt(curl, CURLOPT_READDATA, hd_src);
-
-    /* provide the size of the upload, we specicially typecast the value
-       to curl_off_t since we must be sure to use the correct data size */
-    curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
-                     (curl_off_t)file_info.st_size);
-
-    /* Now run off and do what you've been told! */
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-  fclose(hd_src); /* close the local file */
-
-  curl_global_cleanup();
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/https.c b/components/cronet/third_party/curl_headers/docs/examples/https.c
deleted file mode 100644
index cca83fee..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/https.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Simple HTTPS GET
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-
-  curl_global_init(CURL_GLOBAL_DEFAULT);
-
-  curl = curl_easy_init();
-  if(curl) {
-    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
-
-#ifdef SKIP_PEER_VERIFICATION
-    /*
-     * If you want to connect to a site who isn't using a certificate that is
-     * signed by one of the certs in the CA bundle you have, you can skip the
-     * verification of the server's certificate. This makes the connection
-     * A LOT LESS SECURE.
-     *
-     * If you have a CA cert for the server stored someplace else than in the
-     * default bundle, then the CURLOPT_CAPATH option might come handy for
-     * you.
-     */
-    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
-#endif
-
-#ifdef SKIP_HOSTNAME_VERIFICATION
-    /*
-     * If the site you're connecting to uses a different host name that what
-     * they have mentioned in their server certificate's commonName (or
-     * subjectAltName) fields, libcurl will refuse to connect. You can skip
-     * this check, but this will make the connection less secure.
-     */
-    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
-#endif
-
-    /* Perform the request, res will get the return code */
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-append.c b/components/cronet/third_party/curl_headers/docs/examples/imap-append.c
deleted file mode 100644
index 157d574..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-append.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to send e-mails
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to send mail using libcurl's IMAP
- * capabilities.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-#define FROM    "<sender@example.org>"
-#define TO      "<addressee@example.net>"
-#define CC      "<info@example.org>"
-
-static const char *payload_text[] = {
-  "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
-  "To: " TO "\r\n",
-  "From: " FROM "(Example User)\r\n",
-  "Cc: " CC "(Another example User)\r\n",
-  "Message-ID: "
-  "<dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
-  "Subject: IMAP example message\r\n",
-  "\r\n", /* empty line to divide headers from body, see RFC5322 */
-  "The body of the message starts here.\r\n",
-  "\r\n",
-  "It could be a lot of lines, could be MIME encoded, whatever.\r\n",
-  "Check RFC5322.\r\n",
-  NULL
-};
-
-struct upload_status {
-  int lines_read;
-};
-
-static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
-{
-  struct upload_status *upload_ctx = (struct upload_status *)userp;
-  const char *data;
-
-  if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
-    return 0;
-  }
-
-  data = payload_text[upload_ctx->lines_read];
-
-  if(data) {
-    size_t len = strlen(data);
-    memcpy(ptr, data, len);
-    upload_ctx->lines_read++;
-
-    return len;
-  }
-
-  return 0;
-}
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    const char **p;
-    long infilesize;
-    struct upload_status upload_ctx;
-
-    upload_ctx.lines_read = 0;
-
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This will create a new message 100. Note that you should perform an
-     * EXAMINE command to obtain the UID of the next message to create and a
-     * SELECT to ensure you are creating the message in the OUTBOX. */
-    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/100");
-
-    /* In this case, we're using a callback function to specify the data. You
-     * could just use the CURLOPT_READDATA option to specify a FILE pointer to
-     * read from. */
-    curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
-    curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
-    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
-    infilesize = 0;
-    for(p = payload_text; *p; ++p) {
-      infilesize += (long)strlen(*p);
-    }
-    curl_easy_setopt(curl, CURLOPT_INFILESIZE, infilesize);
-
-    /* Perform the append */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-copy.c b/components/cronet/third_party/curl_headers/docs/examples/imap-copy.c
deleted file mode 100644
index 1ef43f89..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-copy.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to copy an e-mail from one folder to another
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to copy a mail from one mailbox folder
- * to another using libcurl's IMAP capabilities.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This is source mailbox folder to select */
-    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX");
-
-    /* Set the COPY command specifying the message ID and destination folder */
-    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "COPY 1 FOLDER");
-
-    /* Note that to perform a move operation you will need to perform the copy,
-     * then mark the original mail as Deleted and EXPUNGE or CLOSE. Please see
-     * imap-store.c for more information on deleting messages. */
-
-    /* Perform the custom request */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-create.c b/components/cronet/third_party/curl_headers/docs/examples/imap-create.c
deleted file mode 100644
index 6f04453b..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-create.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to create a new folder
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to create a new mailbox folder using
- * libcurl's IMAP capabilities.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This is just the server URL */
-    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
-
-    /* Set the CREATE command specifying the new folder name */
-    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "CREATE FOLDER");
-
-    /* Perform the custom request */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-delete.c b/components/cronet/third_party/curl_headers/docs/examples/imap-delete.c
deleted file mode 100644
index cf1ae0bb..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-delete.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to delete a folder
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to delete an existing mailbox folder
- * using libcurl's IMAP capabilities.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This is just the server URL */
-    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
-
-    /* Set the DELETE command specifying the existing folder */
-    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE FOLDER");
-
-    /* Perform the custom request */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-examine.c b/components/cronet/third_party/curl_headers/docs/examples/imap-examine.c
deleted file mode 100644
index b89e9dc..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-examine.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to obtain information about a folder
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to obtain information about a mailbox
- * folder using libcurl's IMAP capabilities via the EXAMINE command.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This is just the server URL */
-    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
-
-    /* Set the EXAMINE command specifying the mailbox folder */
-    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "EXAMINE OUTBOX");
-
-    /* Perform the custom request */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-fetch.c b/components/cronet/third_party/curl_headers/docs/examples/imap-fetch.c
deleted file mode 100644
index 192d2e9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-fetch.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to retreieve e-mails
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to fetch mail using libcurl's IMAP
- * capabilities.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This will fetch message 1 from the user's inbox */
-    curl_easy_setopt(curl, CURLOPT_URL,
-                     "imap://imap.example.com/INBOX/;UID=1");
-
-    /* Perform the fetch */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-list.c b/components/cronet/third_party/curl_headers/docs/examples/imap-list.c
deleted file mode 100644
index 291e1e6..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-list.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example to list the folders within a mailbox
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to list the folders within an IMAP
- * mailbox.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This will list the folders within the user's mailbox. If you want to
-     * list the folders within a specific folder, for example the inbox, then
-     * specify the folder as a path in the URL such as /INBOX */
-    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
-
-    /* Perform the list */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-lsub.c b/components/cronet/third_party/curl_headers/docs/examples/imap-lsub.c
deleted file mode 100644
index d130c3d..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-lsub.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example to list the subscribed folders
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to list the subscribed folders within
- * an IMAP mailbox.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This is just the server URL */
-    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
-
-    /* Set the LSUB command. Note the syntax is very similar to that of a LIST
-       command. */
-    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "LSUB \"\" *");
-
-    /* Perform the custom request */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-multi.c b/components/cronet/third_party/curl_headers/docs/examples/imap-multi.c
deleted file mode 100644
index 07d1b8b..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-multi.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example using the multi interface
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to fetch mail using libcurl's IMAP
- * capabilities. It builds on the imap-fetch.c example to demonstrate how to
- * use libcurl's multi interface.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-#define MULTI_PERFORM_HANG_TIMEOUT 60 * 1000
-
-static struct timeval tvnow(void)
-{
-  struct timeval now;
-
-  /* time() returns the value of time in seconds since the epoch */
-  now.tv_sec = (long)time(NULL);
-  now.tv_usec = 0;
-
-  return now;
-}
-
-static long tvdiff(struct timeval newer, struct timeval older)
-{
-  return (newer.tv_sec - older.tv_sec) * 1000 +
-    (newer.tv_usec - older.tv_usec) / 1000;
-}
-
-int main(void)
-{
-  CURL *curl;
-  CURLM *mcurl;
-  int still_running = 1;
-  struct timeval mp_start;
-
-  curl_global_init(CURL_GLOBAL_DEFAULT);
-
-  curl = curl_easy_init();
-  if(!curl)
-    return 1;
-
-  mcurl = curl_multi_init();
-  if(!mcurl)
-    return 2;
-
-  /* Set username and password */
-  curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-  curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-  /* This will fetch message 1 from the user's inbox */
-  curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX/;UID=1");
-
-  /* Tell the multi stack about our easy handle */
-  curl_multi_add_handle(mcurl, curl);
-
-  /* Record the start time which we can use later */
-  mp_start = tvnow();
-
-  /* We start some action by calling perform right away */
-  curl_multi_perform(mcurl, &still_running);
-
-  while(still_running) {
-    struct timeval timeout;
-    fd_set fdread;
-    fd_set fdwrite;
-    fd_set fdexcep;
-    int maxfd = -1;
-    int rc;
-    CURLMcode mc; /* curl_multi_fdset() return code */
-
-    long curl_timeo = -1;
-
-    /* Initialise the file descriptors */
-    FD_ZERO(&fdread);
-    FD_ZERO(&fdwrite);
-    FD_ZERO(&fdexcep);
-
-    /* Set a suitable timeout to play around with */
-    timeout.tv_sec = 1;
-    timeout.tv_usec = 0;
-
-    curl_multi_timeout(mcurl, &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(mcurl, &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);
-    }
-
-    if(tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) {
-      fprintf(stderr,
-              "ABORTING: Since it seems that we would have run forever.\n");
-      break;
-    }
-
-    switch(rc) {
-    case -1:  /* select error */
-      break;
-    case 0:   /* timeout */
-    default:  /* action */
-      curl_multi_perform(mcurl, &still_running);
-      break;
-    }
-  }
-
-  /* Always cleanup */
-  curl_multi_remove_handle(mcurl, curl);
-  curl_multi_cleanup(mcurl);
-  curl_easy_cleanup(curl);
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-noop.c b/components/cronet/third_party/curl_headers/docs/examples/imap-noop.c
deleted file mode 100644
index 566890e..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-noop.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to perform a noop
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to perform a noop using libcurl's IMAP
- * capabilities.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This is just the server URL */
-    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com");
-
-    /* Set the NOOP command */
-    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "NOOP");
-
-    /* Perform the custom request */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-search.c b/components/cronet/third_party/curl_headers/docs/examples/imap-search.c
deleted file mode 100644
index 427dcc9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-search.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to search for new e-mails
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to search for new messages using
- * libcurl's IMAP capabilities.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This is mailbox folder to select */
-    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX");
-
-    /* Set the SEARCH command specifying what we want to search for. Note that
-     * this can contain a message sequence set and a number of search criteria
-     * keywords including flags such as ANSWERED, DELETED, DRAFT, FLAGGED, NEW,
-     * RECENT and SEEN. For more information about the search criteria please
-     * see RFC-3501 section 6.4.4.   */
-    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "SEARCH NEW");
-
-    /* Perform the custom request */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-ssl.c b/components/cronet/third_party/curl_headers/docs/examples/imap-ssl.c
deleted file mode 100644
index 69839ad..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-ssl.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example using SSL
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to fetch mail using libcurl's IMAP
- * capabilities. It builds on the imap-fetch.c example adding transport
- * security to protect the authentication details from being snooped.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This will fetch message 1 from the user's inbox. Note the use of
-    * imaps:// rather than imap:// to request a SSL based connection. */
-    curl_easy_setopt(curl, CURLOPT_URL,
-                     "imaps://imap.example.com/INBOX/;UID=1");
-
-    /* If you want to connect to a site who isn't using a certificate that is
-     * signed by one of the certs in the CA bundle you have, you can skip the
-     * verification of the server's certificate. This makes the connection
-     * A LOT LESS SECURE.
-     *
-     * If you have a CA cert for the server stored someplace else than in the
-     * default bundle, then the CURLOPT_CAPATH option might come handy for
-     * you. */
-#ifdef SKIP_PEER_VERIFICATION
-    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
-#endif
-
-    /* If the site you're connecting to uses a different host name that what
-     * they have mentioned in their server certificate's commonName (or
-     * subjectAltName) fields, libcurl will refuse to connect. You can skip
-     * this check, but this will make the connection less secure. */
-#ifdef SKIP_HOSTNAME_VERIFICATION
-    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
-#endif
-
-    /* Since the traffic will be encrypted, it is very useful to turn on debug
-     * information within libcurl to see what is happening during the
-     * transfer */
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
-    /* Perform the fetch */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-store.c b/components/cronet/third_party/curl_headers/docs/examples/imap-store.c
deleted file mode 100644
index 8479457b..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-store.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example showing how to modify the properties of an e-mail
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to modify an existing mail using
- * libcurl's IMAP capabilities with the STORE command.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This is the mailbox folder to select */
-    curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX");
-
-    /* Set the STORE command with the Deleted flag for message 1. Note that
-     * you can use the STORE command to set other flags such as Seen, Answered,
-     * Flagged, Draft and Recent. */
-    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "STORE 1 +Flags \\Deleted");
-
-    /* Perform the custom request */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-    else {
-      /* Set the EXPUNGE command, although you can use the CLOSE command if you
-       * don't want to know the result of the STORE */
-      curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "EXPUNGE");
-
-      /* Perform the second custom request */
-      res = curl_easy_perform(curl);
-
-      /* Check for errors */
-      if(res != CURLE_OK)
-        fprintf(stderr, "curl_easy_perform() failed: %s\n",
-                curl_easy_strerror(res));
-    }
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/imap-tls.c b/components/cronet/third_party/curl_headers/docs/examples/imap-tls.c
deleted file mode 100644
index 7daa0bf..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/imap-tls.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * IMAP example using TLS
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to fetch mail using libcurl's IMAP
- * capabilities. It builds on the imap-fetch.c example adding transport
- * security to protect the authentication details from being snooped.
- *
- * Note that this example requires libcurl 7.30.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This will fetch message 1 from the user's inbox */
-    curl_easy_setopt(curl, CURLOPT_URL,
-                     "imap://imap.example.com/INBOX/;UID=1");
-
-    /* In this example, we'll start with a plain text connection, and upgrade
-     * to Transport Layer Security (TLS) using the STARTTLS command. Be careful
-     * of using CURLUSESSL_TRY here, because if TLS upgrade fails, the transfer
-     * will continue anyway - see the security discussion in the libcurl
-     * tutorial for more details. */
-    curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL);
-
-    /* If your server doesn't have a valid certificate, then you can disable
-     * part of the Transport Layer Security protection by setting the
-     * CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST options to 0 (false).
-     *   curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
-     *   curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
-     *
-     * That is, in general, a bad idea. It is still better than sending your
-     * authentication details in plain text though.  Instead, you should get
-     * the issuer certificate (or the host certificate if the certificate is
-     * self-signed) and add it to the set of certificates that are known to
-     * libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See docs/SSLCERTS
-     * for more information. */
-    curl_easy_setopt(curl, CURLOPT_CAINFO, "/path/to/certificate.pem");
-
-    /* Since the traffic will be encrypted, it is very useful to turn on debug
-     * information within libcurl to see what is happening during the
-     * transfer */
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
-    /* Perform the fetch */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/makefile.dj b/components/cronet/third_party/curl_headers/docs/examples/makefile.dj
deleted file mode 100644
index 17d93ab8..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/makefile.dj
+++ /dev/null
@@ -1,55 +0,0 @@
-#***************************************************************************
-#                                  _   _ ____  _
-#  Project                     ___| | | |  _ \| |
-#                             / __| | | | |_) | |
-#                            | (__| |_| |  _ <| |___
-#                             \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, 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.
-#
-###########################################################################
-
-TOPDIR = ../..
-
-include $(TOPDIR)/packages/DOS/common.dj
-
-CFLAGS += -DFALSE=0 -DTRUE=1
-
-LIBS = $(TOPDIR)/lib/libcurl.a
-
-ifeq ($(USE_SSL),1)
-  LIBS += $(OPENSSL_ROOT)/lib/libssl.a $(OPENSSL_ROOT)/lib/libcrypt.a
-endif
-
-ifeq ($(USE_IDNA),1)
-  LIBS += $(LIBIDN_ROOT)/lib/dj_obj/libidn.a -liconv
-endif
-
-LIBS += $(WATT32_ROOT)/lib/libwatt.a $(ZLIB_ROOT)/libz.a
-
-include Makefile.inc
-
-PROGRAMS = $(patsubst %,%.exe,$(check_PROGRAMS))
-
-all: $(PROGRAMS)
-	@echo Welcome to libcurl example program
-
-%.exe: %.c
-	$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
-	@echo
-
-clean vclean realclean:
-	- rm -f $(PROGRAMS) depend.dj
-
--include depend.dj
diff --git a/components/cronet/third_party/curl_headers/docs/examples/multi-app.c b/components/cronet/third_party/curl_headers/docs/examples/multi-app.c
deleted file mode 100644
index b98a25161..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/multi-app.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * A basic application source code using the multi interface doing two
- * transfers in parallel.
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-
-/* somewhat unix-specific */
-#include <sys/time.h>
-#include <unistd.h>
-
-/* curl stuff */
-#include <curl/curl.h>
-
-/*
- * Download a HTTP file and upload an FTP file simultaneously.
- */
-
-#define HANDLECOUNT 2   /* Number of simultaneous transfers */
-#define HTTP_HANDLE 0   /* Index for the HTTP transfer */
-#define FTP_HANDLE 1    /* Index for the FTP transfer */
-
-int main(void)
-{
-  CURL *handles[HANDLECOUNT];
-  CURLM *multi_handle;
-
-  int still_running = 0; /* keep number of running handles */
-  int i;
-
-  CURLMsg *msg; /* for picking up messages with the transfer status */
-  int msgs_left; /* how many messages are left */
-
-  /* Allocate one CURL handle per transfer */
-  for(i = 0; i<HANDLECOUNT; i++)
-    handles[i] = curl_easy_init();
-
-  /* set the options (I left out a few, you'll get the point anyway) */
-  curl_easy_setopt(handles[HTTP_HANDLE], CURLOPT_URL, "https://example.com");
-
-  curl_easy_setopt(handles[FTP_HANDLE], CURLOPT_URL, "ftp://example.com");
-  curl_easy_setopt(handles[FTP_HANDLE], CURLOPT_UPLOAD, 1L);
-
-  /* init a multi stack */
-  multi_handle = curl_multi_init();
-
-  /* add the individual transfers */
-  for(i = 0; i<HANDLECOUNT; i++)
-    curl_multi_add_handle(multi_handle, handles[i]);
-
-  /* we start some action by calling perform right away */
-  curl_multi_perform(multi_handle, &still_running);
-
-  while(still_running) {
-    struct timeval timeout;
-    int rc; /* select() return code */
-    CURLMcode mc; /* curl_multi_fdset() return code */
-
-    fd_set fdread;
-    fd_set fdwrite;
-    fd_set fdexcep;
-    int maxfd = -1;
-
-    long curl_timeo = -1;
-
-    FD_ZERO(&fdread);
-    FD_ZERO(&fdwrite);
-    FD_ZERO(&fdexcep);
-
-    /* set a suitable timeout to play around with */
-    timeout.tv_sec = 1;
-    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: /* timeout */
-    default: /* action */
-      curl_multi_perform(multi_handle, &still_running);
-      break;
-    }
-  }
-
-  /* See how the transfers went */
-  while((msg = curl_multi_info_read(multi_handle, &msgs_left))) {
-    if(msg->msg == CURLMSG_DONE) {
-      int idx;
-
-      /* Find out which handle this message is about */
-      for(idx = 0; idx<HANDLECOUNT; idx++) {
-        int found = (msg->easy_handle == handles[idx]);
-        if(found)
-          break;
-      }
-
-      switch(idx) {
-      case HTTP_HANDLE:
-        printf("HTTP transfer completed with status %d\n", msg->data.result);
-        break;
-      case FTP_HANDLE:
-        printf("FTP transfer completed with status %d\n", msg->data.result);
-        break;
-      }
-    }
-  }
-
-  curl_multi_cleanup(multi_handle);
-
-  /* Free the CURL handles */
-  for(i = 0; i<HANDLECOUNT; i++)
-    curl_easy_cleanup(handles[i]);
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/multi-debugcallback.c b/components/cronet/third_party/curl_headers/docs/examples/multi-debugcallback.c
deleted file mode 100644
index 59f72442..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/multi-debugcallback.c
+++ /dev/null
@@ -1,231 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * multi interface and debug callback
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-
-/* somewhat unix-specific */
-#include <sys/time.h>
-#include <unistd.h>
-
-/* curl stuff */
-#include <curl/curl.h>
-
-typedef char bool;
-#define TRUE 1
-
-static
-void dump(const char *text,
-          FILE *stream, unsigned char *ptr, size_t size,
-          bool nohex)
-{
-  size_t i;
-  size_t c;
-
-  unsigned int width = 0x10;
-
-  if(nohex)
-    /* without the hex output, we can fit more on screen */
-    width = 0x40;
-
-  fprintf(stream, "%s, %10.10lu bytes (0x%8.8lx)\n",
-          text, (unsigned long)size, (unsigned long)size);
-
-  for(i = 0; i<size; i += width) {
-
-    fprintf(stream, "%4.4lx: ", (unsigned long)i);
-
-    if(!nohex) {
-      /* hex not disabled, show it */
-      for(c = 0; c < width; c++)
-        if(i + c < size)
-          fprintf(stream, "%02x ", ptr[i + c]);
-        else
-          fputs("   ", stream);
-    }
-
-    for(c = 0; (c < width) && (i + c < size); c++) {
-      /* check for 0D0A; if found, skip past and start a new line of output */
-      if(nohex && (i + c + 1 < size) && ptr[i + c] == 0x0D &&
-         ptr[i + c + 1] == 0x0A) {
-        i += (c + 2 - width);
-        break;
-      }
-      fprintf(stream, "%c",
-              (ptr[i + c] >= 0x20) && (ptr[i + c]<0x80)?ptr[i + c]:'.');
-      /* check again for 0D0A, to avoid an extra \n if it's at width */
-      if(nohex && (i + c + 2 < size) && ptr[i + c + 1] == 0x0D &&
-         ptr[i + c + 2] == 0x0A) {
-        i += (c + 3 - width);
-        break;
-      }
-    }
-    fputc('\n', stream); /* newline */
-  }
-  fflush(stream);
-}
-
-static
-int my_trace(CURL *handle, curl_infotype type,
-             unsigned char *data, size_t size,
-             void *userp)
-{
-  const char *text;
-
-  (void)userp;
-  (void)handle; /* prevent compiler warning */
-
-  switch(type) {
-  case CURLINFO_TEXT:
-    fprintf(stderr, "== Info: %s", data);
-    /* FALLTHROUGH */
-  default: /* in case a new one is introduced to shock us */
-    return 0;
-
-  case CURLINFO_HEADER_OUT:
-    text = "=> Send header";
-    break;
-  case CURLINFO_DATA_OUT:
-    text = "=> Send data";
-    break;
-  case CURLINFO_HEADER_IN:
-    text = "<= Recv header";
-    break;
-  case CURLINFO_DATA_IN:
-    text = "<= Recv data";
-    break;
-  }
-
-  dump(text, stderr, data, size, TRUE);
-  return 0;
-}
-
-/*
- * Simply download a HTTP file.
- */
-int main(void)
-{
-  CURL *http_handle;
-  CURLM *multi_handle;
-
-  int still_running = 0; /* keep number of running handles */
-
-  http_handle = curl_easy_init();
-
-  /* set the options (I left out a few, you'll get the point anyway) */
-  curl_easy_setopt(http_handle, CURLOPT_URL, "https://www.example.com/");
-
-  curl_easy_setopt(http_handle, CURLOPT_DEBUGFUNCTION, my_trace);
-  curl_easy_setopt(http_handle, CURLOPT_VERBOSE, 1L);
-
-  /* init a multi stack */
-  multi_handle = curl_multi_init();
-
-  /* add the individual transfers */
-  curl_multi_add_handle(multi_handle, http_handle);
-
-  /* we start some action by calling perform right away */
-  curl_multi_perform(multi_handle, &still_running);
-
-  while(still_running) {
-    struct timeval timeout;
-    int rc; /* select() return code */
-    CURLMcode mc; /* curl_multi_fdset() return code */
-
-    fd_set fdread;
-    fd_set fdwrite;
-    fd_set fdexcep;
-    int maxfd = -1;
-
-    long curl_timeo = -1;
-
-    FD_ZERO(&fdread);
-    FD_ZERO(&fdwrite);
-    FD_ZERO(&fdexcep);
-
-    /* set a suitable timeout to play around with */
-    timeout.tv_sec = 1;
-    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 */
-      still_running = 0;
-      printf("select() returns error, this is badness\n");
-      break;
-    case 0:
-    default:
-      /* timeout or readable/writable sockets */
-      curl_multi_perform(multi_handle, &still_running);
-      break;
-    }
-  }
-
-  curl_multi_cleanup(multi_handle);
-
-  curl_easy_cleanup(http_handle);
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/multi-double.c b/components/cronet/third_party/curl_headers/docs/examples/multi-double.c
deleted file mode 100644
index 644e64b..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/multi-double.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * multi interface code doing two parallel HTTP transfers
- * </DESC>
- */
-#include <stdio.h>
-#include <string.h>
-
-/* somewhat unix-specific */
-#include <sys/time.h>
-#include <unistd.h>
-
-/* curl stuff */
-#include <curl/curl.h>
-
-/*
- * Simply download two HTTP files!
- */
-int main(void)
-{
-  CURL *http_handle;
-  CURL *http_handle2;
-  CURLM *multi_handle;
-
-  int still_running = 0; /* keep number of running handles */
-
-  http_handle = curl_easy_init();
-  http_handle2 = curl_easy_init();
-
-  /* set options */
-  curl_easy_setopt(http_handle, CURLOPT_URL, "https://www.example.com/");
-
-  /* set options */
-  curl_easy_setopt(http_handle2, CURLOPT_URL, "http://localhost/");
-
-  /* init a multi stack */
-  multi_handle = curl_multi_init();
-
-  /* add the individual transfers */
-  curl_multi_add_handle(multi_handle, http_handle);
-  curl_multi_add_handle(multi_handle, http_handle2);
-
-  /* we start some action by calling perform right away */
-  curl_multi_perform(multi_handle, &still_running);
-
-  while(still_running) {
-    struct timeval timeout;
-    int rc; /* select() return code */
-    CURLMcode mc; /* curl_multi_fdset() return code */
-
-    fd_set fdread;
-    fd_set fdwrite;
-    fd_set fdexcep;
-    int maxfd = -1;
-
-    long curl_timeo = -1;
-
-    FD_ZERO(&fdread);
-    FD_ZERO(&fdwrite);
-    FD_ZERO(&fdexcep);
-
-    /* set a suitable timeout to play around with */
-    timeout.tv_sec = 1;
-    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, &still_running);
-      break;
-    }
-  }
-
-  curl_multi_cleanup(multi_handle);
-
-  curl_easy_cleanup(http_handle);
-  curl_easy_cleanup(http_handle2);
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/multi-formadd.c b/components/cronet/third_party/curl_headers/docs/examples/multi-formadd.c
deleted file mode 100644
index c1bb135..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/multi-formadd.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * using the multi interface to do a multipart formpost without blocking
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/time.h>
-
-#include <curl/curl.h>
-
-int main(void)
-{
-  CURL *curl;
-
-  CURLM *multi_handle;
-  int still_running = 0;
-
-  struct curl_httppost *formpost = NULL;
-  struct curl_httppost *lastptr = NULL;
-  struct curl_slist *headerlist = NULL;
-  static const char buf[] = "Expect:";
-
-  /* Fill in the file upload field. This makes libcurl load data from
-     the given file name when curl_easy_perform() is called. */
-  curl_formadd(&formpost,
-               &lastptr,
-               CURLFORM_COPYNAME, "sendfile",
-               CURLFORM_FILE, "postit2.c",
-               CURLFORM_END);
-
-  /* Fill in the filename field */
-  curl_formadd(&formpost,
-               &lastptr,
-               CURLFORM_COPYNAME, "filename",
-               CURLFORM_COPYCONTENTS, "postit2.c",
-               CURLFORM_END);
-
-  /* Fill in the submit field too, even if this is rarely needed */
-  curl_formadd(&formpost,
-               &lastptr,
-               CURLFORM_COPYNAME, "submit",
-               CURLFORM_COPYCONTENTS, "send",
-               CURLFORM_END);
-
-  curl = curl_easy_init();
-  multi_handle = curl_multi_init();
-
-  /* initialize custom header list (stating that Expect: 100-continue is not
-     wanted */
-  headerlist = curl_slist_append(headerlist, buf);
-  if(curl && multi_handle) {
-
-    /* what URL that receives this POST */
-    curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/upload.cgi");
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
-    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
-    curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
-
-    curl_multi_add_handle(multi_handle, curl);
-
-    curl_multi_perform(multi_handle, &still_running);
-
-    while(still_running) {
-      struct timeval timeout;
-      int rc; /* select() return code */
-      CURLMcode mc; /* curl_multi_fdset() return code */
-
-      fd_set fdread;
-      fd_set fdwrite;
-      fd_set fdexcep;
-      int maxfd = -1;
-
-      long curl_timeo = -1;
-
-      FD_ZERO(&fdread);
-      FD_ZERO(&fdwrite);
-      FD_ZERO(&fdexcep);
-
-      /* set a suitable timeout to play around with */
-      timeout.tv_sec = 1;
-      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 */
-        printf("perform!\n");
-        curl_multi_perform(multi_handle, &still_running);
-        printf("running: %d!\n", still_running);
-        break;
-      }
-    }
-
-    curl_multi_cleanup(multi_handle);
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-
-    /* then cleanup the formpost chain */
-    curl_formfree(formpost);
-
-    /* free slist */
-    curl_slist_free_all(headerlist);
-  }
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/multi-post.c b/components/cronet/third_party/curl_headers/docs/examples/multi-post.c
deleted file mode 100644
index fe66ca9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/multi-post.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * using the multi interface to do a multipart formpost without blocking
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/time.h>
-
-#include <curl/curl.h>
-
-int main(void)
-{
-  CURL *curl;
-
-  CURLM *multi_handle;
-  int still_running = 0;
-
-  curl_mime *form = NULL;
-  curl_mimepart *field = NULL;
-  struct curl_slist *headerlist = NULL;
-  static const char buf[] = "Expect:";
-
-  curl = curl_easy_init();
-  multi_handle = curl_multi_init();
-
-  if(curl && multi_handle) {
-    /* Create the form */
-    form = curl_mime_init(curl);
-
-    /* Fill in the file upload field */
-    field = curl_mime_addpart(form);
-    curl_mime_name(field, "sendfile");
-    curl_mime_filedata(field, "multi-post.c");
-
-    /* Fill in the filename field */
-    field = curl_mime_addpart(form);
-    curl_mime_name(field, "filename");
-    curl_mime_data(field, "multi-post.c", CURL_ZERO_TERMINATED);
-
-    /* Fill in the submit field too, even if this is rarely needed */
-    field = curl_mime_addpart(form);
-    curl_mime_name(field, "submit");
-    curl_mime_data(field, "send", CURL_ZERO_TERMINATED);
-
-    /* initialize custom header list (stating that Expect: 100-continue is not
-       wanted */
-    headerlist = curl_slist_append(headerlist, buf);
-
-    /* what URL that receives this POST */
-    curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/upload.cgi");
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
-    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
-    curl_easy_setopt(curl, CURLOPT_MIMEPOST, form);
-
-    curl_multi_add_handle(multi_handle, curl);
-
-    curl_multi_perform(multi_handle, &still_running);
-
-    while(still_running) {
-      struct timeval timeout;
-      int rc; /* select() return code */
-      CURLMcode mc; /* curl_multi_fdset() return code */
-
-      fd_set fdread;
-      fd_set fdwrite;
-      fd_set fdexcep;
-      int maxfd = -1;
-
-      long curl_timeo = -1;
-
-      FD_ZERO(&fdread);
-      FD_ZERO(&fdwrite);
-      FD_ZERO(&fdexcep);
-
-      /* set a suitable timeout to play around with */
-      timeout.tv_sec = 1;
-      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 */
-        printf("perform!\n");
-        curl_multi_perform(multi_handle, &still_running);
-        printf("running: %d!\n", still_running);
-        break;
-      }
-    }
-
-    curl_multi_cleanup(multi_handle);
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-
-    /* then cleanup the form */
-    curl_mime_free(form);
-
-    /* free slist */
-    curl_slist_free_all(headerlist);
-  }
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/multi-single.c b/components/cronet/third_party/curl_headers/docs/examples/multi-single.c
deleted file mode 100644
index 530a5f5..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/multi-single.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * using the multi interface to do a single download
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-
-/* somewhat unix-specific */
-#include <sys/time.h>
-#include <unistd.h>
-
-/* curl stuff */
-#include <curl/curl.h>
-
-#ifdef _WIN32
-#define WAITMS(x) Sleep(x)
-#else
-/* Portable sleep for platforms other than Windows. */
-#define WAITMS(x)                               \
-  struct timeval wait = { 0, (x) * 1000 };      \
-  (void)select(0, NULL, NULL, NULL, &wait);
-#endif
-
-/*
- * Simply download a HTTP file.
- */
-int main(void)
-{
-  CURL *http_handle;
-  CURLM *multi_handle;
-
-  int still_running = 0; /* keep number of running handles */
-  int repeats = 0;
-
-  curl_global_init(CURL_GLOBAL_DEFAULT);
-
-  http_handle = curl_easy_init();
-
-  /* set the options (I left out a few, you'll get the point anyway) */
-  curl_easy_setopt(http_handle, CURLOPT_URL, "https://www.example.com/");
-
-  /* init a multi stack */
-  multi_handle = curl_multi_init();
-
-  /* add the individual transfers */
-  curl_multi_add_handle(multi_handle, http_handle);
-
-  /* we start some action by calling perform right away */
-  curl_multi_perform(multi_handle, &still_running);
-
-  while(still_running) {
-    CURLMcode mc; /* curl_multi_wait() return code */
-    int numfds;
-
-    /* wait for activity, timeout or "nothing" */
-    mc = curl_multi_wait(multi_handle, NULL, 0, 1000, &numfds);
-
-    if(mc != CURLM_OK) {
-      fprintf(stderr, "curl_multi_wait() failed, code %d.\n", mc);
-      break;
-    }
-
-    /* 'numfds' being zero means either a timeout or no file descriptors to
-       wait for. Try timeout on first occurrence, then assume no file
-       descriptors and no file descriptors to wait for means wait for 100
-       milliseconds. */
-
-    if(!numfds) {
-      repeats++; /* count number of repeated zero numfds */
-      if(repeats > 1) {
-        WAITMS(100); /* sleep 100 milliseconds */
-      }
-    }
-    else
-      repeats = 0;
-
-    curl_multi_perform(multi_handle, &still_running);
-  }
-
-  curl_multi_remove_handle(multi_handle, http_handle);
-
-  curl_easy_cleanup(http_handle);
-
-  curl_multi_cleanup(multi_handle);
-
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/multi-uv.c b/components/cronet/third_party/curl_headers/docs/examples/multi-uv.c
deleted file mode 100644
index 8ca4b90..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/multi-uv.c
+++ /dev/null
@@ -1,235 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * multi_socket API using libuv
- * </DESC>
- */
-/* Example application using the multi socket interface to download multiple
-   files in parallel, powered by libuv.
-
-   Requires libuv and (of course) libcurl.
-
-   See https://nikhilm.github.io/uvbook/ for more information on libuv.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <uv.h>
-#include <curl/curl.h>
-
-uv_loop_t *loop;
-CURLM *curl_handle;
-uv_timer_t timeout;
-
-typedef struct curl_context_s {
-  uv_poll_t poll_handle;
-  curl_socket_t sockfd;
-} curl_context_t;
-
-static curl_context_t* create_curl_context(curl_socket_t sockfd)
-{
-  curl_context_t *context;
-
-  context = (curl_context_t *) malloc(sizeof(*context));
-
-  context->sockfd = sockfd;
-
-  uv_poll_init_socket(loop, &context->poll_handle, sockfd);
-  context->poll_handle.data = context;
-
-  return context;
-}
-
-static void curl_close_cb(uv_handle_t *handle)
-{
-  curl_context_t *context = (curl_context_t *) handle->data;
-  free(context);
-}
-
-static void destroy_curl_context(curl_context_t *context)
-{
-  uv_close((uv_handle_t *) &context->poll_handle, curl_close_cb);
-}
-
-static void add_download(const char *url, int num)
-{
-  char filename[50];
-  FILE *file;
-  CURL *handle;
-
-  snprintf(filename, 50, "%d.download", num);
-
-  file = fopen(filename, "wb");
-  if(!file) {
-    fprintf(stderr, "Error opening %s\n", filename);
-    return;
-  }
-
-  handle = curl_easy_init();
-  curl_easy_setopt(handle, CURLOPT_WRITEDATA, file);
-  curl_easy_setopt(handle, CURLOPT_PRIVATE, file);
-  curl_easy_setopt(handle, CURLOPT_URL, url);
-  curl_multi_add_handle(curl_handle, handle);
-  fprintf(stderr, "Added download %s -> %s\n", url, filename);
-}
-
-static void check_multi_info(void)
-{
-  char *done_url;
-  CURLMsg *message;
-  int pending;
-  CURL *easy_handle;
-  FILE *file;
-
-  while((message = curl_multi_info_read(curl_handle, &pending))) {
-    switch(message->msg) {
-    case CURLMSG_DONE:
-      /* Do not use message data after calling curl_multi_remove_handle() and
-         curl_easy_cleanup(). As per curl_multi_info_read() docs:
-         "WARNING: The data the returned pointer points to will not survive
-         calling curl_multi_cleanup, curl_multi_remove_handle or
-         curl_easy_cleanup." */
-      easy_handle = message->easy_handle;
-
-      curl_easy_getinfo(easy_handle, CURLINFO_EFFECTIVE_URL, &done_url);
-      curl_easy_getinfo(easy_handle, CURLINFO_PRIVATE, &file);
-      printf("%s DONE\n", done_url);
-
-      curl_multi_remove_handle(curl_handle, easy_handle);
-      curl_easy_cleanup(easy_handle);
-      if(file) {
-        fclose(file);
-      }
-      break;
-
-    default:
-      fprintf(stderr, "CURLMSG default\n");
-      break;
-    }
-  }
-}
-
-static void curl_perform(uv_poll_t *req, int status, int events)
-{
-  int running_handles;
-  int flags = 0;
-  curl_context_t *context;
-
-  if(events & UV_READABLE)
-    flags |= CURL_CSELECT_IN;
-  if(events & UV_WRITABLE)
-    flags |= CURL_CSELECT_OUT;
-
-  context = (curl_context_t *) req->data;
-
-  curl_multi_socket_action(curl_handle, context->sockfd, flags,
-                           &running_handles);
-
-  check_multi_info();
-}
-
-static void on_timeout(uv_timer_t *req)
-{
-  int running_handles;
-  curl_multi_socket_action(curl_handle, CURL_SOCKET_TIMEOUT, 0,
-                           &running_handles);
-  check_multi_info();
-}
-
-static int start_timeout(CURLM *multi, long timeout_ms, void *userp)
-{
-  if(timeout_ms < 0) {
-    uv_timer_stop(&timeout);
-  }
-  else {
-    if(timeout_ms == 0)
-      timeout_ms = 1; /* 0 means directly call socket_action, but we'll do it
-                         in a bit */
-    uv_timer_start(&timeout, on_timeout, timeout_ms, 0);
-  }
-  return 0;
-}
-
-static int handle_socket(CURL *easy, curl_socket_t s, int action, void *userp,
-                  void *socketp)
-{
-  curl_context_t *curl_context;
-  int events = 0;
-
-  switch(action) {
-  case CURL_POLL_IN:
-  case CURL_POLL_OUT:
-  case CURL_POLL_INOUT:
-    curl_context = socketp ?
-      (curl_context_t *) socketp : create_curl_context(s);
-
-    curl_multi_assign(curl_handle, s, (void *) curl_context);
-
-    if(action != CURL_POLL_IN)
-      events |= UV_WRITABLE;
-    if(action != CURL_POLL_OUT)
-      events |= UV_READABLE;
-
-    uv_poll_start(&curl_context->poll_handle, events, curl_perform);
-    break;
-  case CURL_POLL_REMOVE:
-    if(socketp) {
-      uv_poll_stop(&((curl_context_t*)socketp)->poll_handle);
-      destroy_curl_context((curl_context_t*) socketp);
-      curl_multi_assign(curl_handle, s, NULL);
-    }
-    break;
-  default:
-    abort();
-  }
-
-  return 0;
-}
-
-int main(int argc, char **argv)
-{
-  loop = uv_default_loop();
-
-  if(argc <= 1)
-    return 0;
-
-  if(curl_global_init(CURL_GLOBAL_ALL)) {
-    fprintf(stderr, "Could not init curl\n");
-    return 1;
-  }
-
-  uv_timer_init(loop, &timeout);
-
-  curl_handle = curl_multi_init();
-  curl_multi_setopt(curl_handle, CURLMOPT_SOCKETFUNCTION, handle_socket);
-  curl_multi_setopt(curl_handle, CURLMOPT_TIMERFUNCTION, start_timeout);
-
-  while(argc-- > 1) {
-    add_download(argv[argc], argc);
-  }
-
-  uv_run(loop, UV_RUN_DEFAULT);
-  curl_multi_cleanup(curl_handle);
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/multithread.c b/components/cronet/third_party/curl_headers/docs/examples/multithread.c
deleted file mode 100644
index a162000..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/multithread.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * A multi-threaded example that uses pthreads to fetch several files at once
- * </DESC>
- */
-
-#include <stdio.h>
-#include <pthread.h>
-#include <curl/curl.h>
-
-#define NUMT 4
-
-/*
-  List of URLs to fetch.
-
-  If you intend to use a SSL-based protocol here you might need to setup TLS
-  library mutex callbacks as described here:
-
-  https://curl.haxx.se/libcurl/c/threadsafe.html
-
-*/
-const char * const urls[NUMT]= {
-  "https://curl.haxx.se/",
-  "ftp://cool.haxx.se/",
-  "https://www.cag.se/",
-  "www.haxx.se"
-};
-
-static void *pull_one_url(void *url)
-{
-  CURL *curl;
-
-  curl = curl_easy_init();
-  curl_easy_setopt(curl, CURLOPT_URL, url);
-  curl_easy_perform(curl); /* ignores error */
-  curl_easy_cleanup(curl);
-
-  return NULL;
-}
-
-
-/*
-   int pthread_create(pthread_t *new_thread_ID,
-   const pthread_attr_t *attr,
-   void * (*start_func)(void *), void *arg);
-*/
-
-int main(int argc, char **argv)
-{
-  pthread_t tid[NUMT];
-  int i;
-
-  /* Must initialize libcurl before any threads are started */
-  curl_global_init(CURL_GLOBAL_ALL);
-
-  for(i = 0; i< NUMT; i++) {
-    int error = pthread_create(&tid[i],
-                               NULL, /* default attributes please */
-                               pull_one_url,
-                               (void *)urls[i]);
-    if(0 != error)
-      fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error);
-    else
-      fprintf(stderr, "Thread %d, gets %s\n", i, urls[i]);
-  }
-
-  /* now wait for all threads to terminate */
-  for(i = 0; i< NUMT; i++) {
-    pthread_join(tid[i], NULL);
-    fprintf(stderr, "Thread %d terminated\n", i);
-  }
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/opensslthreadlock.c b/components/cronet/third_party/curl_headers/docs/examples/opensslthreadlock.c
deleted file mode 100644
index 649ef93a..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/opensslthreadlock.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * one way to set the necessary OpenSSL locking callbacks if you want to do
- * multi-threaded transfers with HTTPS/FTPS with libcurl built to use OpenSSL.
- * </DESC>
- */
-/*
- * This is not a complete stand-alone example.
- *
- * Author: Jeremy Brown
- */
-
-#include <stdio.h>
-#include <pthread.h>
-#include <openssl/err.h>
-
-#define MUTEX_TYPE       pthread_mutex_t
-#define MUTEX_SETUP(x)   pthread_mutex_init(&(x), NULL)
-#define MUTEX_CLEANUP(x) pthread_mutex_destroy(&(x))
-#define MUTEX_LOCK(x)    pthread_mutex_lock(&(x))
-#define MUTEX_UNLOCK(x)  pthread_mutex_unlock(&(x))
-#define THREAD_ID        pthread_self()
-
-
-void handle_error(const char *file, int lineno, const char *msg)
-{
-  fprintf(stderr, "** %s:%d %s\n", file, lineno, msg);
-  ERR_print_errors_fp(stderr);
-  /* exit(-1); */
-}
-
-/* This array will store all of the mutexes available to OpenSSL. */
-static MUTEX_TYPE *mutex_buf = NULL;
-
-static void locking_function(int mode, int n, const char *file, int line)
-{
-  if(mode & CRYPTO_LOCK)
-    MUTEX_LOCK(mutex_buf[n]);
-  else
-    MUTEX_UNLOCK(mutex_buf[n]);
-}
-
-static unsigned long id_function(void)
-{
-  return ((unsigned long)THREAD_ID);
-}
-
-int thread_setup(void)
-{
-  int i;
-
-  mutex_buf = malloc(CRYPTO_num_locks() * sizeof(MUTEX_TYPE));
-  if(!mutex_buf)
-    return 0;
-  for(i = 0;  i < CRYPTO_num_locks();  i++)
-    MUTEX_SETUP(mutex_buf[i]);
-  CRYPTO_set_id_callback(id_function);
-  CRYPTO_set_locking_callback(locking_function);
-  return 1;
-}
-
-int thread_cleanup(void)
-{
-  int i;
-
-  if(!mutex_buf)
-    return 0;
-  CRYPTO_set_id_callback(NULL);
-  CRYPTO_set_locking_callback(NULL);
-  for(i = 0;  i < CRYPTO_num_locks();  i++)
-    MUTEX_CLEANUP(mutex_buf[i]);
-  free(mutex_buf);
-  mutex_buf = NULL;
-  return 1;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/parseurl.c b/components/cronet/third_party/curl_headers/docs/examples/parseurl.c
deleted file mode 100644
index ee427768..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/parseurl.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Basic URL API use.
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-#if !CURL_AT_LEAST_VERSION(7, 62, 0)
-#error "this example requires curl 7.62.0 or later"
-#endif
-
-int main(void)
-{
-  CURLU *h;
-  CURLUcode uc;
-  char *host;
-  char *path;
-
-  h = curl_url(); /* get a handle to work with */
-  if(!h)
-    return 1;
-
-  /* parse a full URL */
-  uc = curl_url_set(h, CURLUPART_URL, "http://example.com/path/index.html", 0);
-  if(uc)
-    goto fail;
-
-  /* extract host name from the parsed URL */
-  uc = curl_url_get(h, CURLUPART_HOST, &host, 0);
-  if(!uc) {
-    printf("Host name: %s\n", host);
-    curl_free(host);
-  }
-
-  /* extract the path from the parsed URL */
-  uc = curl_url_get(h, CURLUPART_PATH, &path, 0);
-  if(!uc) {
-    printf("Path: %s\n", path);
-    curl_free(path);
-  }
-
-  /* redirect with a relative URL */
-  uc = curl_url_set(h, CURLUPART_URL, "../another/second.html", 0);
-  if(uc)
-    goto fail;
-
-  /* extract the new, updated path */
-  uc = curl_url_get(h, CURLUPART_PATH, &path, 0);
-  if(!uc) {
-    printf("Path: %s\n", path);
-    curl_free(path);
-  }
-
-  fail:
-  curl_url_cleanup(h); /* free url handle */
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/persistent.c b/components/cronet/third_party/curl_headers/docs/examples/persistent.c
deleted file mode 100644
index 723b68b..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/persistent.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * re-using handles to do HTTP persistent connections
- * </DESC>
- */
-#include <stdio.h>
-#include <unistd.h>
-#include <curl/curl.h>
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-
-  curl_global_init(CURL_GLOBAL_ALL);
-
-  curl = curl_easy_init();
-  if(curl) {
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-    curl_easy_setopt(curl, CURLOPT_HEADER, 1L);
-
-    /* get the first document */
-    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
-
-    /* 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));
-
-    /* get another document from the same server using the same
-       connection */
-    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/docs/");
-
-    /* Perform the request, res will get the return code */
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-dele.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-dele.c
deleted file mode 100644
index 14497835..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-dele.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example showing how to delete e-mails
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to delete an existing mail using
- * libcurl's POP3 capabilities.
- *
- * Note that this example requires libcurl 7.26.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* You can specify the message either in the URL or DELE command */
-    curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
-
-    /* Set the DELE command */
-    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELE");
-
-    /* Do not perform a transfer as DELE returns no data */
-    curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
-
-    /* Perform the custom request */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-list.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-list.c
deleted file mode 100644
index b530a04..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-list.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example to list the contents of a mailbox
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example using libcurl's POP3 capabilities to list the
- * contents of a mailbox.
- *
- * Note that this example requires libcurl 7.20.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This will list every message of the given mailbox */
-    curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com");
-
-    /* Perform the list */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-multi.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-multi.c
deleted file mode 100644
index 4b87886..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-multi.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example using the multi interface
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to retrieve mail using libcurl's POP3
- * capabilities. It builds on the pop3-retr.c example to demonstrate how to use
- * libcurl's multi interface.
- *
- * Note that this example requires libcurl 7.20.0 or above.
- */
-
-#define MULTI_PERFORM_HANG_TIMEOUT 60 * 1000
-
-static struct timeval tvnow(void)
-{
-  struct timeval now;
-
-  /* time() returns the value of time in seconds since the epoch */
-  now.tv_sec = (long)time(NULL);
-  now.tv_usec = 0;
-
-  return now;
-}
-
-static long tvdiff(struct timeval newer, struct timeval older)
-{
-  return (newer.tv_sec - older.tv_sec) * 1000 +
-    (newer.tv_usec - older.tv_usec) / 1000;
-}
-
-int main(void)
-{
-  CURL *curl;
-  CURLM *mcurl;
-  int still_running = 1;
-  struct timeval mp_start;
-
-  curl_global_init(CURL_GLOBAL_DEFAULT);
-
-  curl = curl_easy_init();
-  if(!curl)
-    return 1;
-
-  mcurl = curl_multi_init();
-  if(!mcurl)
-    return 2;
-
-  /* Set username and password */
-  curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-  curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-  /* This will retrieve message 1 from the user's mailbox */
-  curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
-
-  /* Tell the multi stack about our easy handle */
-  curl_multi_add_handle(mcurl, curl);
-
-  /* Record the start time which we can use later */
-  mp_start = tvnow();
-
-  /* We start some action by calling perform right away */
-  curl_multi_perform(mcurl, &still_running);
-
-  while(still_running) {
-    struct timeval timeout;
-    fd_set fdread;
-    fd_set fdwrite;
-    fd_set fdexcep;
-    int maxfd = -1;
-    int rc;
-    CURLMcode mc; /* curl_multi_fdset() return code */
-
-    long curl_timeo = -1;
-
-    /* Initialise the file descriptors */
-    FD_ZERO(&fdread);
-    FD_ZERO(&fdwrite);
-    FD_ZERO(&fdexcep);
-
-    /* Set a suitable timeout to play around with */
-    timeout.tv_sec = 1;
-    timeout.tv_usec = 0;
-
-    curl_multi_timeout(mcurl, &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(mcurl, &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);
-    }
-
-    if(tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) {
-      fprintf(stderr,
-              "ABORTING: Since it seems that we would have run forever.\n");
-      break;
-    }
-
-    switch(rc) {
-    case -1:  /* select error */
-      break;
-    case 0:   /* timeout */
-    default:  /* action */
-      curl_multi_perform(mcurl, &still_running);
-      break;
-    }
-  }
-
-  /* Always cleanup */
-  curl_multi_remove_handle(mcurl, curl);
-  curl_multi_cleanup(mcurl);
-  curl_easy_cleanup(curl);
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-noop.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-noop.c
deleted file mode 100644
index bc162d0c..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-noop.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example showing how to perform a noop
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to perform a noop using libcurl's POP3
- * capabilities.
- *
- * Note that this example requires libcurl 7.26.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This is just the server URL */
-    curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com");
-
-    /* Set the NOOP command */
-    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "NOOP");
-
-    /* Do not perform a transfer as NOOP returns no data */
-    curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
-
-    /* Perform the custom request */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-retr.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-retr.c
deleted file mode 100644
index b36ddb5..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-retr.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example showing how to retrieve e-mails
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to retrieve mail using libcurl's POP3
- * capabilities.
- *
- * Note that this example requires libcurl 7.20.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This will retrieve message 1 from the user's mailbox */
-    curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
-
-    /* Perform the retr */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-ssl.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-ssl.c
deleted file mode 100644
index f0d4e26..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-ssl.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example using SSL
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to retrieve mail using libcurl's POP3
- * capabilities. It builds on the pop3-retr.c example adding transport
- * security to protect the authentication details from being snooped.
- *
- * Note that this example requires libcurl 7.20.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This will retrieve message 1 from the user's mailbox. Note the use of
-     * pop3s:// rather than pop3:// to request a SSL based connection. */
-    curl_easy_setopt(curl, CURLOPT_URL, "pop3s://pop.example.com/1");
-
-    /* If you want to connect to a site who isn't using a certificate that is
-     * signed by one of the certs in the CA bundle you have, you can skip the
-     * verification of the server's certificate. This makes the connection
-     * A LOT LESS SECURE.
-     *
-     * If you have a CA cert for the server stored someplace else than in the
-     * default bundle, then the CURLOPT_CAPATH option might come handy for
-     * you. */
-#ifdef SKIP_PEER_VERIFICATION
-    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
-#endif
-
-    /* If the site you're connecting to uses a different host name that what
-     * they have mentioned in their server certificate's commonName (or
-     * subjectAltName) fields, libcurl will refuse to connect. You can skip
-     * this check, but this will make the connection less secure. */
-#ifdef SKIP_HOSTNAME_VERIFICATION
-    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
-#endif
-
-    /* Since the traffic will be encrypted, it is very useful to turn on debug
-     * information within libcurl to see what is happening during the
-     * transfer */
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
-    /* Perform the retr */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-stat.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-stat.c
deleted file mode 100644
index 46a0a45..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-stat.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example showing how to obtain message statistics
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to obtain message statistics using
- * libcurl's POP3 capabilities.
- *
- * Note that this example requires libcurl 7.26.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This is just the server URL */
-    curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com");
-
-    /* Set the STAT command */
-    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "STAT");
-
-    /* Do not perform a transfer as the data is in the response */
-    curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
-
-    /* Perform the custom request */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-tls.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-tls.c
deleted file mode 100644
index 1a6c447..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-tls.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example using TLS
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to retrieve mail using libcurl's POP3
- * capabilities. It builds on the pop3-retr.c example adding transport
- * security to protect the authentication details from being snooped.
- *
- * Note that this example requires libcurl 7.20.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This will retrieve message 1 from the user's mailbox */
-    curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
-
-    /* In this example, we'll start with a plain text connection, and upgrade
-     * to Transport Layer Security (TLS) using the STLS command. Be careful of
-     * using CURLUSESSL_TRY here, because if TLS upgrade fails, the transfer
-     * will continue anyway - see the security discussion in the libcurl
-     * tutorial for more details. */
-    curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL);
-
-    /* If your server doesn't have a valid certificate, then you can disable
-     * part of the Transport Layer Security protection by setting the
-     * CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST options to 0 (false).
-     *   curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
-     *   curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
-     *
-     * That is, in general, a bad idea. It is still better than sending your
-     * authentication details in plain text though.  Instead, you should get
-     * the issuer certificate (or the host certificate if the certificate is
-     * self-signed) and add it to the set of certificates that are known to
-     * libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See docs/SSLCERTS
-     * for more information. */
-    curl_easy_setopt(curl, CURLOPT_CAINFO, "/path/to/certificate.pem");
-
-    /* Since the traffic will be encrypted, it is very useful to turn on debug
-     * information within libcurl to see what is happening during the
-     * transfer */
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
-    /* Perform the retr */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-top.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-top.c
deleted file mode 100644
index 4f5937f..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-top.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example showing how to retrieve only the headers of an e-mail
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to retrieve only the headers of a mail
- * using libcurl's POP3 capabilities.
- *
- * Note that this example requires libcurl 7.26.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This is just the server URL */
-    curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com");
-
-    /* Set the TOP command for message 1 to only include the headers */
-    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "TOP 1 0");
-
-    /* Perform the custom request */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/pop3-uidl.c b/components/cronet/third_party/curl_headers/docs/examples/pop3-uidl.c
deleted file mode 100644
index f127120..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/pop3-uidl.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * POP3 example to list the contents of a mailbox by unique ID
- * </DESC>
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* This is a simple example using libcurl's POP3 capabilities to list the
- * contents of a mailbox by unique ID.
- *
- * Note that this example requires libcurl 7.26.0 or above.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This is just the server URL */
-    curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com");
-
-    /* Set the UIDL command */
-    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "UIDL");
-
-    /* Perform the custom request */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/post-callback.c b/components/cronet/third_party/curl_headers/docs/examples/post-callback.c
deleted file mode 100644
index ebb4e2a2..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/post-callback.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Issue an HTTP POST and provide the data through the read callback.
- * </DESC>
- */
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* silly test data to POST */
-static const char data[]="Lorem ipsum dolor sit amet, consectetur adipiscing "
-  "elit. Sed vel urna neque. Ut quis leo metus. Quisque eleifend, ex at "
-  "laoreet rhoncus, odio ipsum semper metus, at tempus ante urna in mauris. "
-  "Suspendisse ornare tempor venenatis. Ut dui neque, pellentesque a varius "
-  "eget, mattis vitae ligula. Fusce ut pharetra est. Ut ullamcorper mi ac "
-  "sollicitudin semper. Praesent sit amet tellus varius, posuere nulla non, "
-  "rhoncus ipsum.";
-
-struct WriteThis {
-  const char *readptr;
-  size_t sizeleft;
-};
-
-static size_t read_callback(void *dest, size_t size, size_t nmemb, void *userp)
-{
-  struct WriteThis *wt = (struct WriteThis *)userp;
-  size_t buffer_size = size*nmemb;
-
-  if(wt->sizeleft) {
-    /* copy as much as possible from the source to the destination */
-    size_t copy_this_much = wt->sizeleft;
-    if(copy_this_much > buffer_size)
-      copy_this_much = buffer_size;
-    memcpy(dest, wt->readptr, copy_this_much);
-
-    wt->readptr += copy_this_much;
-    wt->sizeleft -= copy_this_much;
-    return copy_this_much; /* we copied this many bytes */
-  }
-
-  return 0; /* no more data left to deliver */
-}
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-
-  struct WriteThis wt;
-
-  wt.readptr = data;
-  wt.sizeleft = strlen(data);
-
-  /* In windows, this will init the winsock stuff */
-  res = curl_global_init(CURL_GLOBAL_DEFAULT);
-  /* Check for errors */
-  if(res != CURLE_OK) {
-    fprintf(stderr, "curl_global_init() failed: %s\n",
-            curl_easy_strerror(res));
-    return 1;
-  }
-
-  /* get a curl handle */
-  curl = curl_easy_init();
-  if(curl) {
-    /* First set the URL that is about to receive our POST. */
-    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/index.cgi");
-
-    /* Now specify we want to POST data */
-    curl_easy_setopt(curl, CURLOPT_POST, 1L);
-
-    /* we want to use our own read function */
-    curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
-
-    /* pointer to pass to our read function */
-    curl_easy_setopt(curl, CURLOPT_READDATA, &wt);
-
-    /* get verbose debug output please */
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
-    /*
-      If you use POST to a HTTP 1.1 server, you can send data without knowing
-      the size before starting the POST if you use chunked encoding. You
-      enable this by adding a header like "Transfer-Encoding: chunked" with
-      CURLOPT_HTTPHEADER. With HTTP 1.0 or without chunked transfer, you must
-      specify the size in the request.
-    */
-#ifdef USE_CHUNKED
-    {
-      struct curl_slist *chunk = NULL;
-
-      chunk = curl_slist_append(chunk, "Transfer-Encoding: chunked");
-      res = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
-      /* use curl_slist_free_all() after the *perform() call to free this
-         list again */
-    }
-#else
-    /* Set the expected POST size. If you want to POST large amounts of data,
-       consider CURLOPT_POSTFIELDSIZE_LARGE */
-    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)wt.sizeleft);
-#endif
-
-#ifdef DISABLE_EXPECT
-    /*
-      Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue"
-      header.  You can disable this header with CURLOPT_HTTPHEADER as usual.
-      NOTE: if you want chunked transfer too, you need to combine these two
-      since you can only set one list of headers with CURLOPT_HTTPHEADER. */
-
-    /* A less good option would be to enforce HTTP 1.0, but that might also
-       have other implications. */
-    {
-      struct curl_slist *chunk = NULL;
-
-      chunk = curl_slist_append(chunk, "Expect:");
-      res = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
-      /* use curl_slist_free_all() after the *perform() call to free this
-         list again */
-    }
-#endif
-
-    /* Perform the request, res will get the return code */
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-  curl_global_cleanup();
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/postinmemory.c b/components/cronet/third_party/curl_headers/docs/examples/postinmemory.c
deleted file mode 100644
index 376f334..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/postinmemory.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Make a HTTP POST with data from memory and receive response in memory.
- * </DESC>
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <curl/curl.h>
-
-struct MemoryStruct {
-  char *memory;
-  size_t size;
-};
-
-static size_t
-WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
-{
-  size_t realsize = size * nmemb;
-  struct MemoryStruct *mem = (struct MemoryStruct *)userp;
-
-  char *ptr = realloc(mem->memory, mem->size + realsize + 1);
-  if(!ptr) {
-    /* out of memory! */
-    printf("not enough memory (realloc returned NULL)\n");
-    return 0;
-  }
-
-  mem->memory = ptr;
-  memcpy(&(mem->memory[mem->size]), contents, realsize);
-  mem->size += realsize;
-  mem->memory[mem->size] = 0;
-
-  return realsize;
-}
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-  struct MemoryStruct chunk;
-  static const char *postthis = "Field=1&Field=2&Field=3";
-
-  chunk.memory = malloc(1);  /* will be grown as needed by realloc above */
-  chunk.size = 0;    /* no data at this point */
-
-  curl_global_init(CURL_GLOBAL_ALL);
-  curl = curl_easy_init();
-  if(curl) {
-    curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.org/");
-
-    /* send all data to this function  */
-    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
-
-    /* we pass our 'chunk' struct to the callback function */
-    curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
-
-    /* some servers don't like requests that are made without a user-agent
-       field, so we provide one */
-    curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0");
-
-    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postthis);
-
-    /* if we don't provide POSTFIELDSIZE, libcurl will strlen() by
-       itself */
-    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(postthis));
-
-    /* Perform the request, res will get the return code */
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK) {
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-    }
-    else {
-      /*
-       * Now, our chunk.memory points to a memory block that is chunk.size
-       * bytes big and contains the remote file.
-       *
-       * Do something nice with it!
-       */
-      printf("%s\n",chunk.memory);
-    }
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-
-    /* we're done with libcurl, so clean it up */
-    curl_global_cleanup();
-  }
-  free(chunk.memory);
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/postit2-formadd.c b/components/cronet/third_party/curl_headers/docs/examples/postit2-formadd.c
deleted file mode 100644
index a501ce9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/postit2-formadd.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <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
- * "HTML form based" (as described in RFC1738) uploads using HTTP POST.
- *
- * The imaginary form we'll fill in looks like:
- *
- * <form method="post" enctype="multipart/form-data" action="examplepost.cgi">
- * Enter file: <input type="file" name="sendfile" size="40">
- * Enter file name: <input type="text" name="filename" size="30">
- * <input type="submit" value="send" name="submit">
- * </form>
- *
- * This exact source code has not been verified to work.
- */
-
-#include <stdio.h>
-#include <string.h>
-
-#include <curl/curl.h>
-
-int main(int argc, char *argv[])
-{
-  CURL *curl;
-  CURLcode res;
-
-  struct curl_httppost *formpost = NULL;
-  struct curl_httppost *lastptr = NULL;
-  struct curl_slist *headerlist = NULL;
-  static const char buf[] = "Expect:";
-
-  curl_global_init(CURL_GLOBAL_ALL);
-
-  /* Fill in the file upload field */
-  curl_formadd(&formpost,
-               &lastptr,
-               CURLFORM_COPYNAME, "sendfile",
-               CURLFORM_FILE, "postit2.c",
-               CURLFORM_END);
-
-  /* Fill in the filename field */
-  curl_formadd(&formpost,
-               &lastptr,
-               CURLFORM_COPYNAME, "filename",
-               CURLFORM_COPYCONTENTS, "postit2.c",
-               CURLFORM_END);
-
-
-  /* Fill in the submit field too, even if this is rarely needed */
-  curl_formadd(&formpost,
-               &lastptr,
-               CURLFORM_COPYNAME, "submit",
-               CURLFORM_COPYCONTENTS, "send",
-               CURLFORM_END);
-
-  curl = curl_easy_init();
-  /* initialize custom header list (stating that Expect: 100-continue is not
-     wanted */
-  headerlist = curl_slist_append(headerlist, buf);
-  if(curl) {
-    /* what URL that receives this POST */
-    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/examplepost.cgi");
-    if((argc == 2) && (!strcmp(argv[1], "noexpectheader")))
-      /* only disable 100-continue header if explicitly requested */
-      curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
-    curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
-
-    /* Perform the request, res will get the return code */
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-
-    /* then cleanup the formpost chain */
-    curl_formfree(formpost);
-    /* free slist */
-    curl_slist_free_all(headerlist);
-  }
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/postit2.c b/components/cronet/third_party/curl_headers/docs/examples/postit2.c
deleted file mode 100644
index 2808f7a..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/postit2.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <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
- * "HTML form based" (as described in RFC1738) uploads using HTTP POST.
- *
- * The imaginary form we'll fill in looks like:
- *
- * <form method="post" enctype="multipart/form-data" action="examplepost.cgi">
- * Enter file: <input type="file" name="sendfile" size="40">
- * Enter file name: <input type="text" name="filename" size="30">
- * <input type="submit" value="send" name="submit">
- * </form>
- *
- * This exact source code has not been verified to work.
- */
-
-#include <stdio.h>
-#include <string.h>
-
-#include <curl/curl.h>
-
-int main(int argc, char *argv[])
-{
-  CURL *curl;
-  CURLcode res;
-
-  curl_mime *form = NULL;
-  curl_mimepart *field = NULL;
-  struct curl_slist *headerlist = NULL;
-  static const char buf[] = "Expect:";
-
-  curl_global_init(CURL_GLOBAL_ALL);
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Create the form */
-    form = curl_mime_init(curl);
-
-    /* Fill in the file upload field */
-    field = curl_mime_addpart(form);
-    curl_mime_name(field, "sendfile");
-    curl_mime_filedata(field, "postit2.c");
-
-    /* Fill in the filename field */
-    field = curl_mime_addpart(form);
-    curl_mime_name(field, "filename");
-    curl_mime_data(field, "postit2.c", CURL_ZERO_TERMINATED);
-
-    /* Fill in the submit field too, even if this is rarely needed */
-    field = curl_mime_addpart(form);
-    curl_mime_name(field, "submit");
-    curl_mime_data(field, "send", CURL_ZERO_TERMINATED);
-
-    /* initialize custom header list (stating that Expect: 100-continue is not
-       wanted */
-    headerlist = curl_slist_append(headerlist, buf);
-    /* what URL that receives this POST */
-    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/examplepost.cgi");
-    if((argc == 2) && (!strcmp(argv[1], "noexpectheader")))
-      /* only disable 100-continue header if explicitly requested */
-      curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
-    curl_easy_setopt(curl, CURLOPT_MIMEPOST, form);
-
-    /* Perform the request, res will get the return code */
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-
-    /* then cleanup the form */
-    curl_mime_free(form);
-    /* free slist */
-    curl_slist_free_all(headerlist);
-  }
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/progressfunc.c b/components/cronet/third_party/curl_headers/docs/examples/progressfunc.c
deleted file mode 100644
index 86ad0d9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/progressfunc.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Use the progress callbacks, old and/or new one depending on available
- * libcurl version.
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-#if LIBCURL_VERSION_NUM >= 0x073d00
-/* In libcurl 7.61.0, support was added for extracting the time in plain
-   microseconds. Older libcurl versions are stuck in using 'double' for this
-   information so we complicate this example a bit by supporting either
-   approach. */
-#define TIME_IN_US 1 /* microseconds */
-#define TIMETYPE curl_off_t
-#define TIMEOPT CURLINFO_TOTAL_TIME_T
-#define MINIMAL_PROGRESS_FUNCTIONALITY_INTERVAL     3000000
-#else
-#define TIMETYPE double
-#define TIMEOPT CURLINFO_TOTAL_TIME
-#define MINIMAL_PROGRESS_FUNCTIONALITY_INTERVAL     3
-#endif
-
-#define STOP_DOWNLOAD_AFTER_THIS_MANY_BYTES         6000
-
-struct myprogress {
-  TIMETYPE lastruntime; /* type depends on version, see above */
-  CURL *curl;
-};
-
-/* this is how the CURLOPT_XFERINFOFUNCTION callback works */
-static int xferinfo(void *p,
-                    curl_off_t dltotal, curl_off_t dlnow,
-                    curl_off_t ultotal, curl_off_t ulnow)
-{
-  struct myprogress *myp = (struct myprogress *)p;
-  CURL *curl = myp->curl;
-  TIMETYPE curtime = 0;
-
-  curl_easy_getinfo(curl, TIMEOPT, &curtime);
-
-  /* under certain circumstances it may be desirable for certain functionality
-     to only run every N seconds, in order to do this the transaction time can
-     be used */
-  if((curtime - myp->lastruntime) >= MINIMAL_PROGRESS_FUNCTIONALITY_INTERVAL) {
-    myp->lastruntime = curtime;
-#ifdef TIME_IN_US
-    fprintf(stderr, "TOTAL TIME: %" CURL_FORMAT_CURL_OFF_T ".%06ld\r\n",
-            (curtime / 1000000), (long)(curtime % 1000000));
-#else
-    fprintf(stderr, "TOTAL TIME: %f \r\n", curtime);
-#endif
-  }
-
-  fprintf(stderr, "UP: %" CURL_FORMAT_CURL_OFF_T " of %" CURL_FORMAT_CURL_OFF_T
-          "  DOWN: %" CURL_FORMAT_CURL_OFF_T " of %" CURL_FORMAT_CURL_OFF_T
-          "\r\n",
-          ulnow, ultotal, dlnow, dltotal);
-
-  if(dlnow > STOP_DOWNLOAD_AFTER_THIS_MANY_BYTES)
-    return 1;
-  return 0;
-}
-
-#if LIBCURL_VERSION_NUM < 0x072000
-/* for libcurl older than 7.32.0 (CURLOPT_PROGRESSFUNCTION) */
-static int older_progress(void *p,
-                          double dltotal, double dlnow,
-                          double ultotal, double ulnow)
-{
-  return xferinfo(p,
-                  (curl_off_t)dltotal,
-                  (curl_off_t)dlnow,
-                  (curl_off_t)ultotal,
-                  (curl_off_t)ulnow);
-}
-#endif
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-  struct myprogress prog;
-
-  curl = curl_easy_init();
-  if(curl) {
-    prog.lastruntime = 0;
-    prog.curl = curl;
-
-    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
-
-#if LIBCURL_VERSION_NUM >= 0x072000
-    /* xferinfo was introduced in 7.32.0, no earlier libcurl versions will
-       compile as they won't have the symbols around.
-
-       If built with a newer libcurl, but running with an older libcurl:
-       curl_easy_setopt() will fail in run-time trying to set the new
-       callback, making the older callback get used.
-
-       New libcurls will prefer the new callback and instead use that one even
-       if both callbacks are set. */
-
-    curl_easy_setopt(curl, CURLOPT_XFERINFOFUNCTION, xferinfo);
-    /* pass the struct pointer into the xferinfo function, note that this is
-       an alias to CURLOPT_PROGRESSDATA */
-    curl_easy_setopt(curl, CURLOPT_XFERINFODATA, &prog);
-#else
-    curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, older_progress);
-    /* pass the struct pointer into the progress function */
-    curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, &prog);
-#endif
-
-    curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);
-    res = curl_easy_perform(curl);
-
-    if(res != CURLE_OK)
-      fprintf(stderr, "%s\n", curl_easy_strerror(res));
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/resolve.c b/components/cronet/third_party/curl_headers/docs/examples/resolve.c
deleted file mode 100644
index c0b5415..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/resolve.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Use CURLOPT_RESOLVE to feed custom IP addresses for given host name + port
- * number combinations.
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  /* Each single name resolve string should be written using the format
-     HOST:PORT:ADDRESS 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 the numerical IP address
-   */
-  struct curl_slist *host = curl_slist_append(NULL,
-                                              "example.com:443:127.0.0.1");
-
-  curl = curl_easy_init();
-  if(curl) {
-    curl_easy_setopt(curl, CURLOPT_RESOLVE, host);
-    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
-    res = curl_easy_perform(curl);
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  curl_slist_free_all(host);
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/rtsp.c b/components/cronet/third_party/curl_headers/docs/examples/rtsp.c
deleted file mode 100644
index 75b5d396..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/rtsp.c
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Copyright (c) 2011, 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)                             \
-  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);
-
-#define my_curl_easy_perform(A)                                     \
-  res = curl_easy_perform(A);                                       \
-  if(res != CURLE_OK)                                               \
-    fprintf(stderr, "curl_easy_perform(%s) failed: %d\n", #A, res);
-
-
-/* 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 == NULL) {
-    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 != NULL) {
-    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 != NULL) {
-    while(fgets(s, max_len - 2, sdp_fp) != NULL) {
-      sscanf(s, " a = control: %s", 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 web site: "
-    "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 == NULL) {
-      base_name = strrchr(argv[0], '\\');
-    }
-    if(base_name == NULL) {
-      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 != NULL) {
-        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/components/cronet/third_party/curl_headers/docs/examples/sampleconv.c b/components/cronet/third_party/curl_headers/docs/examples/sampleconv.c
deleted file mode 100644
index 1c4aec6..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/sampleconv.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <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;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/sendrecv.c b/components/cronet/third_party/curl_headers/docs/examples/sendrecv.c
deleted file mode 100644
index 5660a795..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/sendrecv.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * An example of curl_easy_send() and curl_easy_recv() usage.
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* Auxiliary function that waits on the socket. */
-static int wait_on_socket(curl_socket_t sockfd, int for_recv, long timeout_ms)
-{
-  struct timeval tv;
-  fd_set infd, outfd, errfd;
-  int res;
-
-  tv.tv_sec = timeout_ms / 1000;
-  tv.tv_usec = (timeout_ms % 1000) * 1000;
-
-  FD_ZERO(&infd);
-  FD_ZERO(&outfd);
-  FD_ZERO(&errfd);
-
-  FD_SET(sockfd, &errfd); /* always check for error */
-
-  if(for_recv) {
-    FD_SET(sockfd, &infd);
-  }
-  else {
-    FD_SET(sockfd, &outfd);
-  }
-
-  /* select() returns the number of signalled sockets or -1 */
-  res = select((int)sockfd + 1, &infd, &outfd, &errfd, &tv);
-  return res;
-}
-
-int main(void)
-{
-  CURL *curl;
-  /* Minimalistic http request */
-  const char *request = "GET / HTTP/1.0\r\nHost: example.com\r\n\r\n";
-  size_t request_len = strlen(request);
-
-  /* A general note of caution here: if you're using curl_easy_recv() or
-     curl_easy_send() to implement HTTP or _any_ other protocol libcurl
-     supports "natively", you're doing it wrong and you should stop.
-
-     This example uses HTTP only to show how to use this API, it does not
-     suggest that writing an application doing this is sensible.
-  */
-
-  curl = curl_easy_init();
-  if(curl) {
-    CURLcode res;
-    curl_socket_t sockfd;
-    size_t nsent_total = 0;
-
-    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
-    /* Do not do the transfer - only connect to host */
-    curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L);
-    res = curl_easy_perform(curl);
-
-    if(res != CURLE_OK) {
-      printf("Error: %s\n", curl_easy_strerror(res));
-      return 1;
-    }
-
-    /* Extract the socket from the curl handle - we'll need it for waiting. */
-    res = curl_easy_getinfo(curl, CURLINFO_ACTIVESOCKET, &sockfd);
-
-    if(res != CURLE_OK) {
-      printf("Error: %s\n", curl_easy_strerror(res));
-      return 1;
-    }
-
-    printf("Sending request.\n");
-
-    do {
-      /* Warning: This example program may loop indefinitely.
-       * A production-quality program must define a timeout and exit this loop
-       * as soon as the timeout has expired. */
-      size_t nsent;
-      do {
-        nsent = 0;
-        res = curl_easy_send(curl, request + nsent_total,
-            request_len - nsent_total, &nsent);
-        nsent_total += nsent;
-
-        if(res == CURLE_AGAIN && !wait_on_socket(sockfd, 0, 60000L)) {
-          printf("Error: timeout.\n");
-          return 1;
-        }
-      } while(res == CURLE_AGAIN);
-
-      if(res != CURLE_OK) {
-        printf("Error: %s\n", curl_easy_strerror(res));
-        return 1;
-      }
-
-      printf("Sent %" CURL_FORMAT_CURL_OFF_T " bytes.\n",
-        (curl_off_t)nsent);
-
-    } while(nsent_total < request_len);
-
-    printf("Reading response.\n");
-
-    for(;;) {
-      /* Warning: This example program may loop indefinitely (see above). */
-      char buf[1024];
-      size_t nread;
-      do {
-        nread = 0;
-        res = curl_easy_recv(curl, buf, sizeof(buf), &nread);
-
-        if(res == CURLE_AGAIN && !wait_on_socket(sockfd, 1, 60000L)) {
-          printf("Error: timeout.\n");
-          return 1;
-        }
-      } while(res == CURLE_AGAIN);
-
-      if(res != CURLE_OK) {
-        printf("Error: %s\n", curl_easy_strerror(res));
-        break;
-      }
-
-      if(nread == 0) {
-        /* end of the response */
-        break;
-      }
-
-      printf("Received %" CURL_FORMAT_CURL_OFF_T " bytes.\n",
-        (curl_off_t)nread);
-    }
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/sepheaders.c b/components/cronet/third_party/curl_headers/docs/examples/sepheaders.c
deleted file mode 100644
index 8f3a5ff0..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/sepheaders.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Simple HTTP GET that stores the headers in a separate file
- * </DESC>
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <curl/curl.h>
-
-static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
-{
-  size_t written = fwrite(ptr, size, nmemb, (FILE *)stream);
-  return written;
-}
-
-int main(void)
-{
-  CURL *curl_handle;
-  static const char *headerfilename = "head.out";
-  FILE *headerfile;
-  static const char *bodyfilename = "body.out";
-  FILE *bodyfile;
-
-  curl_global_init(CURL_GLOBAL_ALL);
-
-  /* init the curl session */
-  curl_handle = curl_easy_init();
-
-  /* set URL to get */
-  curl_easy_setopt(curl_handle, CURLOPT_URL, "https://example.com");
-
-  /* no progress meter please */
-  curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1L);
-
-  /* send all data to this function  */
-  curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data);
-
-  /* open the header file */
-  headerfile = fopen(headerfilename, "wb");
-  if(!headerfile) {
-    curl_easy_cleanup(curl_handle);
-    return -1;
-  }
-
-  /* open the body file */
-  bodyfile = fopen(bodyfilename, "wb");
-  if(!bodyfile) {
-    curl_easy_cleanup(curl_handle);
-    fclose(headerfile);
-    return -1;
-  }
-
-  /* we want the headers be written to this file handle */
-  curl_easy_setopt(curl_handle, CURLOPT_HEADERDATA, headerfile);
-
-  /* we want the body be written to this file handle instead of stdout */
-  curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, bodyfile);
-
-  /* get it! */
-  curl_easy_perform(curl_handle);
-
-  /* close the header file */
-  fclose(headerfile);
-
-  /* close the body file */
-  fclose(bodyfile);
-
-  /* cleanup curl stuff */
-  curl_easy_cleanup(curl_handle);
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/sessioninfo.c b/components/cronet/third_party/curl_headers/docs/examples/sessioninfo.c
deleted file mode 100644
index 86a813a..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/sessioninfo.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Uses the CURLINFO_TLS_SESSION data.
- * </DESC>
- */
-
-/* Note that this example currently requires curl to be linked against
-   GnuTLS (and this program must also be linked against -lgnutls). */
-
-#include <stdio.h>
-
-#include <curl/curl.h>
-#include <gnutls/gnutls.h>
-
-static CURL *curl;
-
-static size_t wrfu(void *ptr, size_t size, size_t nmemb, void *stream)
-{
-  const struct curl_tlssessioninfo *info;
-  unsigned int cert_list_size;
-  const gnutls_datum_t *chainp;
-  CURLcode res;
-
-  (void)stream;
-  (void)ptr;
-
-  res = curl_easy_getinfo(curl, CURLINFO_TLS_SESSION, &info);
-
-  if(!res) {
-    switch(info->backend) {
-    case CURLSSLBACKEND_GNUTLS:
-      /* info->internals is now the gnutls_session_t */
-      chainp = gnutls_certificate_get_peers(info->internals, &cert_list_size);
-      if((chainp) && (cert_list_size)) {
-        unsigned int i;
-
-        for(i = 0; i < cert_list_size; i++) {
-          gnutls_x509_crt_t cert;
-          gnutls_datum_t dn;
-
-          if(GNUTLS_E_SUCCESS == gnutls_x509_crt_init(&cert)) {
-            if(GNUTLS_E_SUCCESS ==
-               gnutls_x509_crt_import(cert, &chainp[i], GNUTLS_X509_FMT_DER)) {
-              if(GNUTLS_E_SUCCESS ==
-                 gnutls_x509_crt_print(cert, GNUTLS_CRT_PRINT_FULL, &dn)) {
-                fprintf(stderr, "Certificate #%u: %.*s", i, dn.size, dn.data);
-
-                gnutls_free(dn.data);
-              }
-            }
-
-            gnutls_x509_crt_deinit(cert);
-          }
-        }
-      }
-      break;
-    case CURLSSLBACKEND_NONE:
-    default:
-      break;
-    }
-  }
-
-  return size * nmemb;
-}
-
-int main(void)
-{
-  curl_global_init(CURL_GLOBAL_DEFAULT);
-
-  curl = curl_easy_init();
-  if(curl) {
-    curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/");
-
-    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, wrfu);
-
-    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
-    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
-
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
-
-    (void) curl_easy_perform(curl);
-
-    curl_easy_cleanup(curl);
-  }
-
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/sftpget.c b/components/cronet/third_party/curl_headers/docs/examples/sftpget.c
deleted file mode 100644
index e5a74b9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/sftpget.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Gets a file using an SFTP URL.
- * </DESC>
- */
-
-#include <stdio.h>
-
-#include <curl/curl.h>
-
-/* define this to switch off the use of ssh-agent in this program */
-#undef DISABLE_SSH_AGENT
-
-/*
- * This is an example showing how to get a single file from an SFTP server.
- * It delays the actual destination file creation until the first write
- * callback so that it won't create an empty file in case the remote file
- * doesn't exist or something else fails.
- */
-
-struct FtpFile {
-  const char *filename;
-  FILE *stream;
-};
-
-static size_t my_fwrite(void *buffer, size_t size, size_t nmemb,
-                        void *stream)
-{
-  struct FtpFile *out = (struct FtpFile *)stream;
-  if(!out->stream) {
-    /* open file for writing */
-    out->stream = fopen(out->filename, "wb");
-    if(!out->stream)
-      return -1; /* failure, can't open file to write */
-  }
-  return fwrite(buffer, size, nmemb, out->stream);
-}
-
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-  struct FtpFile ftpfile = {
-    "yourfile.bin", /* name to store the file as if successful */
-    NULL
-  };
-
-  curl_global_init(CURL_GLOBAL_DEFAULT);
-
-  curl = curl_easy_init();
-  if(curl) {
-    /*
-     * You better replace the URL with one that works!
-     */
-    curl_easy_setopt(curl, CURLOPT_URL,
-                     "sftp://user@server/home/user/file.txt");
-    /* Define our callback to get called when there's data to be written */
-    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
-    /* Set a pointer to our struct to pass to the callback */
-    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile);
-
-#ifndef DISABLE_SSH_AGENT
-    /* We activate ssh agent. For this to work you need
-       to have ssh-agent running (type set | grep SSH_AGENT to check) or
-       pageant on Windows (there is an icon in systray if so) */
-    curl_easy_setopt(curl, CURLOPT_SSH_AUTH_TYPES, CURLSSH_AUTH_AGENT);
-#endif
-
-    /* Switch on full protocol/debug output */
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
-    res = curl_easy_perform(curl);
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-
-    if(CURLE_OK != res) {
-      /* we failed */
-      fprintf(stderr, "curl told us %d\n", res);
-    }
-  }
-
-  if(ftpfile.stream)
-    fclose(ftpfile.stream); /* close the local file */
-
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/sftpuploadresume.c b/components/cronet/third_party/curl_headers/docs/examples/sftpuploadresume.c
deleted file mode 100644
index e7d9d23..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/sftpuploadresume.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Upload to SFTP, resuming a previously aborted transfer.
- * </DESC>
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <curl/curl.h>
-
-/* read data to upload */
-static size_t readfunc(void *ptr, size_t size, size_t nmemb, void *stream)
-{
-  FILE *f = (FILE *)stream;
-  size_t n;
-
-  if(ferror(f))
-    return CURL_READFUNC_ABORT;
-
-  n = fread(ptr, size, nmemb, f) * size;
-
-  return n;
-}
-
-/*
- * sftpGetRemoteFileSize returns the remote file size in byte; -1 on error
- */
-static curl_off_t sftpGetRemoteFileSize(const char *i_remoteFile)
-{
-  CURLcode result = CURLE_GOT_NOTHING;
-  curl_off_t remoteFileSizeByte = -1;
-  CURL *curlHandlePtr = curl_easy_init();
-
-  curl_easy_setopt(curlHandlePtr, CURLOPT_VERBOSE, 1L);
-
-  curl_easy_setopt(curlHandlePtr, CURLOPT_URL, i_remoteFile);
-  curl_easy_setopt(curlHandlePtr, CURLOPT_NOPROGRESS, 1);
-  curl_easy_setopt(curlHandlePtr, CURLOPT_NOBODY, 1);
-  curl_easy_setopt(curlHandlePtr, CURLOPT_HEADER, 1);
-  curl_easy_setopt(curlHandlePtr, CURLOPT_FILETIME, 1);
-
-  result = curl_easy_perform(curlHandlePtr);
-  if(CURLE_OK == result) {
-    result = curl_easy_getinfo(curlHandlePtr,
-                               CURLINFO_CONTENT_LENGTH_DOWNLOAD_T,
-                               &remoteFileSizeByte);
-    if(result)
-      return -1;
-    printf("filesize: %" CURL_FORMAT_CURL_OFF_T "\n", remoteFileSizeByte);
-  }
-  curl_easy_cleanup(curlHandlePtr);
-
-  return remoteFileSizeByte;
-}
-
-
-static int sftpResumeUpload(CURL *curlhandle, const char *remotepath,
-                            const char *localpath)
-{
-  FILE *f = NULL;
-  CURLcode result = CURLE_GOT_NOTHING;
-
-  curl_off_t remoteFileSizeByte = sftpGetRemoteFileSize(remotepath);
-  if(-1 == remoteFileSizeByte) {
-    printf("Error reading the remote file size: unable to resume upload\n");
-    return -1;
-  }
-
-  f = fopen(localpath, "rb");
-  if(!f) {
-    perror(NULL);
-    return 0;
-  }
-
-  curl_easy_setopt(curlhandle, CURLOPT_UPLOAD, 1L);
-  curl_easy_setopt(curlhandle, CURLOPT_URL, remotepath);
-  curl_easy_setopt(curlhandle, CURLOPT_READFUNCTION, readfunc);
-  curl_easy_setopt(curlhandle, CURLOPT_READDATA, f);
-
-#ifdef _WIN32
-  _fseeki64(f, remoteFileSizeByte, SEEK_SET);
-#else
-  fseek(f, (long)remoteFileSizeByte, SEEK_SET);
-#endif
-  curl_easy_setopt(curlhandle, CURLOPT_APPEND, 1L);
-  result = curl_easy_perform(curlhandle);
-
-  fclose(f);
-
-  if(result == CURLE_OK)
-    return 1;
-  else {
-    fprintf(stderr, "%s\n", curl_easy_strerror(result));
-    return 0;
-  }
-}
-
-int main(void)
-{
-  const char *remote = "sftp://user:pass@example.com/path/filename";
-  const char *filename = "filename";
-  CURL *curlhandle = NULL;
-
-  curl_global_init(CURL_GLOBAL_ALL);
-  curlhandle = curl_easy_init();
-
-  if(!sftpResumeUpload(curlhandle, remote, filename)) {
-    printf("resumed upload using curl %s failed\n", curl_version());
-  }
-
-  curl_easy_cleanup(curlhandle);
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/shared-connection-cache.c b/components/cronet/third_party/curl_headers/docs/examples/shared-connection-cache.c
deleted file mode 100644
index 639ad9c5..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/shared-connection-cache.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Connection cache shared between easy handles with the share interface
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-static void my_lock(CURL *handle, curl_lock_data data,
-                    curl_lock_access laccess, void *useptr)
-{
-  (void)handle;
-  (void)data;
-  (void)laccess;
-  (void)useptr;
-  fprintf(stderr, "-> Mutex lock\n");
-}
-
-static void my_unlock(CURL *handle, curl_lock_data data, void *useptr)
-{
-  (void)handle;
-  (void)data;
-  (void)useptr;
-  fprintf(stderr, "<- Mutex unlock\n");
-}
-
-int main(void)
-{
-  CURLSH *share;
-  int i;
-
-  share = curl_share_init();
-  curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT);
-
-  curl_share_setopt(share, CURLSHOPT_LOCKFUNC, my_lock);
-  curl_share_setopt(share, CURLSHOPT_UNLOCKFUNC, my_unlock);
-
-  /* Loop the transfer and cleanup the handle properly every lap. This will
-     still reuse connections since the pool is in the shared object! */
-
-  for(i = 0; i < 3; i++) {
-    CURL *curl = curl_easy_init();
-    if(curl) {
-      CURLcode res;
-
-      curl_easy_setopt(curl, CURLOPT_URL, "https://curl.haxx.se/");
-
-      /* use the share object */
-      curl_easy_setopt(curl, CURLOPT_SHARE, share);
-
-      /* Perform the request, res will get the return code */
-      res = curl_easy_perform(curl);
-      /* Check for errors */
-      if(res != CURLE_OK)
-        fprintf(stderr, "curl_easy_perform() failed: %s\n",
-                curl_easy_strerror(res));
-
-      /* always cleanup */
-      curl_easy_cleanup(curl);
-    }
-  }
-
-  curl_share_cleanup(share);
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/simple.c b/components/cronet/third_party/curl_headers/docs/examples/simple.c
deleted file mode 100644
index c61227054..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/simple.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Very simple HTTP GET
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-
-  curl = curl_easy_init();
-  if(curl) {
-    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
-    /* example.com is redirected, so we tell libcurl to follow redirection */
-    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
-
-    /* Perform the request, res will get the return code */
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/simplepost.c b/components/cronet/third_party/curl_headers/docs/examples/simplepost.c
deleted file mode 100644
index 8ec537b5..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/simplepost.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Very simple HTTP POST
- * </DESC>
- */
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-
-  static const char *postthis = "moo mooo moo moo";
-
-  curl = curl_easy_init();
-  if(curl) {
-    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
-    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postthis);
-
-    /* if we don't provide POSTFIELDSIZE, libcurl will strlen() by
-       itself */
-    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(postthis));
-
-    /* Perform the request, res will get the return code */
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/simplessl.c b/components/cronet/third_party/curl_headers/docs/examples/simplessl.c
deleted file mode 100644
index fdc7cf1..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/simplessl.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Shows HTTPS usage with client certs and optional ssl engine use.
- * </DESC>
- */
-#include <stdio.h>
-
-#include <curl/curl.h>
-
-/* some requirements for this to work:
-   1.   set pCertFile to the file with the client certificate
-   2.   if the key is passphrase protected, set pPassphrase to the
-        passphrase you use
-   3.   if you are using a crypto engine:
-   3.1. set a #define USE_ENGINE
-   3.2. set pEngine to the name of the crypto engine you use
-   3.3. set pKeyName to the key identifier you want to use
-   4.   if you don't use a crypto engine:
-   4.1. set pKeyName to the file name of your client key
-   4.2. if the format of the key file is DER, set pKeyType to "DER"
-
-   !! verify of the server certificate is not implemented here !!
-
-   **** This example only works with libcurl 7.9.3 and later! ****
-
-*/
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-  FILE *headerfile;
-  const char *pPassphrase = NULL;
-
-  static const char *pCertFile = "testcert.pem";
-  static const char *pCACertFile = "cacert.pem";
-  static const char *pHeaderFile = "dumpit";
-
-  const char *pKeyName;
-  const char *pKeyType;
-
-  const char *pEngine;
-
-#ifdef USE_ENGINE
-  pKeyName  = "rsa_test";
-  pKeyType  = "ENG";
-  pEngine   = "chil";            /* for nChiper HSM... */
-#else
-  pKeyName  = "testkey.pem";
-  pKeyType  = "PEM";
-  pEngine   = NULL;
-#endif
-
-  headerfile = fopen(pHeaderFile, "wb");
-
-  curl_global_init(CURL_GLOBAL_DEFAULT);
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* what call to write: */
-    curl_easy_setopt(curl, CURLOPT_URL, "HTTPS://your.favourite.ssl.site");
-    curl_easy_setopt(curl, CURLOPT_HEADERDATA, headerfile);
-
-    do { /* dummy loop, just to break out from */
-      if(pEngine) {
-        /* use crypto engine */
-        if(curl_easy_setopt(curl, CURLOPT_SSLENGINE, pEngine) != CURLE_OK) {
-          /* load the crypto engine */
-          fprintf(stderr, "can't set crypto engine\n");
-          break;
-        }
-        if(curl_easy_setopt(curl, CURLOPT_SSLENGINE_DEFAULT, 1L) != CURLE_OK) {
-          /* set the crypto engine as default */
-          /* only needed for the first time you load
-             a engine in a curl object... */
-          fprintf(stderr, "can't set crypto engine as default\n");
-          break;
-        }
-      }
-      /* cert is stored PEM coded in file... */
-      /* since PEM is default, we needn't set it for PEM */
-      curl_easy_setopt(curl, CURLOPT_SSLCERTTYPE, "PEM");
-
-      /* set the cert for client authentication */
-      curl_easy_setopt(curl, CURLOPT_SSLCERT, pCertFile);
-
-      /* sorry, for engine we must set the passphrase
-         (if the key has one...) */
-      if(pPassphrase)
-        curl_easy_setopt(curl, CURLOPT_KEYPASSWD, pPassphrase);
-
-      /* if we use a key stored in a crypto engine,
-         we must set the key type to "ENG" */
-      curl_easy_setopt(curl, CURLOPT_SSLKEYTYPE, pKeyType);
-
-      /* set the private key (file or ID in engine) */
-      curl_easy_setopt(curl, CURLOPT_SSLKEY, pKeyName);
-
-      /* set the file with the certs vaildating the server */
-      curl_easy_setopt(curl, CURLOPT_CAINFO, pCACertFile);
-
-      /* disconnect if we can't validate server's cert */
-      curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
-
-      /* Perform the request, res will get the return code */
-      res = curl_easy_perform(curl);
-      /* Check for errors */
-      if(res != CURLE_OK)
-        fprintf(stderr, "curl_easy_perform() failed: %s\n",
-                curl_easy_strerror(res));
-
-      /* we are done... */
-    } while(0);
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/smooth-gtk-thread.c b/components/cronet/third_party/curl_headers/docs/examples/smooth-gtk-thread.c
deleted file mode 100644
index b64c4861..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/smooth-gtk-thread.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * A multi threaded application that uses a progress bar to show
- * status.  It uses Gtk+ to make a smooth pulse.
- * </DESC>
- */
-/*
- * Written by Jud Bishop after studying the other examples provided with
- * libcurl.
- *
- * To compile (on a single line):
- * gcc -ggdb `pkg-config --cflags  --libs gtk+-2.0` -lcurl -lssl -lcrypto
- *   -lgthread-2.0 -dl  smooth-gtk-thread.c -o smooth-gtk-thread
- */
-
-#include <stdio.h>
-#include <gtk/gtk.h>
-#include <glib.h>
-#include <unistd.h>
-#include <pthread.h>
-
-#include <curl/curl.h>
-
-#define NUMT 4
-
-pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
-int j = 0;
-gint num_urls = 9; /* Just make sure this is less than urls[]*/
-const char * const urls[]= {
-  "90022",
-  "90023",
-  "90024",
-  "90025",
-  "90026",
-  "90027",
-  "90028",
-  "90029",
-  "90030"
-};
-
-size_t write_file(void *ptr, size_t size, size_t nmemb, FILE *stream)
-{
-  /* printf("write_file\n"); */
-  return fwrite(ptr, size, nmemb, stream);
-}
-
-/* https://weather.com/weather/today/l/46214?cc=*&dayf=5&unit=i */
-void *pull_one_url(void *NaN)
-{
-  /* Stop threads from entering unless j is incremented */
-  pthread_mutex_lock(&lock);
-  while(j < num_urls) {
-    CURL *curl;
-    gchar *http;
-
-    printf("j = %d\n", j);
-
-    http =
-      g_strdup_printf("xoap.weather.com/weather/local/%s?cc=*&dayf=5&unit=i\n",
-                      urls[j]);
-
-    printf("http %s", http);
-
-    curl = curl_easy_init();
-    if(curl) {
-
-      FILE *outfile = fopen(urls[j], "wb");
-
-      /* Set the URL and transfer type */
-      curl_easy_setopt(curl, CURLOPT_URL, http);
-
-      /* Write to the file */
-      curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile);
-      curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_file);
-
-      j++;  /* critical line */
-      pthread_mutex_unlock(&lock);
-
-      curl_easy_perform(curl);
-
-      fclose(outfile);
-      printf("fclose\n");
-
-      curl_easy_cleanup(curl);
-    }
-    g_free(http);
-
-    /* Adds more latency, testing the mutex.*/
-    sleep(1);
-
-  } /* end while */
-  return NULL;
-}
-
-
-gboolean pulse_bar(gpointer data)
-{
-  gdk_threads_enter();
-  gtk_progress_bar_pulse(GTK_PROGRESS_BAR (data));
-  gdk_threads_leave();
-
-  /* Return true so the function will be called again;
-   * returning false removes this timeout function.
-   */
-  return TRUE;
-}
-
-void *create_thread(void *progress_bar)
-{
-  pthread_t tid[NUMT];
-  int i;
-
-  /* Make sure I don't create more threads than urls. */
-  for(i = 0; i < NUMT && i < num_urls ; i++) {
-    int error = pthread_create(&tid[i],
-                               NULL, /* default attributes please */
-                               pull_one_url,
-                               NULL);
-    if(0 != error)
-      fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error);
-    else
-      fprintf(stderr, "Thread %d, gets %s\n", i, urls[i]);
-  }
-
-  /* Wait for all threads to terminate. */
-  for(i = 0; i < NUMT && i < num_urls; i++) {
-    pthread_join(tid[i], NULL);
-    fprintf(stderr, "Thread %d terminated\n", i);
-  }
-
-  /* This stops the pulsing if you have it turned on in the progress bar
-     section */
-  g_source_remove(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(progress_bar),
-                                                    "pulse_id")));
-
-  /* This destroys the progress bar */
-  gtk_widget_destroy(progress_bar);
-
-  /* [Un]Comment this out to kill the program rather than pushing close. */
-  /* gtk_main_quit(); */
-
-
-  return NULL;
-
-}
-
-static gboolean cb_delete(GtkWidget *window, gpointer data)
-{
-  gtk_main_quit();
-  return FALSE;
-}
-
-int main(int argc, char **argv)
-{
-  GtkWidget *top_window, *outside_frame, *inside_frame, *progress_bar;
-
-  /* Must initialize libcurl before any threads are started */
-  curl_global_init(CURL_GLOBAL_ALL);
-
-  /* Init thread */
-  g_thread_init(NULL);
-  gdk_threads_init();
-  gdk_threads_enter();
-
-  gtk_init(&argc, &argv);
-
-  /* Base window */
-  top_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-
-  /* Frame */
-  outside_frame = gtk_frame_new(NULL);
-  gtk_frame_set_shadow_type(GTK_FRAME(outside_frame), GTK_SHADOW_OUT);
-  gtk_container_add(GTK_CONTAINER(top_window), outside_frame);
-
-  /* Frame */
-  inside_frame = gtk_frame_new(NULL);
-  gtk_frame_set_shadow_type(GTK_FRAME(inside_frame), GTK_SHADOW_IN);
-  gtk_container_set_border_width(GTK_CONTAINER(inside_frame), 5);
-  gtk_container_add(GTK_CONTAINER(outside_frame), inside_frame);
-
-  /* Progress bar */
-  progress_bar = gtk_progress_bar_new();
-  gtk_progress_bar_pulse(GTK_PROGRESS_BAR (progress_bar));
-  /* Make uniform pulsing */
-  gint pulse_ref = g_timeout_add(300, pulse_bar, progress_bar);
-  g_object_set_data(G_OBJECT(progress_bar), "pulse_id",
-                    GINT_TO_POINTER(pulse_ref));
-  gtk_container_add(GTK_CONTAINER(inside_frame), progress_bar);
-
-  gtk_widget_show_all(top_window);
-  printf("gtk_widget_show_all\n");
-
-  g_signal_connect(G_OBJECT (top_window), "delete-event",
-                   G_CALLBACK(cb_delete), NULL);
-
-  if(!g_thread_create(&create_thread, progress_bar, FALSE, NULL) != 0)
-    g_warning("can't create the thread");
-
-  gtk_main();
-  gdk_threads_leave();
-  printf("gdk_threads_leave\n");
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/smtp-expn.c b/components/cronet/third_party/curl_headers/docs/examples/smtp-expn.c
deleted file mode 100644
index fb0ed1d..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/smtp-expn.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * SMTP example showing how to expand an e-mail mailing list
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to expand an e-mail mailing list.
- *
- * Notes:
- *
- * 1) This example requires libcurl 7.34.0 or above.
- * 2) Not all email servers support this command.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-  struct curl_slist *recipients = NULL;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* This is the URL for your mailserver */
-    curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
-
-    /* Note that the CURLOPT_MAIL_RCPT takes a list, not a char array  */
-    recipients = curl_slist_append(recipients, "Friends");
-    curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
-
-    /* Set the EXPN command */
-    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "EXPN");
-
-    /* Perform the custom request */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Free the list of recipients */
-    curl_slist_free_all(recipients);
-
-    /* Curl won't send the QUIT command until you call cleanup, so you should
-     * be able to re-use this connection for additional requests. It may not be
-     * a good idea to keep the connection open for a very long time though
-     * (more than a few minutes may result in the server timing out the
-     * connection) and you do want to clean up in the end.
-     */
-    curl_easy_cleanup(curl);
-  }
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/smtp-mail.c b/components/cronet/third_party/curl_headers/docs/examples/smtp-mail.c
deleted file mode 100644
index 3285b31..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/smtp-mail.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * Send e-mail with SMTP
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/*
- * For an SMTP example using the multi interface please see smtp-multi.c.
- */
-
-/* The libcurl options want plain addresses, the viewable headers in the mail
- * can very well get a full name as well.
- */
-#define FROM_ADDR    "<sender@example.org>"
-#define TO_ADDR      "<addressee@example.net>"
-#define CC_ADDR      "<info@example.org>"
-
-#define FROM_MAIL "Sender Person " FROM_ADDR
-#define TO_MAIL   "A Receiver " TO_ADDR
-#define CC_MAIL   "John CC Smith " CC_ADDR
-
-static const char *payload_text[] = {
-  "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
-  "To: " TO_MAIL "\r\n",
-  "From: " FROM_MAIL "\r\n",
-  "Cc: " CC_MAIL "\r\n",
-  "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
-  "rfcpedant.example.org>\r\n",
-  "Subject: SMTP example message\r\n",
-  "\r\n", /* empty line to divide headers from body, see RFC5322 */
-  "The body of the message starts here.\r\n",
-  "\r\n",
-  "It could be a lot of lines, could be MIME encoded, whatever.\r\n",
-  "Check RFC5322.\r\n",
-  NULL
-};
-
-struct upload_status {
-  int lines_read;
-};
-
-static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
-{
-  struct upload_status *upload_ctx = (struct upload_status *)userp;
-  const char *data;
-
-  if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
-    return 0;
-  }
-
-  data = payload_text[upload_ctx->lines_read];
-
-  if(data) {
-    size_t len = strlen(data);
-    memcpy(ptr, data, len);
-    upload_ctx->lines_read++;
-
-    return len;
-  }
-
-  return 0;
-}
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-  struct curl_slist *recipients = NULL;
-  struct upload_status upload_ctx;
-
-  upload_ctx.lines_read = 0;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* This is the URL for your mailserver */
-    curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
-
-    /* Note that this option isn't strictly required, omitting it will result
-     * in libcurl sending the MAIL FROM command with empty sender data. All
-     * autoresponses should have an empty reverse-path, and should be directed
-     * to the address in the reverse-path which triggered them. Otherwise,
-     * they could cause an endless loop. See RFC 5321 Section 4.5.5 for more
-     * details.
-     */
-    curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM_ADDR);
-
-    /* Add two recipients, in this particular case they correspond to the
-     * To: and Cc: addressees in the header, but they could be any kind of
-     * recipient. */
-    recipients = curl_slist_append(recipients, TO_ADDR);
-    recipients = curl_slist_append(recipients, CC_ADDR);
-    curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
-
-    /* We're using a callback function to specify the payload (the headers and
-     * body of the message). You could just use the CURLOPT_READDATA option to
-     * specify a FILE pointer to read from. */
-    curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
-    curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
-    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
-    /* Send the message */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Free the list of recipients */
-    curl_slist_free_all(recipients);
-
-    /* curl won't send the QUIT command until you call cleanup, so you should
-     * be able to re-use this connection for additional messages (setting
-     * CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT as required, and calling
-     * curl_easy_perform() again. It may not be a good idea to keep the
-     * connection open for a very long time though (more than a few minutes
-     * may result in the server timing out the connection), and you do want to
-     * clean up in the end.
-     */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/smtp-mime.c b/components/cronet/third_party/curl_headers/docs/examples/smtp-mime.c
deleted file mode 100644
index 4f3fbfd..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/smtp-mime.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * SMTP example showing how to send mime e-mails
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to send mime mail using libcurl's SMTP
- * capabilities. For an example of using the multi interface please see
- * smtp-multi.c.
- *
- * Note that this example requires libcurl 7.56.0 or above.
- */
-
-#define FROM    "<sender@example.org>"
-#define TO      "<addressee@example.net>"
-#define CC      "<info@example.org>"
-
-static const char *headers_text[] = {
-  "Date: Tue, 22 Aug 2017 14:08:43 +0100",
-  "To: " TO,
-  "From: " FROM " (Example User)",
-  "Cc: " CC " (Another example User)",
-  "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
-    "rfcpedant.example.org>",
-  "Subject: example sending a MIME-formatted message",
-  NULL
-};
-
-static const char inline_text[] =
-  "This is the inline text message of the e-mail.\r\n"
-  "\r\n"
-  "  It could be a lot of lines that would be displayed in an e-mail\r\n"
-  "viewer that is not able to handle HTML.\r\n";
-
-static const char inline_html[] =
-  "<html><body>\r\n"
-  "<p>This is the inline <b>HTML</b> message of the e-mail.</p>"
-  "<br />\r\n"
-  "<p>It could be a lot of HTML data that would be displayed by "
-  "e-mail viewers able to handle HTML.</p>"
-  "</body></html>\r\n";
-
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-
-  curl = curl_easy_init();
-  if(curl) {
-    struct curl_slist *headers = NULL;
-    struct curl_slist *recipients = NULL;
-    struct curl_slist *slist = NULL;
-    curl_mime *mime;
-    curl_mime *alt;
-    curl_mimepart *part;
-    const char **cpp;
-
-    /* This is the URL for your mailserver */
-    curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
-
-    /* Note that this option isn't strictly required, omitting it will result
-     * in libcurl sending the MAIL FROM command with empty sender data. All
-     * autoresponses should have an empty reverse-path, and should be directed
-     * to the address in the reverse-path which triggered them. Otherwise,
-     * they could cause an endless loop. See RFC 5321 Section 4.5.5 for more
-     * details.
-     */
-    curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
-
-    /* Add two recipients, in this particular case they correspond to the
-     * To: and Cc: addressees in the header, but they could be any kind of
-     * recipient. */
-    recipients = curl_slist_append(recipients, TO);
-    recipients = curl_slist_append(recipients, CC);
-    curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
-
-    /* Build and set the message header list. */
-    for(cpp = headers_text; *cpp; cpp++)
-      headers = curl_slist_append(headers, *cpp);
-    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
-
-    /* Build the mime message. */
-    mime = curl_mime_init(curl);
-
-    /* The inline part is an alternative proposing the html and the text
-       versions of the e-mail. */
-    alt = curl_mime_init(curl);
-
-    /* HTML message. */
-    part = curl_mime_addpart(alt);
-    curl_mime_data(part, inline_html, CURL_ZERO_TERMINATED);
-    curl_mime_type(part, "text/html");
-
-    /* Text message. */
-    part = curl_mime_addpart(alt);
-    curl_mime_data(part, inline_text, CURL_ZERO_TERMINATED);
-
-    /* Create the inline part. */
-    part = curl_mime_addpart(mime);
-    curl_mime_subparts(part, alt);
-    curl_mime_type(part, "multipart/alternative");
-    slist = curl_slist_append(NULL, "Content-Disposition: inline");
-    curl_mime_headers(part, slist, 1);
-
-    /* Add the current source program as an attachment. */
-    part = curl_mime_addpart(mime);
-    curl_mime_filedata(part, "smtp-mime.c");
-    curl_easy_setopt(curl, CURLOPT_MIMEPOST, mime);
-
-    /* Send the message */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Free lists. */
-    curl_slist_free_all(recipients);
-    curl_slist_free_all(headers);
-
-    /* curl won't send the QUIT command until you call cleanup, so you should
-     * be able to re-use this connection for additional messages (setting
-     * CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT as required, and calling
-     * curl_easy_perform() again. It may not be a good idea to keep the
-     * connection open for a very long time though (more than a few minutes
-     * may result in the server timing out the connection), and you do want to
-     * clean up in the end.
-     */
-    curl_easy_cleanup(curl);
-
-    /* Free multipart message. */
-    curl_mime_free(mime);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/smtp-multi.c b/components/cronet/third_party/curl_headers/docs/examples/smtp-multi.c
deleted file mode 100644
index bd70bdb..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/smtp-multi.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * SMTP example using the multi interface
- * </DESC>
- */
-
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is an example showing how to send mail using libcurl's SMTP
- * capabilities. It builds on the smtp-mail.c example to demonstrate how to use
- * libcurl's multi interface.
- *
- * Note that this example requires libcurl 7.20.0 or above.
- */
-
-#define FROM     "<sender@example.com>"
-#define TO       "<recipient@example.com>"
-#define CC       "<info@example.com>"
-
-#define MULTI_PERFORM_HANG_TIMEOUT 60 * 1000
-
-static const char *payload_text[] = {
-  "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
-  "To: " TO "\r\n",
-  "From: " FROM " (Example User)\r\n",
-  "Cc: " CC " (Another example User)\r\n",
-  "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
-  "rfcpedant.example.org>\r\n",
-  "Subject: SMTP multi example message\r\n",
-  "\r\n", /* empty line to divide headers from body, see RFC5322 */
-  "The body of the message starts here.\r\n",
-  "\r\n",
-  "It could be a lot of lines, could be MIME encoded, whatever.\r\n",
-  "Check RFC5322.\r\n",
-  NULL
-};
-
-struct upload_status {
-  int lines_read;
-};
-
-static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
-{
-  struct upload_status *upload_ctx = (struct upload_status *)userp;
-  const char *data;
-
-  if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
-    return 0;
-  }
-
-  data = payload_text[upload_ctx->lines_read];
-
-  if(data) {
-    size_t len = strlen(data);
-    memcpy(ptr, data, len);
-    upload_ctx->lines_read++;
-
-    return len;
-  }
-
-  return 0;
-}
-
-static struct timeval tvnow(void)
-{
-  struct timeval now;
-
-  /* time() returns the value of time in seconds since the epoch */
-  now.tv_sec = (long)time(NULL);
-  now.tv_usec = 0;
-
-  return now;
-}
-
-static long tvdiff(struct timeval newer, struct timeval older)
-{
-  return (newer.tv_sec - older.tv_sec) * 1000 +
-    (newer.tv_usec - older.tv_usec) / 1000;
-}
-
-int main(void)
-{
-  CURL *curl;
-  CURLM *mcurl;
-  int still_running = 1;
-  struct timeval mp_start;
-  struct curl_slist *recipients = NULL;
-  struct upload_status upload_ctx;
-
-  upload_ctx.lines_read = 0;
-
-  curl_global_init(CURL_GLOBAL_DEFAULT);
-
-  curl = curl_easy_init();
-  if(!curl)
-    return 1;
-
-  mcurl = curl_multi_init();
-  if(!mcurl)
-    return 2;
-
-  /* This is the URL for your mailserver */
-  curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
-
-  /* Note that this option isn't strictly required, omitting it will result in
-   * libcurl sending the MAIL FROM command with empty sender data. All
-   * autoresponses should have an empty reverse-path, and should be directed
-   * to the address in the reverse-path which triggered them. Otherwise, they
-   * could cause an endless loop. See RFC 5321 Section 4.5.5 for more details.
-   */
-  curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
-
-  /* Add two recipients, in this particular case they correspond to the
-   * To: and Cc: addressees in the header, but they could be any kind of
-   * recipient. */
-  recipients = curl_slist_append(recipients, TO);
-  recipients = curl_slist_append(recipients, CC);
-  curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
-
-  /* We're using a callback function to specify the payload (the headers and
-   * body of the message). You could just use the CURLOPT_READDATA option to
-   * specify a FILE pointer to read from. */
-  curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
-  curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
-  curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
-  /* Tell the multi stack about our easy handle */
-  curl_multi_add_handle(mcurl, curl);
-
-  /* Record the start time which we can use later */
-  mp_start = tvnow();
-
-  /* We start some action by calling perform right away */
-  curl_multi_perform(mcurl, &still_running);
-
-  while(still_running) {
-    struct timeval timeout;
-    fd_set fdread;
-    fd_set fdwrite;
-    fd_set fdexcep;
-    int maxfd = -1;
-    int rc;
-    CURLMcode mc; /* curl_multi_fdset() return code */
-
-    long curl_timeo = -1;
-
-    /* Initialise the file descriptors */
-    FD_ZERO(&fdread);
-    FD_ZERO(&fdwrite);
-    FD_ZERO(&fdexcep);
-
-    /* Set a suitable timeout to play around with */
-    timeout.tv_sec = 1;
-    timeout.tv_usec = 0;
-
-    curl_multi_timeout(mcurl, &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(mcurl, &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);
-    }
-
-    if(tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) {
-      fprintf(stderr,
-              "ABORTING: Since it seems that we would have run forever.\n");
-      break;
-    }
-
-    switch(rc) {
-    case -1:  /* select error */
-      break;
-    case 0:   /* timeout */
-    default:  /* action */
-      curl_multi_perform(mcurl, &still_running);
-      break;
-    }
-  }
-
-  /* Free the list of recipients */
-  curl_slist_free_all(recipients);
-
-  /* Always cleanup */
-  curl_multi_remove_handle(mcurl, curl);
-  curl_multi_cleanup(mcurl);
-  curl_easy_cleanup(curl);
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/smtp-ssl.c b/components/cronet/third_party/curl_headers/docs/examples/smtp-ssl.c
deleted file mode 100644
index 019da7d..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/smtp-ssl.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * SMTP example using SSL
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to send mail using libcurl's SMTP
- * capabilities. It builds on the smtp-mail.c example to add authentication
- * and, more importantly, transport security to protect the authentication
- * details from being snooped.
- *
- * Note that this example requires libcurl 7.20.0 or above.
- */
-
-#define FROM    "<sender@example.org>"
-#define TO      "<addressee@example.net>"
-#define CC      "<info@example.org>"
-
-static const char *payload_text[] = {
-  "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
-  "To: " TO "\r\n",
-  "From: " FROM " (Example User)\r\n",
-  "Cc: " CC " (Another example User)\r\n",
-  "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
-  "rfcpedant.example.org>\r\n",
-  "Subject: SMTP SSL example message\r\n",
-  "\r\n", /* empty line to divide headers from body, see RFC5322 */
-  "The body of the message starts here.\r\n",
-  "\r\n",
-  "It could be a lot of lines, could be MIME encoded, whatever.\r\n",
-  "Check RFC5322.\r\n",
-  NULL
-};
-
-struct upload_status {
-  int lines_read;
-};
-
-static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
-{
-  struct upload_status *upload_ctx = (struct upload_status *)userp;
-  const char *data;
-
-  if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
-    return 0;
-  }
-
-  data = payload_text[upload_ctx->lines_read];
-
-  if(data) {
-    size_t len = strlen(data);
-    memcpy(ptr, data, len);
-    upload_ctx->lines_read++;
-
-    return len;
-  }
-
-  return 0;
-}
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-  struct curl_slist *recipients = NULL;
-  struct upload_status upload_ctx;
-
-  upload_ctx.lines_read = 0;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This is the URL for your mailserver. Note the use of smtps:// rather
-     * than smtp:// to request a SSL based connection. */
-    curl_easy_setopt(curl, CURLOPT_URL, "smtps://mainserver.example.net");
-
-    /* If you want to connect to a site who isn't using a certificate that is
-     * signed by one of the certs in the CA bundle you have, you can skip the
-     * verification of the server's certificate. This makes the connection
-     * A LOT LESS SECURE.
-     *
-     * If you have a CA cert for the server stored someplace else than in the
-     * default bundle, then the CURLOPT_CAPATH option might come handy for
-     * you. */
-#ifdef SKIP_PEER_VERIFICATION
-    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
-#endif
-
-    /* If the site you're connecting to uses a different host name that what
-     * they have mentioned in their server certificate's commonName (or
-     * subjectAltName) fields, libcurl will refuse to connect. You can skip
-     * this check, but this will make the connection less secure. */
-#ifdef SKIP_HOSTNAME_VERIFICATION
-    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
-#endif
-
-    /* Note that this option isn't strictly required, omitting it will result
-     * in libcurl sending the MAIL FROM command with empty sender data. All
-     * autoresponses should have an empty reverse-path, and should be directed
-     * to the address in the reverse-path which triggered them. Otherwise,
-     * they could cause an endless loop. See RFC 5321 Section 4.5.5 for more
-     * details.
-     */
-    curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
-
-    /* Add two recipients, in this particular case they correspond to the
-     * To: and Cc: addressees in the header, but they could be any kind of
-     * recipient. */
-    recipients = curl_slist_append(recipients, TO);
-    recipients = curl_slist_append(recipients, CC);
-    curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
-
-    /* We're using a callback function to specify the payload (the headers and
-     * body of the message). You could just use the CURLOPT_READDATA option to
-     * specify a FILE pointer to read from. */
-    curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
-    curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
-    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
-    /* Since the traffic will be encrypted, it is very useful to turn on debug
-     * information within libcurl to see what is happening during the
-     * transfer */
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
-    /* Send the message */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Free the list of recipients */
-    curl_slist_free_all(recipients);
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/smtp-tls.c b/components/cronet/third_party/curl_headers/docs/examples/smtp-tls.c
deleted file mode 100644
index 671a80d..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/smtp-tls.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * SMTP example using TLS
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to send mail using libcurl's SMTP
- * capabilities. It builds on the smtp-mail.c example to add authentication
- * and, more importantly, transport security to protect the authentication
- * details from being snooped.
- *
- * Note that this example requires libcurl 7.20.0 or above.
- */
-
-#define FROM    "<sender@example.org>"
-#define TO      "<addressee@example.net>"
-#define CC      "<info@example.org>"
-
-static const char *payload_text[] = {
-  "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
-  "To: " TO "\r\n",
-  "From: " FROM " (Example User)\r\n",
-  "Cc: " CC " (Another example User)\r\n",
-  "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
-  "rfcpedant.example.org>\r\n",
-  "Subject: SMTP TLS example message\r\n",
-  "\r\n", /* empty line to divide headers from body, see RFC5322 */
-  "The body of the message starts here.\r\n",
-  "\r\n",
-  "It could be a lot of lines, could be MIME encoded, whatever.\r\n",
-  "Check RFC5322.\r\n",
-  NULL
-};
-
-struct upload_status {
-  int lines_read;
-};
-
-static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
-{
-  struct upload_status *upload_ctx = (struct upload_status *)userp;
-  const char *data;
-
-  if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
-    return 0;
-  }
-
-  data = payload_text[upload_ctx->lines_read];
-
-  if(data) {
-    size_t len = strlen(data);
-    memcpy(ptr, data, len);
-    upload_ctx->lines_read++;
-
-    return len;
-  }
-
-  return 0;
-}
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res = CURLE_OK;
-  struct curl_slist *recipients = NULL;
-  struct upload_status upload_ctx;
-
-  upload_ctx.lines_read = 0;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* Set username and password */
-    curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
-    curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
-
-    /* This is the URL for your mailserver. Note the use of port 587 here,
-     * instead of the normal SMTP port (25). Port 587 is commonly used for
-     * secure mail submission (see RFC4403), but you should use whatever
-     * matches your server configuration. */
-    curl_easy_setopt(curl, CURLOPT_URL, "smtp://mainserver.example.net:587");
-
-    /* In this example, we'll start with a plain text connection, and upgrade
-     * to Transport Layer Security (TLS) using the STARTTLS command. Be careful
-     * of using CURLUSESSL_TRY here, because if TLS upgrade fails, the transfer
-     * will continue anyway - see the security discussion in the libcurl
-     * tutorial for more details. */
-    curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL);
-
-    /* If your server doesn't have a valid certificate, then you can disable
-     * part of the Transport Layer Security protection by setting the
-     * CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST options to 0 (false).
-     *   curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
-     *   curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
-     * That is, in general, a bad idea. It is still better than sending your
-     * authentication details in plain text though.  Instead, you should get
-     * the issuer certificate (or the host certificate if the certificate is
-     * self-signed) and add it to the set of certificates that are known to
-     * libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See docs/SSLCERTS
-     * for more information. */
-    curl_easy_setopt(curl, CURLOPT_CAINFO, "/path/to/certificate.pem");
-
-    /* Note that this option isn't strictly required, omitting it will result
-     * in libcurl sending the MAIL FROM command with empty sender data. All
-     * autoresponses should have an empty reverse-path, and should be directed
-     * to the address in the reverse-path which triggered them. Otherwise,
-     * they could cause an endless loop. See RFC 5321 Section 4.5.5 for more
-     * details.
-     */
-    curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
-
-    /* Add two recipients, in this particular case they correspond to the
-     * To: and Cc: addressees in the header, but they could be any kind of
-     * recipient. */
-    recipients = curl_slist_append(recipients, TO);
-    recipients = curl_slist_append(recipients, CC);
-    curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
-
-    /* We're using a callback function to specify the payload (the headers and
-     * body of the message). You could just use the CURLOPT_READDATA option to
-     * specify a FILE pointer to read from. */
-    curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
-    curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
-    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
-
-    /* Since the traffic will be encrypted, it is very useful to turn on debug
-     * information within libcurl to see what is happening during the transfer.
-     */
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
-    /* Send the message */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Free the list of recipients */
-    curl_slist_free_all(recipients);
-
-    /* Always cleanup */
-    curl_easy_cleanup(curl);
-  }
-
-  return (int)res;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/smtp-vrfy.c b/components/cronet/third_party/curl_headers/docs/examples/smtp-vrfy.c
deleted file mode 100644
index 4e0623fb..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/smtp-vrfy.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* <DESC>
- * SMTP example showing how to verify an e-mail address
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <curl/curl.h>
-
-/* This is a simple example showing how to verify an e-mail address from an
- * SMTP server.
- *
- * Notes:
- *
- * 1) This example requires libcurl 7.34.0 or above.
- * 2) Not all email servers support this command and even if your email server
- *    does support it, it may respond with a 252 response code even though the
- *    address doesn't exist.
- */
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-  struct curl_slist *recipients = NULL;
-
-  curl = curl_easy_init();
-  if(curl) {
-    /* This is the URL for your mailserver */
-    curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
-
-    /* Note that the CURLOPT_MAIL_RCPT takes a list, not a char array  */
-    recipients = curl_slist_append(recipients, "<recipient@example.com>");
-    curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
-
-    /* Perform the VRFY */
-    res = curl_easy_perform(curl);
-
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    /* Free the list of recipients */
-    curl_slist_free_all(recipients);
-
-    /* Curl won't send the QUIT command until you call cleanup, so you should
-     * be able to re-use this connection for additional requests. It may not be
-     * a good idea to keep the connection open for a very long time though
-     * (more than a few minutes may result in the server timing out the
-     * connection) and you do want to clean up in the end.
-     */
-    curl_easy_cleanup(curl);
-  }
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/sslbackend.c b/components/cronet/third_party/curl_headers/docs/examples/sslbackend.c
deleted file mode 100644
index c1489a9..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/sslbackend.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Shows HTTPS usage with client certs and optional ssl engine use.
- * </DESC>
- */
-#include <assert.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <curl/curl.h>
-
-/*
- * An SSL-enabled libcurl is required for this sample to work (at least one
- * SSL backend has to be configured).
- *
- *  **** This example only works with libcurl 7.56.0 and later! ****
-*/
-
-int main(int argc, char **argv)
-{
-  const char *name = argc > 1 ? argv[1] : "openssl";
-  CURLsslset result;
-
-  if(!strcmp("list", name)) {
-    const curl_ssl_backend **list;
-    int i;
-
-    result = curl_global_sslset(-1, NULL, &list);
-    assert(result == CURLSSLSET_UNKNOWN_BACKEND);
-
-    for(i = 0; list[i]; i++)
-      printf("SSL backend #%d: '%s' (ID: %d)\n",
-             i, list[i]->name, list[i]->id);
-
-    return 0;
-  }
-  else if(isdigit(*name)) {
-    int id = atoi(name);
-
-    result = curl_global_sslset((curl_sslbackend)id, NULL, NULL);
-  }
-  else
-    result = curl_global_sslset(-1, name, NULL);
-
-  if(result == CURLSSLSET_UNKNOWN_BACKEND) {
-    fprintf(stderr, "Unknown SSL backend id: %s\n", name);
-    return 1;
-  }
-
-  assert(result == CURLSSLSET_OK);
-
-  printf("Version with SSL backend '%s':\n\n\t%s\n", name, curl_version());
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/synctime.c b/components/cronet/third_party/curl_headers/docs/examples/synctime.c
deleted file mode 100644
index 905f5118..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/synctime.c
+++ /dev/null
@@ -1,374 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Set your system time from a remote HTTP server's Date: header.
- * </DESC>
- */
-/* This example code only builds as-is on Windows.
- *
- * While Unix/Linux user, you do not need this software.
- * You can achieve the same result as synctime using curl, awk and date.
- * Set proxy as according to your network, but beware of proxy Cache-Control.
- *
- * To set your system clock, root access is required.
- * # date -s "`curl -sI https://nist.time.gov/timezone.cgi?UTC/s/0 \
- *        | awk -F': ' '/Date: / {print $2}'`"
- *
- * To view remote webserver date and time.
- * $ curl -sI https://nist.time.gov/timezone.cgi?UTC/s/0 \
- *        | awk -F': ' '/Date: / {print $2}'
- *
- * 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
- * firewall/proxy. Some adjustment has to be made to the firewall/proxy for
- * these protocols to work properly.
- *
- * There is an indirect method. Since most webserver provide server time in
- * their HTTP header, therefore you could synchronise your computer clock
- * using HTTP protocol which has no problem with firewall/proxy.
- *
- * For this software to work, you should take note of these items.
- * 1. Your firewall/proxy must allow your computer to surf internet.
- * 2. Webserver system time must in sync with the NTP time server,
- *    or at least provide an accurate time keeping.
- * 3. Webserver HTTP header does not provide the milliseconds units,
- *    so there is no way to get very accurate time.
- * 4. This software could only provide an accuracy of +- a few seconds,
- *    as Round-Trip delay time is not taken into consideration.
- *    Compensation of network, firewall/proxy delay cannot be simply divide
- *    the Round-Trip delay time by half.
- * 5. Win32 SetSystemTime() API will set your computer clock according to
- *    GMT/UTC time. Therefore your computer timezone must be properly set.
- * 6. Webserver data should not be cached by the proxy server. Some
- *    webserver provide Cache-Control to prevent caching.
- *
- * References:
- * https://web.archive.org/web/20100228012139/ \
- *    tf.nist.gov/timefreq/service/its.htm
- * https://web.archive.org/web/20100409024302/ \
- *    tf.nist.gov/timefreq/service/firewall.htm
- *
- * Usage:
- * This software will synchronise your computer clock only when you issue
- * it with --synctime. By default, it only display the webserver's clock.
- *
- * Written by: Frank (contributed to libcurl)
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL THE AUTHOR OF THIS SOFTWARE BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- *
- */
-
-#include <stdio.h>
-#include <time.h>
-#ifndef __CYGWIN__
-#include <winsock2.h>
-#include <windows.h>
-#endif
-#include <curl/curl.h>
-
-
-#define MAX_STRING              256
-#define MAX_STRING1             MAX_STRING + 1
-
-#define SYNCTIME_UA "synctime/1.0"
-
-typedef struct
-{
-  char http_proxy[MAX_STRING1];
-  char proxy_user[MAX_STRING1];
-  char timeserver[MAX_STRING1];
-} conf_t;
-
-const char DefaultTimeServer[3][MAX_STRING1] =
-{
-  "https://nist.time.gov/",
-  "https://www.google.com/"
-};
-
-const char *DayStr[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
-const char *MthStr[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
-                        "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
-
-int  ShowAllHeader;
-int  AutoSyncTime;
-SYSTEMTIME SYSTime;
-SYSTEMTIME LOCALTime;
-
-#define HTTP_COMMAND_HEAD       0
-#define HTTP_COMMAND_GET        1
-
-
-size_t SyncTime_CURL_WriteOutput(void *ptr, size_t size, size_t nmemb,
-                                 void *stream)
-{
-  fwrite(ptr, size, nmemb, stream);
-  return (nmemb*size);
-}
-
-size_t SyncTime_CURL_WriteHeader(void *ptr, size_t size, size_t nmemb,
-                                 void *stream)
-{
-  int   i, RetVal;
-  char  TmpStr1[26], TmpStr2[26];
-
-  (void)stream;
-
-  if(ShowAllHeader == 1)
-    fprintf(stderr, "%s", (char *)(ptr));
-
-  if(strncmp((char *)(ptr), "Date:", 5) == 0) {
-    if(ShowAllHeader == 0)
-      fprintf(stderr, "HTTP Server. %s", (char *)(ptr));
-
-    if(AutoSyncTime == 1) {
-      *TmpStr1 = 0;
-      *TmpStr2 = 0;
-      if(strlen((char *)(ptr)) > 50) /* Can prevent buffer overflow to
-                                         TmpStr1 & 2? */
-        AutoSyncTime = 0;
-      else {
-        RetVal = sscanf((char *)(ptr), "Date: %s %hu %s %hu %hu:%hu:%hu",
-                        TmpStr1, &SYSTime.wDay, TmpStr2, &SYSTime.wYear,
-                        &SYSTime.wHour, &SYSTime.wMinute, &SYSTime.wSecond);
-
-        if(RetVal == 7) {
-          SYSTime.wMilliseconds = 500;    /* adjust to midpoint, 0.5 sec */
-          for(i = 0; i<12; i++) {
-            if(strcmp(MthStr[i], TmpStr2) == 0) {
-              SYSTime.wMonth = i + 1;
-              break;
-            }
-          }
-          AutoSyncTime = 3;       /* Computer clock will be adjusted */
-        }
-        else {
-          AutoSyncTime = 0;       /* Error in sscanf() fields conversion */
-        }
-      }
-    }
-  }
-
-  if(strncmp((char *)(ptr), "X-Cache: HIT", 12) == 0) {
-    fprintf(stderr, "ERROR: HTTP Server data is cached."
-            " Server Date is no longer valid.\n");
-    AutoSyncTime = 0;
-  }
-  return (nmemb*size);
-}
-
-void SyncTime_CURL_Init(CURL *curl, char *proxy_port,
-                        char *proxy_user_password)
-{
-  if(strlen(proxy_port) > 0)
-    curl_easy_setopt(curl, CURLOPT_PROXY, proxy_port);
-
-  if(strlen(proxy_user_password) > 0)
-    curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, proxy_user_password);
-
-#ifdef SYNCTIME_UA
-  curl_easy_setopt(curl, CURLOPT_USERAGENT, SYNCTIME_UA);
-#endif
-  curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, *SyncTime_CURL_WriteOutput);
-  curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, *SyncTime_CURL_WriteHeader);
-}
-
-int SyncTime_CURL_Fetch(CURL *curl, char *URL_Str, char *OutFileName,
-                        int HttpGetBody)
-{
-  FILE *outfile;
-  CURLcode res;
-
-  outfile = NULL;
-  if(HttpGetBody == HTTP_COMMAND_HEAD)
-    curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
-  else {
-    outfile = fopen(OutFileName, "wb");
-    curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile);
-  }
-
-  curl_easy_setopt(curl, CURLOPT_URL, URL_Str);
-  res = curl_easy_perform(curl);
-  if(outfile != NULL)
-    fclose(outfile);
-  return res;  /* (CURLE_OK) */
-}
-
-void showUsage(void)
-{
-  fprintf(stderr, "SYNCTIME: Synchronising computer clock with time server"
-          " using HTTP protocol.\n");
-  fprintf(stderr, "Usage   : SYNCTIME [Option]\n");
-  fprintf(stderr, "Options :\n");
-  fprintf(stderr, " --server=WEBSERVER        Use this time server instead"
-          " of default.\n");
-  fprintf(stderr, " --showall                 Show all HTTP header.\n");
-  fprintf(stderr, " --synctime                Synchronising computer clock"
-          " with time server.\n");
-  fprintf(stderr, " --proxy-user=USER[:PASS]  Set proxy username and"
-          " password.\n");
-  fprintf(stderr, " --proxy=HOST[:PORT]       Use HTTP proxy on given"
-          " port.\n");
-  fprintf(stderr, " --help                    Print this help.\n");
-  fprintf(stderr, "\n");
-  return;
-}
-
-int conf_init(conf_t *conf)
-{
-  int i;
-
-  *conf->http_proxy       = 0;
-  for(i = 0; i<MAX_STRING1; i++)
-    conf->proxy_user[i]     = 0;    /* Clean up password from memory */
-  *conf->timeserver       = 0;
-  return 1;
-}
-
-int main(int argc, char *argv[])
-{
-  CURL    *curl;
-  conf_t  conf[1];
-  int     RetValue;
-
-  ShowAllHeader   = 0;    /* Do not show HTTP Header */
-  AutoSyncTime    = 0;    /* Do not synchronise computer clock */
-  RetValue        = 0;    /* Successful Exit */
-  conf_init(conf);
-
-  if(argc > 1) {
-    int OptionIndex = 0;
-    while(OptionIndex < argc) {
-      if(strncmp(argv[OptionIndex], "--server=", 9) == 0)
-        snprintf(conf->timeserver, MAX_STRING, "%s", &argv[OptionIndex][9]);
-
-      if(strcmp(argv[OptionIndex], "--showall") == 0)
-        ShowAllHeader = 1;
-
-      if(strcmp(argv[OptionIndex], "--synctime") == 0)
-        AutoSyncTime = 1;
-
-      if(strncmp(argv[OptionIndex], "--proxy-user=", 13) == 0)
-        snprintf(conf->proxy_user, MAX_STRING, "%s", &argv[OptionIndex][13]);
-
-      if(strncmp(argv[OptionIndex], "--proxy=", 8) == 0)
-        snprintf(conf->http_proxy, MAX_STRING, "%s", &argv[OptionIndex][8]);
-
-      if((strcmp(argv[OptionIndex], "--help") == 0) ||
-          (strcmp(argv[OptionIndex], "/?") == 0)) {
-        showUsage();
-        return 0;
-      }
-      OptionIndex++;
-    }
-  }
-
-  if(*conf->timeserver == 0)     /* Use default server for time information */
-    snprintf(conf->timeserver, MAX_STRING, "%s", DefaultTimeServer[0]);
-
-  /* Init CURL before usage */
-  curl_global_init(CURL_GLOBAL_ALL);
-  curl = curl_easy_init();
-  if(curl) {
-    struct tm *lt;
-    struct tm *gmt;
-    time_t tt;
-    time_t tt_local;
-    time_t tt_gmt;
-    double tzonediffFloat;
-    int tzonediffWord;
-    char timeBuf[61];
-    char tzoneBuf[16];
-
-    SyncTime_CURL_Init(curl, conf->http_proxy, conf->proxy_user);
-
-    /* Calculating time diff between GMT and localtime */
-    tt       = time(0);
-    lt       = localtime(&tt);
-    tt_local = mktime(lt);
-    gmt      = gmtime(&tt);
-    tt_gmt   = mktime(gmt);
-    tzonediffFloat = difftime(tt_local, tt_gmt);
-    tzonediffWord  = (int)(tzonediffFloat/3600.0);
-
-    if((double)(tzonediffWord * 3600) == tzonediffFloat)
-      snprintf(tzoneBuf, 15, "%+03d'00'", tzonediffWord);
-    else
-      snprintf(tzoneBuf, 15, "%+03d'30'", tzonediffWord);
-
-    /* Get current system time and local time */
-    GetSystemTime(&SYSTime);
-    GetLocalTime(&LOCALTime);
-    snprintf(timeBuf, 60, "%s, %02d %s %04d %02d:%02d:%02d.%03d, ",
-             DayStr[LOCALTime.wDayOfWeek], LOCALTime.wDay,
-             MthStr[LOCALTime.wMonth-1], LOCALTime.wYear,
-             LOCALTime.wHour, LOCALTime.wMinute, LOCALTime.wSecond,
-             LOCALTime.wMilliseconds);
-
-    fprintf(stderr, "Fetch: %s\n\n", conf->timeserver);
-    fprintf(stderr, "Before HTTP. Date: %s%s\n\n", timeBuf, tzoneBuf);
-
-    /* HTTP HEAD command to the Webserver */
-    SyncTime_CURL_Fetch(curl, conf->timeserver, "index.htm",
-                        HTTP_COMMAND_HEAD);
-
-    GetLocalTime(&LOCALTime);
-    snprintf(timeBuf, 60, "%s, %02d %s %04d %02d:%02d:%02d.%03d, ",
-             DayStr[LOCALTime.wDayOfWeek], LOCALTime.wDay,
-             MthStr[LOCALTime.wMonth-1], LOCALTime.wYear,
-             LOCALTime.wHour, LOCALTime.wMinute, LOCALTime.wSecond,
-             LOCALTime.wMilliseconds);
-    fprintf(stderr, "\nAfter  HTTP. Date: %s%s\n", timeBuf, tzoneBuf);
-
-    if(AutoSyncTime == 3) {
-      /* Synchronising computer clock */
-      if(!SetSystemTime(&SYSTime)) {  /* Set system time */
-        fprintf(stderr, "ERROR: Unable to set system time.\n");
-        RetValue = 1;
-      }
-      else {
-        /* Successfully re-adjusted computer clock */
-        GetLocalTime(&LOCALTime);
-        snprintf(timeBuf, 60, "%s, %02d %s %04d %02d:%02d:%02d.%03d, ",
-                 DayStr[LOCALTime.wDayOfWeek], LOCALTime.wDay,
-                 MthStr[LOCALTime.wMonth-1], LOCALTime.wYear,
-                 LOCALTime.wHour, LOCALTime.wMinute, LOCALTime.wSecond,
-                 LOCALTime.wMilliseconds);
-        fprintf(stderr, "\nNew System's Date: %s%s\n", timeBuf, tzoneBuf);
-      }
-    }
-
-    /* Cleanup before exit */
-    conf_init(conf);
-    curl_easy_cleanup(curl);
-  }
-  return RetValue;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/threaded-shared-conn.c b/components/cronet/third_party/curl_headers/docs/examples/threaded-shared-conn.c
deleted file mode 100644
index 2eda6239..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/threaded-shared-conn.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Multi-threaded transfers sharing a single connection pool
- * </DESC>
- *
- * This example fires up NUM_THREADS threads and in each single thread, it
- * downloads the same fixed URL a URL_ITERATIONS number of times. The received
- * data is just thrown away. It sets up a single shared object that holds the
- * connection cache and all easy handles in all threads share that same cache.
- *
- * This example uses pthreads for threads and mutexes, but should be easy to
- * modify to use different thread/mutex system should you want to.
- *
- */
-
-#include <stdio.h>
-#include <pthread.h>
-#include <curl/curl.h>
-
-/*
-  URL to fetch. If you select HTTPS, you need to use a TLS backend with mutex
-  locks taken care of (OpenSSL 1.1.x, NSS, etc) or add SSL mutex callbacks!
-*/
-#define URL "http://localhost/4KB"
-
-/* number of threads to fire up in parallel */
-#define NUM_THREADS 67
-
-/* how many times each URL is transferred per thread */
-#define URL_ITERATIONS 11235
-
-static pthread_mutex_t connlock;
-
-static size_t write_db(void *ptr, size_t size, size_t nmemb, void *data)
-{
-  /* not interested in the downloaded bytes, return the size */
-  (void)ptr;  /* unused */
-  (void)data; /* unused */
-  return (size_t)(size * nmemb);
-}
-
-static void lock_cb(CURL *handle, curl_lock_data data,
-                    curl_lock_access access, void *userptr)
-{
-  (void)access; /* unused */
-  (void)userptr; /* unused */
-  (void)handle; /* unused */
-  (void)data; /* unused */
-  pthread_mutex_lock(&connlock);
-}
-
-static void unlock_cb(CURL *handle, curl_lock_data data,
-                      void *userptr)
-{
-  (void)userptr; /* unused */
-  (void)handle;  /* unused */
-  (void)data;    /* unused */
-  pthread_mutex_unlock(&connlock);
-}
-
-static void init_locks(void)
-{
-  pthread_mutex_init(&connlock, NULL);
-}
-
-static void kill_locks(void)
-{
-  pthread_mutex_destroy(&connlock);
-}
-
-struct initurl {
-  const char *url;
-  CURLSH *share;
-  int threadno;
-};
-
-static void *run_thread(void *ptr)
-{
-  struct initurl *u = (struct initurl *)ptr;
-  int i;
-
-  for(i = 0; i < URL_ITERATIONS; i++) {
-    CURL *curl = curl_easy_init();
-    curl_easy_setopt(curl, CURLOPT_URL, u->url);
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
-    curl_easy_setopt(curl, CURLOPT_SHARE, u->share);
-    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_db);
-    curl_easy_perform(curl); /* ignores error */
-    curl_easy_cleanup(curl);
-    fprintf(stderr, "Thread %d transfer %d\n", u->threadno, i);
-  }
-
-  return NULL;
-}
-
-int main(void)
-{
-  pthread_t tid[NUM_THREADS];
-  int i;
-  CURLSH *share;
-  struct initurl url[NUM_THREADS];
-
-  /* Must initialize libcurl before any threads are started */
-  curl_global_init(CURL_GLOBAL_ALL);
-
-  share = curl_share_init();
-  curl_share_setopt(share, CURLSHOPT_LOCKFUNC, lock_cb);
-  curl_share_setopt(share, CURLSHOPT_UNLOCKFUNC, unlock_cb);
-  curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT);
-
-  init_locks();
-
-  for(i = 0; i< NUM_THREADS; i++) {
-    int error;
-    url[i].url = URL;
-    url[i].share = share;
-    url[i].threadno = i;
-    error = pthread_create(&tid[i], NULL, run_thread, &url[i]);
-    if(0 != error)
-      fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error);
-    else
-      fprintf(stderr, "Thread %d, gets %s\n", i, URL);
-  }
-
-  /* now wait for all threads to terminate */
-  for(i = 0; i< NUM_THREADS; i++) {
-    pthread_join(tid[i], NULL);
-    fprintf(stderr, "Thread %d terminated\n", i);
-  }
-
-  kill_locks();
-
-  curl_share_cleanup(share);
-  curl_global_cleanup();
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/threaded-ssl.c b/components/cronet/third_party/curl_headers/docs/examples/threaded-ssl.c
deleted file mode 100644
index 522f8c4..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/threaded-ssl.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Show the required mutex callback setups for GnuTLS and OpenSSL when using
- * libcurl multi-threaded.
- * </DESC>
- */
-/* A multi-threaded example that uses pthreads and fetches 4 remote files at
- * once over HTTPS. The lock callbacks and stuff assume OpenSSL <1.1 or GnuTLS
- * (libgcrypt) so far.
- *
- * OpenSSL docs for this:
- *   https://www.openssl.org/docs/crypto/threads.html
- * gcrypt docs for this:
- *   https://gnupg.org/documentation/manuals/gcrypt/Multi_002dThreading.html
- */
-
-#define USE_OPENSSL /* or USE_GNUTLS accordingly */
-
-#include <stdio.h>
-#include <pthread.h>
-#include <curl/curl.h>
-
-#define NUMT 4
-
-/* we have this global to let the callback get easy access to it */
-static pthread_mutex_t *lockarray;
-
-#ifdef USE_OPENSSL
-#include <openssl/crypto.h>
-static void lock_callback(int mode, int type, char *file, int line)
-{
-  (void)file;
-  (void)line;
-  if(mode & CRYPTO_LOCK) {
-    pthread_mutex_lock(&(lockarray[type]));
-  }
-  else {
-    pthread_mutex_unlock(&(lockarray[type]));
-  }
-}
-
-static unsigned long thread_id(void)
-{
-  unsigned long ret;
-
-  ret = (unsigned long)pthread_self();
-  return ret;
-}
-
-static void init_locks(void)
-{
-  int i;
-
-  lockarray = (pthread_mutex_t *)OPENSSL_malloc(CRYPTO_num_locks() *
-                                                sizeof(pthread_mutex_t));
-  for(i = 0; i<CRYPTO_num_locks(); i++) {
-    pthread_mutex_init(&(lockarray[i]), NULL);
-  }
-
-  CRYPTO_set_id_callback((unsigned long (*)())thread_id);
-  CRYPTO_set_locking_callback((void (*)())lock_callback);
-}
-
-static void kill_locks(void)
-{
-  int i;
-
-  CRYPTO_set_locking_callback(NULL);
-  for(i = 0; i<CRYPTO_num_locks(); i++)
-    pthread_mutex_destroy(&(lockarray[i]));
-
-  OPENSSL_free(lockarray);
-}
-#endif
-
-#ifdef USE_GNUTLS
-#include <gcrypt.h>
-#include <errno.h>
-
-GCRY_THREAD_OPTION_PTHREAD_IMPL;
-
-void init_locks(void)
-{
-  gcry_control(GCRYCTL_SET_THREAD_CBS);
-}
-
-#define kill_locks()
-#endif
-
-/* List of URLs to fetch.*/
-const char * const urls[]= {
-  "https://www.example.com/",
-  "https://www2.example.com/",
-  "https://www3.example.com/",
-  "https://www4.example.com/",
-};
-
-static void *pull_one_url(void *url)
-{
-  CURL *curl;
-
-  curl = curl_easy_init();
-  curl_easy_setopt(curl, CURLOPT_URL, url);
-  /* this example doesn't verify the server's certificate, which means we
-     might be downloading stuff from an impostor */
-  curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
-  curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
-  curl_easy_perform(curl); /* ignores error */
-  curl_easy_cleanup(curl);
-
-  return NULL;
-}
-
-int main(int argc, char **argv)
-{
-  pthread_t tid[NUMT];
-  int i;
-  (void)argc; /* we don't use any arguments in this example */
-  (void)argv;
-
-  /* Must initialize libcurl before any threads are started */
-  curl_global_init(CURL_GLOBAL_ALL);
-
-  init_locks();
-
-  for(i = 0; i< NUMT; i++) {
-    int error = pthread_create(&tid[i],
-                               NULL, /* default attributes please */
-                               pull_one_url,
-                               (void *)urls[i]);
-    if(0 != error)
-      fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error);
-    else
-      fprintf(stderr, "Thread %d, gets %s\n", i, urls[i]);
-  }
-
-  /* now wait for all threads to terminate */
-  for(i = 0; i< NUMT; i++) {
-    pthread_join(tid[i], NULL);
-    fprintf(stderr, "Thread %d terminated\n", i);
-  }
-
-  kill_locks();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/url2file.c b/components/cronet/third_party/curl_headers/docs/examples/url2file.c
deleted file mode 100644
index 1bede8c..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/url2file.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Download a given URL into a local file named page.out.
- * </DESC>
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <curl/curl.h>
-
-static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
-{
-  size_t written = fwrite(ptr, size, nmemb, (FILE *)stream);
-  return written;
-}
-
-int main(int argc, char *argv[])
-{
-  CURL *curl_handle;
-  static const char *pagefilename = "page.out";
-  FILE *pagefile;
-
-  if(argc < 2) {
-    printf("Usage: %s <URL>\n", argv[0]);
-    return 1;
-  }
-
-  curl_global_init(CURL_GLOBAL_ALL);
-
-  /* init the curl session */
-  curl_handle = curl_easy_init();
-
-  /* set URL to get here */
-  curl_easy_setopt(curl_handle, CURLOPT_URL, argv[1]);
-
-  /* Switch on full protocol/debug output while testing */
-  curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, 1L);
-
-  /* disable progress meter, set to 0L to enable and disable debug output */
-  curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1L);
-
-  /* send all data to this function  */
-  curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data);
-
-  /* open the file */
-  pagefile = fopen(pagefilename, "wb");
-  if(pagefile) {
-
-    /* write the page body to this file handle */
-    curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, pagefile);
-
-    /* get it! */
-    curl_easy_perform(curl_handle);
-
-    /* close the header file */
-    fclose(pagefile);
-  }
-
-  /* cleanup curl stuff */
-  curl_easy_cleanup(curl_handle);
-
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/urlapi.c b/components/cronet/third_party/curl_headers/docs/examples/urlapi.c
deleted file mode 100644
index 594f942..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/urlapi.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Set working URL with CURLU *.
- * </DESC>
- */
-#include <stdio.h>
-#include <curl/curl.h>
-
-#if !CURL_AT_LEAST_VERSION(7, 62, 0)
-#error "this example requires curl 7.62.0 or later"
-#endif
-
-int main(void)
-{
-  CURL *curl;
-  CURLcode res;
-
-  CURLU *urlp;
-  CURLUcode uc;
-
-  /* get a curl handle */
-  curl = curl_easy_init();
-
-  /* init Curl URL */
-  urlp = curl_url();
-  uc = curl_url_set(urlp, CURLUPART_URL,
-                    "http://example.com/path/index.html", 0);
-
-  if(uc) {
-    fprintf(stderr, "curl_url_set() failed: %in", uc);
-    goto cleanup;
-  }
-
-  if(curl) {
-    /* set urlp to use as working URL */
-    curl_easy_setopt(curl, CURLOPT_CURLU, urlp);
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
-    res = curl_easy_perform(curl);
-    /* Check for errors */
-    if(res != CURLE_OK)
-      fprintf(stderr, "curl_easy_perform() failed: %s\n",
-              curl_easy_strerror(res));
-
-    goto cleanup;
-  }
-
-  cleanup:
-  curl_url_cleanup(urlp);
-  curl_easy_cleanup(curl);
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/usercertinmem.c b/components/cronet/third_party/curl_headers/docs/examples/usercertinmem.c
deleted file mode 100644
index 2dc26431..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/usercertinmem.c
+++ /dev/null
@@ -1,226 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 2013 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Use an in-memory user certificate and RSA key and retrieve an https page.
- * </DESC>
- */
-/* Written by Ishan SinghLevett, based on Theo Borm's cacertinmem.c.
- * Note that to maintain simplicity this example does not use a CA certificate
- * for peer verification.  However, some form of peer verification
- * must be used in real circumstances when a secure connection is required.
- */
-
-#include <openssl/ssl.h>
-#include <openssl/x509.h>
-#include <openssl/pem.h>
-#include <curl/curl.h>
-#include <stdio.h>
-
-static size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream)
-{
-  fwrite(ptr, size, nmemb, stream);
-  return (nmemb*size);
-}
-
-static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
-{
-  X509 *cert = NULL;
-  BIO *bio = NULL;
-  BIO *kbio = NULL;
-  RSA *rsa = NULL;
-  int ret;
-
-  const char *mypem = /* www.cacert.org */
-    "-----BEGIN CERTIFICATE-----\n"\
-    "MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290\n"\
-    "IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB\n"\
-    "IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA\n"\
-    "Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO\n"\
-    "BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi\n"\
-    "MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ\n"\
-    "ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC\n"\
-    "CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ\n"\
-    "8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6\n"\
-    "zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y\n"\
-    "fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7\n"\
-    "w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc\n"\
-    "G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k\n"\
-    "epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q\n"\
-    "laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ\n"\
-    "QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU\n"\
-    "fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826\n"\
-    "YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w\n"\
-    "ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY\n"\
-    "gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe\n"\
-    "MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0\n"\
-    "IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy\n"\
-    "dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw\n"\
-    "czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0\n"\
-    "dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl\n"\
-    "aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC\n"\
-    "AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg\n"\
-    "b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB\n"\
-    "ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc\n"\
-    "nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg\n"\
-    "18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c\n"\
-    "gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl\n"\
-    "Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY\n"\
-    "sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T\n"\
-    "SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF\n"\
-    "CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum\n"\
-    "GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk\n"\
-    "zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW\n"\
-    "omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD\n"\
-    "-----END CERTIFICATE-----\n";
-
-/*replace the XXX with the actual RSA key*/
-  const char *mykey =
-    "-----BEGIN RSA PRIVATE KEY-----\n"\
-    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
-    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
-    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
-    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
-    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
-    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
-    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
-    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
-    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
-    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
-    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
-    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
-    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
-    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
-    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
-    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"\
-    "-----END RSA PRIVATE KEY-----\n";
-
-  (void)curl; /* avoid warnings */
-  (void)parm; /* avoid warnings */
-
-  /* get a BIO */
-  bio = BIO_new_mem_buf((char *)mypem, -1);
-
-  if(bio == NULL) {
-    printf("BIO_new_mem_buf failed\n");
-  }
-
-  /* use it to read the PEM formatted certificate from memory into an X509
-   * structure that SSL can use
-   */
-  cert = PEM_read_bio_X509(bio, NULL, 0, NULL);
-  if(cert == NULL) {
-    printf("PEM_read_bio_X509 failed...\n");
-  }
-
-  /*tell SSL to use the X509 certificate*/
-  ret = SSL_CTX_use_certificate((SSL_CTX*)sslctx, cert);
-  if(ret != 1) {
-    printf("Use certificate failed\n");
-  }
-
-  /*create a bio for the RSA key*/
-  kbio = BIO_new_mem_buf((char *)mykey, -1);
-  if(kbio == NULL) {
-    printf("BIO_new_mem_buf failed\n");
-  }
-
-  /*read the key bio into an RSA object*/
-  rsa = PEM_read_bio_RSAPrivateKey(kbio, NULL, 0, NULL);
-  if(rsa == NULL) {
-    printf("Failed to create key bio\n");
-  }
-
-  /*tell SSL to use the RSA key from memory*/
-  ret = SSL_CTX_use_RSAPrivateKey((SSL_CTX*)sslctx, rsa);
-  if(ret != 1) {
-    printf("Use Key failed\n");
-  }
-
-  /* free resources that have been allocated by openssl functions */
-  if(bio)
-    BIO_free(bio);
-
-  if(kbio)
-    BIO_free(kbio);
-
-  if(rsa)
-    RSA_free(rsa);
-
-  if(cert)
-    X509_free(cert);
-
-  /* all set to go */
-  return CURLE_OK;
-}
-
-int main(void)
-{
-  CURL *ch;
-  CURLcode rv;
-
-  curl_global_init(CURL_GLOBAL_ALL);
-  ch = curl_easy_init();
-  curl_easy_setopt(ch, CURLOPT_VERBOSE, 0L);
-  curl_easy_setopt(ch, CURLOPT_HEADER, 0L);
-  curl_easy_setopt(ch, CURLOPT_NOPROGRESS, 1L);
-  curl_easy_setopt(ch, CURLOPT_NOSIGNAL, 1L);
-  curl_easy_setopt(ch, CURLOPT_WRITEFUNCTION, writefunction);
-  curl_easy_setopt(ch, CURLOPT_WRITEDATA, stdout);
-  curl_easy_setopt(ch, CURLOPT_HEADERFUNCTION, writefunction);
-  curl_easy_setopt(ch, CURLOPT_HEADERDATA, stderr);
-  curl_easy_setopt(ch, CURLOPT_SSLCERTTYPE, "PEM");
-
-  /* both VERIFYPEER and VERIFYHOST are set to 0 in this case because there is
-     no CA certificate*/
-
-  curl_easy_setopt(ch, CURLOPT_SSL_VERIFYPEER, 0L);
-  curl_easy_setopt(ch, CURLOPT_SSL_VERIFYHOST, 0L);
-  curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/");
-  curl_easy_setopt(ch, CURLOPT_SSLKEYTYPE, "PEM");
-
-  /* first try: retrieve page without user certificate and key -> will fail
-   */
-  rv = curl_easy_perform(ch);
-  if(rv == CURLE_OK) {
-    printf("*** transfer succeeded ***\n");
-  }
-  else {
-    printf("*** transfer failed ***\n");
-  }
-
-  /* second try: retrieve page using user certificate and key -> will succeed
-   * load the certificate and key by installing a function doing the necessary
-   * "modifications" to the SSL CONTEXT just before link init
-   */
-  curl_easy_setopt(ch, CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
-  rv = curl_easy_perform(ch);
-  if(rv == CURLE_OK) {
-    printf("*** transfer succeeded ***\n");
-  }
-  else {
-    printf("*** transfer failed ***\n");
-  }
-
-  curl_easy_cleanup(ch);
-  curl_global_cleanup();
-  return rv;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/version-check.pl b/components/cronet/third_party/curl_headers/docs/examples/version-check.pl
deleted file mode 100755
index 8f734fc..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/version-check.pl
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/usr/bin/env perl
-#***************************************************************************
-#                                  _   _ ____  _
-#  Project                     ___| | | |  _ \| |
-#                             / __| | | | |_) | |
-#                            | (__| |_| |  _ <| |___
-#                             \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, 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.
-#
-###########################################################################
-
-# This script accepts a source file as input on the command line.
-#
-# It first loads the 'symbols-in-versions' document and stores a lookup
-# table for all known symbols for which version they were introduced.
-#
-# It then scans the given source file to dig up all symbols starting with CURL.
-# Finally, it sorts the internal list of found symbols (using the version
-# number as sort key) and then it outputs the most recent version number and
-# the symbols from that version that are used.
-#
-# Usage:
-#
-#    version-check.pl [source file]
-#
-
-open(S, "<../libcurl/symbols-in-versions") || die;
-
-my %doc;
-my %rem;
-while(<S>) {
-    if(/(^CURL[^ \n]*) *(.*)/) {
-        my ($sym, $rest)=($1, $2);
-        my @a=split(/ +/, $rest);
-
-        $doc{$sym}=$a[0]; # when it was introduced
-
-        if($a[2]) {
-            # this symbol is documented to have been present the last time
-            # in this release
-            $rem{$sym}=$a[2];
-        }
-    }
-
-}
-
-close(S);
-
-sub age {
-    my ($ver)=@_;
-
-    my @s=split(/\./, $ver);
-    return $s[0]*10000+$s[1]*100+$s[2];
-}
-
-my %used;
-open(C, "<$ARGV[0]") || die;
-
-while(<C>) {
-    if(/\W(CURL[_A-Z0-9v]+)\W/) {
-        #print "$1\n";
-        $used{$1}++;
-    }
-}
-
-close(C);
-
-sub sortversions {
-    my $r = age($doc{$a}) <=> age($doc{$b});
-    if(!$r) {
-        $r = $a cmp $b;
-    }
-    return $r;
-}
-
-my @recent = reverse sort sortversions keys %used;
-
-# the most recent symbol
-my $newsym = $recent[0];
-# the most recent version
-my $newver = $doc{$newsym};
-
-print "The scanned source uses these symbols introduced in $newver:\n";
-
-for my $w (@recent) {
-    if($doc{$w} eq $newver) {
-        printf "  $w\n";
-        next;
-    }
-    last;
-}
diff --git a/components/cronet/third_party/curl_headers/docs/examples/xmlstream.c b/components/cronet/third_party/curl_headers/docs/examples/xmlstream.c
deleted file mode 100644
index 8036e48..0000000
--- a/components/cronet/third_party/curl_headers/docs/examples/xmlstream.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * Stream-parse a document using the streaming Expat parser.
- * </DESC>
- */
-/* Written by David Strauss
- *
- * Expat => https://libexpat.github.io/
- *
- * gcc -Wall -I/usr/local/include xmlstream.c -lcurl -lexpat -o xmlstream
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include <expat.h>
-#include <curl/curl.h>
-
-struct MemoryStruct {
-  char *memory;
-  size_t size;
-};
-
-struct ParserStruct {
-  int ok;
-  size_t tags;
-  size_t depth;
-  struct MemoryStruct characters;
-};
-
-static void startElement(void *userData, const XML_Char *name,
-                         const XML_Char **atts)
-{
-  struct ParserStruct *state = (struct ParserStruct *) userData;
-  state->tags++;
-  state->depth++;
-
-  /* Get a clean slate for reading in character data. */
-  free(state->characters.memory);
-  state->characters.memory = NULL;
-  state->characters.size = 0;
-}
-
-static void characterDataHandler(void *userData, const XML_Char *s, int len)
-{
-  struct ParserStruct *state = (struct ParserStruct *) userData;
-  struct MemoryStruct *mem = &state->characters;
-
-  char *ptr = realloc(mem->memory, mem->size + len + 1);
-  if(!ptr) {
-    /* Out of memory. */
-    fprintf(stderr, "Not enough memory (realloc returned NULL).\n");
-    state->ok = 0;
-    return;
-  }
-
-  mem->memory = ptr;
-  memcpy(&(mem->memory[mem->size]), s, len);
-  mem->size += len;
-  mem->memory[mem->size] = 0;
-}
-
-static void endElement(void *userData, const XML_Char *name)
-{
-  struct ParserStruct *state = (struct ParserStruct *) userData;
-  state->depth--;
-
-  printf("%5lu   %10lu   %s\n", state->depth, state->characters.size, name);
-}
-
-static size_t parseStreamCallback(void *contents, size_t length, size_t nmemb,
-                                  void *userp)
-{
-  XML_Parser parser = (XML_Parser) userp;
-  size_t real_size = length * nmemb;
-  struct ParserStruct *state = (struct ParserStruct *) XML_GetUserData(parser);
-
-  /* Only parse if we're not already in a failure state. */
-  if(state->ok && XML_Parse(parser, contents, real_size, 0) == 0) {
-    int error_code = XML_GetErrorCode(parser);
-    fprintf(stderr, "Parsing response buffer of length %lu failed"
-            " with error code %d (%s).\n",
-            real_size, error_code, XML_ErrorString(error_code));
-    state->ok = 0;
-  }
-
-  return real_size;
-}
-
-int main(void)
-{
-  CURL *curl_handle;
-  CURLcode res;
-  XML_Parser parser;
-  struct ParserStruct state;
-
-  /* Initialize the state structure for parsing. */
-  memset(&state, 0, sizeof(struct ParserStruct));
-  state.ok = 1;
-
-  /* Initialize a namespace-aware parser. */
-  parser = XML_ParserCreateNS(NULL, '\0');
-  XML_SetUserData(parser, &state);
-  XML_SetElementHandler(parser, startElement, endElement);
-  XML_SetCharacterDataHandler(parser, characterDataHandler);
-
-  /* Initialize a libcurl handle. */
-  curl_global_init(CURL_GLOBAL_DEFAULT);
-  curl_handle = curl_easy_init();
-  curl_easy_setopt(curl_handle, CURLOPT_URL,
-                   "https://www.w3schools.com/xml/simple.xml");
-  curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, parseStreamCallback);
-  curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)parser);
-
-  printf("Depth   Characters   Closing Tag\n");
-
-  /* Perform the request and any follow-up parsing. */
-  res = curl_easy_perform(curl_handle);
-  if(res != CURLE_OK) {
-    fprintf(stderr, "curl_easy_perform() failed: %s\n",
-            curl_easy_strerror(res));
-  }
-  else if(state.ok) {
-    /* Expat requires one final call to finalize parsing. */
-    if(XML_Parse(parser, NULL, 0, 1) == 0) {
-      int error_code = XML_GetErrorCode(parser);
-      fprintf(stderr, "Finalizing parsing failed with error code %d (%s).\n",
-              error_code, XML_ErrorString(error_code));
-    }
-    else {
-      printf("                     --------------\n");
-      printf("                     %lu tags total\n", state.tags);
-    }
-  }
-
-  /* Clean up. */
-  free(state.characters.memory);
-  XML_ParserFree(parser);
-  curl_easy_cleanup(curl_handle);
-  curl_global_cleanup();
-
-  return 0;
-}
diff --git a/components/cronet/third_party/curl_headers/include/Makefile.am b/components/cronet/third_party/curl_headers/include/Makefile.am
deleted file mode 100644
index 3b24860..0000000
--- a/components/cronet/third_party/curl_headers/include/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-SUBDIRS = curl
-
-EXTRA_DIST = README
-
-AUTOMAKE_OPTIONS = foreign no-dependencies
diff --git a/components/cronet/third_party/curl_headers/include/README b/components/cronet/third_party/curl_headers/include/README
deleted file mode 100644
index 091ef76..0000000
--- a/components/cronet/third_party/curl_headers/include/README
+++ /dev/null
@@ -1,18 +0,0 @@
-                                  _   _ ____  _
-                              ___| | | |  _ \| |
-                             / __| | | | |_) | |
-                            | (__| |_| |  _ <| |___
-                             \___|\___/|_| \_\_____|
-
-Include files for libcurl, external users.
-
-They're all placed in the curl subdirectory here for better fit in any kind
-of environment. You must include files from here using...
-
-        #include <curl/curl.h>
-
-... style and point the compiler's include path to the directory holding the
-curl subdirectory. It makes it more likely to survive future modifications.
-
-The public curl include files can be shared freely between different platforms
-and different architectures.
diff --git a/components/cronet/third_party/curl_headers/include/curl/.gitignore b/components/cronet/third_party/curl_headers/include/curl/.gitignore
deleted file mode 100644
index 555795fa..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-curlver.h.dist
-stamp-h2
-stamp-h3
diff --git a/components/cronet/third_party/curl_headers/include/curl/Makefile.am b/components/cronet/third_party/curl_headers/include/curl/Makefile.am
deleted file mode 100644
index a31f61b1..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/Makefile.am
+++ /dev/null
@@ -1,39 +0,0 @@
-#***************************************************************************
-#                                  _   _ ____  _
-#  Project                     ___| | | |  _ \| |
-#                             / __| | | | |_) | |
-#                            | (__| |_| |  _ <| |___
-#                             \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
-#
-###########################################################################
-pkginclude_HEADERS = \
-  curl.h curlver.h easy.h mprintf.h stdcheaders.h multi.h \
-  typecheck-gcc.h system.h urlapi.h
-
-pkgincludedir= $(includedir)/curl
-
-CHECKSRC = $(CS_$(V))
-CS_0 = @echo "  RUN     " $@;
-CS_1 =
-CS_ = $(CS_0)
-
-checksrc:
-	$(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(top_srcdir)/include/curl $(pkginclude_HEADERS)
-
-if CURLDEBUG
-# for debug builds, we scan the sources on all regular make invokes
-all-local: checksrc
-endif
diff --git a/components/cronet/third_party/curl_headers/include/curl/curl.h b/components/cronet/third_party/curl_headers/include/curl/curl.h
deleted file mode 100644
index e7f812da..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/curl.h
+++ /dev/null
@@ -1,2870 +0,0 @@
-#ifndef __CURL_CURL_H
-#define __CURL_CURL_H
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/*
- * If you have libcurl problems, all docs and details are found here:
- *   https://curl.haxx.se/libcurl/
- *
- * curl-library mailing list subscription and unsubscription web interface:
- *   https://cool.haxx.se/mailman/listinfo/curl-library/
- */
-
-#ifdef CURL_NO_OLDIES
-#define CURL_STRICTER
-#endif
-
-#include "curlver.h"         /* libcurl version defines   */
-#include "system.h"          /* determine things run-time */
-
-/*
- * Define WIN32 when build target is Win32 API
- */
-
-#if (defined(_WIN32) || defined(__WIN32__)) && \
-     !defined(WIN32) && !defined(__SYMBIAN32__)
-#define WIN32
-#endif
-
-#include <stdio.h>
-#include <limits.h>
-
-#if defined(__FreeBSD__) && (__FreeBSD__ >= 2)
-/* Needed for __FreeBSD_version symbol definition */
-#include <osreldate.h>
-#endif
-
-/* The include stuff here below is mainly for time_t! */
-#include <sys/types.h>
-#include <time.h>
-
-#if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__CYGWIN__)
-#if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H) || \
-      defined(__LWIP_OPT_H__) || defined(LWIP_HDR_OPT_H))
-/* The check above prevents the winsock2 inclusion if winsock.h already was
-   included, since they can't co-exist without problems */
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#endif
-#endif
-
-/* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish
-   libc5-based Linux systems. Only include it on systems that are known to
-   require it! */
-#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
-    defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \
-    defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \
-    defined(__CYGWIN__) || \
-   (defined(__FreeBSD_version) && (__FreeBSD_version < 800000))
-#include <sys/select.h>
-#endif
-
-#if !defined(WIN32) && !defined(_WIN32_WCE)
-#include <sys/socket.h>
-#endif
-
-#if !defined(WIN32) && !defined(__WATCOMC__) && !defined(__VXWORKS__)
-#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
-#endif
-
-#ifdef  __cplusplus
-extern "C" {
-#endif
-
-#if defined(BUILDING_LIBCURL) || defined(CURL_STRICTER)
-typedef struct Curl_easy CURL;
-typedef struct Curl_share CURLSH;
-#else
-typedef void CURL;
-typedef void CURLSH;
-#endif
-
-/*
- * libcurl external API function linkage decorations.
- */
-
-#ifdef CURL_STATICLIB
-#  define CURL_EXTERN
-#elif defined(WIN32) || defined(__SYMBIAN32__) || \
-     (__has_declspec_attribute(dllexport) && \
-      __has_declspec_attribute(dllimport))
-#  if defined(BUILDING_LIBCURL)
-#    define CURL_EXTERN  __declspec(dllexport)
-#  else
-#    define CURL_EXTERN  __declspec(dllimport)
-#  endif
-#elif defined(BUILDING_LIBCURL) && defined(CURL_HIDDEN_SYMBOLS)
-#  define CURL_EXTERN CURL_EXTERN_SYMBOL
-#else
-#  define CURL_EXTERN
-#endif
-
-#ifndef curl_socket_typedef
-/* socket typedef */
-#if defined(WIN32) && !defined(__LWIP_OPT_H__) && !defined(LWIP_HDR_OPT_H)
-typedef SOCKET curl_socket_t;
-#define CURL_SOCKET_BAD INVALID_SOCKET
-#else
-typedef int curl_socket_t;
-#define CURL_SOCKET_BAD -1
-#endif
-#define curl_socket_typedef
-#endif /* curl_socket_typedef */
-
-/* enum for the different supported SSL backends */
-typedef enum {
-  CURLSSLBACKEND_NONE = 0,
-  CURLSSLBACKEND_OPENSSL = 1,
-  CURLSSLBACKEND_GNUTLS = 2,
-  CURLSSLBACKEND_NSS = 3,
-  CURLSSLBACKEND_OBSOLETE4 = 4,  /* Was QSOSSL. */
-  CURLSSLBACKEND_GSKIT = 5,
-  CURLSSLBACKEND_POLARSSL = 6,
-  CURLSSLBACKEND_WOLFSSL = 7,
-  CURLSSLBACKEND_SCHANNEL = 8,
-  CURLSSLBACKEND_SECURETRANSPORT = 9,
-  CURLSSLBACKEND_AXTLS = 10, /* never used since 7.63.0 */
-  CURLSSLBACKEND_MBEDTLS = 11,
-  CURLSSLBACKEND_MESALINK = 12
-} curl_sslbackend;
-
-/* aliases for library clones and renames */
-#define CURLSSLBACKEND_LIBRESSL CURLSSLBACKEND_OPENSSL
-#define CURLSSLBACKEND_BORINGSSL CURLSSLBACKEND_OPENSSL
-
-/* deprecated names: */
-#define CURLSSLBACKEND_CYASSL CURLSSLBACKEND_WOLFSSL
-#define CURLSSLBACKEND_DARWINSSL CURLSSLBACKEND_SECURETRANSPORT
-
-struct curl_httppost {
-  struct curl_httppost *next;       /* next entry in the list */
-  char *name;                       /* pointer to allocated name */
-  long namelength;                  /* length of name length */
-  char *contents;                   /* pointer to allocated data contents */
-  long contentslength;              /* length of contents field, see also
-                                       CURL_HTTPPOST_LARGE */
-  char *buffer;                     /* pointer to allocated buffer contents */
-  long bufferlength;                /* length of buffer field */
-  char *contenttype;                /* Content-Type */
-  struct curl_slist *contentheader; /* list of extra headers for this form */
-  struct curl_httppost *more;       /* if one field name has more than one
-                                       file, this link should link to following
-                                       files */
-  long flags;                       /* as defined below */
-
-/* specified content is a file name */
-#define CURL_HTTPPOST_FILENAME (1<<0)
-/* specified content is a file name */
-#define CURL_HTTPPOST_READFILE (1<<1)
-/* name is only stored pointer do not free in formfree */
-#define CURL_HTTPPOST_PTRNAME (1<<2)
-/* contents is only stored pointer do not free in formfree */
-#define CURL_HTTPPOST_PTRCONTENTS (1<<3)
-/* upload file from buffer */
-#define CURL_HTTPPOST_BUFFER (1<<4)
-/* upload file from pointer contents */
-#define CURL_HTTPPOST_PTRBUFFER (1<<5)
-/* upload file contents by using the regular read callback to get the data and
-   pass the given pointer as custom pointer */
-#define CURL_HTTPPOST_CALLBACK (1<<6)
-/* use size in 'contentlen', added in 7.46.0 */
-#define CURL_HTTPPOST_LARGE (1<<7)
-
-  char *showfilename;               /* The file name to show. If not set, the
-                                       actual file name will be used (if this
-                                       is a file part) */
-  void *userp;                      /* custom pointer used for
-                                       HTTPPOST_CALLBACK posts */
-  curl_off_t contentlen;            /* alternative length of contents
-                                       field. Used if CURL_HTTPPOST_LARGE is
-                                       set. Added in 7.46.0 */
-};
-
-/* This is the CURLOPT_PROGRESSFUNCTION callback prototype. It is now
-   considered deprecated but was the only choice up until 7.31.0 */
-typedef int (*curl_progress_callback)(void *clientp,
-                                      double dltotal,
-                                      double dlnow,
-                                      double ultotal,
-                                      double ulnow);
-
-/* This is the CURLOPT_XFERINFOFUNCTION callback prototype. It was introduced
-   in 7.32.0, avoids the use of floating point numbers and provides more
-   detailed information. */
-typedef int (*curl_xferinfo_callback)(void *clientp,
-                                      curl_off_t dltotal,
-                                      curl_off_t dlnow,
-                                      curl_off_t ultotal,
-                                      curl_off_t ulnow);
-
-#ifndef CURL_MAX_READ_SIZE
-  /* The maximum receive buffer size configurable via CURLOPT_BUFFERSIZE. */
-#define CURL_MAX_READ_SIZE 524288
-#endif
-
-#ifndef CURL_MAX_WRITE_SIZE
-  /* Tests have proven that 20K is a very bad buffer size for uploads on
-     Windows, while 16K for some odd reason performed a lot better.
-     We do the ifndef check to allow this value to easier be changed at build
-     time for those who feel adventurous. The practical minimum is about
-     400 bytes since libcurl uses a buffer of this size as a scratch area
-     (unrelated to network send operations). */
-#define CURL_MAX_WRITE_SIZE 16384
-#endif
-
-#ifndef CURL_MAX_HTTP_HEADER
-/* The only reason to have a max limit for this is to avoid the risk of a bad
-   server feeding libcurl with a never-ending header that will cause reallocs
-   infinitely */
-#define CURL_MAX_HTTP_HEADER (100*1024)
-#endif
-
-/* This is a magic return code for the write callback that, when returned,
-   will signal libcurl to pause receiving on the current transfer. */
-#define CURL_WRITEFUNC_PAUSE 0x10000001
-
-typedef size_t (*curl_write_callback)(char *buffer,
-                                      size_t size,
-                                      size_t nitems,
-                                      void *outstream);
-
-/* This callback will be called when a new resolver request is made */
-typedef int (*curl_resolver_start_callback)(void *resolver_state,
-                                            void *reserved, void *userdata);
-
-/* enumeration of file types */
-typedef enum {
-  CURLFILETYPE_FILE = 0,
-  CURLFILETYPE_DIRECTORY,
-  CURLFILETYPE_SYMLINK,
-  CURLFILETYPE_DEVICE_BLOCK,
-  CURLFILETYPE_DEVICE_CHAR,
-  CURLFILETYPE_NAMEDPIPE,
-  CURLFILETYPE_SOCKET,
-  CURLFILETYPE_DOOR, /* is possible only on Sun Solaris now */
-
-  CURLFILETYPE_UNKNOWN /* should never occur */
-} curlfiletype;
-
-#define CURLFINFOFLAG_KNOWN_FILENAME    (1<<0)
-#define CURLFINFOFLAG_KNOWN_FILETYPE    (1<<1)
-#define CURLFINFOFLAG_KNOWN_TIME        (1<<2)
-#define CURLFINFOFLAG_KNOWN_PERM        (1<<3)
-#define CURLFINFOFLAG_KNOWN_UID         (1<<4)
-#define CURLFINFOFLAG_KNOWN_GID         (1<<5)
-#define CURLFINFOFLAG_KNOWN_SIZE        (1<<6)
-#define CURLFINFOFLAG_KNOWN_HLINKCOUNT  (1<<7)
-
-/* Content of this structure depends on information which is known and is
-   achievable (e.g. by FTP LIST parsing). Please see the url_easy_setopt(3) man
-   page for callbacks returning this structure -- some fields are mandatory,
-   some others are optional. The FLAG field has special meaning. */
-struct curl_fileinfo {
-  char *filename;
-  curlfiletype filetype;
-  time_t time; /* always zero! */
-  unsigned int perm;
-  int uid;
-  int gid;
-  curl_off_t size;
-  long int hardlinks;
-
-  struct {
-    /* If some of these fields is not NULL, it is a pointer to b_data. */
-    char *time;
-    char *perm;
-    char *user;
-    char *group;
-    char *target; /* pointer to the target filename of a symlink */
-  } strings;
-
-  unsigned int flags;
-
-  /* used internally */
-  char *b_data;
-  size_t b_size;
-  size_t b_used;
-};
-
-/* return codes for CURLOPT_CHUNK_BGN_FUNCTION */
-#define CURL_CHUNK_BGN_FUNC_OK      0
-#define CURL_CHUNK_BGN_FUNC_FAIL    1 /* tell the lib to end the task */
-#define CURL_CHUNK_BGN_FUNC_SKIP    2 /* skip this chunk over */
-
-/* if splitting of data transfer is enabled, this callback is called before
-   download of an individual chunk started. Note that parameter "remains" works
-   only for FTP wildcard downloading (for now), otherwise is not used */
-typedef long (*curl_chunk_bgn_callback)(const void *transfer_info,
-                                        void *ptr,
-                                        int remains);
-
-/* return codes for CURLOPT_CHUNK_END_FUNCTION */
-#define CURL_CHUNK_END_FUNC_OK      0
-#define CURL_CHUNK_END_FUNC_FAIL    1 /* tell the lib to end the task */
-
-/* If splitting of data transfer is enabled this callback is called after
-   download of an individual chunk finished.
-   Note! After this callback was set then it have to be called FOR ALL chunks.
-   Even if downloading of this chunk was skipped in CHUNK_BGN_FUNC.
-   This is the reason why we don't need "transfer_info" parameter in this
-   callback and we are not interested in "remains" parameter too. */
-typedef long (*curl_chunk_end_callback)(void *ptr);
-
-/* return codes for FNMATCHFUNCTION */
-#define CURL_FNMATCHFUNC_MATCH    0 /* string corresponds to the pattern */
-#define CURL_FNMATCHFUNC_NOMATCH  1 /* pattern doesn't match the string */
-#define CURL_FNMATCHFUNC_FAIL     2 /* an error occurred */
-
-/* callback type for wildcard downloading pattern matching. If the
-   string matches the pattern, return CURL_FNMATCHFUNC_MATCH value, etc. */
-typedef int (*curl_fnmatch_callback)(void *ptr,
-                                     const char *pattern,
-                                     const char *string);
-
-/* These are the return codes for the seek callbacks */
-#define CURL_SEEKFUNC_OK       0
-#define CURL_SEEKFUNC_FAIL     1 /* fail the entire transfer */
-#define CURL_SEEKFUNC_CANTSEEK 2 /* tell libcurl seeking can't be done, so
-                                    libcurl might try other means instead */
-typedef int (*curl_seek_callback)(void *instream,
-                                  curl_off_t offset,
-                                  int origin); /* 'whence' */
-
-/* This is a return code for the read callback that, when returned, will
-   signal libcurl to immediately abort the current transfer. */
-#define CURL_READFUNC_ABORT 0x10000000
-/* This is a return code for the read callback that, when returned, will
-   signal libcurl to pause sending data on the current transfer. */
-#define CURL_READFUNC_PAUSE 0x10000001
-
-/* Return code for when the trailing headers' callback has terminated
-   without any errors*/
-#define CURL_TRAILERFUNC_OK 0
-/* Return code for when was an error in the trailing header's list and we
-  want to abort the request */
-#define CURL_TRAILERFUNC_ABORT 1
-
-typedef size_t (*curl_read_callback)(char *buffer,
-                                      size_t size,
-                                      size_t nitems,
-                                      void *instream);
-
-typedef int (*curl_trailer_callback)(struct curl_slist **list,
-                                      void *userdata);
-
-typedef enum {
-  CURLSOCKTYPE_IPCXN,  /* socket created for a specific IP connection */
-  CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */
-  CURLSOCKTYPE_LAST    /* never use */
-} curlsocktype;
-
-/* The return code from the sockopt_callback can signal information back
-   to libcurl: */
-#define CURL_SOCKOPT_OK 0
-#define CURL_SOCKOPT_ERROR 1 /* causes libcurl to abort and return
-                                CURLE_ABORTED_BY_CALLBACK */
-#define CURL_SOCKOPT_ALREADY_CONNECTED 2
-
-typedef int (*curl_sockopt_callback)(void *clientp,
-                                     curl_socket_t curlfd,
-                                     curlsocktype purpose);
-
-struct curl_sockaddr {
-  int family;
-  int socktype;
-  int protocol;
-  unsigned int addrlen; /* addrlen was a socklen_t type before 7.18.0 but it
-                           turned really ugly and painful on the systems that
-                           lack this type */
-  struct sockaddr addr;
-};
-
-typedef curl_socket_t
-(*curl_opensocket_callback)(void *clientp,
-                            curlsocktype purpose,
-                            struct curl_sockaddr *address);
-
-typedef int
-(*curl_closesocket_callback)(void *clientp, curl_socket_t item);
-
-typedef enum {
-  CURLIOE_OK,            /* I/O operation successful */
-  CURLIOE_UNKNOWNCMD,    /* command was unknown to callback */
-  CURLIOE_FAILRESTART,   /* failed to restart the read */
-  CURLIOE_LAST           /* never use */
-} curlioerr;
-
-typedef enum {
-  CURLIOCMD_NOP,         /* no operation */
-  CURLIOCMD_RESTARTREAD, /* restart the read stream from start */
-  CURLIOCMD_LAST         /* never use */
-} curliocmd;
-
-typedef curlioerr (*curl_ioctl_callback)(CURL *handle,
-                                         int cmd,
-                                         void *clientp);
-
-#ifndef CURL_DID_MEMORY_FUNC_TYPEDEFS
-/*
- * The following typedef's are signatures of malloc, free, realloc, strdup and
- * calloc respectively.  Function pointers of these types can be passed to the
- * curl_global_init_mem() function to set user defined memory management
- * callback routines.
- */
-typedef void *(*curl_malloc_callback)(size_t size);
-typedef void (*curl_free_callback)(void *ptr);
-typedef void *(*curl_realloc_callback)(void *ptr, size_t size);
-typedef char *(*curl_strdup_callback)(const char *str);
-typedef void *(*curl_calloc_callback)(size_t nmemb, size_t size);
-
-#define CURL_DID_MEMORY_FUNC_TYPEDEFS
-#endif
-
-/* the kind of data that is passed to information_callback*/
-typedef enum {
-  CURLINFO_TEXT = 0,
-  CURLINFO_HEADER_IN,    /* 1 */
-  CURLINFO_HEADER_OUT,   /* 2 */
-  CURLINFO_DATA_IN,      /* 3 */
-  CURLINFO_DATA_OUT,     /* 4 */
-  CURLINFO_SSL_DATA_IN,  /* 5 */
-  CURLINFO_SSL_DATA_OUT, /* 6 */
-  CURLINFO_END
-} curl_infotype;
-
-typedef int (*curl_debug_callback)
-       (CURL *handle,      /* the handle/transfer this concerns */
-        curl_infotype type, /* what kind of data */
-        char *data,        /* points to the data */
-        size_t size,       /* size of the data pointed to */
-        void *userptr);    /* whatever the user please */
-
-/* All possible error codes from all sorts of curl functions. Future versions
-   may return other values, stay prepared.
-
-   Always add new return codes last. Never *EVER* remove any. The return
-   codes must remain the same!
- */
-
-typedef enum {
-  CURLE_OK = 0,
-  CURLE_UNSUPPORTED_PROTOCOL,    /* 1 */
-  CURLE_FAILED_INIT,             /* 2 */
-  CURLE_URL_MALFORMAT,           /* 3 */
-  CURLE_NOT_BUILT_IN,            /* 4 - [was obsoleted in August 2007 for
-                                    7.17.0, reused in April 2011 for 7.21.5] */
-  CURLE_COULDNT_RESOLVE_PROXY,   /* 5 */
-  CURLE_COULDNT_RESOLVE_HOST,    /* 6 */
-  CURLE_COULDNT_CONNECT,         /* 7 */
-  CURLE_WEIRD_SERVER_REPLY,      /* 8 */
-  CURLE_REMOTE_ACCESS_DENIED,    /* 9 a service was denied by the server
-                                    due to lack of access - when login fails
-                                    this is not returned. */
-  CURLE_FTP_ACCEPT_FAILED,       /* 10 - [was obsoleted in April 2006 for
-                                    7.15.4, reused in Dec 2011 for 7.24.0]*/
-  CURLE_FTP_WEIRD_PASS_REPLY,    /* 11 */
-  CURLE_FTP_ACCEPT_TIMEOUT,      /* 12 - timeout occurred accepting server
-                                    [was obsoleted in August 2007 for 7.17.0,
-                                    reused in Dec 2011 for 7.24.0]*/
-  CURLE_FTP_WEIRD_PASV_REPLY,    /* 13 */
-  CURLE_FTP_WEIRD_227_FORMAT,    /* 14 */
-  CURLE_FTP_CANT_GET_HOST,       /* 15 */
-  CURLE_HTTP2,                   /* 16 - A problem in the http2 framing layer.
-                                    [was obsoleted in August 2007 for 7.17.0,
-                                    reused in July 2014 for 7.38.0] */
-  CURLE_FTP_COULDNT_SET_TYPE,    /* 17 */
-  CURLE_PARTIAL_FILE,            /* 18 */
-  CURLE_FTP_COULDNT_RETR_FILE,   /* 19 */
-  CURLE_OBSOLETE20,              /* 20 - NOT USED */
-  CURLE_QUOTE_ERROR,             /* 21 - quote command failure */
-  CURLE_HTTP_RETURNED_ERROR,     /* 22 */
-  CURLE_WRITE_ERROR,             /* 23 */
-  CURLE_OBSOLETE24,              /* 24 - NOT USED */
-  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 */
-  CURLE_FTP_COULDNT_USE_REST,    /* 31 - the REST command failed */
-  CURLE_OBSOLETE32,              /* 32 - NOT USED */
-  CURLE_RANGE_ERROR,             /* 33 - RANGE "command" didn't work */
-  CURLE_HTTP_POST_ERROR,         /* 34 */
-  CURLE_SSL_CONNECT_ERROR,       /* 35 - wrong when connecting with SSL */
-  CURLE_BAD_DOWNLOAD_RESUME,     /* 36 - couldn't resume download */
-  CURLE_FILE_COULDNT_READ_FILE,  /* 37 */
-  CURLE_LDAP_CANNOT_BIND,        /* 38 */
-  CURLE_LDAP_SEARCH_FAILED,      /* 39 */
-  CURLE_OBSOLETE40,              /* 40 - NOT USED */
-  CURLE_FUNCTION_NOT_FOUND,      /* 41 - NOT USED starting with 7.53.0 */
-  CURLE_ABORTED_BY_CALLBACK,     /* 42 */
-  CURLE_BAD_FUNCTION_ARGUMENT,   /* 43 */
-  CURLE_OBSOLETE44,              /* 44 - NOT USED */
-  CURLE_INTERFACE_FAILED,        /* 45 - CURLOPT_INTERFACE failed */
-  CURLE_OBSOLETE46,              /* 46 - NOT USED */
-  CURLE_TOO_MANY_REDIRECTS,      /* 47 - catch endless re-direct loops */
-  CURLE_UNKNOWN_OPTION,          /* 48 - User specified an unknown option */
-  CURLE_TELNET_OPTION_SYNTAX,    /* 49 - Malformed telnet option */
-  CURLE_OBSOLETE50,              /* 50 - NOT USED */
-  CURLE_OBSOLETE51,              /* 51 - NOT USED */
-  CURLE_GOT_NOTHING,             /* 52 - when this is a specific error */
-  CURLE_SSL_ENGINE_NOTFOUND,     /* 53 - SSL crypto engine not found */
-  CURLE_SSL_ENGINE_SETFAILED,    /* 54 - can not set SSL crypto engine as
-                                    default */
-  CURLE_SEND_ERROR,              /* 55 - failed sending network data */
-  CURLE_RECV_ERROR,              /* 56 - failure in receiving network data */
-  CURLE_OBSOLETE57,              /* 57 - NOT IN USE */
-  CURLE_SSL_CERTPROBLEM,         /* 58 - problem with the local certificate */
-  CURLE_SSL_CIPHER,              /* 59 - couldn't use specified cipher */
-  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_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
-                                    that failed */
-  CURLE_SSL_ENGINE_INITFAILED,   /* 66 - failed to initialise ENGINE */
-  CURLE_LOGIN_DENIED,            /* 67 - user, password or similar was not
-                                    accepted and we failed to login */
-  CURLE_TFTP_NOTFOUND,           /* 68 - file not found on server */
-  CURLE_TFTP_PERM,               /* 69 - permission problem on server */
-  CURLE_REMOTE_DISK_FULL,        /* 70 - out of disk space on server */
-  CURLE_TFTP_ILLEGAL,            /* 71 - Illegal TFTP operation */
-  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_SSL_CACERT_BADFILE,      /* 77 - could not load CACERT file, missing
-                                    or wrong format */
-  CURLE_REMOTE_FILE_NOT_FOUND,   /* 78 - remote file not found */
-  CURLE_SSH,                     /* 79 - error from the SSH layer, somewhat
-                                    generic so the error message will be of
-                                    interest when this has happened */
-
-  CURLE_SSL_SHUTDOWN_FAILED,     /* 80 - Failed to shut down the SSL
-                                    connection */
-  CURLE_AGAIN,                   /* 81 - socket is not ready for send/recv,
-                                    wait till it's ready and try again (Added
-                                    in 7.18.2) */
-  CURLE_SSL_CRL_BADFILE,         /* 82 - could not load CRL file, missing or
-                                    wrong format (Added in 7.19.0) */
-  CURLE_SSL_ISSUER_ERROR,        /* 83 - Issuer check failed.  (Added in
-                                    7.19.0) */
-  CURLE_FTP_PRET_FAILED,         /* 84 - a PRET command failed */
-  CURLE_RTSP_CSEQ_ERROR,         /* 85 - mismatch of RTSP CSeq numbers */
-  CURLE_RTSP_SESSION_ERROR,      /* 86 - mismatch of RTSP Session Ids */
-  CURLE_FTP_BAD_FILE_LIST,       /* 87 - unable to parse FTP file list */
-  CURLE_CHUNK_FAILED,            /* 88 - chunk callback reported error */
-  CURLE_NO_CONNECTION_AVAILABLE, /* 89 - No connection available, the
-                                    session will be queued */
-  CURLE_SSL_PINNEDPUBKEYNOTMATCH, /* 90 - specified pinned public key did not
-                                     match */
-  CURLE_SSL_INVALIDCERTSTATUS,   /* 91 - invalid certificate status */
-  CURLE_HTTP2_STREAM,            /* 92 - stream error in HTTP/2 framing layer
-                                    */
-  CURLE_RECURSIVE_API_CALL,      /* 93 - an api function was called from
-                                    inside a callback */
-  CURL_LAST /* never use! */
-} CURLcode;
-
-#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
-                          the obsolete stuff removed! */
-
-/* Previously obsolete error code re-used in 7.38.0 */
-#define CURLE_OBSOLETE16 CURLE_HTTP2
-
-/* Previously obsolete error codes re-used in 7.24.0 */
-#define CURLE_OBSOLETE10 CURLE_FTP_ACCEPT_FAILED
-#define CURLE_OBSOLETE12 CURLE_FTP_ACCEPT_TIMEOUT
-
-/*  compatibility with older names */
-#define CURLOPT_ENCODING CURLOPT_ACCEPT_ENCODING
-#define CURLE_FTP_WEIRD_SERVER_REPLY CURLE_WEIRD_SERVER_REPLY
-
-/* The following were added in 7.62.0 */
-#define CURLE_SSL_CACERT CURLE_PEER_FAILED_VERIFICATION
-
-/* The following were added in 7.21.5, April 2011 */
-#define CURLE_UNKNOWN_TELNET_OPTION CURLE_UNKNOWN_OPTION
-
-/* The following were added in 7.17.1 */
-/* These are scheduled to disappear by 2009 */
-#define CURLE_SSL_PEER_CERTIFICATE CURLE_PEER_FAILED_VERIFICATION
-
-/* The following were added in 7.17.0 */
-/* These are scheduled to disappear by 2009 */
-#define CURLE_OBSOLETE CURLE_OBSOLETE50 /* no one should be using this! */
-#define CURLE_BAD_PASSWORD_ENTERED CURLE_OBSOLETE46
-#define CURLE_BAD_CALLING_ORDER CURLE_OBSOLETE44
-#define CURLE_FTP_USER_PASSWORD_INCORRECT CURLE_OBSOLETE10
-#define CURLE_FTP_CANT_RECONNECT CURLE_OBSOLETE16
-#define CURLE_FTP_COULDNT_GET_SIZE CURLE_OBSOLETE32
-#define CURLE_FTP_COULDNT_SET_ASCII CURLE_OBSOLETE29
-#define CURLE_FTP_WEIRD_USER_REPLY CURLE_OBSOLETE12
-#define CURLE_FTP_WRITE_ERROR CURLE_OBSOLETE20
-#define CURLE_LIBRARY_NOT_FOUND CURLE_OBSOLETE40
-#define CURLE_MALFORMAT_USER CURLE_OBSOLETE24
-#define CURLE_SHARE_IN_USE CURLE_OBSOLETE57
-#define CURLE_URL_MALFORMAT_USER CURLE_NOT_BUILT_IN
-
-#define CURLE_FTP_ACCESS_DENIED CURLE_REMOTE_ACCESS_DENIED
-#define CURLE_FTP_COULDNT_SET_BINARY CURLE_FTP_COULDNT_SET_TYPE
-#define CURLE_FTP_QUOTE_ERROR CURLE_QUOTE_ERROR
-#define CURLE_TFTP_DISKFULL CURLE_REMOTE_DISK_FULL
-#define CURLE_TFTP_EXISTS CURLE_REMOTE_FILE_EXISTS
-#define CURLE_HTTP_RANGE_ERROR CURLE_RANGE_ERROR
-#define CURLE_FTP_SSL_FAILED CURLE_USE_SSL_FAILED
-
-/* 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
-
-/* 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
-   make programs break */
-#define CURLE_ALREADY_COMPLETE 99999
-
-/* Provide defines for really old option names */
-#define CURLOPT_FILE CURLOPT_WRITEDATA /* name changed in 7.9.7 */
-#define CURLOPT_INFILE CURLOPT_READDATA /* name changed in 7.9.7 */
-#define CURLOPT_WRITEHEADER CURLOPT_HEADERDATA
-
-/* Since long deprecated options with no code in the lib that does anything
-   with them. */
-#define CURLOPT_WRITEINFO CURLOPT_OBSOLETE40
-#define CURLOPT_CLOSEPOLICY CURLOPT_OBSOLETE72
-
-#endif /*!CURL_NO_OLDIES*/
-
-/* This prototype applies to all conversion callbacks */
-typedef CURLcode (*curl_conv_callback)(char *buffer, size_t length);
-
-typedef CURLcode (*curl_ssl_ctx_callback)(CURL *curl,    /* easy handle */
-                                          void *ssl_ctx, /* actually an OpenSSL
-                                                            or WolfSSL SSL_CTX,
-                                                            or an mbedTLS
-                                                          mbedtls_ssl_config */
-                                          void *userptr);
-
-typedef enum {
-  CURLPROXY_HTTP = 0,   /* added in 7.10, new in 7.19.4 default is to use
-                           CONNECT HTTP/1.1 */
-  CURLPROXY_HTTP_1_0 = 1,   /* added in 7.19.4, force to use CONNECT
-                               HTTP/1.0  */
-  CURLPROXY_HTTPS = 2, /* added in 7.52.0 */
-  CURLPROXY_SOCKS4 = 4, /* support added in 7.15.2, enum existed already
-                           in 7.10 */
-  CURLPROXY_SOCKS5 = 5, /* added in 7.10 */
-  CURLPROXY_SOCKS4A = 6, /* added in 7.18.0 */
-  CURLPROXY_SOCKS5_HOSTNAME = 7 /* Use the SOCKS5 protocol but pass along the
-                                   host name rather than the IP address. added
-                                   in 7.18.0 */
-} curl_proxytype;  /* this enum was added in 7.10 */
-
-/*
- * Bitmasks for CURLOPT_HTTPAUTH and CURLOPT_PROXYAUTH options:
- *
- * CURLAUTH_NONE         - No HTTP authentication
- * CURLAUTH_BASIC        - HTTP Basic authentication (default)
- * CURLAUTH_DIGEST       - HTTP Digest authentication
- * CURLAUTH_NEGOTIATE    - HTTP Negotiate (SPNEGO) authentication
- * CURLAUTH_GSSNEGOTIATE - Alias for CURLAUTH_NEGOTIATE (deprecated)
- * CURLAUTH_NTLM         - HTTP NTLM authentication
- * CURLAUTH_DIGEST_IE    - HTTP Digest authentication with IE flavour
- * CURLAUTH_NTLM_WB      - HTTP NTLM authentication delegated to winbind helper
- * CURLAUTH_BEARER       - HTTP Bearer token authentication
- * CURLAUTH_ONLY         - Use together with a single other type to force no
- *                         authentication or just that single type
- * CURLAUTH_ANY          - All fine types set
- * CURLAUTH_ANYSAFE      - All fine types except Basic
- */
-
-#define CURLAUTH_NONE         ((unsigned long)0)
-#define CURLAUTH_BASIC        (((unsigned long)1)<<0)
-#define CURLAUTH_DIGEST       (((unsigned long)1)<<1)
-#define CURLAUTH_NEGOTIATE    (((unsigned long)1)<<2)
-/* Deprecated since the advent of CURLAUTH_NEGOTIATE */
-#define CURLAUTH_GSSNEGOTIATE CURLAUTH_NEGOTIATE
-/* Used for CURLOPT_SOCKS5_AUTH to stay terminologically correct */
-#define CURLAUTH_GSSAPI CURLAUTH_NEGOTIATE
-#define CURLAUTH_NTLM         (((unsigned long)1)<<3)
-#define CURLAUTH_DIGEST_IE    (((unsigned long)1)<<4)
-#define CURLAUTH_NTLM_WB      (((unsigned long)1)<<5)
-#define CURLAUTH_BEARER       (((unsigned long)1)<<6)
-#define CURLAUTH_ONLY         (((unsigned long)1)<<31)
-#define CURLAUTH_ANY          (~CURLAUTH_DIGEST_IE)
-#define CURLAUTH_ANYSAFE      (~(CURLAUTH_BASIC|CURLAUTH_DIGEST_IE))
-
-#define CURLSSH_AUTH_ANY       ~0     /* all types supported by the server */
-#define CURLSSH_AUTH_NONE      0      /* none allowed, silly but complete */
-#define CURLSSH_AUTH_PUBLICKEY (1<<0) /* public/private key files */
-#define CURLSSH_AUTH_PASSWORD  (1<<1) /* password */
-#define CURLSSH_AUTH_HOST      (1<<2) /* host key files */
-#define CURLSSH_AUTH_KEYBOARD  (1<<3) /* keyboard interactive */
-#define CURLSSH_AUTH_AGENT     (1<<4) /* agent (ssh-agent, pageant...) */
-#define CURLSSH_AUTH_GSSAPI    (1<<5) /* gssapi (kerberos, ...) */
-#define CURLSSH_AUTH_DEFAULT CURLSSH_AUTH_ANY
-
-#define CURLGSSAPI_DELEGATION_NONE        0      /* no delegation (default) */
-#define CURLGSSAPI_DELEGATION_POLICY_FLAG (1<<0) /* if permitted by policy */
-#define CURLGSSAPI_DELEGATION_FLAG        (1<<1) /* delegate always */
-
-#define CURL_ERROR_SIZE 256
-
-enum curl_khtype {
-  CURLKHTYPE_UNKNOWN,
-  CURLKHTYPE_RSA1,
-  CURLKHTYPE_RSA,
-  CURLKHTYPE_DSS,
-  CURLKHTYPE_ECDSA,
-  CURLKHTYPE_ED25519
-};
-
-struct curl_khkey {
-  const char *key; /* points to a zero-terminated string encoded with base64
-                      if len is zero, otherwise to the "raw" data */
-  size_t len;
-  enum curl_khtype keytype;
-};
-
-/* this is the set of return values expected from the curl_sshkeycallback
-   callback */
-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
-                        connection will be left intact etc */
-  CURLKHSTAT_LAST    /* not for use, only a marker for last-in-list */
-};
-
-/* this is the set of status codes pass in to the callback */
-enum curl_khmatch {
-  CURLKHMATCH_OK,       /* match */
-  CURLKHMATCH_MISMATCH, /* host found, key mismatch! */
-  CURLKHMATCH_MISSING,  /* no matching host/key found */
-  CURLKHMATCH_LAST      /* not for use, only a marker for last-in-list */
-};
-
-typedef int
-  (*curl_sshkeycallback) (CURL *easy,     /* easy handle */
-                          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 */
-
-/* parameter for the CURLOPT_USE_SSL option */
-typedef enum {
-  CURLUSESSL_NONE,    /* do not attempt to use SSL */
-  CURLUSESSL_TRY,     /* try using SSL, proceed anyway otherwise */
-  CURLUSESSL_CONTROL, /* SSL for the control connection or fail */
-  CURLUSESSL_ALL,     /* SSL for all communication or fail */
-  CURLUSESSL_LAST     /* not an option, never use */
-} curl_usessl;
-
-/* Definition of bits for the CURLOPT_SSL_OPTIONS argument: */
-
-/* - ALLOW_BEAST tells libcurl to allow the BEAST SSL vulnerability in the
-   name of improving interoperability with older servers. Some SSL libraries
-   have introduced work-arounds for this flaw but those work-arounds sometimes
-   make the SSL communication fail. To regain functionality with those broken
-   servers, a user can this way allow the vulnerability back. */
-#define CURLSSLOPT_ALLOW_BEAST (1<<0)
-
-/* - NO_REVOKE tells libcurl to disable certificate revocation checks for those
-   SSL backends where such behavior is present. */
-#define CURLSSLOPT_NO_REVOKE (1<<1)
-
-/* The default connection attempt delay in milliseconds for happy eyeballs.
-   CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 and happy-eyeballs-timeout-ms.d document
-   this value, keep them in sync. */
-#define CURL_HET_DEFAULT 200L
-
-/* The default connection upkeep interval in milliseconds. */
-#define CURL_UPKEEP_INTERVAL_DEFAULT 60000L
-
-#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
-                          the obsolete stuff removed! */
-
-/* Backwards compatibility with older names */
-/* These are scheduled to disappear by 2009 */
-
-#define CURLFTPSSL_NONE CURLUSESSL_NONE
-#define CURLFTPSSL_TRY CURLUSESSL_TRY
-#define CURLFTPSSL_CONTROL CURLUSESSL_CONTROL
-#define CURLFTPSSL_ALL CURLUSESSL_ALL
-#define CURLFTPSSL_LAST CURLUSESSL_LAST
-#define curl_ftpssl curl_usessl
-#endif /*!CURL_NO_OLDIES*/
-
-/* parameter for the CURLOPT_FTP_SSL_CCC option */
-typedef enum {
-  CURLFTPSSL_CCC_NONE,    /* do not send CCC */
-  CURLFTPSSL_CCC_PASSIVE, /* Let the server initiate the shutdown */
-  CURLFTPSSL_CCC_ACTIVE,  /* Initiate the shutdown */
-  CURLFTPSSL_CCC_LAST     /* not an option, never use */
-} curl_ftpccc;
-
-/* parameter for the CURLOPT_FTPSSLAUTH option */
-typedef enum {
-  CURLFTPAUTH_DEFAULT, /* let libcurl decide */
-  CURLFTPAUTH_SSL,     /* use "AUTH SSL" */
-  CURLFTPAUTH_TLS,     /* use "AUTH TLS" */
-  CURLFTPAUTH_LAST /* not an option, never use */
-} curl_ftpauth;
-
-/* parameter for the CURLOPT_FTP_CREATE_MISSING_DIRS option */
-typedef enum {
-  CURLFTP_CREATE_DIR_NONE,  /* do NOT create missing dirs! */
-  CURLFTP_CREATE_DIR,       /* (FTP/SFTP) if CWD fails, try MKD and then CWD
-                               again if MKD succeeded, for SFTP this does
-                               similar magic */
-  CURLFTP_CREATE_DIR_RETRY, /* (FTP only) if CWD fails, try MKD and then CWD
-                               again even if MKD failed! */
-  CURLFTP_CREATE_DIR_LAST   /* not an option, never use */
-} curl_ftpcreatedir;
-
-/* parameter for the CURLOPT_FTP_FILEMETHOD option */
-typedef enum {
-  CURLFTPMETHOD_DEFAULT,   /* let libcurl pick */
-  CURLFTPMETHOD_MULTICWD,  /* single CWD operation for each path part */
-  CURLFTPMETHOD_NOCWD,     /* no CWD at all */
-  CURLFTPMETHOD_SINGLECWD, /* one CWD to full dir, then work on file */
-  CURLFTPMETHOD_LAST       /* not an option, never use */
-} curl_ftpmethod;
-
-/* bitmask defines for CURLOPT_HEADEROPT */
-#define CURLHEADER_UNIFIED  0
-#define CURLHEADER_SEPARATE (1<<0)
-
-/* CURLALTSVC_* are bits for the CURLOPT_ALTSVC_CTRL option */
-#define CURLALTSVC_IMMEDIATELY  (1<<0)
-#define CURLALTSVC_ALTUSED      (1<<1)
-#define CURLALTSVC_READONLYFILE (1<<2)
-#define CURLALTSVC_H1           (1<<3)
-#define CURLALTSVC_H2           (1<<4)
-#define CURLALTSVC_H3           (1<<5)
-
-/* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */
-#define CURLPROTO_HTTP   (1<<0)
-#define CURLPROTO_HTTPS  (1<<1)
-#define CURLPROTO_FTP    (1<<2)
-#define CURLPROTO_FTPS   (1<<3)
-#define CURLPROTO_SCP    (1<<4)
-#define CURLPROTO_SFTP   (1<<5)
-#define CURLPROTO_TELNET (1<<6)
-#define CURLPROTO_LDAP   (1<<7)
-#define CURLPROTO_LDAPS  (1<<8)
-#define CURLPROTO_DICT   (1<<9)
-#define CURLPROTO_FILE   (1<<10)
-#define CURLPROTO_TFTP   (1<<11)
-#define CURLPROTO_IMAP   (1<<12)
-#define CURLPROTO_IMAPS  (1<<13)
-#define CURLPROTO_POP3   (1<<14)
-#define CURLPROTO_POP3S  (1<<15)
-#define CURLPROTO_SMTP   (1<<16)
-#define CURLPROTO_SMTPS  (1<<17)
-#define CURLPROTO_RTSP   (1<<18)
-#define CURLPROTO_RTMP   (1<<19)
-#define CURLPROTO_RTMPT  (1<<20)
-#define CURLPROTO_RTMPE  (1<<21)
-#define CURLPROTO_RTMPTE (1<<22)
-#define CURLPROTO_RTMPS  (1<<23)
-#define CURLPROTO_RTMPTS (1<<24)
-#define CURLPROTO_GOPHER (1<<25)
-#define CURLPROTO_SMB    (1<<26)
-#define CURLPROTO_SMBS   (1<<27)
-#define CURLPROTO_ALL    (~0) /* enable everything */
-
-/* long may be 32 or 64 bits, but we should never depend on anything else
-   but 32 */
-#define CURLOPTTYPE_LONG          0
-#define CURLOPTTYPE_OBJECTPOINT   10000
-#define CURLOPTTYPE_STRINGPOINT   10000
-#define CURLOPTTYPE_FUNCTIONPOINT 20000
-#define CURLOPTTYPE_OFF_T         30000
-
-/* *STRINGPOINT is an alias for OBJECTPOINT to allow tools to extract the
-   string options from the header file */
-
-/* name is uppercase CURLOPT_<name>,
-   type is one of the defined CURLOPTTYPE_<type>
-   number is unique identifier */
-#ifdef CINIT
-#undef CINIT
-#endif
-
-#ifdef CURL_ISOCPP
-#define CINIT(na,t,nu) CURLOPT_ ## na = CURLOPTTYPE_ ## t + nu
-#else
-/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
-#define LONG          CURLOPTTYPE_LONG
-#define OBJECTPOINT   CURLOPTTYPE_OBJECTPOINT
-#define STRINGPOINT   CURLOPTTYPE_OBJECTPOINT
-#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT
-#define OFF_T         CURLOPTTYPE_OFF_T
-#define CINIT(name,type,number) CURLOPT_/**/name = type + number
-#endif
-
-/*
- * This macro-mania below setups the CURLOPT_[what] enum, to be used with
- * curl_easy_setopt(). The first argument in the CINIT() macro is the [what]
- * word.
- */
-
-typedef enum {
-  /* This is the FILE * or void * the regular output should be written to. */
-  CINIT(WRITEDATA, OBJECTPOINT, 1),
-
-  /* The full URL to get/put */
-  CINIT(URL, STRINGPOINT, 2),
-
-  /* Port number to connect to, if other than default. */
-  CINIT(PORT, LONG, 3),
-
-  /* Name of proxy to use. */
-  CINIT(PROXY, STRINGPOINT, 4),
-
-  /* "user:password;options" to use when fetching. */
-  CINIT(USERPWD, STRINGPOINT, 5),
-
-  /* "user:password" to use with proxy. */
-  CINIT(PROXYUSERPWD, STRINGPOINT, 6),
-
-  /* Range to get, specified as an ASCII string. */
-  CINIT(RANGE, STRINGPOINT, 7),
-
-  /* not used */
-
-  /* Specified file stream to upload from (use as input): */
-  CINIT(READDATA, OBJECTPOINT, 9),
-
-  /* Buffer to receive error messages in, must be at least CURL_ERROR_SIZE
-   * bytes big. */
-  CINIT(ERRORBUFFER, OBJECTPOINT, 10),
-
-  /* Function that will be called to store the output (instead of fwrite). The
-   * parameters will use fwrite() syntax, make sure to follow them. */
-  CINIT(WRITEFUNCTION, FUNCTIONPOINT, 11),
-
-  /* Function that will be called to read the input (instead of fread). The
-   * parameters will use fread() syntax, make sure to follow them. */
-  CINIT(READFUNCTION, FUNCTIONPOINT, 12),
-
-  /* Time-out the read operation after this amount of seconds */
-  CINIT(TIMEOUT, LONG, 13),
-
-  /* If the CURLOPT_INFILE is used, this can be used to inform libcurl about
-   * how large the file being sent really is. That allows better error
-   * checking and better verifies that the upload was successful. -1 means
-   * unknown size.
-   *
-   * For large file support, there is also a _LARGE version of the key
-   * which takes an off_t type, allowing platforms with larger off_t
-   * sizes to handle larger files.  See below for INFILESIZE_LARGE.
-   */
-  CINIT(INFILESIZE, LONG, 14),
-
-  /* POST static input fields. */
-  CINIT(POSTFIELDS, OBJECTPOINT, 15),
-
-  /* Set the referrer page (needed by some CGIs) */
-  CINIT(REFERER, STRINGPOINT, 16),
-
-  /* Set the FTP PORT string (interface name, named or numerical IP address)
-     Use i.e '-' to use default address. */
-  CINIT(FTPPORT, STRINGPOINT, 17),
-
-  /* Set the User-Agent string (examined by some CGIs) */
-  CINIT(USERAGENT, STRINGPOINT, 18),
-
-  /* If the download receives less than "low speed limit" bytes/second
-   * during "low speed time" seconds, the operations is aborted.
-   * You could i.e if you have a pretty high speed connection, abort if
-   * it is less than 2000 bytes/sec during 20 seconds.
-   */
-
-  /* Set the "low speed limit" */
-  CINIT(LOW_SPEED_LIMIT, LONG, 19),
-
-  /* Set the "low speed time" */
-  CINIT(LOW_SPEED_TIME, LONG, 20),
-
-  /* Set the continuation offset.
-   *
-   * Note there is also a _LARGE version of this key which uses
-   * off_t types, allowing for large file offsets on platforms which
-   * use larger-than-32-bit off_t's.  Look below for RESUME_FROM_LARGE.
-   */
-  CINIT(RESUME_FROM, LONG, 21),
-
-  /* Set cookie in request: */
-  CINIT(COOKIE, STRINGPOINT, 22),
-
-  /* This points to a linked list of headers, struct curl_slist kind. This
-     list is also used for RTSP (in spite of its name) */
-  CINIT(HTTPHEADER, OBJECTPOINT, 23),
-
-  /* This points to a linked list of post entries, struct curl_httppost */
-  CINIT(HTTPPOST, OBJECTPOINT, 24),
-
-  /* name of the file keeping your private SSL-certificate */
-  CINIT(SSLCERT, STRINGPOINT, 25),
-
-  /* password for the SSL or SSH private key */
-  CINIT(KEYPASSWD, STRINGPOINT, 26),
-
-  /* send TYPE parameter? */
-  CINIT(CRLF, LONG, 27),
-
-  /* send linked-list of QUOTE commands */
-  CINIT(QUOTE, OBJECTPOINT, 28),
-
-  /* send FILE * or void * to store headers to, if you use a callback it
-     is simply passed to the callback unmodified */
-  CINIT(HEADERDATA, OBJECTPOINT, 29),
-
-  /* point to a file to read the initial cookies from, also enables
-     "cookie awareness" */
-  CINIT(COOKIEFILE, STRINGPOINT, 31),
-
-  /* What version to specifically try to use.
-     See CURL_SSLVERSION defines below. */
-  CINIT(SSLVERSION, LONG, 32),
-
-  /* What kind of HTTP time condition to use, see defines */
-  CINIT(TIMECONDITION, LONG, 33),
-
-  /* Time to use with the above condition. Specified in number of seconds
-     since 1 Jan 1970 */
-  CINIT(TIMEVALUE, LONG, 34),
-
-  /* 35 = OBSOLETE */
-
-  /* Custom request, for customizing the get command like
-     HTTP: DELETE, TRACE and others
-     FTP: to use a different list command
-     */
-  CINIT(CUSTOMREQUEST, STRINGPOINT, 36),
-
-  /* FILE handle to use instead of stderr */
-  CINIT(STDERR, OBJECTPOINT, 37),
-
-  /* 38 is not used */
-
-  /* send linked-list of post-transfer QUOTE commands */
-  CINIT(POSTQUOTE, OBJECTPOINT, 39),
-
-  CINIT(OBSOLETE40, OBJECTPOINT, 40), /* OBSOLETE, do not use! */
-
-  CINIT(VERBOSE, LONG, 41),      /* talk a lot */
-  CINIT(HEADER, LONG, 42),       /* throw the header out too */
-  CINIT(NOPROGRESS, LONG, 43),   /* shut off the progress meter */
-  CINIT(NOBODY, LONG, 44),       /* use HEAD to get http document */
-  CINIT(FAILONERROR, LONG, 45),  /* no output on http error codes >= 400 */
-  CINIT(UPLOAD, LONG, 46),       /* this is an upload */
-  CINIT(POST, LONG, 47),         /* HTTP POST method */
-  CINIT(DIRLISTONLY, LONG, 48),  /* bare names when listing directories */
-
-  CINIT(APPEND, LONG, 50),       /* Append instead of overwrite on upload! */
-
-  /* Specify whether to read the user+password from the .netrc or the URL.
-   * This must be one of the CURL_NETRC_* enums below. */
-  CINIT(NETRC, LONG, 51),
-
-  CINIT(FOLLOWLOCATION, LONG, 52),  /* use Location: Luke! */
-
-  CINIT(TRANSFERTEXT, LONG, 53), /* transfer data in text/ASCII format */
-  CINIT(PUT, LONG, 54),          /* HTTP PUT */
-
-  /* 55 = OBSOLETE */
-
-  /* DEPRECATED
-   * Function that will be called instead of the internal progress display
-   * function. This function should be defined as the curl_progress_callback
-   * prototype defines. */
-  CINIT(PROGRESSFUNCTION, FUNCTIONPOINT, 56),
-
-  /* Data passed to the CURLOPT_PROGRESSFUNCTION and CURLOPT_XFERINFOFUNCTION
-     callbacks */
-  CINIT(PROGRESSDATA, OBJECTPOINT, 57),
-#define CURLOPT_XFERINFODATA CURLOPT_PROGRESSDATA
-
-  /* We want the referrer field set automatically when following locations */
-  CINIT(AUTOREFERER, LONG, 58),
-
-  /* Port of the proxy, can be set in the proxy string as well with:
-     "[host]:[port]" */
-  CINIT(PROXYPORT, LONG, 59),
-
-  /* size of the POST input data, if strlen() is not good to use */
-  CINIT(POSTFIELDSIZE, LONG, 60),
-
-  /* tunnel non-http operations through a HTTP proxy */
-  CINIT(HTTPPROXYTUNNEL, LONG, 61),
-
-  /* Set the interface string to use as outgoing network interface */
-  CINIT(INTERFACE, STRINGPOINT, 62),
-
-  /* Set the krb4/5 security level, this also enables krb4/5 awareness.  This
-   * is a string, 'clear', 'safe', 'confidential' or 'private'.  If the string
-   * is set but doesn't match one of these, 'private' will be used.  */
-  CINIT(KRBLEVEL, STRINGPOINT, 63),
-
-  /* Set if we should verify the peer in ssl handshake, set 1 to verify. */
-  CINIT(SSL_VERIFYPEER, LONG, 64),
-
-  /* The CApath or CAfile used to validate the peer certificate
-     this option is used only if SSL_VERIFYPEER is true */
-  CINIT(CAINFO, STRINGPOINT, 65),
-
-  /* 66 = OBSOLETE */
-  /* 67 = OBSOLETE */
-
-  /* Maximum number of http redirects to follow */
-  CINIT(MAXREDIRS, LONG, 68),
-
-  /* Pass a long set to 1 to get the date of the requested document (if
-     possible)! Pass a zero to shut it off. */
-  CINIT(FILETIME, LONG, 69),
-
-  /* This points to a linked list of telnet options */
-  CINIT(TELNETOPTIONS, OBJECTPOINT, 70),
-
-  /* Max amount of cached alive connections */
-  CINIT(MAXCONNECTS, LONG, 71),
-
-  CINIT(OBSOLETE72, LONG, 72), /* OBSOLETE, do not use! */
-
-  /* 73 = OBSOLETE */
-
-  /* Set to explicitly use a new connection for the upcoming transfer.
-     Do not use this unless you're absolutely sure of this, as it makes the
-     operation slower and is less friendly for the network. */
-  CINIT(FRESH_CONNECT, LONG, 74),
-
-  /* Set to explicitly forbid the upcoming transfer's connection to be re-used
-     when done. Do not use this unless you're absolutely sure of this, as it
-     makes the operation slower and is less friendly for the network. */
-  CINIT(FORBID_REUSE, LONG, 75),
-
-  /* Set to a file name that contains random data for libcurl to use to
-     seed the random engine when doing SSL connects. */
-  CINIT(RANDOM_FILE, STRINGPOINT, 76),
-
-  /* Set to the Entropy Gathering Daemon socket pathname */
-  CINIT(EGDSOCKET, STRINGPOINT, 77),
-
-  /* Time-out connect operations after this amount of seconds, if connects are
-     OK within this time, then fine... This only aborts the connect phase. */
-  CINIT(CONNECTTIMEOUT, LONG, 78),
-
-  /* Function that will be called to store headers (instead of fwrite). The
-   * parameters will use fwrite() syntax, make sure to follow them. */
-  CINIT(HEADERFUNCTION, FUNCTIONPOINT, 79),
-
-  /* Set this to force the HTTP request to get back to GET. Only really usable
-     if POST, PUT or a custom request have been used first.
-   */
-  CINIT(HTTPGET, LONG, 80),
-
-  /* Set if we should verify the Common name from the peer certificate in ssl
-   * handshake, set 1 to check existence, 2 to ensure that it matches the
-   * provided hostname. */
-  CINIT(SSL_VERIFYHOST, LONG, 81),
-
-  /* Specify which file name to write all known cookies in after completed
-     operation. Set file name to "-" (dash) to make it go to stdout. */
-  CINIT(COOKIEJAR, STRINGPOINT, 82),
-
-  /* Specify which SSL ciphers to use */
-  CINIT(SSL_CIPHER_LIST, STRINGPOINT, 83),
-
-  /* Specify which HTTP version to use! This must be set to one of the
-     CURL_HTTP_VERSION* enums set below. */
-  CINIT(HTTP_VERSION, LONG, 84),
-
-  /* Specifically switch on or off the FTP engine's use of the EPSV command. By
-     default, that one will always be attempted before the more traditional
-     PASV command. */
-  CINIT(FTP_USE_EPSV, LONG, 85),
-
-  /* type of the file keeping your SSL-certificate ("DER", "PEM", "ENG") */
-  CINIT(SSLCERTTYPE, STRINGPOINT, 86),
-
-  /* name of the file keeping your private SSL-key */
-  CINIT(SSLKEY, STRINGPOINT, 87),
-
-  /* type of the file keeping your private SSL-key ("DER", "PEM", "ENG") */
-  CINIT(SSLKEYTYPE, STRINGPOINT, 88),
-
-  /* crypto engine for the SSL-sub system */
-  CINIT(SSLENGINE, STRINGPOINT, 89),
-
-  /* set the crypto engine for the SSL-sub system as default
-     the param has no meaning...
-   */
-  CINIT(SSLENGINE_DEFAULT, LONG, 90),
-
-  /* Non-zero value means to use the global dns cache */
-  CINIT(DNS_USE_GLOBAL_CACHE, LONG, 91), /* DEPRECATED, do not use! */
-
-  /* DNS cache timeout */
-  CINIT(DNS_CACHE_TIMEOUT, LONG, 92),
-
-  /* send linked-list of pre-transfer QUOTE commands */
-  CINIT(PREQUOTE, OBJECTPOINT, 93),
-
-  /* set the debug function */
-  CINIT(DEBUGFUNCTION, FUNCTIONPOINT, 94),
-
-  /* set the data for the debug function */
-  CINIT(DEBUGDATA, OBJECTPOINT, 95),
-
-  /* mark this as start of a cookie session */
-  CINIT(COOKIESESSION, LONG, 96),
-
-  /* The CApath directory used to validate the peer certificate
-     this option is used only if SSL_VERIFYPEER is true */
-  CINIT(CAPATH, STRINGPOINT, 97),
-
-  /* Instruct libcurl to use a smaller receive buffer */
-  CINIT(BUFFERSIZE, LONG, 98),
-
-  /* Instruct libcurl to not use any signal/alarm handlers, even when using
-     timeouts. This option is useful for multi-threaded applications.
-     See libcurl-the-guide for more background information. */
-  CINIT(NOSIGNAL, LONG, 99),
-
-  /* Provide a CURLShare for mutexing non-ts data */
-  CINIT(SHARE, OBJECTPOINT, 100),
-
-  /* indicates type of proxy. accepted values are CURLPROXY_HTTP (default),
-     CURLPROXY_HTTPS, CURLPROXY_SOCKS4, CURLPROXY_SOCKS4A and
-     CURLPROXY_SOCKS5. */
-  CINIT(PROXYTYPE, LONG, 101),
-
-  /* Set the Accept-Encoding string. Use this to tell a server you would like
-     the response to be compressed. Before 7.21.6, this was known as
-     CURLOPT_ENCODING */
-  CINIT(ACCEPT_ENCODING, STRINGPOINT, 102),
-
-  /* Set pointer to private data */
-  CINIT(PRIVATE, OBJECTPOINT, 103),
-
-  /* Set aliases for HTTP 200 in the HTTP Response header */
-  CINIT(HTTP200ALIASES, OBJECTPOINT, 104),
-
-  /* Continue to send authentication (user+password) when following locations,
-     even when hostname changed. This can potentially send off the name
-     and password to whatever host the server decides. */
-  CINIT(UNRESTRICTED_AUTH, LONG, 105),
-
-  /* Specifically switch on or off the FTP engine's use of the EPRT command (
-     it also disables the LPRT attempt). By default, those ones will always be
-     attempted before the good old traditional PORT command. */
-  CINIT(FTP_USE_EPRT, LONG, 106),
-
-  /* Set this to a bitmask value to enable the particular authentications
-     methods you like. Use this in combination with CURLOPT_USERPWD.
-     Note that setting multiple bits may cause extra network round-trips. */
-  CINIT(HTTPAUTH, LONG, 107),
-
-  /* Set the ssl context callback function, currently only for OpenSSL or
-     WolfSSL ssl_ctx, or mbedTLS mbedtls_ssl_config in the second argument.
-     The function must match the curl_ssl_ctx_callback prototype. */
-  CINIT(SSL_CTX_FUNCTION, FUNCTIONPOINT, 108),
-
-  /* Set the userdata for the ssl context callback function's third
-     argument */
-  CINIT(SSL_CTX_DATA, OBJECTPOINT, 109),
-
-  /* FTP Option that causes missing dirs to be created on the remote server.
-     In 7.19.4 we introduced the convenience enums for this option using the
-     CURLFTP_CREATE_DIR prefix.
-  */
-  CINIT(FTP_CREATE_MISSING_DIRS, LONG, 110),
-
-  /* Set this to a bitmask value to enable the particular authentications
-     methods you like. Use this in combination with CURLOPT_PROXYUSERPWD.
-     Note that setting multiple bits may cause extra network round-trips. */
-  CINIT(PROXYAUTH, LONG, 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. */
-  CINIT(FTP_RESPONSE_TIMEOUT, LONG, 112),
-#define CURLOPT_SERVER_RESPONSE_TIMEOUT CURLOPT_FTP_RESPONSE_TIMEOUT
-
-  /* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to
-     tell libcurl to resolve names to those IP versions only. This only has
-     affect on systems with support for more than one, i.e IPv4 _and_ IPv6. */
-  CINIT(IPRESOLVE, LONG, 113),
-
-  /* Set this option to limit the size of a file that will be downloaded from
-     an HTTP or FTP server.
-
-     Note there is also _LARGE version which adds large file support for
-     platforms which have larger off_t sizes.  See MAXFILESIZE_LARGE below. */
-  CINIT(MAXFILESIZE, LONG, 114),
-
-  /* See the comment for INFILESIZE above, but in short, specifies
-   * the size of the file being uploaded.  -1 means unknown.
-   */
-  CINIT(INFILESIZE_LARGE, OFF_T, 115),
-
-  /* Sets the continuation offset.  There is also a LONG version of this;
-   * look above for RESUME_FROM.
-   */
-  CINIT(RESUME_FROM_LARGE, OFF_T, 116),
-
-  /* Sets the maximum size of data that will be downloaded from
-   * an HTTP or FTP server.  See MAXFILESIZE above for the LONG version.
-   */
-  CINIT(MAXFILESIZE_LARGE, OFF_T, 117),
-
-  /* Set this option to the file name of your .netrc file you want libcurl
-     to parse (using the CURLOPT_NETRC option). If not set, libcurl will do
-     a poor attempt to find the user's home directory and check for a .netrc
-     file in there. */
-  CINIT(NETRC_FILE, STRINGPOINT, 118),
-
-  /* Enable SSL/TLS for FTP, pick one of:
-     CURLUSESSL_TRY     - try using SSL, proceed anyway otherwise
-     CURLUSESSL_CONTROL - SSL for the control connection or fail
-     CURLUSESSL_ALL     - SSL for all communication or fail
-  */
-  CINIT(USE_SSL, LONG, 119),
-
-  /* The _LARGE version of the standard POSTFIELDSIZE option */
-  CINIT(POSTFIELDSIZE_LARGE, OFF_T, 120),
-
-  /* Enable/disable the TCP Nagle algorithm */
-  CINIT(TCP_NODELAY, LONG, 121),
-
-  /* 122 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */
-  /* 123 OBSOLETE. Gone in 7.16.0 */
-  /* 124 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */
-  /* 125 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */
-  /* 126 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */
-  /* 127 OBSOLETE. Gone in 7.16.0 */
-  /* 128 OBSOLETE. Gone in 7.16.0 */
-
-  /* When FTP over SSL/TLS is selected (with CURLOPT_USE_SSL), this option
-     can be used to change libcurl's default action which is to first try
-     "AUTH SSL" and then "AUTH TLS" in this order, and proceed when a OK
-     response has been received.
-
-     Available parameters are:
-     CURLFTPAUTH_DEFAULT - let libcurl decide
-     CURLFTPAUTH_SSL     - try "AUTH SSL" first, then TLS
-     CURLFTPAUTH_TLS     - try "AUTH TLS" first, then SSL
-  */
-  CINIT(FTPSSLAUTH, LONG, 129),
-
-  CINIT(IOCTLFUNCTION, FUNCTIONPOINT, 130),
-  CINIT(IOCTLDATA, OBJECTPOINT, 131),
-
-  /* 132 OBSOLETE. Gone in 7.16.0 */
-  /* 133 OBSOLETE. Gone in 7.16.0 */
-
-  /* zero terminated string for pass on to the FTP server when asked for
-     "account" info */
-  CINIT(FTP_ACCOUNT, STRINGPOINT, 134),
-
-  /* feed cookie into cookie engine */
-  CINIT(COOKIELIST, STRINGPOINT, 135),
-
-  /* ignore Content-Length */
-  CINIT(IGNORE_CONTENT_LENGTH, LONG, 136),
-
-  /* Set to non-zero to skip the IP address received in a 227 PASV FTP server
-     response. Typically used for FTP-SSL purposes but is not restricted to
-     that. libcurl will then instead use the same IP address it used for the
-     control connection. */
-  CINIT(FTP_SKIP_PASV_IP, LONG, 137),
-
-  /* Select "file method" to use when doing FTP, see the curl_ftpmethod
-     above. */
-  CINIT(FTP_FILEMETHOD, LONG, 138),
-
-  /* Local port number to bind the socket to */
-  CINIT(LOCALPORT, LONG, 139),
-
-  /* Number of ports to try, including the first one set with LOCALPORT.
-     Thus, setting it to 1 will make no additional attempts but the first.
-  */
-  CINIT(LOCALPORTRANGE, LONG, 140),
-
-  /* no transfer, set up connection and let application use the socket by
-     extracting it with CURLINFO_LASTSOCKET */
-  CINIT(CONNECT_ONLY, LONG, 141),
-
-  /* Function that will be called to convert from the
-     network encoding (instead of using the iconv calls in libcurl) */
-  CINIT(CONV_FROM_NETWORK_FUNCTION, FUNCTIONPOINT, 142),
-
-  /* Function that will be called to convert to the
-     network encoding (instead of using the iconv calls in libcurl) */
-  CINIT(CONV_TO_NETWORK_FUNCTION, FUNCTIONPOINT, 143),
-
-  /* Function that will be called to convert from UTF8
-     (instead of using the iconv calls in libcurl)
-     Note that this is used only for SSL certificate processing */
-  CINIT(CONV_FROM_UTF8_FUNCTION, FUNCTIONPOINT, 144),
-
-  /* if the connection proceeds too quickly then need to slow it down */
-  /* limit-rate: maximum number of bytes per second to send or receive */
-  CINIT(MAX_SEND_SPEED_LARGE, OFF_T, 145),
-  CINIT(MAX_RECV_SPEED_LARGE, OFF_T, 146),
-
-  /* Pointer to command string to send if USER/PASS fails. */
-  CINIT(FTP_ALTERNATIVE_TO_USER, STRINGPOINT, 147),
-
-  /* callback function for setting socket options */
-  CINIT(SOCKOPTFUNCTION, FUNCTIONPOINT, 148),
-  CINIT(SOCKOPTDATA, OBJECTPOINT, 149),
-
-  /* set to 0 to disable session ID re-use for this transfer, default is
-     enabled (== 1) */
-  CINIT(SSL_SESSIONID_CACHE, LONG, 150),
-
-  /* allowed SSH authentication methods */
-  CINIT(SSH_AUTH_TYPES, LONG, 151),
-
-  /* Used by scp/sftp to do public/private key authentication */
-  CINIT(SSH_PUBLIC_KEYFILE, STRINGPOINT, 152),
-  CINIT(SSH_PRIVATE_KEYFILE, STRINGPOINT, 153),
-
-  /* Send CCC (Clear Command Channel) after authentication */
-  CINIT(FTP_SSL_CCC, LONG, 154),
-
-  /* Same as TIMEOUT and CONNECTTIMEOUT, but with ms resolution */
-  CINIT(TIMEOUT_MS, LONG, 155),
-  CINIT(CONNECTTIMEOUT_MS, LONG, 156),
-
-  /* set to zero to disable the libcurl's decoding and thus pass the raw body
-     data to the application even when it is encoded/compressed */
-  CINIT(HTTP_TRANSFER_DECODING, LONG, 157),
-  CINIT(HTTP_CONTENT_DECODING, LONG, 158),
-
-  /* Permission used when creating new files and directories on the remote
-     server for protocols that support it, SFTP/SCP/FILE */
-  CINIT(NEW_FILE_PERMS, LONG, 159),
-  CINIT(NEW_DIRECTORY_PERMS, LONG, 160),
-
-  /* Set the behaviour of POST when redirecting. Values must be set to one
-     of CURL_REDIR* defines below. This used to be called CURLOPT_POST301 */
-  CINIT(POSTREDIR, LONG, 161),
-
-  /* used by scp/sftp to verify the host's public key */
-  CINIT(SSH_HOST_PUBLIC_KEY_MD5, STRINGPOINT, 162),
-
-  /* Callback function for opening socket (instead of socket(2)). Optionally,
-     callback is able change the address or refuse to connect returning
-     CURL_SOCKET_BAD.  The callback should have type
-     curl_opensocket_callback */
-  CINIT(OPENSOCKETFUNCTION, FUNCTIONPOINT, 163),
-  CINIT(OPENSOCKETDATA, OBJECTPOINT, 164),
-
-  /* POST volatile input fields. */
-  CINIT(COPYPOSTFIELDS, OBJECTPOINT, 165),
-
-  /* set transfer mode (;type=<a|i>) when doing FTP via an HTTP proxy */
-  CINIT(PROXY_TRANSFER_MODE, LONG, 166),
-
-  /* Callback function for seeking in the input stream */
-  CINIT(SEEKFUNCTION, FUNCTIONPOINT, 167),
-  CINIT(SEEKDATA, OBJECTPOINT, 168),
-
-  /* CRL file */
-  CINIT(CRLFILE, STRINGPOINT, 169),
-
-  /* Issuer certificate */
-  CINIT(ISSUERCERT, STRINGPOINT, 170),
-
-  /* (IPv6) Address scope */
-  CINIT(ADDRESS_SCOPE, LONG, 171),
-
-  /* Collect certificate chain info and allow it to get retrievable with
-     CURLINFO_CERTINFO after the transfer is complete. */
-  CINIT(CERTINFO, LONG, 172),
-
-  /* "name" and "pwd" to use when fetching. */
-  CINIT(USERNAME, STRINGPOINT, 173),
-  CINIT(PASSWORD, STRINGPOINT, 174),
-
-    /* "name" and "pwd" to use with Proxy when fetching. */
-  CINIT(PROXYUSERNAME, STRINGPOINT, 175),
-  CINIT(PROXYPASSWORD, STRINGPOINT, 176),
-
-  /* Comma separated list of hostnames defining no-proxy zones. These should
-     match both hostnames directly, and hostnames within a domain. For
-     example, local.com will match local.com and www.local.com, but NOT
-     notlocal.com or www.notlocal.com. For compatibility with other
-     implementations of this, .local.com will be considered to be the same as
-     local.com. A single * is the only valid wildcard, and effectively
-     disables the use of proxy. */
-  CINIT(NOPROXY, STRINGPOINT, 177),
-
-  /* block size for TFTP transfers */
-  CINIT(TFTP_BLKSIZE, LONG, 178),
-
-  /* Socks Service */
-  CINIT(SOCKS5_GSSAPI_SERVICE, STRINGPOINT, 179), /* DEPRECATED, do not use! */
-
-  /* Socks Service */
-  CINIT(SOCKS5_GSSAPI_NEC, LONG, 180),
-
-  /* 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. */
-  CINIT(PROTOCOLS, LONG, 181),
-
-  /* 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. Defaults
-     to all protocols except FILE and SCP. */
-  CINIT(REDIR_PROTOCOLS, LONG, 182),
-
-  /* set the SSH knownhost file name to use */
-  CINIT(SSH_KNOWNHOSTS, STRINGPOINT, 183),
-
-  /* set the SSH host key callback, must point to a curl_sshkeycallback
-     function */
-  CINIT(SSH_KEYFUNCTION, FUNCTIONPOINT, 184),
-
-  /* set the SSH host key callback custom pointer */
-  CINIT(SSH_KEYDATA, OBJECTPOINT, 185),
-
-  /* set the SMTP mail originator */
-  CINIT(MAIL_FROM, STRINGPOINT, 186),
-
-  /* set the list of SMTP mail receiver(s) */
-  CINIT(MAIL_RCPT, OBJECTPOINT, 187),
-
-  /* FTP: send PRET before PASV */
-  CINIT(FTP_USE_PRET, LONG, 188),
-
-  /* RTSP request method (OPTIONS, SETUP, PLAY, etc...) */
-  CINIT(RTSP_REQUEST, LONG, 189),
-
-  /* The RTSP session identifier */
-  CINIT(RTSP_SESSION_ID, STRINGPOINT, 190),
-
-  /* The RTSP stream URI */
-  CINIT(RTSP_STREAM_URI, STRINGPOINT, 191),
-
-  /* The Transport: header to use in RTSP requests */
-  CINIT(RTSP_TRANSPORT, STRINGPOINT, 192),
-
-  /* Manually initialize the client RTSP CSeq for this handle */
-  CINIT(RTSP_CLIENT_CSEQ, LONG, 193),
-
-  /* Manually initialize the server RTSP CSeq for this handle */
-  CINIT(RTSP_SERVER_CSEQ, LONG, 194),
-
-  /* The stream to pass to INTERLEAVEFUNCTION. */
-  CINIT(INTERLEAVEDATA, OBJECTPOINT, 195),
-
-  /* Let the application define a custom write method for RTP data */
-  CINIT(INTERLEAVEFUNCTION, FUNCTIONPOINT, 196),
-
-  /* Turn on wildcard matching */
-  CINIT(WILDCARDMATCH, LONG, 197),
-
-  /* Directory matching callback called before downloading of an
-     individual file (chunk) started */
-  CINIT(CHUNK_BGN_FUNCTION, FUNCTIONPOINT, 198),
-
-  /* Directory matching callback called after the file (chunk)
-     was downloaded, or skipped */
-  CINIT(CHUNK_END_FUNCTION, FUNCTIONPOINT, 199),
-
-  /* Change match (fnmatch-like) callback for wildcard matching */
-  CINIT(FNMATCH_FUNCTION, FUNCTIONPOINT, 200),
-
-  /* Let the application define custom chunk data pointer */
-  CINIT(CHUNK_DATA, OBJECTPOINT, 201),
-
-  /* FNMATCH_FUNCTION user pointer */
-  CINIT(FNMATCH_DATA, OBJECTPOINT, 202),
-
-  /* send linked-list of name:port:address sets */
-  CINIT(RESOLVE, OBJECTPOINT, 203),
-
-  /* Set a username for authenticated TLS */
-  CINIT(TLSAUTH_USERNAME, STRINGPOINT, 204),
-
-  /* Set a password for authenticated TLS */
-  CINIT(TLSAUTH_PASSWORD, STRINGPOINT, 205),
-
-  /* Set authentication type for authenticated TLS */
-  CINIT(TLSAUTH_TYPE, STRINGPOINT, 206),
-
-  /* Set to 1 to enable the "TE:" header in HTTP requests to ask for
-     compressed transfer-encoded responses. Set to 0 to disable the use of TE:
-     in outgoing requests. The current default is 0, but it might change in a
-     future libcurl release.
-
-     libcurl will ask for the compressed methods it knows of, and if that
-     isn't any, it will not ask for transfer-encoding at all even if this
-     option is set to 1.
-
-  */
-  CINIT(TRANSFER_ENCODING, LONG, 207),
-
-  /* Callback function for closing socket (instead of close(2)). The callback
-     should have type curl_closesocket_callback */
-  CINIT(CLOSESOCKETFUNCTION, FUNCTIONPOINT, 208),
-  CINIT(CLOSESOCKETDATA, OBJECTPOINT, 209),
-
-  /* allow GSSAPI credential delegation */
-  CINIT(GSSAPI_DELEGATION, LONG, 210),
-
-  /* Set the name servers to use for DNS resolution */
-  CINIT(DNS_SERVERS, STRINGPOINT, 211),
-
-  /* Time-out accept operations (currently for FTP only) after this amount
-     of milliseconds. */
-  CINIT(ACCEPTTIMEOUT_MS, LONG, 212),
-
-  /* Set TCP keepalive */
-  CINIT(TCP_KEEPALIVE, LONG, 213),
-
-  /* non-universal keepalive knobs (Linux, AIX, HP-UX, more) */
-  CINIT(TCP_KEEPIDLE, LONG, 214),
-  CINIT(TCP_KEEPINTVL, LONG, 215),
-
-  /* Enable/disable specific SSL features with a bitmask, see CURLSSLOPT_* */
-  CINIT(SSL_OPTIONS, LONG, 216),
-
-  /* Set the SMTP auth originator */
-  CINIT(MAIL_AUTH, STRINGPOINT, 217),
-
-  /* Enable/disable SASL initial response */
-  CINIT(SASL_IR, LONG, 218),
-
-  /* Function that will be called instead of the internal progress display
-   * function. This function should be defined as the curl_xferinfo_callback
-   * prototype defines. (Deprecates CURLOPT_PROGRESSFUNCTION) */
-  CINIT(XFERINFOFUNCTION, FUNCTIONPOINT, 219),
-
-  /* The XOAUTH2 bearer token */
-  CINIT(XOAUTH2_BEARER, STRINGPOINT, 220),
-
-  /* Set the interface string to use as outgoing network
-   * interface for DNS requests.
-   * Only supported by the c-ares DNS backend */
-  CINIT(DNS_INTERFACE, STRINGPOINT, 221),
-
-  /* Set the local IPv4 address to use for outgoing DNS requests.
-   * Only supported by the c-ares DNS backend */
-  CINIT(DNS_LOCAL_IP4, STRINGPOINT, 222),
-
-  /* Set the local IPv6 address to use for outgoing DNS requests.
-   * Only supported by the c-ares DNS backend */
-  CINIT(DNS_LOCAL_IP6, STRINGPOINT, 223),
-
-  /* Set authentication options directly */
-  CINIT(LOGIN_OPTIONS, STRINGPOINT, 224),
-
-  /* Enable/disable TLS NPN extension (http2 over ssl might fail without) */
-  CINIT(SSL_ENABLE_NPN, LONG, 225),
-
-  /* Enable/disable TLS ALPN extension (http2 over ssl might fail without) */
-  CINIT(SSL_ENABLE_ALPN, LONG, 226),
-
-  /* Time to wait for a response to a HTTP request containing an
-   * Expect: 100-continue header before sending the data anyway. */
-  CINIT(EXPECT_100_TIMEOUT_MS, LONG, 227),
-
-  /* This points to a linked list of headers used for proxy requests only,
-     struct curl_slist kind */
-  CINIT(PROXYHEADER, OBJECTPOINT, 228),
-
-  /* Pass in a bitmask of "header options" */
-  CINIT(HEADEROPT, LONG, 229),
-
-  /* The public key in DER form used to validate the peer public key
-     this option is used only if SSL_VERIFYPEER is true */
-  CINIT(PINNEDPUBLICKEY, STRINGPOINT, 230),
-
-  /* Path to Unix domain socket */
-  CINIT(UNIX_SOCKET_PATH, STRINGPOINT, 231),
-
-  /* Set if we should verify the certificate status. */
-  CINIT(SSL_VERIFYSTATUS, LONG, 232),
-
-  /* Set if we should enable TLS false start. */
-  CINIT(SSL_FALSESTART, LONG, 233),
-
-  /* Do not squash dot-dot sequences */
-  CINIT(PATH_AS_IS, LONG, 234),
-
-  /* Proxy Service Name */
-  CINIT(PROXY_SERVICE_NAME, STRINGPOINT, 235),
-
-  /* Service Name */
-  CINIT(SERVICE_NAME, STRINGPOINT, 236),
-
-  /* Wait/don't wait for pipe/mutex to clarify */
-  CINIT(PIPEWAIT, LONG, 237),
-
-  /* Set the protocol used when curl is given a URL without a protocol */
-  CINIT(DEFAULT_PROTOCOL, STRINGPOINT, 238),
-
-  /* Set stream weight, 1 - 256 (default is 16) */
-  CINIT(STREAM_WEIGHT, LONG, 239),
-
-  /* Set stream dependency on another CURL handle */
-  CINIT(STREAM_DEPENDS, OBJECTPOINT, 240),
-
-  /* Set E-xclusive stream dependency on another CURL handle */
-  CINIT(STREAM_DEPENDS_E, OBJECTPOINT, 241),
-
-  /* Do not send any tftp option requests to the server */
-  CINIT(TFTP_NO_OPTIONS, LONG, 242),
-
-  /* Linked-list of host:port:connect-to-host:connect-to-port,
-     overrides the URL's host:port (only for the network layer) */
-  CINIT(CONNECT_TO, OBJECTPOINT, 243),
-
-  /* Set TCP Fast Open */
-  CINIT(TCP_FASTOPEN, LONG, 244),
-
-  /* Continue to send data if the server responds early with an
-   * HTTP status code >= 300 */
-  CINIT(KEEP_SENDING_ON_ERROR, LONG, 245),
-
-  /* The CApath or CAfile used to validate the proxy certificate
-     this option is used only if PROXY_SSL_VERIFYPEER is true */
-  CINIT(PROXY_CAINFO, STRINGPOINT, 246),
-
-  /* The CApath directory used to validate the proxy certificate
-     this option is used only if PROXY_SSL_VERIFYPEER is true */
-  CINIT(PROXY_CAPATH, STRINGPOINT, 247),
-
-  /* Set if we should verify the proxy in ssl handshake,
-     set 1 to verify. */
-  CINIT(PROXY_SSL_VERIFYPEER, LONG, 248),
-
-  /* Set if we should verify the Common name from the proxy certificate in ssl
-   * handshake, set 1 to check existence, 2 to ensure that it matches
-   * the provided hostname. */
-  CINIT(PROXY_SSL_VERIFYHOST, LONG, 249),
-
-  /* What version to specifically try to use for proxy.
-     See CURL_SSLVERSION defines below. */
-  CINIT(PROXY_SSLVERSION, LONG, 250),
-
-  /* Set a username for authenticated TLS for proxy */
-  CINIT(PROXY_TLSAUTH_USERNAME, STRINGPOINT, 251),
-
-  /* Set a password for authenticated TLS for proxy */
-  CINIT(PROXY_TLSAUTH_PASSWORD, STRINGPOINT, 252),
-
-  /* Set authentication type for authenticated TLS for proxy */
-  CINIT(PROXY_TLSAUTH_TYPE, STRINGPOINT, 253),
-
-  /* name of the file keeping your private SSL-certificate for proxy */
-  CINIT(PROXY_SSLCERT, STRINGPOINT, 254),
-
-  /* type of the file keeping your SSL-certificate ("DER", "PEM", "ENG") for
-     proxy */
-  CINIT(PROXY_SSLCERTTYPE, STRINGPOINT, 255),
-
-  /* name of the file keeping your private SSL-key for proxy */
-  CINIT(PROXY_SSLKEY, STRINGPOINT, 256),
-
-  /* type of the file keeping your private SSL-key ("DER", "PEM", "ENG") for
-     proxy */
-  CINIT(PROXY_SSLKEYTYPE, STRINGPOINT, 257),
-
-  /* password for the SSL private key for proxy */
-  CINIT(PROXY_KEYPASSWD, STRINGPOINT, 258),
-
-  /* Specify which SSL ciphers to use for proxy */
-  CINIT(PROXY_SSL_CIPHER_LIST, STRINGPOINT, 259),
-
-  /* CRL file for proxy */
-  CINIT(PROXY_CRLFILE, STRINGPOINT, 260),
-
-  /* Enable/disable specific SSL features with a bitmask for proxy, see
-     CURLSSLOPT_* */
-  CINIT(PROXY_SSL_OPTIONS, LONG, 261),
-
-  /* Name of pre proxy to use. */
-  CINIT(PRE_PROXY, STRINGPOINT, 262),
-
-  /* The public key in DER form used to validate the proxy public key
-     this option is used only if PROXY_SSL_VERIFYPEER is true */
-  CINIT(PROXY_PINNEDPUBLICKEY, STRINGPOINT, 263),
-
-  /* Path to an abstract Unix domain socket */
-  CINIT(ABSTRACT_UNIX_SOCKET, STRINGPOINT, 264),
-
-  /* Suppress proxy CONNECT response headers from user callbacks */
-  CINIT(SUPPRESS_CONNECT_HEADERS, LONG, 265),
-
-  /* The request target, instead of extracted from the URL */
-  CINIT(REQUEST_TARGET, STRINGPOINT, 266),
-
-  /* bitmask of allowed auth methods for connections to SOCKS5 proxies */
-  CINIT(SOCKS5_AUTH, LONG, 267),
-
-  /* Enable/disable SSH compression */
-  CINIT(SSH_COMPRESSION, LONG, 268),
-
-  /* Post MIME data. */
-  CINIT(MIMEPOST, OBJECTPOINT, 269),
-
-  /* Time to use with the CURLOPT_TIMECONDITION. Specified in number of
-     seconds since 1 Jan 1970. */
-  CINIT(TIMEVALUE_LARGE, OFF_T, 270),
-
-  /* Head start in milliseconds to give happy eyeballs. */
-  CINIT(HAPPY_EYEBALLS_TIMEOUT_MS, LONG, 271),
-
-  /* Function that will be called before a resolver request is made */
-  CINIT(RESOLVER_START_FUNCTION, FUNCTIONPOINT, 272),
-
-  /* User data to pass to the resolver start callback. */
-  CINIT(RESOLVER_START_DATA, OBJECTPOINT, 273),
-
-  /* send HAProxy PROXY protocol header? */
-  CINIT(HAPROXYPROTOCOL, LONG, 274),
-
-  /* shuffle addresses before use when DNS returns multiple */
-  CINIT(DNS_SHUFFLE_ADDRESSES, LONG, 275),
-
-  /* Specify which TLS 1.3 ciphers suites to use */
-  CINIT(TLS13_CIPHERS, STRINGPOINT, 276),
-  CINIT(PROXY_TLS13_CIPHERS, STRINGPOINT, 277),
-
-  /* Disallow specifying username/login in URL. */
-  CINIT(DISALLOW_USERNAME_IN_URL, LONG, 278),
-
-  /* DNS-over-HTTPS URL */
-  CINIT(DOH_URL, STRINGPOINT, 279),
-
-  /* Preferred buffer size to use for uploads */
-  CINIT(UPLOAD_BUFFERSIZE, LONG, 280),
-
-  /* Time in ms between connection upkeep calls for long-lived connections. */
-  CINIT(UPKEEP_INTERVAL_MS, LONG, 281),
-
-  /* Specify URL using CURL URL API. */
-  CINIT(CURLU, OBJECTPOINT, 282),
-
-  /* add trailing data just after no more data is available */
-  CINIT(TRAILERFUNCTION, FUNCTIONPOINT, 283),
-
-  /* pointer to be passed to HTTP_TRAILER_FUNCTION */
-  CINIT(TRAILERDATA, OBJECTPOINT, 284),
-
-  /* set this to 1L to allow HTTP/0.9 responses or 0L to disallow */
-  CINIT(HTTP09_ALLOWED, LONG, 285),
-
-  /* alt-svc control bitmask */
-  CINIT(ALTSVC_CTRL, LONG, 286),
-
-  /* alt-svc cache file name to possibly read from/write to */
-  CINIT(ALTSVC, STRINGPOINT, 287),
-
-  /* maximum age of a connection to consider it for reuse (in seconds) */
-  CINIT(MAXAGE_CONN, LONG, 288),
-
-  CURLOPT_LASTENTRY /* the last unused */
-} CURLoption;
-
-#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
-                          the obsolete stuff removed! */
-
-/* Backwards compatibility with older names */
-/* These are scheduled to disappear by 2011 */
-
-/* This was added in version 7.19.1 */
-#define CURLOPT_POST301 CURLOPT_POSTREDIR
-
-/* These are scheduled to disappear by 2009 */
-
-/* The following were added in 7.17.0 */
-#define CURLOPT_SSLKEYPASSWD CURLOPT_KEYPASSWD
-#define CURLOPT_FTPAPPEND CURLOPT_APPEND
-#define CURLOPT_FTPLISTONLY CURLOPT_DIRLISTONLY
-#define CURLOPT_FTP_SSL CURLOPT_USE_SSL
-
-/* The following were added earlier */
-
-#define CURLOPT_SSLCERTPASSWD CURLOPT_KEYPASSWD
-#define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL
-
-#else
-/* This is set if CURL_NO_OLDIES is defined at compile-time */
-#undef CURLOPT_DNS_USE_GLOBAL_CACHE /* soon obsolete */
-#endif
-
-
-  /* Below here follows defines for the CURLOPT_IPRESOLVE option. If a host
-     name resolves addresses using more than one IP protocol version, this
-     option might be handy to force libcurl to use a specific IP version. */
-#define CURL_IPRESOLVE_WHATEVER 0 /* default, resolves addresses to all IP
-                                     versions that your system allows */
-#define CURL_IPRESOLVE_V4       1 /* resolve to IPv4 addresses */
-#define CURL_IPRESOLVE_V6       2 /* resolve to IPv6 addresses */
-
-  /* three convenient "aliases" that follow the name scheme better */
-#define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER
-
-  /* These enums are for use with the CURLOPT_HTTP_VERSION option. */
-enum {
-  CURL_HTTP_VERSION_NONE, /* setting this means we don't care, and that we'd
-                             like the library to choose the best possible
-                             for us! */
-  CURL_HTTP_VERSION_1_0,  /* please use HTTP 1.0 in the request */
-  CURL_HTTP_VERSION_1_1,  /* please use HTTP 1.1 in the request */
-  CURL_HTTP_VERSION_2_0,  /* please use HTTP 2 in the request */
-  CURL_HTTP_VERSION_2TLS, /* use version 2 for HTTPS, version 1.1 for HTTP */
-  CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE,  /* please use HTTP 2 without HTTP/1.1
-                                           Upgrade */
-
-  CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */
-};
-
-/* Convenience definition simple because the name of the version is HTTP/2 and
-   not 2.0. The 2_0 version of the enum name was set while the version was
-   still planned to be 2.0 and we stick to it for compatibility. */
-#define CURL_HTTP_VERSION_2 CURL_HTTP_VERSION_2_0
-
-/*
- * Public API enums for RTSP requests
- */
-enum {
-    CURL_RTSPREQ_NONE, /* first in list */
-    CURL_RTSPREQ_OPTIONS,
-    CURL_RTSPREQ_DESCRIBE,
-    CURL_RTSPREQ_ANNOUNCE,
-    CURL_RTSPREQ_SETUP,
-    CURL_RTSPREQ_PLAY,
-    CURL_RTSPREQ_PAUSE,
-    CURL_RTSPREQ_TEARDOWN,
-    CURL_RTSPREQ_GET_PARAMETER,
-    CURL_RTSPREQ_SET_PARAMETER,
-    CURL_RTSPREQ_RECORD,
-    CURL_RTSPREQ_RECEIVE,
-    CURL_RTSPREQ_LAST /* last in list */
-};
-
-  /* These enums are for use with the CURLOPT_NETRC option. */
-enum CURL_NETRC_OPTION {
-  CURL_NETRC_IGNORED,     /* The .netrc will never be read.
-                           * This is the default. */
-  CURL_NETRC_OPTIONAL,    /* A user:password in the URL will be preferred
-                           * to one in the .netrc. */
-  CURL_NETRC_REQUIRED,    /* A user:password in the URL will be ignored.
-                           * Unless one is set programmatically, the .netrc
-                           * will be queried. */
-  CURL_NETRC_LAST
-};
-
-enum {
-  CURL_SSLVERSION_DEFAULT,
-  CURL_SSLVERSION_TLSv1, /* TLS 1.x */
-  CURL_SSLVERSION_SSLv2,
-  CURL_SSLVERSION_SSLv3,
-  CURL_SSLVERSION_TLSv1_0,
-  CURL_SSLVERSION_TLSv1_1,
-  CURL_SSLVERSION_TLSv1_2,
-  CURL_SSLVERSION_TLSv1_3,
-
-  CURL_SSLVERSION_LAST /* never use, keep last */
-};
-
-enum {
-  CURL_SSLVERSION_MAX_NONE =     0,
-  CURL_SSLVERSION_MAX_DEFAULT =  (CURL_SSLVERSION_TLSv1   << 16),
-  CURL_SSLVERSION_MAX_TLSv1_0 =  (CURL_SSLVERSION_TLSv1_0 << 16),
-  CURL_SSLVERSION_MAX_TLSv1_1 =  (CURL_SSLVERSION_TLSv1_1 << 16),
-  CURL_SSLVERSION_MAX_TLSv1_2 =  (CURL_SSLVERSION_TLSv1_2 << 16),
-  CURL_SSLVERSION_MAX_TLSv1_3 =  (CURL_SSLVERSION_TLSv1_3 << 16),
-
-  /* never use, keep last */
-  CURL_SSLVERSION_MAX_LAST =     (CURL_SSLVERSION_LAST    << 16)
-};
-
-enum CURL_TLSAUTH {
-  CURL_TLSAUTH_NONE,
-  CURL_TLSAUTH_SRP,
-  CURL_TLSAUTH_LAST /* never use, keep last */
-};
-
-/* symbols to use with CURLOPT_POSTREDIR.
-   CURL_REDIR_POST_301, CURL_REDIR_POST_302 and CURL_REDIR_POST_303
-   can be bitwise ORed so that CURL_REDIR_POST_301 | CURL_REDIR_POST_302
-   | CURL_REDIR_POST_303 == CURL_REDIR_POST_ALL */
-
-#define CURL_REDIR_GET_ALL  0
-#define CURL_REDIR_POST_301 1
-#define CURL_REDIR_POST_302 2
-#define CURL_REDIR_POST_303 4
-#define CURL_REDIR_POST_ALL \
-    (CURL_REDIR_POST_301|CURL_REDIR_POST_302|CURL_REDIR_POST_303)
-
-typedef enum {
-  CURL_TIMECOND_NONE,
-
-  CURL_TIMECOND_IFMODSINCE,
-  CURL_TIMECOND_IFUNMODSINCE,
-  CURL_TIMECOND_LASTMOD,
-
-  CURL_TIMECOND_LAST
-} curl_TimeCond;
-
-/* Special size_t value signaling a zero-terminated string. */
-#define CURL_ZERO_TERMINATED ((size_t) -1)
-
-/* curl_strequal() and curl_strnequal() are subject for removal in a future
-   release */
-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);
-
-/* Mime/form handling support. */
-typedef struct curl_mime_s      curl_mime;      /* Mime context. */
-typedef struct curl_mimepart_s  curl_mimepart;  /* Mime part context. */
-
-/*
- * NAME curl_mime_init()
- *
- * DESCRIPTION
- *
- * Create a mime context and return its handle. The easy parameter is the
- * target handle.
- */
-CURL_EXTERN curl_mime *curl_mime_init(CURL *easy);
-
-/*
- * NAME curl_mime_free()
- *
- * DESCRIPTION
- *
- * release a mime handle and its substructures.
- */
-CURL_EXTERN void curl_mime_free(curl_mime *mime);
-
-/*
- * NAME curl_mime_addpart()
- *
- * DESCRIPTION
- *
- * Append a new empty part to the given mime context and return a handle to
- * the created part.
- */
-CURL_EXTERN curl_mimepart *curl_mime_addpart(curl_mime *mime);
-
-/*
- * NAME curl_mime_name()
- *
- * DESCRIPTION
- *
- * Set mime/form part name.
- */
-CURL_EXTERN CURLcode curl_mime_name(curl_mimepart *part, const char *name);
-
-/*
- * NAME curl_mime_filename()
- *
- * DESCRIPTION
- *
- * Set mime part remote file name.
- */
-CURL_EXTERN CURLcode curl_mime_filename(curl_mimepart *part,
-                                        const char *filename);
-
-/*
- * NAME curl_mime_type()
- *
- * DESCRIPTION
- *
- * Set mime part type.
- */
-CURL_EXTERN CURLcode curl_mime_type(curl_mimepart *part, const char *mimetype);
-
-/*
- * NAME curl_mime_encoder()
- *
- * DESCRIPTION
- *
- * Set mime data transfer encoder.
- */
-CURL_EXTERN CURLcode curl_mime_encoder(curl_mimepart *part,
-                                       const char *encoding);
-
-/*
- * NAME curl_mime_data()
- *
- * DESCRIPTION
- *
- * Set mime part data source from memory data,
- */
-CURL_EXTERN CURLcode curl_mime_data(curl_mimepart *part,
-                                    const char *data, size_t datasize);
-
-/*
- * NAME curl_mime_filedata()
- *
- * DESCRIPTION
- *
- * Set mime part data source from named file.
- */
-CURL_EXTERN CURLcode curl_mime_filedata(curl_mimepart *part,
-                                        const char *filename);
-
-/*
- * NAME curl_mime_data_cb()
- *
- * DESCRIPTION
- *
- * Set mime part data source from callback function.
- */
-CURL_EXTERN CURLcode curl_mime_data_cb(curl_mimepart *part,
-                                       curl_off_t datasize,
-                                       curl_read_callback readfunc,
-                                       curl_seek_callback seekfunc,
-                                       curl_free_callback freefunc,
-                                       void *arg);
-
-/*
- * NAME curl_mime_subparts()
- *
- * DESCRIPTION
- *
- * Set mime part data source from subparts.
- */
-CURL_EXTERN CURLcode curl_mime_subparts(curl_mimepart *part,
-                                        curl_mime *subparts);
-/*
- * NAME curl_mime_headers()
- *
- * DESCRIPTION
- *
- * Set mime part headers.
- */
-CURL_EXTERN CURLcode curl_mime_headers(curl_mimepart *part,
-                                       struct curl_slist *headers,
-                                       int take_ownership);
-
-/* Old form API. */
-/* name is uppercase CURLFORM_<name> */
-#ifdef CFINIT
-#undef CFINIT
-#endif
-
-#ifdef CURL_ISOCPP
-#define CFINIT(name) CURLFORM_ ## name
-#else
-/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
-#define CFINIT(name) CURLFORM_/**/name
-#endif
-
-typedef enum {
-  CFINIT(NOTHING),        /********* the first one is unused ************/
-
-  /*  */
-  CFINIT(COPYNAME),
-  CFINIT(PTRNAME),
-  CFINIT(NAMELENGTH),
-  CFINIT(COPYCONTENTS),
-  CFINIT(PTRCONTENTS),
-  CFINIT(CONTENTSLENGTH),
-  CFINIT(FILECONTENT),
-  CFINIT(ARRAY),
-  CFINIT(OBSOLETE),
-  CFINIT(FILE),
-
-  CFINIT(BUFFER),
-  CFINIT(BUFFERPTR),
-  CFINIT(BUFFERLENGTH),
-
-  CFINIT(CONTENTTYPE),
-  CFINIT(CONTENTHEADER),
-  CFINIT(FILENAME),
-  CFINIT(END),
-  CFINIT(OBSOLETE2),
-
-  CFINIT(STREAM),
-  CFINIT(CONTENTLEN), /* added in 7.46.0, provide a curl_off_t length */
-
-  CURLFORM_LASTENTRY /* the last unused */
-} CURLformoption;
-
-#undef CFINIT /* done */
-
-/* structure to be used as parameter for CURLFORM_ARRAY */
-struct curl_forms {
-  CURLformoption option;
-  const char     *value;
-};
-
-/* use this for multipart formpost building */
-/* Returns code for curl_formadd()
- *
- * Returns:
- * CURL_FORMADD_OK             on success
- * CURL_FORMADD_MEMORY         if the FormInfo allocation fails
- * CURL_FORMADD_OPTION_TWICE   if one option is given twice for one Form
- * CURL_FORMADD_NULL           if a null pointer was given for a char
- * CURL_FORMADD_MEMORY         if the allocation of a FormInfo struct failed
- * CURL_FORMADD_UNKNOWN_OPTION if an unknown option was used
- * CURL_FORMADD_INCOMPLETE     if the some FormInfo is not complete (or error)
- * CURL_FORMADD_MEMORY         if a curl_httppost struct cannot be allocated
- * CURL_FORMADD_MEMORY         if some allocation for string copying failed.
- * CURL_FORMADD_ILLEGAL_ARRAY  if an illegal option is used in an array
- *
- ***************************************************************************/
-typedef enum {
-  CURL_FORMADD_OK, /* first, no error */
-
-  CURL_FORMADD_MEMORY,
-  CURL_FORMADD_OPTION_TWICE,
-  CURL_FORMADD_NULL,
-  CURL_FORMADD_UNKNOWN_OPTION,
-  CURL_FORMADD_INCOMPLETE,
-  CURL_FORMADD_ILLEGAL_ARRAY,
-  CURL_FORMADD_DISABLED, /* libcurl was built with this disabled */
-
-  CURL_FORMADD_LAST /* last */
-} CURLFORMcode;
-
-/*
- * NAME curl_formadd()
- *
- * DESCRIPTION
- *
- * Pretty advanced function for building multi-part formposts. Each invoke
- * adds one part that together construct a full post. Then use
- * CURLOPT_HTTPPOST to send it off to libcurl.
- */
-CURL_EXTERN CURLFORMcode curl_formadd(struct curl_httppost **httppost,
-                                      struct curl_httppost **last_post,
-                                      ...);
-
-/*
- * callback function for curl_formget()
- * The void *arg pointer will be the one passed as second argument to
- *   curl_formget().
- * The character buffer passed to it must not be freed.
- * Should return the buffer length passed to it as the argument "len" on
- *   success.
- */
-typedef size_t (*curl_formget_callback)(void *arg, const char *buf,
-                                        size_t len);
-
-/*
- * NAME curl_formget()
- *
- * DESCRIPTION
- *
- * Serialize a curl_httppost struct built with curl_formadd().
- * Accepts a void pointer as second argument which will be passed to
- * the curl_formget_callback function.
- * Returns 0 on success.
- */
-CURL_EXTERN int curl_formget(struct curl_httppost *form, void *arg,
-                             curl_formget_callback append);
-/*
- * NAME curl_formfree()
- *
- * DESCRIPTION
- *
- * Free a multipart formpost previously built with curl_formadd().
- */
-CURL_EXTERN void curl_formfree(struct curl_httppost *form);
-
-/*
- * NAME curl_getenv()
- *
- * DESCRIPTION
- *
- * Returns a malloc()'ed string that MUST be curl_free()ed after usage is
- * complete. DEPRECATED - see lib/README.curlx
- */
-CURL_EXTERN char *curl_getenv(const char *variable);
-
-/*
- * NAME curl_version()
- *
- * DESCRIPTION
- *
- * Returns a static ascii string of the libcurl version.
- */
-CURL_EXTERN char *curl_version(void);
-
-/*
- * NAME curl_easy_escape()
- *
- * DESCRIPTION
- *
- * Escapes URL strings (converts all letters consider illegal in URLs to their
- * %XX versions). This function returns a new allocated string or NULL if an
- * error occurred.
- */
-CURL_EXTERN char *curl_easy_escape(CURL *handle,
-                                   const char *string,
-                                   int length);
-
-/* the previous version: */
-CURL_EXTERN char *curl_escape(const char *string,
-                              int length);
-
-
-/*
- * NAME curl_easy_unescape()
- *
- * DESCRIPTION
- *
- * Unescapes URL encoding in strings (converts all %XX codes to their 8bit
- * versions). This function returns a new allocated string or NULL if an error
- * occurred.
- * Conversion Note: On non-ASCII platforms the ASCII %XX codes are
- * converted into the host encoding.
- */
-CURL_EXTERN char *curl_easy_unescape(CURL *handle,
-                                     const char *string,
-                                     int length,
-                                     int *outlength);
-
-/* the previous version */
-CURL_EXTERN char *curl_unescape(const char *string,
-                                int length);
-
-/*
- * NAME curl_free()
- *
- * DESCRIPTION
- *
- * Provided for de-allocation in the same translation unit that did the
- * allocation. Added in libcurl 7.10
- */
-CURL_EXTERN void curl_free(void *p);
-
-/*
- * NAME curl_global_init()
- *
- * DESCRIPTION
- *
- * 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!
- */
-CURL_EXTERN CURLcode curl_global_init(long flags);
-
-/*
- * NAME curl_global_init_mem()
- *
- * DESCRIPTION
- *
- * curl_global_init() or curl_global_init_mem() should be invoked exactly once
- * for each application that uses libcurl.  This function can be used to
- * initialize libcurl and set user defined memory management callback
- * functions.  Users can implement memory management routines to check for
- * memory leaks, check for mis-use of the curl library etc.  User registered
- * callback routines with be invoked by this library instead of the system
- * memory management routines like malloc, free etc.
- */
-CURL_EXTERN 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);
-
-/*
- * NAME curl_global_cleanup()
- *
- * DESCRIPTION
- *
- * curl_global_cleanup() should be invoked exactly once for each application
- * that uses libcurl
- */
-CURL_EXTERN void curl_global_cleanup(void);
-
-/* linked-list structure for the CURLOPT_QUOTE option (and other) */
-struct curl_slist {
-  char *data;
-  struct curl_slist *next;
-};
-
-/*
- * NAME curl_global_sslset()
- *
- * DESCRIPTION
- *
- * When built with multiple SSL backends, curl_global_sslset() allows to
- * choose one. This function can only be called once, and it must be called
- * *before* curl_global_init().
- *
- * The backend can be identified by the id (e.g. CURLSSLBACKEND_OPENSSL). The
- * backend can also be specified via the name parameter (passing -1 as id).
- * If both id and name are specified, the name will be ignored. If neither id
- * nor name are specified, the function will fail with
- * CURLSSLSET_UNKNOWN_BACKEND and set the "avail" pointer to the
- * NULL-terminated list of available backends.
- *
- * Upon success, the function returns CURLSSLSET_OK.
- *
- * If the specified SSL backend is not available, the function returns
- * CURLSSLSET_UNKNOWN_BACKEND and sets the "avail" pointer to a NULL-terminated
- * list of available SSL backends.
- *
- * The SSL backend can be set only once. If it has already been set, a
- * subsequent attempt to change it will result in a CURLSSLSET_TOO_LATE.
- */
-
-typedef struct {
-  curl_sslbackend id;
-  const char *name;
-} curl_ssl_backend;
-
-typedef enum {
-  CURLSSLSET_OK = 0,
-  CURLSSLSET_UNKNOWN_BACKEND,
-  CURLSSLSET_TOO_LATE,
-  CURLSSLSET_NO_BACKENDS /* libcurl was built without any SSL support */
-} CURLsslset;
-
-CURL_EXTERN CURLsslset curl_global_sslset(curl_sslbackend id, const char *name,
-                                          const curl_ssl_backend ***avail);
-
-/*
- * NAME curl_slist_append()
- *
- * DESCRIPTION
- *
- * Appends a string to a linked list. If no list exists, it will be created
- * first. Returns the new list, after appending.
- */
-CURL_EXTERN struct curl_slist *curl_slist_append(struct curl_slist *,
-                                                 const char *);
-
-/*
- * NAME curl_slist_free_all()
- *
- * DESCRIPTION
- *
- * free a previously built curl_slist.
- */
-CURL_EXTERN void curl_slist_free_all(struct curl_slist *);
-
-/*
- * NAME curl_getdate()
- *
- * DESCRIPTION
- *
- * Returns the time, in seconds since 1 Jan 1970 of the time string given in
- * the first argument. The time argument in the second parameter is unused
- * and should be set to NULL.
- */
-CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused);
-
-/* info about the certificate chain, only for OpenSSL, GnuTLS, Schannel, NSS
-   and GSKit builds. Asked for with CURLOPT_CERTINFO / CURLINFO_CERTINFO */
-struct curl_certinfo {
-  int num_of_certs;             /* number of certificates with information */
-  struct curl_slist **certinfo; /* for each index in this array, there's a
-                                   linked list with textual information in the
-                                   format "name: value" */
-};
-
-/* Information about the SSL library used and the respective internal SSL
-   handle, which can be used to obtain further information regarding the
-   connection. Asked for with CURLINFO_TLS_SSL_PTR or CURLINFO_TLS_SESSION. */
-struct curl_tlssessioninfo {
-  curl_sslbackend backend;
-  void *internals;
-};
-
-#define CURLINFO_STRING   0x100000
-#define CURLINFO_LONG     0x200000
-#define CURLINFO_DOUBLE   0x300000
-#define CURLINFO_SLIST    0x400000
-#define CURLINFO_PTR      0x400000 /* same as SLIST */
-#define CURLINFO_SOCKET   0x500000
-#define CURLINFO_OFF_T    0x600000
-#define CURLINFO_MASK     0x0fffff
-#define CURLINFO_TYPEMASK 0xf00000
-
-typedef enum {
-  CURLINFO_NONE, /* first, never use this */
-  CURLINFO_EFFECTIVE_URL    = CURLINFO_STRING + 1,
-  CURLINFO_RESPONSE_CODE    = CURLINFO_LONG   + 2,
-  CURLINFO_TOTAL_TIME       = CURLINFO_DOUBLE + 3,
-  CURLINFO_NAMELOOKUP_TIME  = CURLINFO_DOUBLE + 4,
-  CURLINFO_CONNECT_TIME     = CURLINFO_DOUBLE + 5,
-  CURLINFO_PRETRANSFER_TIME = CURLINFO_DOUBLE + 6,
-  CURLINFO_SIZE_UPLOAD      = CURLINFO_DOUBLE + 7,
-  CURLINFO_SIZE_UPLOAD_T    = CURLINFO_OFF_T  + 7,
-  CURLINFO_SIZE_DOWNLOAD    = CURLINFO_DOUBLE + 8,
-  CURLINFO_SIZE_DOWNLOAD_T  = CURLINFO_OFF_T  + 8,
-  CURLINFO_SPEED_DOWNLOAD   = CURLINFO_DOUBLE + 9,
-  CURLINFO_SPEED_DOWNLOAD_T = CURLINFO_OFF_T  + 9,
-  CURLINFO_SPEED_UPLOAD     = CURLINFO_DOUBLE + 10,
-  CURLINFO_SPEED_UPLOAD_T   = CURLINFO_OFF_T  + 10,
-  CURLINFO_HEADER_SIZE      = CURLINFO_LONG   + 11,
-  CURLINFO_REQUEST_SIZE     = CURLINFO_LONG   + 12,
-  CURLINFO_SSL_VERIFYRESULT = CURLINFO_LONG   + 13,
-  CURLINFO_FILETIME         = CURLINFO_LONG   + 14,
-  CURLINFO_FILETIME_T       = CURLINFO_OFF_T  + 14,
-  CURLINFO_CONTENT_LENGTH_DOWNLOAD   = CURLINFO_DOUBLE + 15,
-  CURLINFO_CONTENT_LENGTH_DOWNLOAD_T = CURLINFO_OFF_T  + 15,
-  CURLINFO_CONTENT_LENGTH_UPLOAD     = CURLINFO_DOUBLE + 16,
-  CURLINFO_CONTENT_LENGTH_UPLOAD_T   = CURLINFO_OFF_T  + 16,
-  CURLINFO_STARTTRANSFER_TIME = CURLINFO_DOUBLE + 17,
-  CURLINFO_CONTENT_TYPE     = CURLINFO_STRING + 18,
-  CURLINFO_REDIRECT_TIME    = CURLINFO_DOUBLE + 19,
-  CURLINFO_REDIRECT_COUNT   = CURLINFO_LONG   + 20,
-  CURLINFO_PRIVATE          = CURLINFO_STRING + 21,
-  CURLINFO_HTTP_CONNECTCODE = CURLINFO_LONG   + 22,
-  CURLINFO_HTTPAUTH_AVAIL   = CURLINFO_LONG   + 23,
-  CURLINFO_PROXYAUTH_AVAIL  = CURLINFO_LONG   + 24,
-  CURLINFO_OS_ERRNO         = CURLINFO_LONG   + 25,
-  CURLINFO_NUM_CONNECTS     = CURLINFO_LONG   + 26,
-  CURLINFO_SSL_ENGINES      = CURLINFO_SLIST  + 27,
-  CURLINFO_COOKIELIST       = CURLINFO_SLIST  + 28,
-  CURLINFO_LASTSOCKET       = CURLINFO_LONG   + 29,
-  CURLINFO_FTP_ENTRY_PATH   = CURLINFO_STRING + 30,
-  CURLINFO_REDIRECT_URL     = CURLINFO_STRING + 31,
-  CURLINFO_PRIMARY_IP       = CURLINFO_STRING + 32,
-  CURLINFO_APPCONNECT_TIME  = CURLINFO_DOUBLE + 33,
-  CURLINFO_CERTINFO         = CURLINFO_PTR    + 34,
-  CURLINFO_CONDITION_UNMET  = CURLINFO_LONG   + 35,
-  CURLINFO_RTSP_SESSION_ID  = CURLINFO_STRING + 36,
-  CURLINFO_RTSP_CLIENT_CSEQ = CURLINFO_LONG   + 37,
-  CURLINFO_RTSP_SERVER_CSEQ = CURLINFO_LONG   + 38,
-  CURLINFO_RTSP_CSEQ_RECV   = CURLINFO_LONG   + 39,
-  CURLINFO_PRIMARY_PORT     = CURLINFO_LONG   + 40,
-  CURLINFO_LOCAL_IP         = CURLINFO_STRING + 41,
-  CURLINFO_LOCAL_PORT       = CURLINFO_LONG   + 42,
-  CURLINFO_TLS_SESSION      = CURLINFO_PTR    + 43,
-  CURLINFO_ACTIVESOCKET     = CURLINFO_SOCKET + 44,
-  CURLINFO_TLS_SSL_PTR      = CURLINFO_PTR    + 45,
-  CURLINFO_HTTP_VERSION     = CURLINFO_LONG   + 46,
-  CURLINFO_PROXY_SSL_VERIFYRESULT = CURLINFO_LONG + 47,
-  CURLINFO_PROTOCOL         = CURLINFO_LONG   + 48,
-  CURLINFO_SCHEME           = CURLINFO_STRING + 49,
-  /* Fill in new entries below here! */
-
-  /* Preferably these would be defined conditionally based on the
-     sizeof curl_off_t being 64-bits */
-  CURLINFO_TOTAL_TIME_T     = CURLINFO_OFF_T + 50,
-  CURLINFO_NAMELOOKUP_TIME_T = CURLINFO_OFF_T + 51,
-  CURLINFO_CONNECT_TIME_T   = CURLINFO_OFF_T + 52,
-  CURLINFO_PRETRANSFER_TIME_T = CURLINFO_OFF_T + 53,
-  CURLINFO_STARTTRANSFER_TIME_T = CURLINFO_OFF_T + 54,
-  CURLINFO_REDIRECT_TIME_T  = CURLINFO_OFF_T + 55,
-  CURLINFO_APPCONNECT_TIME_T = CURLINFO_OFF_T + 56,
-
-  CURLINFO_LASTONE          = 56
-} CURLINFO;
-
-/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as
-   CURLINFO_HTTP_CODE */
-#define CURLINFO_HTTP_CODE CURLINFO_RESPONSE_CODE
-
-typedef enum {
-  CURLCLOSEPOLICY_NONE, /* first, never use this */
-
-  CURLCLOSEPOLICY_OLDEST,
-  CURLCLOSEPOLICY_LEAST_RECENTLY_USED,
-  CURLCLOSEPOLICY_LEAST_TRAFFIC,
-  CURLCLOSEPOLICY_SLOWEST,
-  CURLCLOSEPOLICY_CALLBACK,
-
-  CURLCLOSEPOLICY_LAST /* last, never use this */
-} curl_closepolicy;
-
-#define CURL_GLOBAL_SSL (1<<0) /* no purpose since 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
-#define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL
-#define CURL_GLOBAL_ACK_EINTR (1<<2)
-
-
-/*****************************************************************************
- * Setup defines, protos etc for the sharing stuff.
- */
-
-/* Different data locks for a single share */
-typedef enum {
-  CURL_LOCK_DATA_NONE = 0,
-  /*  CURL_LOCK_DATA_SHARE is used internally to say that
-   *  the locking is just made to change the internal state of the share
-   *  itself.
-   */
-  CURL_LOCK_DATA_SHARE,
-  CURL_LOCK_DATA_COOKIE,
-  CURL_LOCK_DATA_DNS,
-  CURL_LOCK_DATA_SSL_SESSION,
-  CURL_LOCK_DATA_CONNECT,
-  CURL_LOCK_DATA_PSL,
-  CURL_LOCK_DATA_LAST
-} curl_lock_data;
-
-/* Different lock access types */
-typedef enum {
-  CURL_LOCK_ACCESS_NONE = 0,   /* unspecified action */
-  CURL_LOCK_ACCESS_SHARED = 1, /* for read perhaps */
-  CURL_LOCK_ACCESS_SINGLE = 2, /* for write perhaps */
-  CURL_LOCK_ACCESS_LAST        /* never use */
-} curl_lock_access;
-
-typedef void (*curl_lock_function)(CURL *handle,
-                                   curl_lock_data data,
-                                   curl_lock_access locktype,
-                                   void *userptr);
-typedef void (*curl_unlock_function)(CURL *handle,
-                                     curl_lock_data data,
-                                     void *userptr);
-
-
-typedef enum {
-  CURLSHE_OK,  /* all is fine */
-  CURLSHE_BAD_OPTION, /* 1 */
-  CURLSHE_IN_USE,     /* 2 */
-  CURLSHE_INVALID,    /* 3 */
-  CURLSHE_NOMEM,      /* 4 out of memory */
-  CURLSHE_NOT_BUILT_IN, /* 5 feature not present in lib */
-  CURLSHE_LAST        /* never use */
-} CURLSHcode;
-
-typedef enum {
-  CURLSHOPT_NONE,  /* don't use */
-  CURLSHOPT_SHARE,   /* specify a data type to share */
-  CURLSHOPT_UNSHARE, /* specify which data type to stop sharing */
-  CURLSHOPT_LOCKFUNC,   /* pass in a 'curl_lock_function' pointer */
-  CURLSHOPT_UNLOCKFUNC, /* pass in a 'curl_unlock_function' pointer */
-  CURLSHOPT_USERDATA,   /* pass in a user data pointer used in the lock/unlock
-                           callback functions */
-  CURLSHOPT_LAST  /* never use */
-} CURLSHoption;
-
-CURL_EXTERN CURLSH *curl_share_init(void);
-CURL_EXTERN CURLSHcode curl_share_setopt(CURLSH *, CURLSHoption option, ...);
-CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *);
-
-/****************************************************************************
- * Structures for querying information about the curl library at runtime.
- */
-
-typedef enum {
-  CURLVERSION_FIRST,
-  CURLVERSION_SECOND,
-  CURLVERSION_THIRD,
-  CURLVERSION_FOURTH,
-  CURLVERSION_FIFTH,
-  CURLVERSION_LAST /* never actually use this */
-} CURLversion;
-
-/* The 'CURLVERSION_NOW' is the symbolic name meant to be used by
-   basically all programs ever that want to get version information. It is
-   meant to be a built-in version number for what kind of struct the caller
-   expects. If the struct ever changes, we redefine the NOW to another enum
-   from above. */
-#define CURLVERSION_NOW CURLVERSION_FIFTH
-
-typedef struct {
-  CURLversion age;          /* age of the returned struct */
-  const char *version;      /* LIBCURL_VERSION */
-  unsigned int version_num; /* LIBCURL_VERSION_NUM */
-  const char *host;         /* OS/host/cpu/machine when configured */
-  int features;             /* bitmask, see defines below */
-  const char *ssl_version;  /* human readable string */
-  long ssl_version_num;     /* not used anymore, always 0 */
-  const char *libz_version; /* human readable string */
-  /* protocols is terminated by an entry with a NULL protoname */
-  const char * const *protocols;
-
-  /* The fields below this were added in CURLVERSION_SECOND */
-  const char *ares;
-  int ares_num;
-
-  /* This field was added in CURLVERSION_THIRD */
-  const char *libidn;
-
-  /* These field were added in CURLVERSION_FOURTH */
-
-  /* Same as '_libiconv_version' if built with HAVE_ICONV */
-  int iconv_ver_num;
-
-  const char *libssh_version; /* human readable string */
-
-  /* These fields were added in CURLVERSION_FIFTH */
-
-  unsigned int brotli_ver_num; /* Numeric Brotli version
-                                  (MAJOR << 24) | (MINOR << 12) | PATCH */
-  const char *brotli_version; /* human readable string. */
-
-} curl_version_info_data;
-
-#define CURL_VERSION_IPV6         (1<<0)  /* IPv6-enabled */
-#define CURL_VERSION_KERBEROS4    (1<<1)  /* Kerberos V4 auth is supported
-                                             (deprecated) */
-#define CURL_VERSION_SSL          (1<<2)  /* SSL options are present */
-#define CURL_VERSION_LIBZ         (1<<3)  /* libz features are present */
-#define CURL_VERSION_NTLM         (1<<4)  /* NTLM auth is supported */
-#define CURL_VERSION_GSSNEGOTIATE (1<<5)  /* Negotiate auth is supported
-                                             (deprecated) */
-#define CURL_VERSION_DEBUG        (1<<6)  /* Built with debug capabilities */
-#define CURL_VERSION_ASYNCHDNS    (1<<7)  /* Asynchronous DNS resolves */
-#define CURL_VERSION_SPNEGO       (1<<8)  /* SPNEGO auth is supported */
-#define CURL_VERSION_LARGEFILE    (1<<9)  /* Supports files larger than 2GB */
-#define CURL_VERSION_IDN          (1<<10) /* Internationized Domain Names are
-                                             supported */
-#define CURL_VERSION_SSPI         (1<<11) /* Built against Windows SSPI */
-#define CURL_VERSION_CONV         (1<<12) /* Character conversions supported */
-#define CURL_VERSION_CURLDEBUG    (1<<13) /* Debug memory tracking supported */
-#define CURL_VERSION_TLSAUTH_SRP  (1<<14) /* TLS-SRP auth is supported */
-#define CURL_VERSION_NTLM_WB      (1<<15) /* NTLM delegation to winbind helper
-                                             is supported */
-#define CURL_VERSION_HTTP2        (1<<16) /* HTTP2 support built-in */
-#define CURL_VERSION_GSSAPI       (1<<17) /* Built against a GSS-API library */
-#define CURL_VERSION_KERBEROS5    (1<<18) /* Kerberos V5 auth is supported */
-#define CURL_VERSION_UNIX_SOCKETS (1<<19) /* Unix domain sockets support */
-#define CURL_VERSION_PSL          (1<<20) /* Mozilla's Public Suffix List, used
-                                             for cookie domain verification */
-#define CURL_VERSION_HTTPS_PROXY  (1<<21) /* HTTPS-proxy support built-in */
-#define CURL_VERSION_MULTI_SSL    (1<<22) /* Multiple SSL backends available */
-#define CURL_VERSION_BROTLI       (1<<23) /* Brotli features are present. */
-#define CURL_VERSION_ALTSVC       (1<<24) /* Alt-Svc handling built-in */
-
- /*
- * NAME curl_version_info()
- *
- * DESCRIPTION
- *
- * This function returns a pointer to a static copy of the version info
- * struct. See above.
- */
-CURL_EXTERN curl_version_info_data *curl_version_info(CURLversion);
-
-/*
- * NAME curl_easy_strerror()
- *
- * DESCRIPTION
- *
- * The curl_easy_strerror function may be used to turn a CURLcode value
- * into the equivalent human readable error string.  This is useful
- * for printing meaningful error messages.
- */
-CURL_EXTERN const char *curl_easy_strerror(CURLcode);
-
-/*
- * NAME curl_share_strerror()
- *
- * DESCRIPTION
- *
- * The curl_share_strerror function may be used to turn a CURLSHcode value
- * into the equivalent human readable error string.  This is useful
- * for printing meaningful error messages.
- */
-CURL_EXTERN const char *curl_share_strerror(CURLSHcode);
-
-/*
- * NAME curl_easy_pause()
- *
- * DESCRIPTION
- *
- * The curl_easy_pause function pauses or unpauses transfers. Select the new
- * state by setting the bitmask, use the convenience defines below.
- *
- */
-CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask);
-
-#define CURLPAUSE_RECV      (1<<0)
-#define CURLPAUSE_RECV_CONT (0)
-
-#define CURLPAUSE_SEND      (1<<2)
-#define CURLPAUSE_SEND_CONT (0)
-
-#define CURLPAUSE_ALL       (CURLPAUSE_RECV|CURLPAUSE_SEND)
-#define CURLPAUSE_CONT      (CURLPAUSE_RECV_CONT|CURLPAUSE_SEND_CONT)
-
-#ifdef  __cplusplus
-}
-#endif
-
-/* unfortunately, the easy.h and multi.h include files need options and info
-  stuff before they can be included! */
-#include "easy.h" /* nothing in curl is fun without the easy stuff */
-#include "multi.h"
-#include "urlapi.h"
-
-/* the typechecker doesn't work in C++ (yet) */
-#if defined(__GNUC__) && defined(__GNUC_MINOR__) && \
-    ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && \
-    !defined(__cplusplus) && !defined(CURL_DISABLE_TYPECHECK)
-#include "typecheck-gcc.h"
-#else
-#if defined(__STDC__) && (__STDC__ >= 1)
-/* This preprocessor magic that replaces a call with the exact same call is
-   only done to make sure application authors pass exactly three arguments
-   to these functions. */
-#define curl_easy_setopt(handle,opt,param) curl_easy_setopt(handle,opt,param)
-#define curl_easy_getinfo(handle,info,arg) curl_easy_getinfo(handle,info,arg)
-#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param)
-#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param)
-#endif /* __STDC__ >= 1 */
-#endif /* gcc >= 4.3 && !__cplusplus */
-
-#endif /* __CURL_CURL_H */
diff --git a/components/cronet/third_party/curl_headers/include/curl/curlver.h b/components/cronet/third_party/curl_headers/include/curl/curlver.h
deleted file mode 100644
index 4afe4a9..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/curlver.h
+++ /dev/null
@@ -1,77 +0,0 @@
-#ifndef __CURL_CURLVER_H
-#define __CURL_CURLVER_H
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* 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 - 2019 Daniel Stenberg, <daniel@haxx.se>."
-
-/* This is the version number of the libcurl package from which this header
-   file origins: */
-#define LIBCURL_VERSION "7.65.1-DEV"
-
-/* The numeric version number is also available "in parts" by using these
-   defines: */
-#define LIBCURL_VERSION_MAJOR 7
-#define LIBCURL_VERSION_MINOR 65
-#define LIBCURL_VERSION_PATCH 1
-
-/* This is the numeric version of the libcurl version number, meant for easier
-   parsing and comparions by programs. The LIBCURL_VERSION_NUM define will
-   always follow this syntax:
-
-         0xXXYYZZ
-
-   Where XX, YY and ZZ are the main version, release and patch numbers in
-   hexadecimal (using 8 bits each). All three numbers are always represented
-   using two digits.  1.2 would appear as "0x010200" while version 9.11.7
-   appears as "0x090b07".
-
-   This 6-digit (24 bits) hexadecimal number does not show pre-release number,
-   and it is always a greater number in a more recent release. It makes
-   comparisons with greater than and less than work.
-
-   Note: This define is the full hex number and _does not_ use the
-   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 0x074101
-
-/*
- * This is the date and time when the full source package was created. The
- * timestamp is not stored in git, as the timestamp is properly set in the
- * tarballs by the maketgz script.
- *
- * The format of the date follows this template:
- *
- * "2007-11-23"
- */
-#define LIBCURL_TIMESTAMP "[unreleased]"
-
-#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z))
-#define CURL_AT_LEAST_VERSION(x,y,z) \
-  (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z))
-
-#endif /* __CURL_CURLVER_H */
diff --git a/components/cronet/third_party/curl_headers/include/curl/easy.h b/components/cronet/third_party/curl_headers/include/curl/easy.h
deleted file mode 100644
index f42a8a9..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/easy.h
+++ /dev/null
@@ -1,112 +0,0 @@
-#ifndef __CURL_EASY_H
-#define __CURL_EASY_H
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-#ifdef  __cplusplus
-extern "C" {
-#endif
-
-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);
-
-/*
- * NAME curl_easy_getinfo()
- *
- * DESCRIPTION
- *
- * Request internal information from the curl session with this function.  The
- * third argument MUST be a pointer to a long, a pointer to a char * or a
- * pointer to a double (as the documentation describes elsewhere).  The data
- * pointed to will be filled in accordingly and can be relied upon only if the
- * function returns CURLE_OK.  This function is intended to get used *AFTER* a
- * performed transfer, all results from this function are undefined until the
- * transfer is completed.
- */
-CURL_EXTERN CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ...);
-
-
-/*
- * NAME curl_easy_duphandle()
- *
- * DESCRIPTION
- *
- * Creates a new curl session handle with the same options set for the handle
- * passed in. Duplicating a handle could only be a matter of cloning data and
- * options, internal state info and things like persistent connections cannot
- * be transferred. It is useful in multithreaded applications when you can run
- * curl_easy_duphandle() for each new thread to avoid a series of identical
- * curl_easy_setopt() invokes in every thread.
- */
-CURL_EXTERN CURL *curl_easy_duphandle(CURL *curl);
-
-/*
- * NAME curl_easy_reset()
- *
- * DESCRIPTION
- *
- * Re-initializes a CURL handle to the default values. This puts back the
- * handle to the same state as it was in when it was just created.
- *
- * It does keep: live connections, the Session ID cache, the DNS cache and the
- * cookies.
- */
-CURL_EXTERN void curl_easy_reset(CURL *curl);
-
-/*
- * NAME curl_easy_recv()
- *
- * DESCRIPTION
- *
- * Receives data from the connected socket. Use after successful
- * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
- */
-CURL_EXTERN CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen,
-                                    size_t *n);
-
-/*
- * NAME curl_easy_send()
- *
- * DESCRIPTION
- *
- * Sends data over the connected socket. Use after successful
- * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
- */
-CURL_EXTERN CURLcode curl_easy_send(CURL *curl, const void *buffer,
-                                    size_t buflen, size_t *n);
-
-
-/*
- * NAME curl_easy_upkeep()
- *
- * DESCRIPTION
- *
- * Performs connection upkeep for the given session handle.
- */
-CURL_EXTERN CURLcode curl_easy_upkeep(CURL *curl);
-
-#ifdef  __cplusplus
-}
-#endif
-
-#endif
diff --git a/components/cronet/third_party/curl_headers/include/curl/mprintf.h b/components/cronet/third_party/curl_headers/include/curl/mprintf.h
deleted file mode 100644
index e20f546..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/mprintf.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#ifndef __CURL_MPRINTF_H
-#define __CURL_MPRINTF_H
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-#include <stdarg.h>
-#include <stdio.h> /* needed for FILE */
-#include "curl.h"  /* for CURL_EXTERN */
-
-#ifdef  __cplusplus
-extern "C" {
-#endif
-
-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,
-                               const char *format, ...);
-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,
-                                const char *format, va_list args);
-CURL_EXTERN char *curl_maprintf(const char *format, ...);
-CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args);
-
-#ifdef  __cplusplus
-}
-#endif
-
-#endif /* __CURL_MPRINTF_H */
diff --git a/components/cronet/third_party/curl_headers/include/curl/multi.h b/components/cronet/third_party/curl_headers/include/curl/multi.h
deleted file mode 100644
index b19dbaf..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/multi.h
+++ /dev/null
@@ -1,441 +0,0 @@
-#ifndef __CURL_MULTI_H
-#define __CURL_MULTI_H
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-/*
-  This is an "external" header file. Don't give away any internals here!
-
-  GOALS
-
-  o Enable a "pull" interface. The application that uses libcurl decides where
-    and when to ask libcurl to get/send data.
-
-  o Enable multiple simultaneous transfers in the same thread without making it
-    complicated for the application.
-
-  o Enable the application to select() on its own file descriptors and curl's
-    file descriptors simultaneous easily.
-
-*/
-
-/*
- * This header file should not really need to include "curl.h" since curl.h
- * itself includes this file and we expect user applications to do #include
- * <curl/curl.h> without the need for especially including multi.h.
- *
- * For some reason we added this include here at one point, and rather than to
- * break existing (wrongly written) libcurl applications, we leave it as-is
- * but with this warning attached.
- */
-#include "curl.h"
-
-#ifdef  __cplusplus
-extern "C" {
-#endif
-
-#if defined(BUILDING_LIBCURL) || defined(CURL_STRICTER)
-typedef struct Curl_multi CURLM;
-#else
-typedef void CURLM;
-#endif
-
-typedef enum {
-  CURLM_CALL_MULTI_PERFORM = -1, /* please call curl_multi_perform() or
-                                    curl_multi_socket*() soon */
-  CURLM_OK,
-  CURLM_BAD_HANDLE,      /* the passed-in handle is not a valid CURLM handle */
-  CURLM_BAD_EASY_HANDLE, /* an easy handle was not good/valid */
-  CURLM_OUT_OF_MEMORY,   /* if you ever get this, you're in deep sh*t */
-  CURLM_INTERNAL_ERROR,  /* this is a libcurl bug */
-  CURLM_BAD_SOCKET,      /* the passed in socket argument did not match */
-  CURLM_UNKNOWN_OPTION,  /* curl_multi_setopt() with unsupported option */
-  CURLM_ADDED_ALREADY,   /* an easy handle already added to a multi handle was
-                            attempted to get added - again */
-  CURLM_RECURSIVE_API_CALL, /* an api function was called from inside a
-                               callback */
-  CURLM_LAST
-} CURLMcode;
-
-/* just to make code nicer when using curl_multi_socket() you can now check
-   for CURLM_CALL_MULTI_SOCKET too in the same style it works for
-   curl_multi_perform() and CURLM_CALL_MULTI_PERFORM */
-#define CURLM_CALL_MULTI_SOCKET CURLM_CALL_MULTI_PERFORM
-
-/* bitmask bits for CURLMOPT_PIPELINING */
-#define CURLPIPE_NOTHING   0L
-#define CURLPIPE_HTTP1     1L
-#define CURLPIPE_MULTIPLEX 2L
-
-typedef enum {
-  CURLMSG_NONE, /* first, not used */
-  CURLMSG_DONE, /* This easy handle has completed. 'result' contains
-                   the CURLcode of the transfer */
-  CURLMSG_LAST /* last, not used */
-} CURLMSG;
-
-struct CURLMsg {
-  CURLMSG msg;       /* what this message means */
-  CURL *easy_handle; /* the handle it concerns */
-  union {
-    void *whatever;    /* message-specific data */
-    CURLcode result;   /* return code for transfer */
-  } data;
-};
-typedef struct CURLMsg CURLMsg;
-
-/* Based on poll(2) structure and values.
- * We don't use pollfd and POLL* constants explicitly
- * to cover platforms without poll(). */
-#define CURL_WAIT_POLLIN    0x0001
-#define CURL_WAIT_POLLPRI   0x0002
-#define CURL_WAIT_POLLOUT   0x0004
-
-struct curl_waitfd {
-  curl_socket_t fd;
-  short events;
-  short revents; /* not supported yet */
-};
-
-/*
- * Name:    curl_multi_init()
- *
- * Desc:    inititalize multi-style curl usage
- *
- * Returns: a new CURLM handle to use in all 'curl_multi' functions.
- */
-CURL_EXTERN CURLM *curl_multi_init(void);
-
-/*
- * Name:    curl_multi_add_handle()
- *
- * Desc:    add a standard curl handle to the multi stack
- *
- * Returns: CURLMcode type, general multi error code.
- */
-CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle,
-                                            CURL *curl_handle);
-
- /*
-  * Name:    curl_multi_remove_handle()
-  *
-  * Desc:    removes a curl handle from the multi stack again
-  *
-  * Returns: CURLMcode type, general multi error code.
-  */
-CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
-                                               CURL *curl_handle);
-
- /*
-  * Name:    curl_multi_fdset()
-  *
-  * Desc:    Ask curl for its fd_set sets. The app can use these to select() or
-  *          poll() on. We want curl_multi_perform() called as soon as one of
-  *          them are ready.
-  *
-  * Returns: CURLMcode type, general multi error code.
-  */
-CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle,
-                                       fd_set *read_fd_set,
-                                       fd_set *write_fd_set,
-                                       fd_set *exc_fd_set,
-                                       int *max_fd);
-
-/*
- * Name:     curl_multi_wait()
- *
- * Desc:     Poll on all fds within a CURLM set as well as any
- *           additional fds passed to the function.
- *
- * Returns:  CURLMcode type, general multi error code.
- */
-CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle,
-                                      struct curl_waitfd extra_fds[],
-                                      unsigned int extra_nfds,
-                                      int timeout_ms,
-                                      int *ret);
-
- /*
-  * Name:    curl_multi_perform()
-  *
-  * Desc:    When the app thinks there's data available for curl it calls this
-  *          function to read/write whatever there is right now. This returns
-  *          as soon as the reads and writes are done. This function does not
-  *          require that there actually is data available for reading or that
-  *          data can be written, it can be called just in case. It returns
-  *          the number of handles that still transfer data in the second
-  *          argument's integer-pointer.
-  *
-  * Returns: CURLMcode type, general multi error code. *NOTE* that this only
-  *          returns errors etc regarding the whole multi stack. There might
-  *          still have occurred problems on individual transfers even when
-  *          this returns OK.
-  */
-CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle,
-                                         int *running_handles);
-
- /*
-  * Name:    curl_multi_cleanup()
-  *
-  * Desc:    Cleans up and removes a whole multi stack. It does not free or
-  *          touch any individual easy handles in any way. We need to define
-  *          in what state those handles will be if this function is called
-  *          in the middle of a transfer.
-  *
-  * Returns: CURLMcode type, general multi error code.
-  */
-CURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle);
-
-/*
- * Name:    curl_multi_info_read()
- *
- * Desc:    Ask the multi handle if there's any messages/informationals from
- *          the individual transfers. Messages include informationals such as
- *          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 special "end of msgs" struct is returned as a signal
- *          that there is no more to get at this point.
- *
- *          The data the returned pointer points to will not survive calling
- *          curl_multi_cleanup().
- *
- *          The 'CURLMsg' struct is meant to be very simple and only contain
- *          very basic information. If more involved information is wanted,
- *          we will provide the particular "transfer handle" in that struct
- *          and that should/could/would be used in subsequent
- *          curl_easy_getinfo() calls (or similar). The point being that we
- *          must never expose complex structs to applications, as then we'll
- *          undoubtably get backwards compatibility problems in the future.
- *
- * Returns: A pointer to a filled-in struct, or NULL if it failed or ran out
- *          of structs. It also writes the number of messages left in the
- *          queue (after this read) in the integer the second argument points
- *          to.
- */
-CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle,
-                                          int *msgs_in_queue);
-
-/*
- * Name:    curl_multi_strerror()
- *
- * Desc:    The curl_multi_strerror function may be used to turn a CURLMcode
- *          value into the equivalent human readable error string.  This is
- *          useful for printing meaningful error messages.
- *
- * Returns: A pointer to a zero-terminated error message.
- */
-CURL_EXTERN const char *curl_multi_strerror(CURLMcode);
-
-/*
- * Name:    curl_multi_socket() and
- *          curl_multi_socket_all()
- *
- * Desc:    An alternative version of curl_multi_perform() that allows the
- *          application to pass in one of the file descriptors that have been
- *          detected to have "action" on them and let libcurl perform.
- *          See man page for details.
- */
-#define CURL_POLL_NONE   0
-#define CURL_POLL_IN     1
-#define CURL_POLL_OUT    2
-#define CURL_POLL_INOUT  3
-#define CURL_POLL_REMOVE 4
-
-#define CURL_SOCKET_TIMEOUT CURL_SOCKET_BAD
-
-#define CURL_CSELECT_IN   0x01
-#define CURL_CSELECT_OUT  0x02
-#define CURL_CSELECT_ERR  0x04
-
-typedef int (*curl_socket_callback)(CURL *easy,      /* easy handle */
-                                    curl_socket_t s, /* socket */
-                                    int what,        /* see above */
-                                    void *userp,     /* private callback
-                                                        pointer */
-                                    void *socketp);  /* private socket
-                                                        pointer */
-/*
- * Name:    curl_multi_timer_callback
- *
- * Desc:    Called by libcurl whenever the library detects a change in the
- *          maximum number of milliseconds the app is allowed to wait before
- *          curl_multi_socket() or curl_multi_perform() must be called
- *          (to allow libcurl's timed events to take place).
- *
- * Returns: The callback should return zero.
- */
-typedef int (*curl_multi_timer_callback)(CURLM *multi,    /* multi handle */
-                                         long timeout_ms, /* see above */
-                                         void *userp);    /* private callback
-                                                             pointer */
-
-CURL_EXTERN CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t s,
-                                        int *running_handles);
-
-CURL_EXTERN CURLMcode curl_multi_socket_action(CURLM *multi_handle,
-                                               curl_socket_t s,
-                                               int ev_bitmask,
-                                               int *running_handles);
-
-CURL_EXTERN CURLMcode curl_multi_socket_all(CURLM *multi_handle,
-                                            int *running_handles);
-
-#ifndef CURL_ALLOW_OLD_MULTI_SOCKET
-/* This macro below was added in 7.16.3 to push users who recompile to use
-   the new curl_multi_socket_action() instead of the old curl_multi_socket()
-*/
-#define curl_multi_socket(x,y,z) curl_multi_socket_action(x,y,0,z)
-#endif
-
-/*
- * Name:    curl_multi_timeout()
- *
- * Desc:    Returns the maximum number of milliseconds the app is allowed to
- *          wait before curl_multi_socket() or curl_multi_perform() must be
- *          called (to allow libcurl's timed events to take place).
- *
- * Returns: CURLM error code.
- */
-CURL_EXTERN CURLMcode curl_multi_timeout(CURLM *multi_handle,
-                                         long *milliseconds);
-
-#undef CINIT /* re-using the same name as in curl.h */
-
-#ifdef CURL_ISOCPP
-#define CINIT(name,type,num) CURLMOPT_ ## name = CURLOPTTYPE_ ## type + num
-#else
-/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
-#define LONG          CURLOPTTYPE_LONG
-#define OBJECTPOINT   CURLOPTTYPE_OBJECTPOINT
-#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT
-#define OFF_T         CURLOPTTYPE_OFF_T
-#define CINIT(name,type,number) CURLMOPT_/**/name = type + number
-#endif
-
-typedef enum {
-  /* This is the socket callback function pointer */
-  CINIT(SOCKETFUNCTION, FUNCTIONPOINT, 1),
-
-  /* This is the argument passed to the socket callback */
-  CINIT(SOCKETDATA, OBJECTPOINT, 2),
-
-    /* set to 1 to enable pipelining for this multi handle */
-  CINIT(PIPELINING, LONG, 3),
-
-   /* This is the timer callback function pointer */
-  CINIT(TIMERFUNCTION, FUNCTIONPOINT, 4),
-
-  /* This is the argument passed to the timer callback */
-  CINIT(TIMERDATA, OBJECTPOINT, 5),
-
-  /* maximum number of entries in the connection cache */
-  CINIT(MAXCONNECTS, LONG, 6),
-
-  /* maximum number of (pipelining) connections to one host */
-  CINIT(MAX_HOST_CONNECTIONS, LONG, 7),
-
-  /* maximum number of requests in a pipeline */
-  CINIT(MAX_PIPELINE_LENGTH, LONG, 8),
-
-  /* a connection with a content-length longer than this
-     will not be considered for pipelining */
-  CINIT(CONTENT_LENGTH_PENALTY_SIZE, OFF_T, 9),
-
-  /* a connection with a chunk length longer than this
-     will not be considered for pipelining */
-  CINIT(CHUNK_LENGTH_PENALTY_SIZE, OFF_T, 10),
-
-  /* a list of site names(+port) that are blacklisted from
-     pipelining */
-  CINIT(PIPELINING_SITE_BL, OBJECTPOINT, 11),
-
-  /* a list of server types that are blacklisted from
-     pipelining */
-  CINIT(PIPELINING_SERVER_BL, OBJECTPOINT, 12),
-
-  /* maximum number of open connections in total */
-  CINIT(MAX_TOTAL_CONNECTIONS, LONG, 13),
-
-   /* This is the server push callback function pointer */
-  CINIT(PUSHFUNCTION, FUNCTIONPOINT, 14),
-
-  /* This is the argument passed to the server push callback */
-  CINIT(PUSHDATA, OBJECTPOINT, 15),
-
-  CURLMOPT_LASTENTRY /* the last unused */
-} CURLMoption;
-
-
-/*
- * Name:    curl_multi_setopt()
- *
- * Desc:    Sets options for the multi handle.
- *
- * Returns: CURLM error code.
- */
-CURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle,
-                                        CURLMoption option, ...);
-
-
-/*
- * Name:    curl_multi_assign()
- *
- * Desc:    This function sets an association in the multi handle between the
- *          given socket and a private pointer of the application. This is
- *          (only) useful for curl_multi_socket uses.
- *
- * Returns: CURLM error code.
- */
-CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle,
-                                        curl_socket_t sockfd, void *sockp);
-
-
-/*
- * Name: curl_push_callback
- *
- * Desc: This callback gets called when a new stream is being pushed by the
- *       server. It approves or denies the new stream.
- *
- * Returns: CURL_PUSH_OK or CURL_PUSH_DENY.
- */
-#define CURL_PUSH_OK   0
-#define CURL_PUSH_DENY 1
-
-struct curl_pushheaders;  /* forward declaration only */
-
-CURL_EXTERN char *curl_pushheader_bynum(struct curl_pushheaders *h,
-                                        size_t num);
-CURL_EXTERN char *curl_pushheader_byname(struct curl_pushheaders *h,
-                                         const char *name);
-
-typedef int (*curl_push_callback)(CURL *parent,
-                                  CURL *easy,
-                                  size_t num_headers,
-                                  struct curl_pushheaders *headers,
-                                  void *userp);
-
-#ifdef __cplusplus
-} /* end of extern "C" */
-#endif
-
-#endif
diff --git a/components/cronet/third_party/curl_headers/include/curl/stdcheaders.h b/components/cronet/third_party/curl_headers/include/curl/stdcheaders.h
deleted file mode 100644
index 027b6f4..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/stdcheaders.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef __STDC_HEADERS_H
-#define __STDC_HEADERS_H
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-#include <sys/types.h>
-
-size_t fread(void *, size_t, size_t, FILE *);
-size_t fwrite(const void *, size_t, size_t, FILE *);
-
-int strcasecmp(const char *, const char *);
-int strncasecmp(const char *, const char *, size_t);
-
-#endif /* __STDC_HEADERS_H */
diff --git a/components/cronet/third_party/curl_headers/include/curl/system.h b/components/cronet/third_party/curl_headers/include/curl/system.h
deleted file mode 100644
index 1e555ec..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/system.h
+++ /dev/null
@@ -1,493 +0,0 @@
-#ifndef __CURL_SYSTEM_H
-#define __CURL_SYSTEM_H
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/*
- * Try to keep one section per platform, compiler and architecture, otherwise,
- * if an existing section is reused for a different one and later on the
- * original is adjusted, probably the piggybacking one can be adversely
- * changed.
- *
- * In order to differentiate between platforms/compilers/architectures use
- * only compiler built in predefined preprocessor symbols.
- *
- * curl_off_t
- * ----------
- *
- * For any given platform/compiler curl_off_t must be typedef'ed to a 64-bit
- * wide signed integral data type. The width of this data type must remain
- * constant and independent of any possible large file support settings.
- *
- * As an exception to the above, curl_off_t shall be typedef'ed to a 32-bit
- * wide signed integral data type if there is no 64-bit type.
- *
- * As a general rule, curl_off_t shall not be mapped to off_t. This rule shall
- * only be violated if off_t is the only 64-bit data type available and the
- * size of off_t is independent of large file support settings. Keep your
- * build on the safe side avoiding an off_t gating.  If you have a 64-bit
- * off_t then take for sure that another 64-bit data type exists, dig deeper
- * and you will find it.
- *
- */
-
-#if defined(__DJGPP__) || defined(__GO32__)
-#  if defined(__DJGPP__) && (__DJGPP__ > 1)
-#    define CURL_TYPEOF_CURL_OFF_T     long long
-#    define CURL_FORMAT_CURL_OFF_T     "lld"
-#    define CURL_FORMAT_CURL_OFF_TU    "llu"
-#    define CURL_SUFFIX_CURL_OFF_T     LL
-#    define CURL_SUFFIX_CURL_OFF_TU    ULL
-#  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(__SALFORDC__)
-#  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
-#  define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-#elif defined(__BORLANDC__)
-#  if (__BORLANDC__ < 0x520)
-#    define CURL_TYPEOF_CURL_OFF_T     long
-#    define CURL_FORMAT_CURL_OFF_T     "ld"
-#    define CURL_FORMAT_CURL_OFF_TU    "lu"
-#    define CURL_SUFFIX_CURL_OFF_T     L
-#    define CURL_SUFFIX_CURL_OFF_TU    UL
-#  else
-#    define CURL_TYPEOF_CURL_OFF_T     __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
-#  endif
-#  define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-#elif defined(__TURBOC__)
-#  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
-#  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_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
-#  elif defined(_MSC_VER)
-#    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 long
-#    define CURL_FORMAT_CURL_OFF_T     "lld"
-#    define CURL_FORMAT_CURL_OFF_TU    "llu"
-#    define CURL_SUFFIX_CURL_OFF_T     LL
-#    define CURL_SUFFIX_CURL_OFF_TU    ULL
-#  endif
-#  define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-#elif defined(__LCC__)
-#  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
-#  define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-#elif defined(__SYMBIAN32__)
-#  if defined(__EABI__)  /* Treat all ARM compilers equally */
-#    define CURL_TYPEOF_CURL_OFF_T     long long
-#    define CURL_FORMAT_CURL_OFF_T     "lld"
-#    define CURL_FORMAT_CURL_OFF_TU    "llu"
-#    define CURL_SUFFIX_CURL_OFF_T     LL
-#    define CURL_SUFFIX_CURL_OFF_TU    ULL
-#  elif defined(__CW32__)
-#    pragma longlong on
-#    define CURL_TYPEOF_CURL_OFF_T     long long
-#    define CURL_FORMAT_CURL_OFF_T     "lld"
-#    define CURL_FORMAT_CURL_OFF_TU    "llu"
-#    define CURL_SUFFIX_CURL_OFF_T     LL
-#    define CURL_SUFFIX_CURL_OFF_TU    ULL
-#  elif defined(__VC32__)
-#    define CURL_TYPEOF_CURL_OFF_T     __int64
-#    define CURL_FORMAT_CURL_OFF_T     "lld"
-#    define CURL_FORMAT_CURL_OFF_TU    "llu"
-#    define CURL_SUFFIX_CURL_OFF_T     LL
-#    define CURL_SUFFIX_CURL_OFF_TU    ULL
-#  endif
-#  define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int
-
-#elif defined(__MWERKS__)
-#  define CURL_TYPEOF_CURL_OFF_T     long long
-#  define CURL_FORMAT_CURL_OFF_T     "lld"
-#  define CURL_FORMAT_CURL_OFF_TU    "llu"
-#  define CURL_SUFFIX_CURL_OFF_T     LL
-#  define CURL_SUFFIX_CURL_OFF_TU    ULL
-#  define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-#elif defined(_WIN32_WCE)
-#  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
-#  define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-#elif defined(__MINGW32__)
-#  define CURL_TYPEOF_CURL_OFF_T     long long
-#  define CURL_FORMAT_CURL_OFF_T     "I64d"
-#  define CURL_FORMAT_CURL_OFF_TU    "I64u"
-#  define CURL_SUFFIX_CURL_OFF_T     LL
-#  define CURL_SUFFIX_CURL_OFF_TU    ULL
-#  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-#  define CURL_PULL_SYS_TYPES_H      1
-#  define CURL_PULL_WS2TCPIP_H       1
-
-#elif defined(__VMS)
-#  if defined(__VAX)
-#    define CURL_TYPEOF_CURL_OFF_T     long
-#    define CURL_FORMAT_CURL_OFF_T     "ld"
-#    define CURL_FORMAT_CURL_OFF_TU    "lu"
-#    define CURL_SUFFIX_CURL_OFF_T     L
-#    define CURL_SUFFIX_CURL_OFF_TU    UL
-#  else
-#    define CURL_TYPEOF_CURL_OFF_T     long long
-#    define CURL_FORMAT_CURL_OFF_T     "lld"
-#    define CURL_FORMAT_CURL_OFF_TU    "llu"
-#    define CURL_SUFFIX_CURL_OFF_T     LL
-#    define CURL_SUFFIX_CURL_OFF_TU    ULL
-#  endif
-#  define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int
-
-#elif defined(__OS400__)
-#  if defined(__ILEC400__)
-#    define CURL_TYPEOF_CURL_OFF_T     long long
-#    define CURL_FORMAT_CURL_OFF_T     "lld"
-#    define CURL_FORMAT_CURL_OFF_TU    "llu"
-#    define CURL_SUFFIX_CURL_OFF_T     LL
-#    define CURL_SUFFIX_CURL_OFF_TU    ULL
-#    define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-#    define CURL_PULL_SYS_TYPES_H      1
-#    define CURL_PULL_SYS_SOCKET_H     1
-#  endif
-
-#elif defined(__MVS__)
-#  if defined(__IBMC__) || defined(__IBMCPP__)
-#    if defined(_ILP32)
-#    elif defined(_LP64)
-#    endif
-#    if defined(_LONG_LONG)
-#      define CURL_TYPEOF_CURL_OFF_T     long long
-#      define CURL_FORMAT_CURL_OFF_T     "lld"
-#      define CURL_FORMAT_CURL_OFF_TU    "llu"
-#      define CURL_SUFFIX_CURL_OFF_T     LL
-#      define CURL_SUFFIX_CURL_OFF_TU    ULL
-#    elif defined(_LP64)
-#      define CURL_TYPEOF_CURL_OFF_T     long
-#      define CURL_FORMAT_CURL_OFF_T     "ld"
-#      define CURL_FORMAT_CURL_OFF_TU    "lu"
-#      define CURL_SUFFIX_CURL_OFF_T     L
-#      define CURL_SUFFIX_CURL_OFF_TU    UL
-#    else
-#      define CURL_TYPEOF_CURL_OFF_T     long
-#      define CURL_FORMAT_CURL_OFF_T     "ld"
-#      define CURL_FORMAT_CURL_OFF_TU    "lu"
-#      define CURL_SUFFIX_CURL_OFF_T     L
-#      define CURL_SUFFIX_CURL_OFF_TU    UL
-#    endif
-#    define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-#    define CURL_PULL_SYS_TYPES_H      1
-#    define CURL_PULL_SYS_SOCKET_H     1
-#  endif
-
-#elif defined(__370__)
-#  if defined(__IBMC__) || defined(__IBMCPP__)
-#    if defined(_ILP32)
-#    elif defined(_LP64)
-#    endif
-#    if defined(_LONG_LONG)
-#      define CURL_TYPEOF_CURL_OFF_T     long long
-#      define CURL_FORMAT_CURL_OFF_T     "lld"
-#      define CURL_FORMAT_CURL_OFF_TU    "llu"
-#      define CURL_SUFFIX_CURL_OFF_T     LL
-#      define CURL_SUFFIX_CURL_OFF_TU    ULL
-#    elif defined(_LP64)
-#      define CURL_TYPEOF_CURL_OFF_T     long
-#      define CURL_FORMAT_CURL_OFF_T     "ld"
-#      define CURL_FORMAT_CURL_OFF_TU    "lu"
-#      define CURL_SUFFIX_CURL_OFF_T     L
-#      define CURL_SUFFIX_CURL_OFF_TU    UL
-#    else
-#      define CURL_TYPEOF_CURL_OFF_T     long
-#      define CURL_FORMAT_CURL_OFF_T     "ld"
-#      define CURL_FORMAT_CURL_OFF_TU    "lu"
-#      define CURL_SUFFIX_CURL_OFF_T     L
-#      define CURL_SUFFIX_CURL_OFF_TU    UL
-#    endif
-#    define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-#    define CURL_PULL_SYS_TYPES_H      1
-#    define CURL_PULL_SYS_SOCKET_H     1
-#  endif
-
-#elif defined(TPF)
-#  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
-#  define CURL_TYPEOF_CURL_SOCKLEN_T int
-
-#elif defined(__TINYC__) /* also known as tcc */
-
-#  define CURL_TYPEOF_CURL_OFF_T     long long
-#  define CURL_FORMAT_CURL_OFF_T     "lld"
-#  define CURL_FORMAT_CURL_OFF_TU    "llu"
-#  define CURL_SUFFIX_CURL_OFF_T     LL
-#  define CURL_SUFFIX_CURL_OFF_TU    ULL
-#  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-#  define CURL_PULL_SYS_TYPES_H      1
-#  define CURL_PULL_SYS_SOCKET_H     1
-
-#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) /* Oracle Solaris Studio */
-#  if !defined(__LP64) && (defined(__ILP32) ||                          \
-                           defined(__i386) ||                           \
-                           defined(__sparcv8) ||                        \
-                           defined(__sparcv8plus))
-#    define CURL_TYPEOF_CURL_OFF_T     long long
-#    define CURL_FORMAT_CURL_OFF_T     "lld"
-#    define CURL_FORMAT_CURL_OFF_TU    "llu"
-#    define CURL_SUFFIX_CURL_OFF_T     LL
-#    define CURL_SUFFIX_CURL_OFF_TU    ULL
-#  elif defined(__LP64) || \
-        defined(__amd64) || defined(__sparcv9)
-#    define CURL_TYPEOF_CURL_OFF_T     long
-#    define CURL_FORMAT_CURL_OFF_T     "ld"
-#    define CURL_FORMAT_CURL_OFF_TU    "lu"
-#    define CURL_SUFFIX_CURL_OFF_T     L
-#    define CURL_SUFFIX_CURL_OFF_TU    UL
-#  endif
-#  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-#  define CURL_PULL_SYS_TYPES_H      1
-#  define CURL_PULL_SYS_SOCKET_H     1
-
-#elif defined(__xlc__) /* IBM xlc compiler */
-#  if !defined(_LP64)
-#    define CURL_TYPEOF_CURL_OFF_T     long long
-#    define CURL_FORMAT_CURL_OFF_T     "lld"
-#    define CURL_FORMAT_CURL_OFF_TU    "llu"
-#    define CURL_SUFFIX_CURL_OFF_T     LL
-#    define CURL_SUFFIX_CURL_OFF_TU    ULL
-#  else
-#    define CURL_TYPEOF_CURL_OFF_T     long
-#    define CURL_FORMAT_CURL_OFF_T     "ld"
-#    define CURL_FORMAT_CURL_OFF_TU    "lu"
-#    define CURL_SUFFIX_CURL_OFF_T     L
-#    define CURL_SUFFIX_CURL_OFF_TU    UL
-#  endif
-#  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-#  define CURL_PULL_SYS_TYPES_H      1
-#  define CURL_PULL_SYS_SOCKET_H     1
-
-/* ===================================== */
-/*    KEEP MSVC THE PENULTIMATE ENTRY    */
-/* ===================================== */
-
-#elif defined(_MSC_VER)
-#  if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
-#    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
-
-/* ===================================== */
-/*    KEEP GENERIC GCC THE LAST ENTRY    */
-/* ===================================== */
-
-#elif defined(__GNUC__) && !defined(_SCO_DS)
-#  if !defined(__LP64__) &&                                             \
-  (defined(__ILP32__) || defined(__i386__) || defined(__hppa__) ||      \
-   defined(__ppc__) || defined(__powerpc__) || defined(__arm__) ||      \
-   defined(__sparc__) || defined(__mips__) || defined(__sh__) ||        \
-   defined(__XTENSA__) ||                                               \
-   (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 4)  ||               \
-   (defined(__LONG_MAX__) && __LONG_MAX__ == 2147483647L))
-#    define CURL_TYPEOF_CURL_OFF_T     long long
-#    define CURL_FORMAT_CURL_OFF_T     "lld"
-#    define CURL_FORMAT_CURL_OFF_TU    "llu"
-#    define CURL_SUFFIX_CURL_OFF_T     LL
-#    define CURL_SUFFIX_CURL_OFF_TU    ULL
-#  elif defined(__LP64__) || \
-        defined(__x86_64__) || defined(__ppc64__) || defined(__sparc64__) || \
-        (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 8) || \
-        (defined(__LONG_MAX__) && __LONG_MAX__ == 9223372036854775807L)
-#    define CURL_TYPEOF_CURL_OFF_T     long
-#    define CURL_FORMAT_CURL_OFF_T     "ld"
-#    define CURL_FORMAT_CURL_OFF_TU    "lu"
-#    define CURL_SUFFIX_CURL_OFF_T     L
-#    define CURL_SUFFIX_CURL_OFF_TU    UL
-#  endif
-#  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
-#  define CURL_PULL_SYS_TYPES_H      1
-#  define CURL_PULL_SYS_SOCKET_H     1
-
-#else
-/* generic "safe guess" on old 32 bit style */
-# 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
-# define CURL_TYPEOF_CURL_SOCKLEN_T int
-#endif
-
-#ifdef _AIX
-/* AIX needs <sys/poll.h> */
-#define CURL_PULL_SYS_POLL_H
-#endif
-
-
-/* CURL_PULL_WS2TCPIP_H is defined above when inclusion of header file  */
-/* ws2tcpip.h is required here to properly make type definitions below. */
-#ifdef CURL_PULL_WS2TCPIP_H
-#  include <winsock2.h>
-#  include <windows.h>
-#  include <ws2tcpip.h>
-#endif
-
-/* CURL_PULL_SYS_TYPES_H is defined above when inclusion of header file  */
-/* sys/types.h is required here to properly make type definitions below. */
-#ifdef CURL_PULL_SYS_TYPES_H
-#  include <sys/types.h>
-#endif
-
-/* CURL_PULL_SYS_SOCKET_H is defined above when inclusion of header file  */
-/* sys/socket.h is required here to properly make type definitions below. */
-#ifdef CURL_PULL_SYS_SOCKET_H
-#  include <sys/socket.h>
-#endif
-
-/* CURL_PULL_SYS_POLL_H is defined above when inclusion of header file    */
-/* sys/poll.h is required here to properly make type definitions below.   */
-#ifdef CURL_PULL_SYS_POLL_H
-#  include <sys/poll.h>
-#endif
-
-/* Data type definition of curl_socklen_t. */
-#ifdef CURL_TYPEOF_CURL_SOCKLEN_T
-  typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t;
-#endif
-
-/* Data type definition of curl_off_t. */
-
-#ifdef CURL_TYPEOF_CURL_OFF_T
-  typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;
-#endif
-
-/*
- * CURL_ISOCPP and CURL_OFF_T_C definitions are done here in order to allow
- * these to be visible and exported by the external libcurl interface API,
- * while also making them visible to the library internals, simply including
- * curl_setup.h, without actually needing to include curl.h internally.
- * If some day this section would grow big enough, all this should be moved
- * to its own header file.
- */
-
-/*
- * Figure out if we can use the ## preprocessor operator, which is supported
- * by ISO/ANSI C and C++. Some compilers support it without setting __STDC__
- * or  __cplusplus so we need to carefully check for them too.
- */
-
-#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \
-  defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \
-  defined(__POCC__) || defined(__SALFORDC__) || defined(__HIGHC__) || \
-  defined(__ILEC400__)
-  /* This compiler is believed to have an ISO compatible preprocessor */
-#define CURL_ISOCPP
-#else
-  /* This compiler is believed NOT to have an ISO compatible preprocessor */
-#undef CURL_ISOCPP
-#endif
-
-/*
- * Macros for minimum-width signed and unsigned curl_off_t integer constants.
- */
-
-#if defined(__BORLANDC__) && (__BORLANDC__ == 0x0551)
-#  define __CURL_OFF_T_C_HLPR2(x) x
-#  define __CURL_OFF_T_C_HLPR1(x) __CURL_OFF_T_C_HLPR2(x)
-#  define CURL_OFF_T_C(Val)  __CURL_OFF_T_C_HLPR1(Val) ## \
-                             __CURL_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_T)
-#  define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HLPR1(Val) ## \
-                             __CURL_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_TU)
-#else
-#  ifdef CURL_ISOCPP
-#    define __CURL_OFF_T_C_HLPR2(Val,Suffix) Val ## Suffix
-#  else
-#    define __CURL_OFF_T_C_HLPR2(Val,Suffix) Val/**/Suffix
-#  endif
-#  define __CURL_OFF_T_C_HLPR1(Val,Suffix) __CURL_OFF_T_C_HLPR2(Val,Suffix)
-#  define CURL_OFF_T_C(Val)  __CURL_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_T)
-#  define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_TU)
-#endif
-
-#endif /* __CURL_SYSTEM_H */
diff --git a/components/cronet/third_party/curl_headers/include/curl/typecheck-gcc.h b/components/cronet/third_party/curl_headers/include/curl/typecheck-gcc.h
deleted file mode 100644
index 2d1de4d..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/typecheck-gcc.h
+++ /dev/null
@@ -1,694 +0,0 @@
-#ifndef __CURL_TYPECHECK_GCC_H
-#define __CURL_TYPECHECK_GCC_H
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-/* wraps curl_easy_setopt() with typechecking */
-
-/* To add a new kind of warning, add an
- *   if(_curl_is_sometype_option(_curl_opt))
- *     if(!_curl_is_sometype(value))
- *       _curl_easy_setopt_err_sometype();
- * block and define _curl_is_sometype_option, _curl_is_sometype and
- * _curl_easy_setopt_err_sometype below
- *
- * NOTE: We use two nested 'if' statements here instead of the && operator, in
- *       order to work around gcc bug #32061.  It affects only gcc 4.3.x/4.4.x
- *       when compiling with -Wlogical-op.
- *
- * To add an option that uses the same type as an existing option, you'll just
- * need to extend the appropriate _curl_*_option macro
- */
-#define curl_easy_setopt(handle, option, value)                               \
-__extension__ ({                                                              \
-  __typeof__(option) _curl_opt = option;                                     \
-  if(__builtin_constant_p(_curl_opt)) {                                       \
-    if(_curl_is_long_option(_curl_opt))                                       \
-      if(!_curl_is_long(value))                                               \
-        _curl_easy_setopt_err_long();                                         \
-    if(_curl_is_off_t_option(_curl_opt))                                      \
-      if(!_curl_is_off_t(value))                                              \
-        _curl_easy_setopt_err_curl_off_t();                                   \
-    if(_curl_is_string_option(_curl_opt))                                     \
-      if(!_curl_is_string(value))                                             \
-        _curl_easy_setopt_err_string();                                       \
-    if(_curl_is_write_cb_option(_curl_opt))                                   \
-      if(!_curl_is_write_cb(value))                                           \
-        _curl_easy_setopt_err_write_callback();                               \
-    if((_curl_opt) == CURLOPT_RESOLVER_START_FUNCTION)                        \
-      if(!_curl_is_resolver_start_callback(value))                            \
-        _curl_easy_setopt_err_resolver_start_callback();                      \
-    if((_curl_opt) == CURLOPT_READFUNCTION)                                   \
-      if(!_curl_is_read_cb(value))                                            \
-        _curl_easy_setopt_err_read_cb();                                      \
-    if((_curl_opt) == CURLOPT_IOCTLFUNCTION)                                  \
-      if(!_curl_is_ioctl_cb(value))                                           \
-        _curl_easy_setopt_err_ioctl_cb();                                     \
-    if((_curl_opt) == CURLOPT_SOCKOPTFUNCTION)                                \
-      if(!_curl_is_sockopt_cb(value))                                         \
-        _curl_easy_setopt_err_sockopt_cb();                                   \
-    if((_curl_opt) == CURLOPT_OPENSOCKETFUNCTION)                             \
-      if(!_curl_is_opensocket_cb(value))                                      \
-        _curl_easy_setopt_err_opensocket_cb();                                \
-    if((_curl_opt) == CURLOPT_PROGRESSFUNCTION)                               \
-      if(!_curl_is_progress_cb(value))                                        \
-        _curl_easy_setopt_err_progress_cb();                                  \
-    if((_curl_opt) == CURLOPT_DEBUGFUNCTION)                                  \
-      if(!_curl_is_debug_cb(value))                                           \
-        _curl_easy_setopt_err_debug_cb();                                     \
-    if((_curl_opt) == CURLOPT_SSL_CTX_FUNCTION)                               \
-      if(!_curl_is_ssl_ctx_cb(value))                                         \
-        _curl_easy_setopt_err_ssl_ctx_cb();                                   \
-    if(_curl_is_conv_cb_option(_curl_opt))                                    \
-      if(!_curl_is_conv_cb(value))                                            \
-        _curl_easy_setopt_err_conv_cb();                                      \
-    if((_curl_opt) == CURLOPT_SEEKFUNCTION)                                   \
-      if(!_curl_is_seek_cb(value))                                            \
-        _curl_easy_setopt_err_seek_cb();                                      \
-    if(_curl_is_cb_data_option(_curl_opt))                                    \
-      if(!_curl_is_cb_data(value))                                            \
-        _curl_easy_setopt_err_cb_data();                                      \
-    if((_curl_opt) == CURLOPT_ERRORBUFFER)                                    \
-      if(!_curl_is_error_buffer(value))                                       \
-        _curl_easy_setopt_err_error_buffer();                                 \
-    if((_curl_opt) == CURLOPT_STDERR)                                         \
-      if(!_curl_is_FILE(value))                                               \
-        _curl_easy_setopt_err_FILE();                                         \
-    if(_curl_is_postfields_option(_curl_opt))                                 \
-      if(!_curl_is_postfields(value))                                         \
-        _curl_easy_setopt_err_postfields();                                   \
-    if((_curl_opt) == CURLOPT_HTTPPOST)                                       \
-      if(!_curl_is_arr((value), struct curl_httppost))                        \
-        _curl_easy_setopt_err_curl_httpost();                                 \
-    if((_curl_opt) == CURLOPT_MIMEPOST)                                       \
-      if(!_curl_is_ptr((value), curl_mime))                                   \
-        _curl_easy_setopt_err_curl_mimepost();                                \
-    if(_curl_is_slist_option(_curl_opt))                                      \
-      if(!_curl_is_arr((value), struct curl_slist))                           \
-        _curl_easy_setopt_err_curl_slist();                                   \
-    if((_curl_opt) == CURLOPT_SHARE)                                          \
-      if(!_curl_is_ptr((value), CURLSH))                                      \
-        _curl_easy_setopt_err_CURLSH();                                       \
-  }                                                                           \
-  curl_easy_setopt(handle, _curl_opt, value);                                 \
-})
-
-/* wraps curl_easy_getinfo() with typechecking */
-#define curl_easy_getinfo(handle, info, arg)                                  \
-__extension__ ({                                                              \
-  __typeof__(info) _curl_info = info;                                         \
-  if(__builtin_constant_p(_curl_info)) {                                      \
-    if(_curl_is_string_info(_curl_info))                                      \
-      if(!_curl_is_arr((arg), char *))                                        \
-        _curl_easy_getinfo_err_string();                                      \
-    if(_curl_is_long_info(_curl_info))                                        \
-      if(!_curl_is_arr((arg), long))                                          \
-        _curl_easy_getinfo_err_long();                                        \
-    if(_curl_is_double_info(_curl_info))                                      \
-      if(!_curl_is_arr((arg), double))                                        \
-        _curl_easy_getinfo_err_double();                                      \
-    if(_curl_is_slist_info(_curl_info))                                       \
-      if(!_curl_is_arr((arg), struct curl_slist *))                           \
-        _curl_easy_getinfo_err_curl_slist();                                  \
-    if(_curl_is_tlssessioninfo_info(_curl_info))                              \
-      if(!_curl_is_arr((arg), struct curl_tlssessioninfo *))                  \
-        _curl_easy_getinfo_err_curl_tlssesssioninfo();                        \
-    if(_curl_is_certinfo_info(_curl_info))                                    \
-      if(!_curl_is_arr((arg), struct curl_certinfo *))                        \
-        _curl_easy_getinfo_err_curl_certinfo();                               \
-    if(_curl_is_socket_info(_curl_info))                                      \
-      if(!_curl_is_arr((arg), curl_socket_t))                                 \
-        _curl_easy_getinfo_err_curl_socket();                                 \
-    if(_curl_is_off_t_info(_curl_info))                                       \
-      if(!_curl_is_arr((arg), curl_off_t))                                    \
-        _curl_easy_getinfo_err_curl_off_t();                                  \
-  }                                                                           \
-  curl_easy_getinfo(handle, _curl_info, arg);                                 \
-})
-
-/*
- * For now, just make sure that the functions are called with three arguments
- */
-#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param)
-#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param)
-
-
-/* the actual warnings, triggered by calling the _curl_easy_setopt_err*
- * functions */
-
-/* To define a new warning, use _CURL_WARNING(identifier, "message") */
-#define _CURL_WARNING(id, message)                                            \
-  static void __attribute__((__warning__(message)))                           \
-  __attribute__((__unused__)) __attribute__((__noinline__))                   \
-  id(void) { __asm__(""); }
-
-_CURL_WARNING(_curl_easy_setopt_err_long,
-  "curl_easy_setopt expects a long argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_curl_off_t,
-  "curl_easy_setopt expects a curl_off_t argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_string,
-              "curl_easy_setopt expects a "
-              "string ('char *' or char[]) argument for this option"
-  )
-_CURL_WARNING(_curl_easy_setopt_err_write_callback,
-  "curl_easy_setopt expects a curl_write_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_resolver_start_callback,
-              "curl_easy_setopt expects a "
-              "curl_resolver_start_callback argument for this option"
-  )
-_CURL_WARNING(_curl_easy_setopt_err_read_cb,
-  "curl_easy_setopt expects a curl_read_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_ioctl_cb,
-  "curl_easy_setopt expects a curl_ioctl_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_sockopt_cb,
-  "curl_easy_setopt expects a curl_sockopt_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_opensocket_cb,
-              "curl_easy_setopt expects a "
-              "curl_opensocket_callback argument for this option"
-  )
-_CURL_WARNING(_curl_easy_setopt_err_progress_cb,
-  "curl_easy_setopt expects a curl_progress_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_debug_cb,
-  "curl_easy_setopt expects a curl_debug_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_ssl_ctx_cb,
-  "curl_easy_setopt expects a curl_ssl_ctx_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_conv_cb,
-  "curl_easy_setopt expects a curl_conv_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_seek_cb,
-  "curl_easy_setopt expects a curl_seek_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_cb_data,
-              "curl_easy_setopt expects a "
-              "private data pointer as argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_error_buffer,
-              "curl_easy_setopt expects a "
-              "char buffer of CURL_ERROR_SIZE as argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_FILE,
-  "curl_easy_setopt expects a 'FILE *' argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_postfields,
-  "curl_easy_setopt expects a 'void *' or 'char *' argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_curl_httpost,
-              "curl_easy_setopt expects a 'struct curl_httppost *' "
-              "argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_curl_mimepost,
-              "curl_easy_setopt expects a 'curl_mime *' "
-              "argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_curl_slist,
-  "curl_easy_setopt expects a 'struct curl_slist *' argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_CURLSH,
-  "curl_easy_setopt expects a CURLSH* argument for this option")
-
-_CURL_WARNING(_curl_easy_getinfo_err_string,
-  "curl_easy_getinfo expects a pointer to 'char *' for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_long,
-  "curl_easy_getinfo expects a pointer to long for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_double,
-  "curl_easy_getinfo expects a pointer to double for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_curl_slist,
-  "curl_easy_getinfo expects a pointer to 'struct curl_slist *' for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_curl_tlssesssioninfo,
-              "curl_easy_getinfo expects a pointer to "
-              "'struct curl_tlssessioninfo *' for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_curl_certinfo,
-              "curl_easy_getinfo expects a pointer to "
-              "'struct curl_certinfo *' for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_curl_socket,
-  "curl_easy_getinfo expects a pointer to curl_socket_t for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_curl_off_t,
-  "curl_easy_getinfo expects a pointer to curl_off_t for this info")
-
-/* groups of curl_easy_setops options that take the same type of argument */
-
-/* To add a new option to one of the groups, just add
- *   (option) == CURLOPT_SOMETHING
- * to the or-expression. If the option takes a long or curl_off_t, you don't
- * have to do anything
- */
-
-/* evaluates to true if option takes a long argument */
-#define _curl_is_long_option(option)                                          \
-  (0 < (option) && (option) < CURLOPTTYPE_OBJECTPOINT)
-
-#define _curl_is_off_t_option(option)                                         \
-  ((option) > CURLOPTTYPE_OFF_T)
-
-/* evaluates to true if option takes a char* argument */
-#define _curl_is_string_option(option)                                        \
-  ((option) == CURLOPT_ABSTRACT_UNIX_SOCKET ||                                \
-   (option) == CURLOPT_ACCEPT_ENCODING ||                                     \
-   (option) == CURLOPT_ALTSVC ||                                              \
-   (option) == CURLOPT_CAINFO ||                                              \
-   (option) == CURLOPT_CAPATH ||                                              \
-   (option) == CURLOPT_COOKIE ||                                              \
-   (option) == CURLOPT_COOKIEFILE ||                                          \
-   (option) == CURLOPT_COOKIEJAR ||                                           \
-   (option) == CURLOPT_COOKIELIST ||                                          \
-   (option) == CURLOPT_CRLFILE ||                                             \
-   (option) == CURLOPT_CUSTOMREQUEST ||                                       \
-   (option) == CURLOPT_DEFAULT_PROTOCOL ||                                    \
-   (option) == CURLOPT_DNS_INTERFACE ||                                       \
-   (option) == CURLOPT_DNS_LOCAL_IP4 ||                                       \
-   (option) == CURLOPT_DNS_LOCAL_IP6 ||                                       \
-   (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_INTERFACE ||                                           \
-   (option) == CURLOPT_ISSUERCERT ||                                          \
-   (option) == CURLOPT_KEYPASSWD ||                                           \
-   (option) == CURLOPT_KRBLEVEL ||                                            \
-   (option) == CURLOPT_LOGIN_OPTIONS ||                                       \
-   (option) == CURLOPT_MAIL_AUTH ||                                           \
-   (option) == CURLOPT_MAIL_FROM ||                                           \
-   (option) == CURLOPT_NETRC_FILE ||                                          \
-   (option) == CURLOPT_NOPROXY ||                                             \
-   (option) == CURLOPT_PASSWORD ||                                            \
-   (option) == CURLOPT_PINNEDPUBLICKEY ||                                     \
-   (option) == CURLOPT_PRE_PROXY ||                                           \
-   (option) == CURLOPT_PROXY ||                                               \
-   (option) == CURLOPT_PROXYPASSWORD ||                                       \
-   (option) == CURLOPT_PROXYUSERNAME ||                                       \
-   (option) == CURLOPT_PROXYUSERPWD ||                                        \
-   (option) == CURLOPT_PROXY_CAINFO ||                                        \
-   (option) == CURLOPT_PROXY_CAPATH ||                                        \
-   (option) == CURLOPT_PROXY_CRLFILE ||                                       \
-   (option) == CURLOPT_PROXY_KEYPASSWD ||                                     \
-   (option) == CURLOPT_PROXY_PINNEDPUBLICKEY ||                               \
-   (option) == CURLOPT_PROXY_SERVICE_NAME ||                                  \
-   (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_TLSAUTH_PASSWORD ||                              \
-   (option) == CURLOPT_PROXY_TLSAUTH_USERNAME ||                              \
-   (option) == CURLOPT_PROXY_TLSAUTH_TYPE ||                                  \
-   (option) == CURLOPT_RANDOM_FILE ||                                         \
-   (option) == CURLOPT_RANGE ||                                               \
-   (option) == CURLOPT_REFERER ||                                             \
-   (option) == CURLOPT_RTSP_SESSION_ID ||                                     \
-   (option) == CURLOPT_RTSP_STREAM_URI ||                                     \
-   (option) == CURLOPT_RTSP_TRANSPORT ||                                      \
-   (option) == CURLOPT_SERVICE_NAME ||                                        \
-   (option) == CURLOPT_SOCKS5_GSSAPI_SERVICE ||                               \
-   (option) == CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 ||                             \
-   (option) == CURLOPT_SSH_KNOWNHOSTS ||                                      \
-   (option) == CURLOPT_SSH_PRIVATE_KEYFILE ||                                 \
-   (option) == CURLOPT_SSH_PUBLIC_KEYFILE ||                                  \
-   (option) == CURLOPT_SSLCERT ||                                             \
-   (option) == CURLOPT_SSLCERTTYPE ||                                         \
-   (option) == CURLOPT_SSLENGINE ||                                           \
-   (option) == CURLOPT_SSLKEY ||                                              \
-   (option) == CURLOPT_SSLKEYTYPE ||                                          \
-   (option) == CURLOPT_SSL_CIPHER_LIST ||                                     \
-   (option) == CURLOPT_TLSAUTH_PASSWORD ||                                    \
-   (option) == CURLOPT_TLSAUTH_TYPE ||                                        \
-   (option) == CURLOPT_TLSAUTH_USERNAME ||                                    \
-   (option) == CURLOPT_UNIX_SOCKET_PATH ||                                    \
-   (option) == CURLOPT_URL ||                                                 \
-   (option) == CURLOPT_USERAGENT ||                                           \
-   (option) == CURLOPT_USERNAME ||                                            \
-   (option) == CURLOPT_USERPWD ||                                             \
-   (option) == CURLOPT_XOAUTH2_BEARER ||                                      \
-   0)
-
-/* evaluates to true if option takes a curl_write_callback argument */
-#define _curl_is_write_cb_option(option)                                      \
-  ((option) == CURLOPT_HEADERFUNCTION ||                                      \
-   (option) == CURLOPT_WRITEFUNCTION)
-
-/* evaluates to true if option takes a curl_conv_callback argument */
-#define _curl_is_conv_cb_option(option)                                       \
-  ((option) == CURLOPT_CONV_TO_NETWORK_FUNCTION ||                            \
-   (option) == CURLOPT_CONV_FROM_NETWORK_FUNCTION ||                          \
-   (option) == CURLOPT_CONV_FROM_UTF8_FUNCTION)
-
-/* evaluates to true if option takes a data argument to pass to a callback */
-#define _curl_is_cb_data_option(option)                                       \
-  ((option) == CURLOPT_CHUNK_DATA ||                                          \
-   (option) == CURLOPT_CLOSESOCKETDATA ||                                     \
-   (option) == CURLOPT_DEBUGDATA ||                                           \
-   (option) == CURLOPT_FNMATCH_DATA ||                                        \
-   (option) == CURLOPT_HEADERDATA ||                                          \
-   (option) == CURLOPT_INTERLEAVEDATA ||                                      \
-   (option) == CURLOPT_IOCTLDATA ||                                           \
-   (option) == CURLOPT_OPENSOCKETDATA ||                                      \
-   (option) == CURLOPT_PRIVATE ||                                             \
-   (option) == CURLOPT_PROGRESSDATA ||                                        \
-   (option) == CURLOPT_READDATA ||                                            \
-   (option) == CURLOPT_SEEKDATA ||                                            \
-   (option) == CURLOPT_SOCKOPTDATA ||                                         \
-   (option) == CURLOPT_SSH_KEYDATA ||                                         \
-   (option) == CURLOPT_SSL_CTX_DATA ||                                        \
-   (option) == CURLOPT_WRITEDATA ||                                           \
-   (option) == CURLOPT_RESOLVER_START_DATA ||                                 \
-   (option) == CURLOPT_CURLU ||                                               \
-   0)
-
-/* evaluates to true if option takes a POST data argument (void* or char*) */
-#define _curl_is_postfields_option(option)                                    \
-  ((option) == CURLOPT_POSTFIELDS ||                                          \
-   (option) == CURLOPT_COPYPOSTFIELDS ||                                      \
-   0)
-
-/* evaluates to true if option takes a struct curl_slist * argument */
-#define _curl_is_slist_option(option)                                         \
-  ((option) == CURLOPT_HTTP200ALIASES ||                                      \
-   (option) == CURLOPT_HTTPHEADER ||                                          \
-   (option) == CURLOPT_MAIL_RCPT ||                                           \
-   (option) == CURLOPT_POSTQUOTE ||                                           \
-   (option) == CURLOPT_PREQUOTE ||                                            \
-   (option) == CURLOPT_PROXYHEADER ||                                         \
-   (option) == CURLOPT_QUOTE ||                                               \
-   (option) == CURLOPT_RESOLVE ||                                             \
-   (option) == CURLOPT_TELNETOPTIONS ||                                       \
-   0)
-
-/* groups of curl_easy_getinfo infos that take the same type of argument */
-
-/* evaluates to true if info expects a pointer to char * argument */
-#define _curl_is_string_info(info)                                            \
-  (CURLINFO_STRING < (info) && (info) < CURLINFO_LONG)
-
-/* evaluates to true if info expects a pointer to long argument */
-#define _curl_is_long_info(info)                                              \
-  (CURLINFO_LONG < (info) && (info) < CURLINFO_DOUBLE)
-
-/* evaluates to true if info expects a pointer to double argument */
-#define _curl_is_double_info(info)                                            \
-  (CURLINFO_DOUBLE < (info) && (info) < CURLINFO_SLIST)
-
-/* true if info expects a pointer to struct curl_slist * argument */
-#define _curl_is_slist_info(info)                                       \
-  (((info) == CURLINFO_SSL_ENGINES) || ((info) == CURLINFO_COOKIELIST))
-
-/* true if info expects a pointer to struct curl_tlssessioninfo * argument */
-#define _curl_is_tlssessioninfo_info(info)                              \
-  (((info) == CURLINFO_TLS_SSL_PTR) || ((info) == CURLINFO_TLS_SESSION))
-
-/* true if info expects a pointer to struct curl_certinfo * argument */
-#define _curl_is_certinfo_info(info) ((info) == CURLINFO_CERTINFO)
-
-/* true if info expects a pointer to struct curl_socket_t argument */
-#define _curl_is_socket_info(info)                                            \
-  (CURLINFO_SOCKET < (info) && (info) < CURLINFO_OFF_T)
-
-/* true if info expects a pointer to curl_off_t argument */
-#define _curl_is_off_t_info(info)                                             \
-  (CURLINFO_OFF_T < (info))
-
-
-/* typecheck helpers -- check whether given expression has requested type*/
-
-/* For pointers, you can use the _curl_is_ptr/_curl_is_arr macros,
- * otherwise define a new macro. Search for __builtin_types_compatible_p
- * in the GCC manual.
- * NOTE: these macros MUST NOT EVALUATE their arguments! The argument is
- * the actual expression passed to the curl_easy_setopt macro. This
- * means that you can only apply the sizeof and __typeof__ operators, no
- * == or whatsoever.
- */
-
-/* XXX: should evaluate to true if expr is a pointer */
-#define _curl_is_any_ptr(expr)                                                \
-  (sizeof(expr) == sizeof(void *))
-
-/* evaluates to true if expr is NULL */
-/* XXX: must not evaluate expr, so this check is not accurate */
-#define _curl_is_NULL(expr)                                                   \
-  (__builtin_types_compatible_p(__typeof__(expr), __typeof__(NULL)))
-
-/* evaluates to true if expr is type*, const type* or NULL */
-#define _curl_is_ptr(expr, type)                                              \
-  (_curl_is_NULL(expr) ||                                                     \
-   __builtin_types_compatible_p(__typeof__(expr), type *) ||                  \
-   __builtin_types_compatible_p(__typeof__(expr), const type *))
-
-/* evaluates to true if expr is one of type[], type*, NULL or const type* */
-#define _curl_is_arr(expr, type)                                              \
-  (_curl_is_ptr((expr), type) ||                                              \
-   __builtin_types_compatible_p(__typeof__(expr), type []))
-
-/* evaluates to true if expr is a string */
-#define _curl_is_string(expr)                                                 \
-  (_curl_is_arr((expr), char) ||                                              \
-   _curl_is_arr((expr), signed char) ||                                       \
-   _curl_is_arr((expr), unsigned char))
-
-/* evaluates to true if expr is a long (no matter the signedness)
- * XXX: for now, int is also accepted (and therefore short and char, which
- * are promoted to int when passed to a variadic function) */
-#define _curl_is_long(expr)                                                   \
-  (__builtin_types_compatible_p(__typeof__(expr), long) ||                    \
-   __builtin_types_compatible_p(__typeof__(expr), signed long) ||             \
-   __builtin_types_compatible_p(__typeof__(expr), unsigned long) ||           \
-   __builtin_types_compatible_p(__typeof__(expr), int) ||                     \
-   __builtin_types_compatible_p(__typeof__(expr), signed int) ||              \
-   __builtin_types_compatible_p(__typeof__(expr), unsigned int) ||            \
-   __builtin_types_compatible_p(__typeof__(expr), short) ||                   \
-   __builtin_types_compatible_p(__typeof__(expr), signed short) ||            \
-   __builtin_types_compatible_p(__typeof__(expr), unsigned short) ||          \
-   __builtin_types_compatible_p(__typeof__(expr), char) ||                    \
-   __builtin_types_compatible_p(__typeof__(expr), signed char) ||             \
-   __builtin_types_compatible_p(__typeof__(expr), unsigned char))
-
-/* evaluates to true if expr is of type curl_off_t */
-#define _curl_is_off_t(expr)                                                  \
-  (__builtin_types_compatible_p(__typeof__(expr), curl_off_t))
-
-/* evaluates to true if expr is abuffer suitable for CURLOPT_ERRORBUFFER */
-/* XXX: also check size of an char[] array? */
-#define _curl_is_error_buffer(expr)                                           \
-  (_curl_is_NULL(expr) ||                                                     \
-   __builtin_types_compatible_p(__typeof__(expr), char *) ||                  \
-   __builtin_types_compatible_p(__typeof__(expr), char[]))
-
-/* evaluates to true if expr is of type (const) void* or (const) FILE* */
-#if 0
-#define _curl_is_cb_data(expr)                                                \
-  (_curl_is_ptr((expr), void) ||                                              \
-   _curl_is_ptr((expr), FILE))
-#else /* be less strict */
-#define _curl_is_cb_data(expr)                                                \
-  _curl_is_any_ptr(expr)
-#endif
-
-/* evaluates to true if expr is of type FILE* */
-#define _curl_is_FILE(expr)                                             \
-  (_curl_is_NULL(expr) ||                                              \
-   (__builtin_types_compatible_p(__typeof__(expr), FILE *)))
-
-/* evaluates to true if expr can be passed as POST data (void* or char*) */
-#define _curl_is_postfields(expr)                                             \
-  (_curl_is_ptr((expr), void) ||                                              \
-   _curl_is_arr((expr), char) ||                                              \
-   _curl_is_arr((expr), unsigned char))
-
-/* helper: __builtin_types_compatible_p distinguishes between functions and
- * function pointers, hide it */
-#define _curl_callback_compatible(func, type)                                 \
-  (__builtin_types_compatible_p(__typeof__(func), type) ||                    \
-   __builtin_types_compatible_p(__typeof__(func) *, type))
-
-/* evaluates to true if expr is of type curl_resolver_start_callback */
-#define _curl_is_resolver_start_callback(expr)       \
-  (_curl_is_NULL(expr) || \
-   _curl_callback_compatible((expr), curl_resolver_start_callback))
-
-/* evaluates to true if expr is of type curl_read_callback or "similar" */
-#define _curl_is_read_cb(expr)                                          \
-  (_curl_is_NULL(expr) ||                                                     \
-   _curl_callback_compatible((expr), __typeof__(fread) *) ||                  \
-   _curl_callback_compatible((expr), curl_read_callback) ||                   \
-   _curl_callback_compatible((expr), _curl_read_callback1) ||                 \
-   _curl_callback_compatible((expr), _curl_read_callback2) ||                 \
-   _curl_callback_compatible((expr), _curl_read_callback3) ||                 \
-   _curl_callback_compatible((expr), _curl_read_callback4) ||                 \
-   _curl_callback_compatible((expr), _curl_read_callback5) ||                 \
-   _curl_callback_compatible((expr), _curl_read_callback6))
-typedef size_t (*_curl_read_callback1)(char *, size_t, size_t, void *);
-typedef size_t (*_curl_read_callback2)(char *, size_t, size_t, const void *);
-typedef size_t (*_curl_read_callback3)(char *, size_t, size_t, FILE *);
-typedef size_t (*_curl_read_callback4)(void *, size_t, size_t, void *);
-typedef size_t (*_curl_read_callback5)(void *, size_t, size_t, const void *);
-typedef size_t (*_curl_read_callback6)(void *, size_t, size_t, FILE *);
-
-/* evaluates to true if expr is of type curl_write_callback or "similar" */
-#define _curl_is_write_cb(expr)                                               \
-  (_curl_is_read_cb(expr) ||                                            \
-   _curl_callback_compatible((expr), __typeof__(fwrite) *) ||                 \
-   _curl_callback_compatible((expr), curl_write_callback) ||                  \
-   _curl_callback_compatible((expr), _curl_write_callback1) ||                \
-   _curl_callback_compatible((expr), _curl_write_callback2) ||                \
-   _curl_callback_compatible((expr), _curl_write_callback3) ||                \
-   _curl_callback_compatible((expr), _curl_write_callback4) ||                \
-   _curl_callback_compatible((expr), _curl_write_callback5) ||                \
-   _curl_callback_compatible((expr), _curl_write_callback6))
-typedef size_t (*_curl_write_callback1)(const char *, size_t, size_t, void *);
-typedef size_t (*_curl_write_callback2)(const char *, size_t, size_t,
-                                       const void *);
-typedef size_t (*_curl_write_callback3)(const char *, size_t, size_t, FILE *);
-typedef size_t (*_curl_write_callback4)(const void *, size_t, size_t, void *);
-typedef size_t (*_curl_write_callback5)(const void *, size_t, size_t,
-                                       const void *);
-typedef size_t (*_curl_write_callback6)(const void *, size_t, size_t, FILE *);
-
-/* evaluates to true if expr is of type curl_ioctl_callback or "similar" */
-#define _curl_is_ioctl_cb(expr)                                         \
-  (_curl_is_NULL(expr) ||                                                     \
-   _curl_callback_compatible((expr), curl_ioctl_callback) ||                  \
-   _curl_callback_compatible((expr), _curl_ioctl_callback1) ||                \
-   _curl_callback_compatible((expr), _curl_ioctl_callback2) ||                \
-   _curl_callback_compatible((expr), _curl_ioctl_callback3) ||                \
-   _curl_callback_compatible((expr), _curl_ioctl_callback4))
-typedef curlioerr (*_curl_ioctl_callback1)(CURL *, int, void *);
-typedef curlioerr (*_curl_ioctl_callback2)(CURL *, int, const void *);
-typedef curlioerr (*_curl_ioctl_callback3)(CURL *, curliocmd, void *);
-typedef curlioerr (*_curl_ioctl_callback4)(CURL *, curliocmd, const void *);
-
-/* evaluates to true if expr is of type curl_sockopt_callback or "similar" */
-#define _curl_is_sockopt_cb(expr)                                       \
-  (_curl_is_NULL(expr) ||                                                     \
-   _curl_callback_compatible((expr), curl_sockopt_callback) ||                \
-   _curl_callback_compatible((expr), _curl_sockopt_callback1) ||              \
-   _curl_callback_compatible((expr), _curl_sockopt_callback2))
-typedef int (*_curl_sockopt_callback1)(void *, curl_socket_t, curlsocktype);
-typedef int (*_curl_sockopt_callback2)(const void *, curl_socket_t,
-                                      curlsocktype);
-
-/* evaluates to true if expr is of type curl_opensocket_callback or
-   "similar" */
-#define _curl_is_opensocket_cb(expr)                                    \
-  (_curl_is_NULL(expr) ||                                                     \
-   _curl_callback_compatible((expr), curl_opensocket_callback) ||             \
-   _curl_callback_compatible((expr), _curl_opensocket_callback1) ||           \
-   _curl_callback_compatible((expr), _curl_opensocket_callback2) ||           \
-   _curl_callback_compatible((expr), _curl_opensocket_callback3) ||           \
-   _curl_callback_compatible((expr), _curl_opensocket_callback4))
-typedef curl_socket_t (*_curl_opensocket_callback1)
-  (void *, curlsocktype, struct curl_sockaddr *);
-typedef curl_socket_t (*_curl_opensocket_callback2)
-  (void *, curlsocktype, const struct curl_sockaddr *);
-typedef curl_socket_t (*_curl_opensocket_callback3)
-  (const void *, curlsocktype, struct curl_sockaddr *);
-typedef curl_socket_t (*_curl_opensocket_callback4)
-  (const void *, curlsocktype, const struct curl_sockaddr *);
-
-/* evaluates to true if expr is of type curl_progress_callback or "similar" */
-#define _curl_is_progress_cb(expr)                                      \
-  (_curl_is_NULL(expr) ||                                                     \
-   _curl_callback_compatible((expr), curl_progress_callback) ||               \
-   _curl_callback_compatible((expr), _curl_progress_callback1) ||             \
-   _curl_callback_compatible((expr), _curl_progress_callback2))
-typedef int (*_curl_progress_callback1)(void *,
-    double, double, double, double);
-typedef int (*_curl_progress_callback2)(const void *,
-    double, double, double, double);
-
-/* evaluates to true if expr is of type curl_debug_callback or "similar" */
-#define _curl_is_debug_cb(expr)                                         \
-  (_curl_is_NULL(expr) ||                                                     \
-   _curl_callback_compatible((expr), curl_debug_callback) ||                  \
-   _curl_callback_compatible((expr), _curl_debug_callback1) ||                \
-   _curl_callback_compatible((expr), _curl_debug_callback2) ||                \
-   _curl_callback_compatible((expr), _curl_debug_callback3) ||                \
-   _curl_callback_compatible((expr), _curl_debug_callback4) ||                \
-   _curl_callback_compatible((expr), _curl_debug_callback5) ||                \
-   _curl_callback_compatible((expr), _curl_debug_callback6) ||                \
-   _curl_callback_compatible((expr), _curl_debug_callback7) ||                \
-   _curl_callback_compatible((expr), _curl_debug_callback8))
-typedef int (*_curl_debug_callback1) (CURL *,
-    curl_infotype, char *, size_t, void *);
-typedef int (*_curl_debug_callback2) (CURL *,
-    curl_infotype, char *, size_t, const void *);
-typedef int (*_curl_debug_callback3) (CURL *,
-    curl_infotype, const char *, size_t, void *);
-typedef int (*_curl_debug_callback4) (CURL *,
-    curl_infotype, const char *, size_t, const void *);
-typedef int (*_curl_debug_callback5) (CURL *,
-    curl_infotype, unsigned char *, size_t, void *);
-typedef int (*_curl_debug_callback6) (CURL *,
-    curl_infotype, unsigned char *, size_t, const void *);
-typedef int (*_curl_debug_callback7) (CURL *,
-    curl_infotype, const unsigned char *, size_t, void *);
-typedef int (*_curl_debug_callback8) (CURL *,
-    curl_infotype, const unsigned char *, size_t, const void *);
-
-/* evaluates to true if expr is of type curl_ssl_ctx_callback or "similar" */
-/* this is getting even messier... */
-#define _curl_is_ssl_ctx_cb(expr)                                       \
-  (_curl_is_NULL(expr) ||                                                     \
-   _curl_callback_compatible((expr), curl_ssl_ctx_callback) ||                \
-   _curl_callback_compatible((expr), _curl_ssl_ctx_callback1) ||              \
-   _curl_callback_compatible((expr), _curl_ssl_ctx_callback2) ||              \
-   _curl_callback_compatible((expr), _curl_ssl_ctx_callback3) ||              \
-   _curl_callback_compatible((expr), _curl_ssl_ctx_callback4) ||              \
-   _curl_callback_compatible((expr), _curl_ssl_ctx_callback5) ||              \
-   _curl_callback_compatible((expr), _curl_ssl_ctx_callback6) ||              \
-   _curl_callback_compatible((expr), _curl_ssl_ctx_callback7) ||              \
-   _curl_callback_compatible((expr), _curl_ssl_ctx_callback8))
-typedef CURLcode (*_curl_ssl_ctx_callback1)(CURL *, void *, void *);
-typedef CURLcode (*_curl_ssl_ctx_callback2)(CURL *, void *, const void *);
-typedef CURLcode (*_curl_ssl_ctx_callback3)(CURL *, const void *, void *);
-typedef CURLcode (*_curl_ssl_ctx_callback4)(CURL *, const void *,
-                                            const void *);
-#ifdef HEADER_SSL_H
-/* hack: if we included OpenSSL's ssl.h, we know about SSL_CTX
- * this will of course break if we're included before OpenSSL headers...
- */
-typedef CURLcode (*_curl_ssl_ctx_callback5)(CURL *, SSL_CTX, void *);
-typedef CURLcode (*_curl_ssl_ctx_callback6)(CURL *, SSL_CTX, const void *);
-typedef CURLcode (*_curl_ssl_ctx_callback7)(CURL *, const SSL_CTX, void *);
-typedef CURLcode (*_curl_ssl_ctx_callback8)(CURL *, const SSL_CTX,
-                                           const void *);
-#else
-typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback5;
-typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback6;
-typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback7;
-typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback8;
-#endif
-
-/* evaluates to true if expr is of type curl_conv_callback or "similar" */
-#define _curl_is_conv_cb(expr)                                          \
-  (_curl_is_NULL(expr) ||                                                     \
-   _curl_callback_compatible((expr), curl_conv_callback) ||                   \
-   _curl_callback_compatible((expr), _curl_conv_callback1) ||                 \
-   _curl_callback_compatible((expr), _curl_conv_callback2) ||                 \
-   _curl_callback_compatible((expr), _curl_conv_callback3) ||                 \
-   _curl_callback_compatible((expr), _curl_conv_callback4))
-typedef CURLcode (*_curl_conv_callback1)(char *, size_t length);
-typedef CURLcode (*_curl_conv_callback2)(const char *, size_t length);
-typedef CURLcode (*_curl_conv_callback3)(void *, size_t length);
-typedef CURLcode (*_curl_conv_callback4)(const void *, size_t length);
-
-/* evaluates to true if expr is of type curl_seek_callback or "similar" */
-#define _curl_is_seek_cb(expr)                                          \
-  (_curl_is_NULL(expr) ||                                                     \
-   _curl_callback_compatible((expr), curl_seek_callback) ||                   \
-   _curl_callback_compatible((expr), _curl_seek_callback1) ||                 \
-   _curl_callback_compatible((expr), _curl_seek_callback2))
-typedef CURLcode (*_curl_seek_callback1)(void *, curl_off_t, int);
-typedef CURLcode (*_curl_seek_callback2)(const void *, curl_off_t, int);
-
-
-#endif /* __CURL_TYPECHECK_GCC_H */
diff --git a/components/cronet/third_party/curl_headers/include/curl/urlapi.h b/components/cronet/third_party/curl_headers/include/curl/urlapi.h
deleted file mode 100644
index 58e89d8..0000000
--- a/components/cronet/third_party/curl_headers/include/curl/urlapi.h
+++ /dev/null
@@ -1,123 +0,0 @@
-#ifndef __CURL_URLAPI_H
-#define __CURL_URLAPI_H
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 2018 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.
- *
- ***************************************************************************/
-
-#include "curl.h"
-
-#ifdef  __cplusplus
-extern "C" {
-#endif
-
-/* the error codes for the URL API */
-typedef enum {
-  CURLUE_OK,
-  CURLUE_BAD_HANDLE,          /* 1 */
-  CURLUE_BAD_PARTPOINTER,     /* 2 */
-  CURLUE_MALFORMED_INPUT,     /* 3 */
-  CURLUE_BAD_PORT_NUMBER,     /* 4 */
-  CURLUE_UNSUPPORTED_SCHEME,  /* 5 */
-  CURLUE_URLDECODE,           /* 6 */
-  CURLUE_OUT_OF_MEMORY,       /* 7 */
-  CURLUE_USER_NOT_ALLOWED,    /* 8 */
-  CURLUE_UNKNOWN_PART,        /* 9 */
-  CURLUE_NO_SCHEME,           /* 10 */
-  CURLUE_NO_USER,             /* 11 */
-  CURLUE_NO_PASSWORD,         /* 12 */
-  CURLUE_NO_OPTIONS,          /* 13 */
-  CURLUE_NO_HOST,             /* 14 */
-  CURLUE_NO_PORT,             /* 15 */
-  CURLUE_NO_QUERY,            /* 16 */
-  CURLUE_NO_FRAGMENT          /* 17 */
-} CURLUcode;
-
-typedef enum {
-  CURLUPART_URL,
-  CURLUPART_SCHEME,
-  CURLUPART_USER,
-  CURLUPART_PASSWORD,
-  CURLUPART_OPTIONS,
-  CURLUPART_HOST,
-  CURLUPART_PORT,
-  CURLUPART_PATH,
-  CURLUPART_QUERY,
-  CURLUPART_FRAGMENT,
-  CURLUPART_ZONEID /* added in 7.65.0 */
-} CURLUPart;
-
-#define CURLU_DEFAULT_PORT (1<<0)       /* return default port number */
-#define CURLU_NO_DEFAULT_PORT (1<<1)    /* act as if no port number was set,
-                                           if the port number matches the
-                                           default for the scheme */
-#define CURLU_DEFAULT_SCHEME (1<<2)     /* return default scheme if
-                                           missing */
-#define CURLU_NON_SUPPORT_SCHEME (1<<3) /* allow non-supported scheme */
-#define CURLU_PATH_AS_IS (1<<4)         /* leave dot sequences */
-#define CURLU_DISALLOW_USER (1<<5)      /* no user+password allowed */
-#define CURLU_URLDECODE (1<<6)          /* URL decode on get */
-#define CURLU_URLENCODE (1<<7)          /* URL encode on set */
-#define CURLU_APPENDQUERY (1<<8)        /* append a form style part */
-#define CURLU_GUESS_SCHEME (1<<9)       /* legacy curl-style guessing */
-
-typedef struct Curl_URL CURLU;
-
-/*
- * curl_url() creates a new CURLU handle and returns a pointer to it.
- * Must be freed with curl_url_cleanup().
- */
-CURL_EXTERN CURLU *curl_url(void);
-
-/*
- * curl_url_cleanup() frees the CURLU handle and related resources used for
- * the URL parsing. It will not free strings previously returned with the URL
- * API.
- */
-CURL_EXTERN void curl_url_cleanup(CURLU *handle);
-
-/*
- * curl_url_dup() duplicates a CURLU handle and returns a new copy. The new
- * handle must also be freed with curl_url_cleanup().
- */
-CURL_EXTERN CURLU *curl_url_dup(CURLU *in);
-
-/*
- * curl_url_get() extracts a specific part of the URL from a CURLU
- * handle. Returns error code. The returned pointer MUST be freed with
- * curl_free() afterwards.
- */
-CURL_EXTERN CURLUcode curl_url_get(CURLU *handle, CURLUPart what,
-                                   char **part, unsigned int flags);
-
-/*
- * curl_url_set() sets a specific part of the URL in a CURLU handle. Returns
- * error code. The passed in string will be copied. Passing a NULL instead of
- * a part string, clears that part.
- */
-CURL_EXTERN CURLUcode curl_url_set(CURLU *handle, CURLUPart what,
-                                   const char *part, unsigned int flags);
-
-
-#ifdef __cplusplus
-} /* end of extern "C" */
-#endif
-
-#endif