Strip out deprecated, extension and old services code.
diff --git a/asio/tsify.pl b/asio/tsify.pl
index 85ed046..3dc1038 100755
--- a/asio/tsify.pl
+++ b/asio/tsify.pl
@@ -2,6 +2,7 @@
 
 use strict;
 use File::Path;
+# use Switch;
 
 our $output_dir = "tsified";
 
@@ -107,12 +108,135 @@
   open(my $input, "<$from") or die("Can't open $from for reading");
   open(my $output, ">$to") or die("Can't open $to for writing");
 
+  # State for stripping out deprecated, extension, and old services code.
+  my $deprecated_state = 0;
+  my $extension_state = 0;
+  my $old_services_state = 0;
+
   # Copy the content.
   my $lineno = 1;
   while (my $line = <$input>)
   {
     chomp($line);
 
+    # Strip out deprecated code.
+    if ($deprecated_state == 0)
+    {
+      if ($line =~ /#\s*if\s*defined\(ASIO_NO_DEPRECATED\)/)
+      {
+        $deprecated_state = 1;
+        next;
+      }
+      elsif ($line =~ /#\s*if\s*!defined\(ASIO_NO_DEPRECATED\)/)
+      {
+        $deprecated_state = -1;
+        next;
+      }
+    }
+    elsif ($deprecated_state == 1)
+    {
+      if ($line =~ /#\s*else\s*\/\/\s*!*defined\(ASIO_NO_DEPRECATED\)/)
+      {
+        $deprecated_state = -1;
+        next;
+      }
+      elsif ($line =~ /#\s*endif\s*\/\/\s*!*defined\(ASIO_NO_DEPRECATED\)/)
+      {
+        $deprecated_state = 0;
+        next;
+      }
+      else
+      {
+        $line =~ s/^# /#/;
+      }
+    }
+    elsif ($deprecated_state == -1)
+    {
+      if ($line =~ /#\s*else\s*\/\/\s*!*defined\(ASIO_NO_DEPRECATED\)/)
+      {
+        $deprecated_state = 1;
+      }
+      elsif ($line =~ /#\s*endif\s*\/\/\s*!*defined\(ASIO_NO_DEPRECATED\)/)
+      {
+        $deprecated_state = -2;
+      }
+      next;
+    }
+    elsif ($deprecated_state == -2)
+    {
+      $deprecated_state = 0;
+      next if ($line eq "");
+    }
+
+    # Strip out code for extensions.
+    if ($extension_state == 0)
+    {
+      if ($line =~ /#\s*if\s*!defined\(ASIO_NO_EXTENSIONS\)\s*$/)
+      {
+        $extension_state = -1;
+        next;
+      }
+    }
+    elsif ($extension_state == -1)
+    {
+      $extension_state = -2 if ($line =~ /#\s*endif\s*\/\/\s*!defined\(ASIO_NO_EXTENSIONS\)\s*$/);
+      next;
+    }
+    elsif ($extension_state == -2)
+    {
+      $extension_state = 0;
+      next if ($line eq "");
+    }
+
+    # Strip out code for old services.
+    if ($old_services_state == 0)
+    {
+      if ($line =~ /#\s*if\s*defined\(ASIO_ENABLE_OLD_SERVICES\)/)
+      {
+        $old_services_state = -1;
+        next;
+      }
+      elsif ($line =~ /#\s*if\s*!defined\(ASIO_ENABLE_OLD_SERVICES\)/)
+      {
+        $old_services_state = 1;
+        next;
+      }
+    }
+    elsif ($old_services_state == 1)
+    {
+      if ($line =~ /#\s*else\s*\/\/\s*!*defined\(ASIO_ENABLE_OLD_SERVICES\)/)
+      {
+        $old_services_state = -1;
+        next;
+      }
+      elsif ($line =~ /#\s*endif\s*\/\/\s*!*defined\(ASIO_ENABLE_OLD_SERVICES\)/)
+      {
+        $old_services_state = 0;
+        next;
+      }
+      else
+      {
+        $line =~ s/^# /#/;
+      }
+    }
+    elsif ($old_services_state == -1)
+    {
+      if ($line =~ /#\s*else\s*\/\/\s*!*defined\(ASIO_ENABLE_OLD_SERVICES\)/)
+      {
+        $old_services_state = 1;
+      }
+      elsif ($line =~ /#\s*endif\s*\/\/\s*!*defined\(ASIO_ENABLE_OLD_SERVICES\)/)
+      {
+        $old_services_state = -2;
+      }
+      next;
+    }
+    elsif ($old_services_state == -2)
+    {
+      $old_services_state = 0;
+      next if ($line eq "");
+    }
+
     # Unconditional replacements.
     $line =~ s/[\\@]ref boost_bind/std::bind()/g;
     if ($from =~ /.*\.txt$/)
@@ -279,8 +403,6 @@
       print_line($output, $line, $from, $lineno);
       print_line($output, "", $from, $lineno);
       print_line($output, "#define NET_TS_STANDALONE 1", $from, $lineno);
-      print_line($output, "#define NET_TS_NO_DEPRECATED 1", $from, $lineno);
-      print_line($output, "#define NET_TS_NO_EXTENSIONS 1", $from, $lineno);
     }
     else
     {
@@ -308,13 +430,20 @@
 
   my @excluded_includes = (
       "asio/basic_deadline_timer.hpp",
+      "asio/basic_streambuf.hpp",
+      "asio/basic_streambuf_fwd.hpp",
+      "asio/datagram_socket_service.hpp",
       "asio/deadline_timer.hpp",
       "asio/deadline_timer_service.hpp",
       "asio/io_context_strand.hpp",
       "asio/detail/strand_service.hpp",
       "asio/detail/impl/strand_service.hpp",
       "asio/detail/impl/strand_service.ipp",
-      "asio/time_traits.hpp");
+      "asio/socket_acceptor_service.hpp",
+      "asio/seq_packet_socket_service.hpp",
+      "asio/stream_socket_service.hpp",
+      "asio/time_traits.hpp",
+      "asio/waitable_timer_service.hpp");
 
   my @include_files = ();
   my %known_includes = ();