HTML: Add tentative tests for speculative HTML parsing

See https://github.com/whatwg/html/issues/5624
diff --git a/common/slow.py b/common/slow.py
index 5329a04..9be8aad 100644
--- a/common/slow.py
+++ b/common/slow.py
@@ -1,5 +1,6 @@
 import time
 
 def main(request, response):
-    time.sleep(2)
+    delay = float(request.GET.first(b"delay", 2000)) / 1000
+    time.sleep(delay)
     return 200, [], b''
diff --git a/html/syntax/speculative-parsing/generated/document-write/base-href-script-src.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/base-href-script-src.tentative.sub.html
new file mode 100644
index 0000000..23d2777
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/base-href-script-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): base-href-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'base-href-script-src', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <base href=//{{domains[www1]}}:{{ports[http][0]}}><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/image-src.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/image-src.tentative.sub.html
new file mode 100644
index 0000000..b026985
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/image-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): image-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'image-src', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <image src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/img-data-src.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/img-data-src.tentative.sub.html
new file mode 100644
index 0000000..21c14e3
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/img-data-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): img-data-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'img-data-src', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <img data-src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/img-src-crossorigin.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/img-src-crossorigin.tentative.sub.html
new file mode 100644
index 0000000..8d03847
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/img-src-crossorigin.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): img-src-crossorigin</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'img-src-crossorigin', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" crossorigin>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/img-src-loading-lazy.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/img-src-loading-lazy.tentative.sub.html
new file mode 100644
index 0000000..a1b1c92
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/img-src-loading-lazy.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): img-src-loading-lazy</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'img-src-loading-lazy', false))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" loading=lazy>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/img-src-referrerpolicy-no-referrer.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/img-src-referrerpolicy-no-referrer.tentative.sub.html
new file mode 100644
index 0000000..c26b933
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/img-src-referrerpolicy-no-referrer.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): img-src-referrerpolicy-no-referrer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'img-src-referrerpolicy-no-referrer', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/img-src.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/img-src.tentative.sub.html
new file mode 100644
index 0000000..b4d16da
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/img-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): img-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'img-src', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/img-srcset.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/img-srcset.tentative.sub.html
new file mode 100644
index 0000000..b08d597
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/img-srcset.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): img-srcset</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'img-srcset', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <img srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/link-no-rel.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/link-no-rel.tentative.sub.html
new file mode 100644
index 0000000..260f7a5
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/link-no-rel.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-no-rel</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'link-no-rel', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <link href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/link-rel-alternate-stylesheet.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/link-rel-alternate-stylesheet.tentative.sub.html
new file mode 100644
index 0000000..0b82352
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/link-rel-alternate-stylesheet.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-alternate-stylesheet</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-alternate-stylesheet', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <link rel="alternate stylesheet" href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-font-crossorigin.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-font-crossorigin.tentative.sub.html
new file mode 100644
index 0000000..2ae82c0
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-font-crossorigin.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-preload-as-font-crossorigin</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-preload-as-font-crossorigin', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <link rel=preload as=font href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" crossorigin>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-image.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-image.tentative.sub.html
new file mode 100644
index 0000000..098e08f
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-image.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-preload-as-image</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-preload-as-image', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <link rel=preload as=image href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-script.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-script.tentative.sub.html
new file mode 100644
index 0000000..bfa48f0
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-script.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-preload-as-script</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-preload-as-script', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <link rel=preload as=script href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-style.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-style.tentative.sub.html
new file mode 100644
index 0000000..75e5a9d
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-style.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-preload-as-style</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-preload-as-style', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <link rel=preload as=style href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-crossorigin.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-crossorigin.tentative.sub.html
new file mode 100644
index 0000000..66ac2e4
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-crossorigin.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-stylesheet-crossorigin</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-crossorigin', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" crossorigin>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-disabled.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-disabled.tentative.sub.html
new file mode 100644
index 0000000..58dbfe6
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-disabled.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-stylesheet-disabled</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-disabled', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <link rel="stylesheet" href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" disabled>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-integrity.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-integrity.tentative.sub.html
new file mode 100644
index 0000000..35369c3
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-integrity.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-stylesheet-integrity</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-integrity', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" integrity="sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb">
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-nomatch-media.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-nomatch-media.tentative.sub.html
new file mode 100644
index 0000000..74cf92b
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-nomatch-media.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-stylesheet-nomatch-media</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-nomatch-media', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" media="not all">
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-referrerpolicy-no-referrer.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-referrerpolicy-no-referrer.tentative.sub.html
new file mode 100644
index 0000000..f25a60f
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-referrerpolicy-no-referrer.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-stylesheet-referrerpolicy-no-referrer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-referrerpolicy-no-referrer', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-type-text-css.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-type-text-css.tentative.sub.html
new file mode 100644
index 0000000..c5dcfc4
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-type-text-css.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-stylesheet-type-text-css</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-type-text-css', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" type=text/css>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-unsupported-type.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-unsupported-type.tentative.sub.html
new file mode 100644
index 0000000..ed441e7
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-unsupported-type.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-stylesheet-unsupported-type</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-unsupported-type', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" type=text/plain>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet.tentative.sub.html
new file mode 100644
index 0000000..de6df7e
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-stylesheet</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/math-font-face-script-src.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/math-font-face-script-src.tentative.sub.html
new file mode 100644
index 0000000..62b5bff
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/math-font-face-script-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): math-font-face-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'math-font-face-script-src', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <math><font face><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></font></math>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/math-font-script-src.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/math-font-script-src.tentative.sub.html
new file mode 100644
index 0000000..4fd7ea8
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/math-font-script-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): math-font-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'math-font-script-src', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <math><font><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></font></math>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/math-script-src.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/math-script-src.tentative.sub.html
new file mode 100644
index 0000000..00876ca
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/math-script-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): math-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'math-script-src', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <math><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></math>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/meta-charset-script-src.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/meta-charset-script-src.tentative.sub.html
new file mode 100644
index 0000000..8b5072a
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/meta-charset-script-src.tentative.sub.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<!-- no meta charset -->
+<!-- (padding to exceed 1024 bytes processed by the character encoding scanner)                  -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<title>Speculative parsing, document.write(): meta-charset-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'meta-charset-script-src', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <meta\ charset=windows-1254><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/meta-csp-img-src-asterisk.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/meta-csp-img-src-asterisk.tentative.sub.html
new file mode 100644
index 0000000..2d9f8ae
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/meta-csp-img-src-asterisk.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): meta-csp-img-src-asterisk</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'meta-csp-img-src-asterisk', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; img-src *"><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/meta-csp-img-src-none.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/meta-csp-img-src-none.tentative.sub.html
new file mode 100644
index 0000000..0266ae7
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/meta-csp-img-src-none.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): meta-csp-img-src-none</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'meta-csp-img-src-none', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; img-src 'none'"><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/meta-referrer-no-referrer-img-src.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/meta-referrer-no-referrer-img-src.tentative.sub.html
new file mode 100644
index 0000000..b0d0b91
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/meta-referrer-no-referrer-img-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): meta-referrer-no-referrer-img-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'meta-referrer-no-referrer-img-src', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <meta name=referrer content=no-referrer><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/meta-viewport-link-stylesheet-media.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/meta-viewport-link-stylesheet-media.tentative.sub.html
new file mode 100644
index 0000000..b7ab5ff
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/meta-viewport-link-stylesheet-media.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): meta-viewport-link-stylesheet-media</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'meta-viewport-link-stylesheet-media', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <meta name=viewport content="width=400, initial-scale=1"><link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" media="(min-width: 401px)">
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/picture-source-br-img.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/picture-source-br-img.tentative.sub.html
new file mode 100644
index 0000000..914dfb8
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/picture-source-br-img.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): picture-source-br-img</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'picture-source-br-img', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><br><img></picture>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/picture-source-no-img.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/picture-source-no-img.tentative.sub.html
new file mode 100644
index 0000000..6ca192e
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/picture-source-no-img.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): picture-source-no-img</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'picture-source-no-img', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"></picture>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/picture-source-nomatch-media.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/picture-source-nomatch-media.tentative.sub.html
new file mode 100644
index 0000000..d48d310
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/picture-source-nomatch-media.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): picture-source-nomatch-media</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'picture-source-nomatch-media', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" media="not all"><img></picture>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/picture-source-unsupported-type.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/picture-source-unsupported-type.tentative.sub.html
new file mode 100644
index 0000000..e387d51
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/picture-source-unsupported-type.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): picture-source-unsupported-type</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'picture-source-unsupported-type', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" type=text/plain><img></picture>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/script-src-async.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/script-src-async.tentative.sub.html
new file mode 100644
index 0000000..f4b42c4
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/script-src-async.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-async</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'script-src-async', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" async><\/script>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/script-src-crossorigin.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/script-src-crossorigin.tentative.sub.html
new file mode 100644
index 0000000..b95f550
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/script-src-crossorigin.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-crossorigin</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'script-src-crossorigin', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" crossorigin><\/script>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/script-src-defer.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/script-src-defer.tentative.sub.html
new file mode 100644
index 0000000..5cf8e15
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/script-src-defer.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-defer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'script-src-defer', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" defer><\/script>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/script-src-integrity.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/script-src-integrity.tentative.sub.html
new file mode 100644
index 0000000..6f66636
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/script-src-integrity.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-integrity</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'script-src-integrity', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" integrity="sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb"><\/script>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/script-src-module.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/script-src-module.tentative.sub.html
new file mode 100644
index 0000000..229b2b8
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/script-src-module.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-module</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'script-src-module', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" type=module><\/script>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/script-src-nomodule.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/script-src-nomodule.tentative.sub.html
new file mode 100644
index 0000000..3f61dba
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/script-src-nomodule.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-nomodule</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'script-src-nomodule', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" nomodule><\/script>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/script-src-referrerpolicy-no-referrer.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/script-src-referrerpolicy-no-referrer.tentative.sub.html
new file mode 100644
index 0000000..ea67a33
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/script-src-referrerpolicy-no-referrer.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-referrerpolicy-no-referrer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'script-src-referrerpolicy-no-referrer', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer><\/script>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/script-src-type-application-ecmascript.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/script-src-type-application-ecmascript.tentative.sub.html
new file mode 100644
index 0000000..000843a
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/script-src-type-application-ecmascript.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-type-application-ecmascript</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'script-src-type-application-ecmascript', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" type=application/ecmascript><\/script>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/script-src-unsupported-type.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/script-src-unsupported-type.tentative.sub.html
new file mode 100644
index 0000000..1eaa564
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/script-src-unsupported-type.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-unsupported-type</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'script-src-unsupported-type', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" type=text/plain><\/script>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/script-src.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/script-src.tentative.sub.html
new file mode 100644
index 0000000..4339e82
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/script-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'script-src', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/svg-image-href.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/svg-image-href.tentative.sub.html
new file mode 100644
index 0000000..1f7974c
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/svg-image-href.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): svg-image-href</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'svg-image-href', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <svg><image href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"></image></svg>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/svg-image-src.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/svg-image-src.tentative.sub.html
new file mode 100644
index 0000000..50b6320
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/svg-image-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): svg-image-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'svg-image-src', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <svg><image src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"></image></svg>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/svg-image-xlinkhref.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/svg-image-xlinkhref.tentative.sub.html
new file mode 100644
index 0000000..7d8a0f0
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/svg-image-xlinkhref.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): svg-image-xlinkhref</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'svg-image-xlinkhref', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <svg><image xlink:href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"></image></svg>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/svg-script-href.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/svg-script-href.tentative.sub.html
new file mode 100644
index 0000000..13b6cda
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/svg-script-href.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): svg-script-href</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'svg-script-href', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <svg><script href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></svg>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/svg-script-src.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/svg-script-src.tentative.sub.html
new file mode 100644
index 0000000..ea37cc7
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/svg-script-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): svg-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'svg-script-src', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <svg><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></svg>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/svg-script-xlinkhref.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/svg-script-xlinkhref.tentative.sub.html
new file mode 100644
index 0000000..df0f28e
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/svg-script-xlinkhref.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): svg-script-xlinkhref</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'svg-script-xlinkhref', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <svg><script xlink:href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></svg>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/template-script-src.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/template-script-src.tentative.sub.html
new file mode 100644
index 0000000..b9e4177
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/template-script-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): template-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'template-script-src', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <template><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></template>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/video-poster.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/video-poster.tentative.sub.html
new file mode 100644
index 0000000..e14bf19
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/video-poster.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): video-poster</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'video-poster', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <video poster="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"></video>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/document-write/xmp-script-src.tentative.sub.html b/html/syntax/speculative-parsing/generated/document-write/xmp-script-src.tentative.sub.html
new file mode 100644
index 0000000..89ecaf1
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/document-write/xmp-script-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): xmp-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'xmp-script-src', true))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay=1500"><\/script>
+    <script>
+     document.write('<plaintext>');
+    <\/script>
+    <\!-- speculative case in document.write -->
+    <xmp><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></xmp>
+  `);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/base-href-script-src.tentative.html b/html/syntax/speculative-parsing/generated/page-load/base-href-script-src.tentative.html
new file mode 100644
index 0000000..d37d683
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/base-href-script-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: base-href-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/base-href-script-src-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'base-href-script-src', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/image-src.tentative.html b/html/syntax/speculative-parsing/generated/page-load/image-src.tentative.html
new file mode 100644
index 0000000..4092937
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/image-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: image-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/image-src-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'image-src', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/img-data-src.tentative.html b/html/syntax/speculative-parsing/generated/page-load/img-data-src.tentative.html
new file mode 100644
index 0000000..54bed45
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/img-data-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: img-data-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/img-data-src-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'img-data-src', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/img-src-crossorigin.tentative.html b/html/syntax/speculative-parsing/generated/page-load/img-src-crossorigin.tentative.html
new file mode 100644
index 0000000..3b47252
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/img-src-crossorigin.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: img-src-crossorigin</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/img-src-crossorigin-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'img-src-crossorigin', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/img-src-loading-lazy.tentative.html b/html/syntax/speculative-parsing/generated/page-load/img-src-loading-lazy.tentative.html
new file mode 100644
index 0000000..7fd4a12
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/img-src-loading-lazy.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: img-src-loading-lazy</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/img-src-loading-lazy-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'img-src-loading-lazy', false))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/img-src-referrerpolicy-no-referrer.tentative.html b/html/syntax/speculative-parsing/generated/page-load/img-src-referrerpolicy-no-referrer.tentative.html
new file mode 100644
index 0000000..e41d2c3
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/img-src-referrerpolicy-no-referrer.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: img-src-referrerpolicy-no-referrer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/img-src-referrerpolicy-no-referrer-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'img-src-referrerpolicy-no-referrer', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/img-src.tentative.html b/html/syntax/speculative-parsing/generated/page-load/img-src.tentative.html
new file mode 100644
index 0000000..fda270a
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/img-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: img-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/img-src-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'img-src', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/img-srcset.tentative.html b/html/syntax/speculative-parsing/generated/page-load/img-srcset.tentative.html
new file mode 100644
index 0000000..5878e14
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/img-srcset.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: img-srcset</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/img-srcset-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'img-srcset', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/link-no-rel.tentative.html b/html/syntax/speculative-parsing/generated/page-load/link-no-rel.tentative.html
new file mode 100644
index 0000000..7b92551
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/link-no-rel.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-no-rel</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/link-no-rel-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'link-no-rel', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/link-rel-alternate-stylesheet.tentative.html b/html/syntax/speculative-parsing/generated/page-load/link-rel-alternate-stylesheet.tentative.html
new file mode 100644
index 0000000..7a8eb2a
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/link-rel-alternate-stylesheet.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-alternate-stylesheet</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/link-rel-alternate-stylesheet-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-alternate-stylesheet', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-font-crossorigin.tentative.html b/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-font-crossorigin.tentative.html
new file mode 100644
index 0000000..f679c97
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-font-crossorigin.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-preload-as-font-crossorigin</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/link-rel-preload-as-font-crossorigin-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-preload-as-font-crossorigin', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-image.tentative.html b/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-image.tentative.html
new file mode 100644
index 0000000..adc59b7
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-image.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-preload-as-image</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/link-rel-preload-as-image-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-preload-as-image', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-script.tentative.html b/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-script.tentative.html
new file mode 100644
index 0000000..705b56b
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-script.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-preload-as-script</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/link-rel-preload-as-script-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-preload-as-script', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-style.tentative.html b/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-style.tentative.html
new file mode 100644
index 0000000..ea0cd39
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-style.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-preload-as-style</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/link-rel-preload-as-style-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-preload-as-style', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-crossorigin.tentative.html b/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-crossorigin.tentative.html
new file mode 100644
index 0000000..c227593
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-crossorigin.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-stylesheet-crossorigin</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/link-rel-stylesheet-crossorigin-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-crossorigin', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-disabled.tentative.html b/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-disabled.tentative.html
new file mode 100644
index 0000000..5f232aa
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-disabled.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-stylesheet-disabled</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/link-rel-stylesheet-disabled-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-disabled', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-integrity.tentative.html b/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-integrity.tentative.html
new file mode 100644
index 0000000..266fb5b
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-integrity.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-stylesheet-integrity</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/link-rel-stylesheet-integrity-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-integrity', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-nomatch-media.tentative.html b/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-nomatch-media.tentative.html
new file mode 100644
index 0000000..49feea0
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-nomatch-media.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-stylesheet-nomatch-media</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/link-rel-stylesheet-nomatch-media-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-nomatch-media', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-referrerpolicy-no-referrer.tentative.html b/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-referrerpolicy-no-referrer.tentative.html
new file mode 100644
index 0000000..635f234
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-referrerpolicy-no-referrer.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-stylesheet-referrerpolicy-no-referrer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/link-rel-stylesheet-referrerpolicy-no-referrer-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-referrerpolicy-no-referrer', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-type-text-css.tentative.html b/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-type-text-css.tentative.html
new file mode 100644
index 0000000..a2af61a
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-type-text-css.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-stylesheet-type-text-css</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/link-rel-stylesheet-type-text-css-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-type-text-css', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-unsupported-type.tentative.html b/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-unsupported-type.tentative.html
new file mode 100644
index 0000000..17fb172
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-unsupported-type.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-stylesheet-unsupported-type</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/link-rel-stylesheet-unsupported-type-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-unsupported-type', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet.tentative.html b/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet.tentative.html
new file mode 100644
index 0000000..07e4152
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-stylesheet</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/link-rel-stylesheet-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/math-font-face-script-src.tentative.html b/html/syntax/speculative-parsing/generated/page-load/math-font-face-script-src.tentative.html
new file mode 100644
index 0000000..47516ba
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/math-font-face-script-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: math-font-face-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/math-font-face-script-src-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'math-font-face-script-src', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/math-font-script-src.tentative.html b/html/syntax/speculative-parsing/generated/page-load/math-font-script-src.tentative.html
new file mode 100644
index 0000000..9a99c63
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/math-font-script-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: math-font-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/math-font-script-src-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'math-font-script-src', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/math-script-src.tentative.html b/html/syntax/speculative-parsing/generated/page-load/math-script-src.tentative.html
new file mode 100644
index 0000000..54e6d40
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/math-script-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: math-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/math-script-src-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'math-script-src', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/meta-charset-script-src.tentative.html b/html/syntax/speculative-parsing/generated/page-load/meta-charset-script-src.tentative.html
new file mode 100644
index 0000000..e8dfaaf
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/meta-charset-script-src.tentative.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<!-- no meta charset -->
+<!-- (padding to exceed 1024 bytes processed by the character encoding scanner)                  -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<title>Speculative parsing, page load: meta-charset-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/meta-charset-script-src-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'meta-charset-script-src', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/meta-csp-img-src-asterisk.tentative.html b/html/syntax/speculative-parsing/generated/page-load/meta-csp-img-src-asterisk.tentative.html
new file mode 100644
index 0000000..35d7374
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/meta-csp-img-src-asterisk.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: meta-csp-img-src-asterisk</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/meta-csp-img-src-asterisk-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'meta-csp-img-src-asterisk', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/meta-csp-img-src-none.tentative.html b/html/syntax/speculative-parsing/generated/page-load/meta-csp-img-src-none.tentative.html
new file mode 100644
index 0000000..21984fd
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/meta-csp-img-src-none.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: meta-csp-img-src-none</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/meta-csp-img-src-none-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'meta-csp-img-src-none', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/meta-referrer-no-referrer-img-src.tentative.html b/html/syntax/speculative-parsing/generated/page-load/meta-referrer-no-referrer-img-src.tentative.html
new file mode 100644
index 0000000..7d03f49
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/meta-referrer-no-referrer-img-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: meta-referrer-no-referrer-img-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/meta-referrer-no-referrer-img-src-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'meta-referrer-no-referrer-img-src', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/meta-viewport-link-stylesheet-media.tentative.html b/html/syntax/speculative-parsing/generated/page-load/meta-viewport-link-stylesheet-media.tentative.html
new file mode 100644
index 0000000..0ba60c7
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/meta-viewport-link-stylesheet-media.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: meta-viewport-link-stylesheet-media</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/meta-viewport-link-stylesheet-media-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'meta-viewport-link-stylesheet-media', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/picture-source-br-img.tentative.html b/html/syntax/speculative-parsing/generated/page-load/picture-source-br-img.tentative.html
new file mode 100644
index 0000000..38acd47
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/picture-source-br-img.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: picture-source-br-img</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/picture-source-br-img-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'picture-source-br-img', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/picture-source-no-img.tentative.html b/html/syntax/speculative-parsing/generated/page-load/picture-source-no-img.tentative.html
new file mode 100644
index 0000000..a7196c7
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/picture-source-no-img.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: picture-source-no-img</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/picture-source-no-img-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'picture-source-no-img', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/picture-source-nomatch-media.tentative.html b/html/syntax/speculative-parsing/generated/page-load/picture-source-nomatch-media.tentative.html
new file mode 100644
index 0000000..d1d5e22
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/picture-source-nomatch-media.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: picture-source-nomatch-media</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/picture-source-nomatch-media-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'picture-source-nomatch-media', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/picture-source-unsupported-type.tentative.html b/html/syntax/speculative-parsing/generated/page-load/picture-source-unsupported-type.tentative.html
new file mode 100644
index 0000000..9818055
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/picture-source-unsupported-type.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: picture-source-unsupported-type</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/picture-source-unsupported-type-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'picture-source-unsupported-type', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/base-href-script-src-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/base-href-script-src-framed.sub.html
new file mode 100644
index 0000000..c0913c2
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/base-href-script-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): base-href-script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<base href=//{{domains[www1]}}:{{ports[http][0]}}><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/image-src-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/image-src-framed.sub.html
new file mode 100644
index 0000000..4a335c7
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/image-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): image-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<image src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/img-data-src-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/img-data-src-framed.sub.html
new file mode 100644
index 0000000..20df9ba
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/img-data-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): img-data-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<img data-src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/img-src-crossorigin-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/img-src-crossorigin-framed.sub.html
new file mode 100644
index 0000000..9302abd
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/img-src-crossorigin-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): img-src-crossorigin</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" crossorigin>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/img-src-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/img-src-framed.sub.html
new file mode 100644
index 0000000..ba2607e
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/img-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): img-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/img-src-loading-lazy-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/img-src-loading-lazy-framed.sub.html
new file mode 100644
index 0000000..9cc49cf
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/img-src-loading-lazy-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): img-src-loading-lazy</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" loading=lazy>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/img-src-referrerpolicy-no-referrer-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/img-src-referrerpolicy-no-referrer-framed.sub.html
new file mode 100644
index 0000000..7f466d1
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/img-src-referrerpolicy-no-referrer-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): img-src-referrerpolicy-no-referrer</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/img-srcset-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/img-srcset-framed.sub.html
new file mode 100644
index 0000000..3c791bb
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/img-srcset-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): img-srcset</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<img srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/link-no-rel-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/link-no-rel-framed.sub.html
new file mode 100644
index 0000000..12e79cd
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/link-no-rel-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-no-rel</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-alternate-stylesheet-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-alternate-stylesheet-framed.sub.html
new file mode 100644
index 0000000..2d4dc3d
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-alternate-stylesheet-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-alternate-stylesheet</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel="alternate stylesheet" href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-font-crossorigin-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-font-crossorigin-framed.sub.html
new file mode 100644
index 0000000..e1ac7d5
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-font-crossorigin-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-preload-as-font-crossorigin</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=preload as=font href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" crossorigin>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-image-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-image-framed.sub.html
new file mode 100644
index 0000000..6cc4803
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-image-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-preload-as-image</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=preload as=image href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-script-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-script-framed.sub.html
new file mode 100644
index 0000000..10d1092
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-script-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-preload-as-script</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=preload as=script href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-style-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-style-framed.sub.html
new file mode 100644
index 0000000..e77d4da
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-style-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-preload-as-style</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=preload as=style href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-crossorigin-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-crossorigin-framed.sub.html
new file mode 100644
index 0000000..4dc7917
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-crossorigin-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-stylesheet-crossorigin</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" crossorigin>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-disabled-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-disabled-framed.sub.html
new file mode 100644
index 0000000..ec535ad
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-disabled-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-stylesheet-disabled</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel="stylesheet" href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" disabled>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-framed.sub.html
new file mode 100644
index 0000000..7b3bf61
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-stylesheet</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-integrity-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-integrity-framed.sub.html
new file mode 100644
index 0000000..752077d
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-integrity-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-stylesheet-integrity</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" integrity="sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb">
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-nomatch-media-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-nomatch-media-framed.sub.html
new file mode 100644
index 0000000..8ddb717
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-nomatch-media-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-stylesheet-nomatch-media</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" media="not all">
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-referrerpolicy-no-referrer-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-referrerpolicy-no-referrer-framed.sub.html
new file mode 100644
index 0000000..2f149ef
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-referrerpolicy-no-referrer-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-stylesheet-referrerpolicy-no-referrer</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-type-text-css-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-type-text-css-framed.sub.html
new file mode 100644
index 0000000..c402422
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-type-text-css-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-stylesheet-type-text-css</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=text/css>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-unsupported-type-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-unsupported-type-framed.sub.html
new file mode 100644
index 0000000..f0c5016
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-unsupported-type-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-stylesheet-unsupported-type</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=text/plain>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/math-font-face-script-src-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/math-font-face-script-src-framed.sub.html
new file mode 100644
index 0000000..90e99fb
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/math-font-face-script-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): math-font-face-script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<math><font face><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></font></math>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/math-font-script-src-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/math-font-script-src-framed.sub.html
new file mode 100644
index 0000000..fc35940
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/math-font-script-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): math-font-script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<math><font><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></font></math>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/math-script-src-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/math-script-src-framed.sub.html
new file mode 100644
index 0000000..71697e6
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/math-script-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): math-script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<math><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></math>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/meta-charset-script-src-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/meta-charset-script-src-framed.sub.html
new file mode 100644
index 0000000..001c0c2
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/meta-charset-script-src-framed.sub.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<!-- no meta charset -->
+<!-- (padding to exceed 1024 bytes processed by the character encoding scanner)                  -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<title>Speculative parsing, page load (helper file): meta-charset-script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<meta charset=windows-1254><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/meta-csp-img-src-asterisk-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/meta-csp-img-src-asterisk-framed.sub.html
new file mode 100644
index 0000000..3ac046d
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/meta-csp-img-src-asterisk-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): meta-csp-img-src-asterisk</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; img-src *"><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/meta-csp-img-src-none-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/meta-csp-img-src-none-framed.sub.html
new file mode 100644
index 0000000..08929d8
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/meta-csp-img-src-none-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): meta-csp-img-src-none</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; img-src 'none'"><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/meta-referrer-no-referrer-img-src-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/meta-referrer-no-referrer-img-src-framed.sub.html
new file mode 100644
index 0000000..a8a3449
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/meta-referrer-no-referrer-img-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): meta-referrer-no-referrer-img-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<meta name=referrer content=no-referrer><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/meta-viewport-link-stylesheet-media-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/meta-viewport-link-stylesheet-media-framed.sub.html
new file mode 100644
index 0000000..8e294e8
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/meta-viewport-link-stylesheet-media-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): meta-viewport-link-stylesheet-media</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<meta name=viewport content="width=400, initial-scale=1"><link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" media="(min-width: 401px)">
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-br-img-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-br-img-framed.sub.html
new file mode 100644
index 0000000..aea18d1
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-br-img-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): picture-source-br-img</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"><br><img></picture>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-no-img-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-no-img-framed.sub.html
new file mode 100644
index 0000000..5367cd4
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-no-img-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): picture-source-no-img</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></picture>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-nomatch-media-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-nomatch-media-framed.sub.html
new file mode 100644
index 0000000..a8e696f
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-nomatch-media-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): picture-source-nomatch-media</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" media="not all"><img></picture>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-unsupported-type-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-unsupported-type-framed.sub.html
new file mode 100644
index 0000000..0ed9536
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-unsupported-type-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): picture-source-unsupported-type</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=text/plain><img></picture>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/script-src-async-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-async-framed.sub.html
new file mode 100644
index 0000000..5e6cbff
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-async-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-async</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" async></script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/script-src-crossorigin-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-crossorigin-framed.sub.html
new file mode 100644
index 0000000..098d07c
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-crossorigin-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-crossorigin</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" crossorigin></script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/script-src-defer-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-defer-framed.sub.html
new file mode 100644
index 0000000..7decc7b
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-defer-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-defer</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" defer></script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/script-src-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-framed.sub.html
new file mode 100644
index 0000000..baab010
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/script-src-integrity-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-integrity-framed.sub.html
new file mode 100644
index 0000000..7c0ca5e
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-integrity-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-integrity</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" integrity="sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb"></script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/script-src-module-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-module-framed.sub.html
new file mode 100644
index 0000000..5c36522
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-module-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-module</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=module></script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/script-src-nomodule-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-nomodule-framed.sub.html
new file mode 100644
index 0000000..46af7c8
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-nomodule-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-nomodule</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" nomodule></script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/script-src-referrerpolicy-no-referrer-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-referrerpolicy-no-referrer-framed.sub.html
new file mode 100644
index 0000000..566d2f6
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-referrerpolicy-no-referrer-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-referrerpolicy-no-referrer</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer></script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/script-src-type-application-ecmascript-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-type-application-ecmascript-framed.sub.html
new file mode 100644
index 0000000..08609b1
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-type-application-ecmascript-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-type-application-ecmascript</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=application/ecmascript></script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/script-src-unsupported-type-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-unsupported-type-framed.sub.html
new file mode 100644
index 0000000..1f38560
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/script-src-unsupported-type-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-unsupported-type</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=text/plain></script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-href-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-href-framed.sub.html
new file mode 100644
index 0000000..fc4e531
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-href-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): svg-image-href</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<svg><image href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></image></svg>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-src-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-src-framed.sub.html
new file mode 100644
index 0000000..16d97e0
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): svg-image-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<svg><image src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></image></svg>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-xlinkhref-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-xlinkhref-framed.sub.html
new file mode 100644
index 0000000..8e5dd1e
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-xlinkhref-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): svg-image-xlinkhref</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<svg><image xlink:href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></image></svg>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-href-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-href-framed.sub.html
new file mode 100644
index 0000000..6a208cb
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-href-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): svg-script-href</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<svg><script href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></svg>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-src-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-src-framed.sub.html
new file mode 100644
index 0000000..e8c1784
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): svg-script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<svg><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></svg>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-xlinkhref-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-xlinkhref-framed.sub.html
new file mode 100644
index 0000000..e634000
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-xlinkhref-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): svg-script-xlinkhref</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<svg><script xlink:href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></svg>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/template-script-src-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/template-script-src-framed.sub.html
new file mode 100644
index 0000000..8582d10
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/template-script-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): template-script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<template><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></template>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/video-poster-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/video-poster-framed.sub.html
new file mode 100644
index 0000000..ad2c7ce
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/video-poster-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): video-poster</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<video poster="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></video>
diff --git a/html/syntax/speculative-parsing/generated/page-load/resources/xmp-script-src-framed.sub.html b/html/syntax/speculative-parsing/generated/page-load/resources/xmp-script-src-framed.sub.html
new file mode 100644
index 0000000..3c5ea92
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/resources/xmp-script-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): xmp-script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<xmp><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></xmp>
diff --git a/html/syntax/speculative-parsing/generated/page-load/script-src-async.tentative.html b/html/syntax/speculative-parsing/generated/page-load/script-src-async.tentative.html
new file mode 100644
index 0000000..d462508
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/script-src-async.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-async</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/script-src-async-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'script-src-async', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/script-src-crossorigin.tentative.html b/html/syntax/speculative-parsing/generated/page-load/script-src-crossorigin.tentative.html
new file mode 100644
index 0000000..59d3d9e
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/script-src-crossorigin.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-crossorigin</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/script-src-crossorigin-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'script-src-crossorigin', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/script-src-defer.tentative.html b/html/syntax/speculative-parsing/generated/page-load/script-src-defer.tentative.html
new file mode 100644
index 0000000..b8bf489
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/script-src-defer.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-defer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/script-src-defer-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'script-src-defer', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/script-src-integrity.tentative.html b/html/syntax/speculative-parsing/generated/page-load/script-src-integrity.tentative.html
new file mode 100644
index 0000000..42719e9
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/script-src-integrity.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-integrity</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/script-src-integrity-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'script-src-integrity', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/script-src-module.tentative.html b/html/syntax/speculative-parsing/generated/page-load/script-src-module.tentative.html
new file mode 100644
index 0000000..606a1ff
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/script-src-module.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-module</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/script-src-module-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'script-src-module', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/script-src-nomodule.tentative.html b/html/syntax/speculative-parsing/generated/page-load/script-src-nomodule.tentative.html
new file mode 100644
index 0000000..20ca802
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/script-src-nomodule.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-nomodule</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/script-src-nomodule-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'script-src-nomodule', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/script-src-referrerpolicy-no-referrer.tentative.html b/html/syntax/speculative-parsing/generated/page-load/script-src-referrerpolicy-no-referrer.tentative.html
new file mode 100644
index 0000000..cf35f52
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/script-src-referrerpolicy-no-referrer.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-referrerpolicy-no-referrer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/script-src-referrerpolicy-no-referrer-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'script-src-referrerpolicy-no-referrer', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/script-src-type-application-ecmascript.tentative.html b/html/syntax/speculative-parsing/generated/page-load/script-src-type-application-ecmascript.tentative.html
new file mode 100644
index 0000000..611afc7
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/script-src-type-application-ecmascript.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-type-application-ecmascript</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/script-src-type-application-ecmascript-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'script-src-type-application-ecmascript', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/script-src-unsupported-type.tentative.html b/html/syntax/speculative-parsing/generated/page-load/script-src-unsupported-type.tentative.html
new file mode 100644
index 0000000..c7c5b48
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/script-src-unsupported-type.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-unsupported-type</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/script-src-unsupported-type-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'script-src-unsupported-type', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/script-src.tentative.html b/html/syntax/speculative-parsing/generated/page-load/script-src.tentative.html
new file mode 100644
index 0000000..1d545ff
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/script-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/script-src-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'script-src', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/svg-image-href.tentative.html b/html/syntax/speculative-parsing/generated/page-load/svg-image-href.tentative.html
new file mode 100644
index 0000000..b5e22c1
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/svg-image-href.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: svg-image-href</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/svg-image-href-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'svg-image-href', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/svg-image-src.tentative.html b/html/syntax/speculative-parsing/generated/page-load/svg-image-src.tentative.html
new file mode 100644
index 0000000..63232fa
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/svg-image-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: svg-image-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/svg-image-src-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'svg-image-src', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/svg-image-xlinkhref.tentative.html b/html/syntax/speculative-parsing/generated/page-load/svg-image-xlinkhref.tentative.html
new file mode 100644
index 0000000..9887004
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/svg-image-xlinkhref.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: svg-image-xlinkhref</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/svg-image-xlinkhref-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'svg-image-xlinkhref', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/svg-script-href.tentative.html b/html/syntax/speculative-parsing/generated/page-load/svg-script-href.tentative.html
new file mode 100644
index 0000000..54d4e31
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/svg-script-href.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: svg-script-href</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/svg-script-href-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'svg-script-href', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/svg-script-src.tentative.html b/html/syntax/speculative-parsing/generated/page-load/svg-script-src.tentative.html
new file mode 100644
index 0000000..8b2397e
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/svg-script-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: svg-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/svg-script-src-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'svg-script-src', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/svg-script-xlinkhref.tentative.html b/html/syntax/speculative-parsing/generated/page-load/svg-script-xlinkhref.tentative.html
new file mode 100644
index 0000000..08b4efc
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/svg-script-xlinkhref.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: svg-script-xlinkhref</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/svg-script-xlinkhref-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'svg-script-xlinkhref', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/template-script-src.tentative.html b/html/syntax/speculative-parsing/generated/page-load/template-script-src.tentative.html
new file mode 100644
index 0000000..f5c23dd
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/template-script-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: template-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/template-script-src-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'template-script-src', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/video-poster.tentative.html b/html/syntax/speculative-parsing/generated/page-load/video-poster.tentative.html
new file mode 100644
index 0000000..73b9cb5
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/video-poster.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: video-poster</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/video-poster-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, true)
+    .then(compare_with_nonspeculative(uuid, 'video-poster', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/page-load/xmp-script-src.tentative.html b/html/syntax/speculative-parsing/generated/page-load/xmp-script-src.tentative.html
new file mode 100644
index 0000000..cee708f
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/page-load/xmp-script-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: xmp-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({single_test: true});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/xmp-script-src-framed.sub.html?uuid=${uuid}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, false)
+    .then(compare_with_nonspeculative(uuid, 'xmp-script-src', true))
+    .then(done);
+</script>
diff --git a/html/syntax/speculative-parsing/generated/resources/base-href-script-src-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/base-href-script-src-nonspeculative.sub.html
new file mode 100644
index 0000000..e860f0e
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/base-href-script-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): base-href-script-src</title>
+<!-- non-speculative case -->
+<base href=//{{domains[www1]}}:{{ports[http][0]}}><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/image-src-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/image-src-nonspeculative.sub.html
new file mode 100644
index 0000000..3d0ec70
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/image-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): image-src</title>
+<!-- non-speculative case -->
+<image src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/img-data-src-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/img-data-src-nonspeculative.sub.html
new file mode 100644
index 0000000..f739f59
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/img-data-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): img-data-src</title>
+<!-- non-speculative case -->
+<img data-src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/img-src-crossorigin-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/img-src-crossorigin-nonspeculative.sub.html
new file mode 100644
index 0000000..bb7c7d2
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/img-src-crossorigin-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): img-src-crossorigin</title>
+<!-- non-speculative case -->
+<img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" crossorigin>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/img-src-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/img-src-nonspeculative.sub.html
new file mode 100644
index 0000000..dc27cf8
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/img-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): img-src</title>
+<!-- non-speculative case -->
+<img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/img-src-referrerpolicy-no-referrer-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/img-src-referrerpolicy-no-referrer-nonspeculative.sub.html
new file mode 100644
index 0000000..6fd38fd
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/img-src-referrerpolicy-no-referrer-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): img-src-referrerpolicy-no-referrer</title>
+<!-- non-speculative case -->
+<img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/img-srcset-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/img-srcset-nonspeculative.sub.html
new file mode 100644
index 0000000..3adcae9
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/img-srcset-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): img-srcset</title>
+<!-- non-speculative case -->
+<img srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/link-no-rel-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/link-no-rel-nonspeculative.sub.html
new file mode 100644
index 0000000..50fee59
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/link-no-rel-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-no-rel</title>
+<!-- non-speculative case -->
+<link href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/link-rel-alternate-stylesheet-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/link-rel-alternate-stylesheet-nonspeculative.sub.html
new file mode 100644
index 0000000..cdd3a0c
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/link-rel-alternate-stylesheet-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-alternate-stylesheet</title>
+<!-- non-speculative case -->
+<link rel="alternate stylesheet" href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-font-crossorigin-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-font-crossorigin-nonspeculative.sub.html
new file mode 100644
index 0000000..6329cd0
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-font-crossorigin-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-preload-as-font-crossorigin</title>
+<!-- non-speculative case -->
+<link rel=preload as=font href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" crossorigin>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-image-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-image-nonspeculative.sub.html
new file mode 100644
index 0000000..80258df
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-image-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-preload-as-image</title>
+<!-- non-speculative case -->
+<link rel=preload as=image href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-script-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-script-nonspeculative.sub.html
new file mode 100644
index 0000000..04fe1b1
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-script-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-preload-as-script</title>
+<!-- non-speculative case -->
+<link rel=preload as=script href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-style-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-style-nonspeculative.sub.html
new file mode 100644
index 0000000..4cc7ef4
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-style-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-preload-as-style</title>
+<!-- non-speculative case -->
+<link rel=preload as=style href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-crossorigin-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-crossorigin-nonspeculative.sub.html
new file mode 100644
index 0000000..81a28c0
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-crossorigin-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-stylesheet-crossorigin</title>
+<!-- non-speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" crossorigin>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-disabled-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-disabled-nonspeculative.sub.html
new file mode 100644
index 0000000..5584e7d
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-disabled-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-stylesheet-disabled</title>
+<!-- non-speculative case -->
+<link rel="stylesheet" href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" disabled>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-integrity-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-integrity-nonspeculative.sub.html
new file mode 100644
index 0000000..9e9ae17
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-integrity-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-stylesheet-integrity</title>
+<!-- non-speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" integrity="sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-nomatch-media-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-nomatch-media-nonspeculative.sub.html
new file mode 100644
index 0000000..b10375c
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-nomatch-media-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-stylesheet-nomatch-media</title>
+<!-- non-speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" media="not all">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-nonspeculative.sub.html
new file mode 100644
index 0000000..4aeb803
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-stylesheet</title>
+<!-- non-speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-referrerpolicy-no-referrer-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-referrerpolicy-no-referrer-nonspeculative.sub.html
new file mode 100644
index 0000000..0c79457
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-referrerpolicy-no-referrer-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-stylesheet-referrerpolicy-no-referrer</title>
+<!-- non-speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-type-text-css-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-type-text-css-nonspeculative.sub.html
new file mode 100644
index 0000000..c851eee
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-type-text-css-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-stylesheet-type-text-css</title>
+<!-- non-speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=text/css>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-unsupported-type-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-unsupported-type-nonspeculative.sub.html
new file mode 100644
index 0000000..7db5b49
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-unsupported-type-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-stylesheet-unsupported-type</title>
+<!-- non-speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=text/plain>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/math-font-face-script-src-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/math-font-face-script-src-nonspeculative.sub.html
new file mode 100644
index 0000000..1ea61d5
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/math-font-face-script-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): math-font-face-script-src</title>
+<!-- non-speculative case -->
+<math><font face><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></font></math>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/math-font-script-src-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/math-font-script-src-nonspeculative.sub.html
new file mode 100644
index 0000000..d3d6567
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/math-font-script-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): math-font-script-src</title>
+<!-- non-speculative case -->
+<math><font><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></font></math>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/math-script-src-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/math-script-src-nonspeculative.sub.html
new file mode 100644
index 0000000..7e27036
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/math-script-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): math-script-src</title>
+<!-- non-speculative case -->
+<math><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></math>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/meta-charset-script-src-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/meta-charset-script-src-nonspeculative.sub.html
new file mode 100644
index 0000000..2a47f52
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/meta-charset-script-src-nonspeculative.sub.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<!-- no meta charset -->
+<!-- (padding to exceed 1024 bytes processed by the character encoding scanner)                  -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<title>Speculative parsing, non-speculative (helper file): meta-charset-script-src</title>
+<!-- non-speculative case -->
+<!-- no meta charset --><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/meta-csp-img-src-asterisk-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/meta-csp-img-src-asterisk-nonspeculative.sub.html
new file mode 100644
index 0000000..50954c8
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/meta-csp-img-src-asterisk-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): meta-csp-img-src-asterisk</title>
+<!-- non-speculative case -->
+<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; img-src *"><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/meta-csp-img-src-none-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/meta-csp-img-src-none-nonspeculative.sub.html
new file mode 100644
index 0000000..fe651e8
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/meta-csp-img-src-none-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): meta-csp-img-src-none</title>
+<!-- non-speculative case -->
+<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; img-src 'none'"><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/meta-referrer-no-referrer-img-src-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/meta-referrer-no-referrer-img-src-nonspeculative.sub.html
new file mode 100644
index 0000000..0e7a13e
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/meta-referrer-no-referrer-img-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): meta-referrer-no-referrer-img-src</title>
+<!-- non-speculative case -->
+<meta name=referrer content=no-referrer><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/meta-viewport-link-stylesheet-media-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/meta-viewport-link-stylesheet-media-nonspeculative.sub.html
new file mode 100644
index 0000000..cb0f992
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/meta-viewport-link-stylesheet-media-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): meta-viewport-link-stylesheet-media</title>
+<!-- non-speculative case -->
+<meta name=viewport content="width=400, initial-scale=1"><link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" media="(min-width: 401px)">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/picture-source-br-img-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/picture-source-br-img-nonspeculative.sub.html
new file mode 100644
index 0000000..3716002
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/picture-source-br-img-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): picture-source-br-img</title>
+<!-- non-speculative case -->
+<picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"><br><img></picture>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/picture-source-no-img-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/picture-source-no-img-nonspeculative.sub.html
new file mode 100644
index 0000000..858485a
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/picture-source-no-img-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): picture-source-no-img</title>
+<!-- non-speculative case -->
+<picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></picture>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/picture-source-nomatch-media-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/picture-source-nomatch-media-nonspeculative.sub.html
new file mode 100644
index 0000000..e4dc144
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/picture-source-nomatch-media-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): picture-source-nomatch-media</title>
+<!-- non-speculative case -->
+<picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" media="not all"><img></picture>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/picture-source-unsupported-type-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/picture-source-unsupported-type-nonspeculative.sub.html
new file mode 100644
index 0000000..2c7372f
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/picture-source-unsupported-type-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): picture-source-unsupported-type</title>
+<!-- non-speculative case -->
+<picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=text/plain><img></picture>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/script-src-async-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/script-src-async-nonspeculative.sub.html
new file mode 100644
index 0000000..cf8acf5
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/script-src-async-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-async</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" async></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/script-src-crossorigin-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/script-src-crossorigin-nonspeculative.sub.html
new file mode 100644
index 0000000..c3e200c
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/script-src-crossorigin-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-crossorigin</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" crossorigin></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/script-src-defer-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/script-src-defer-nonspeculative.sub.html
new file mode 100644
index 0000000..2bda322
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/script-src-defer-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-defer</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" defer></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/script-src-integrity-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/script-src-integrity-nonspeculative.sub.html
new file mode 100644
index 0000000..a52d956
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/script-src-integrity-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-integrity</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" integrity="sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb"></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/script-src-module-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/script-src-module-nonspeculative.sub.html
new file mode 100644
index 0000000..7cb2839
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/script-src-module-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-module</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=module></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/script-src-nomodule-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/script-src-nomodule-nonspeculative.sub.html
new file mode 100644
index 0000000..1ffedbb
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/script-src-nomodule-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-nomodule</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" nomodule></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/script-src-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/script-src-nonspeculative.sub.html
new file mode 100644
index 0000000..494f854
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/script-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/script-src-referrerpolicy-no-referrer-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/script-src-referrerpolicy-no-referrer-nonspeculative.sub.html
new file mode 100644
index 0000000..4581eb0
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/script-src-referrerpolicy-no-referrer-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-referrerpolicy-no-referrer</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/script-src-type-application-ecmascript-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/script-src-type-application-ecmascript-nonspeculative.sub.html
new file mode 100644
index 0000000..1746cd2
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/script-src-type-application-ecmascript-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-type-application-ecmascript</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=application/ecmascript></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/script-src-unsupported-type-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/script-src-unsupported-type-nonspeculative.sub.html
new file mode 100644
index 0000000..94098b5
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/script-src-unsupported-type-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-unsupported-type</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=text/plain></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/svg-image-href-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/svg-image-href-nonspeculative.sub.html
new file mode 100644
index 0000000..6c61c32
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/svg-image-href-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): svg-image-href</title>
+<!-- non-speculative case -->
+<svg><image href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></image></svg>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/svg-image-src-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/svg-image-src-nonspeculative.sub.html
new file mode 100644
index 0000000..0aba339
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/svg-image-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): svg-image-src</title>
+<!-- non-speculative case -->
+<svg><image src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></image></svg>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/svg-image-xlinkhref-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/svg-image-xlinkhref-nonspeculative.sub.html
new file mode 100644
index 0000000..c4e9e3f
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/svg-image-xlinkhref-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): svg-image-xlinkhref</title>
+<!-- non-speculative case -->
+<svg><image xlink:href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></image></svg>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/svg-script-href-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/svg-script-href-nonspeculative.sub.html
new file mode 100644
index 0000000..9a28a6c
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/svg-script-href-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): svg-script-href</title>
+<!-- non-speculative case -->
+<svg><script href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></svg>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/svg-script-src-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/svg-script-src-nonspeculative.sub.html
new file mode 100644
index 0000000..c37091c
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/svg-script-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): svg-script-src</title>
+<!-- non-speculative case -->
+<svg><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></svg>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/svg-script-xlinkhref-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/svg-script-xlinkhref-nonspeculative.sub.html
new file mode 100644
index 0000000..376fafd
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/svg-script-xlinkhref-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): svg-script-xlinkhref</title>
+<!-- non-speculative case -->
+<svg><script xlink:href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></svg>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/template-script-src-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/template-script-src-nonspeculative.sub.html
new file mode 100644
index 0000000..0ec64a0
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/template-script-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): template-script-src</title>
+<!-- non-speculative case -->
+<template><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></template>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/video-poster-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/video-poster-nonspeculative.sub.html
new file mode 100644
index 0000000..c233e89
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/video-poster-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): video-poster</title>
+<!-- non-speculative case -->
+<video poster="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></video>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/generated/resources/xmp-script-src-nonspeculative.sub.html b/html/syntax/speculative-parsing/generated/resources/xmp-script-src-nonspeculative.sub.html
new file mode 100644
index 0000000..e3a93d4
--- /dev/null
+++ b/html/syntax/speculative-parsing/generated/resources/xmp-script-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): xmp-script-src</title>
+<!-- non-speculative case -->
+<xmp><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></xmp>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/html/syntax/speculative-parsing/resources/speculative-parsing-util.js b/html/syntax/speculative-parsing/resources/speculative-parsing-util.js
new file mode 100644
index 0000000..b675665
--- /dev/null
+++ b/html/syntax/speculative-parsing/resources/speculative-parsing-util.js
@@ -0,0 +1,58 @@
+function expect_fetched_onload(uuid, expectation) {
+  return new Promise(resolve => {
+    addEventListener('load', resolve);
+  }).then(async () => {
+    const result = await get_result(uuid);
+    if (expectation) {
+      assert_not_equals(result, '', 'speculative case did not fetch');
+    } else {
+      assert_equals(result, '', 'speculative case incorrectly fetched');
+    }
+    return result;
+  });
+}
+
+function compare_with_nonspeculative(uuid, title, test_nonspeculative) {
+  return function(speculative_result) {
+    if (!test_nonspeculative) {
+      return Promise.resolve();
+    }
+    return new Promise(resolve => {
+      const iframe = document.createElement('iframe');
+      iframe.onload = resolve;
+      iframe.src = `../resources/${title}-nonspeculative.sub.html?uuid=${uuid}`;
+      document.body.appendChild(iframe);
+    }).then(async () => {
+      const result = await get_result(uuid);
+      if (speculative_result === '') {
+        assert_equals(result, '', 'non-speculative case incorrectly fetched')
+      } else {
+        assert_not_equals(result, '', 'non-speculative case did not fetch');
+        const speculative_headers = speculative_result.trim().split("\n");
+        const nonspeculative_headers = result.trim().split("\n");
+        assert_equals(speculative_headers.length, nonspeculative_headers.length, 'expected the same number of headers between speculative and non-speculative')
+        for (let i = 0; i < speculative_headers.length; ++i) {
+          let [s_header, s_value] = split_header(speculative_headers[i]);
+          let [ns_header, ns_value] = split_header(nonspeculative_headers[i]);
+          assert_equals(s_header, ns_header, 'expected the order of headers to match between speculative and non-speculative');
+          assert_equals(s_value, ns_value, `expected \`${s_header}\` values to match between speculative and non-speculative`);
+        }
+      }
+    });
+  }
+}
+
+function split_header(line) {
+  let [header, value] = line.split(': ');
+  header = header.toLowerCase();
+  value = value.trim();
+  if (header === 'referer') {
+    value = value.replace(/\/generated\/.+$/, '/generated/...');
+  }
+  return [header, value];
+}
+
+async function get_result(uuid) {
+  const response = await fetch(`/html/syntax/speculative-parsing/resources/stash.py?action=take&uuid=${uuid}`);
+  return await response.text();
+}
diff --git a/html/syntax/speculative-parsing/resources/stash.py b/html/syntax/speculative-parsing/resources/stash.py
new file mode 100755
index 0000000..2f33da9
--- /dev/null
+++ b/html/syntax/speculative-parsing/resources/stash.py
@@ -0,0 +1,6 @@
+def main(request, response):
+    if request.GET[b"action"] == b"put":
+        encodingcheck = u"param-encodingcheck: " + request.url_parts.query.split(u"&encodingcheck=")[1] + u"\r\n"
+        request.server.stash.put(request.GET[b"uuid"], encodingcheck + str(request.raw_headers))
+        return u''
+    return request.server.stash.take(request.GET[b"uuid"])
diff --git a/html/syntax/speculative-parsing/tools/generate.py b/html/syntax/speculative-parsing/tools/generate.py
new file mode 100755
index 0000000..8a7377a
--- /dev/null
+++ b/html/syntax/speculative-parsing/tools/generate.py
@@ -0,0 +1,640 @@
+#!/usr/bin/env python3
+
+# Usage: python3 generate.py
+#
+# This will remove all existing files in the generated directories and generate new tests.
+
+
+# Notes on potential confusion with the 3 string substitution features in different layers:
+#
+# - In Python strings when calling .format(): {something} or {}
+#   To get a literal {} use {{}}.
+#   The template_* variables are ones below are those that will use .format().
+#   https://docs.python.org/3/library/string.html#formatstrings
+# - JS template literals: ${something}
+#   https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
+# - wptserve server-side substitution when generating a response: {{GET[something]}}
+#   https://web-platform-tests.org/writing-tests/server-pipes.html#sub
+
+import os, shutil
+
+target_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + "/generated"
+
+delay = u'1500'  # Lower value makes the test complete faster, but also higher risk of flaky results
+
+# Test data
+
+tentative_tests = [
+    # title,
+    # encoding,
+    # template_testcase_markup,
+    # template_nonspeculative_testcase_markup (if different from template_testcase_markup),
+    # expect_load,
+    # test_nonspeculative
+    (
+      u'script-src',
+      u'utf-8',
+      u'<script src="{}"></script>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'meta-charset-script-src',
+      None,
+      u'<meta charset=windows-1254><script src="{}"></script>',
+      u'<!-- no meta charset --><script src="{}"></script>',
+      u'true',
+      u'true'
+    ),
+    (
+      # This test is only valid on "mobile" where meta viewport has an effect
+      u'meta-viewport-link-stylesheet-media',
+      u'utf-8',
+      u'<meta name=viewport content="width=400, initial-scale=1"><link rel=stylesheet href="{}" media="(min-width: 401px)">',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      u'meta-csp-img-src-none',
+      u'utf-8',
+      u'<meta http-equiv="Content-Security-Policy" content="script-src \'self\' \'unsafe-inline\'; img-src \'none\'"><img src="{}">',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      u'meta-csp-img-src-asterisk',
+      u'utf-8',
+      u'<meta http-equiv="Content-Security-Policy" content="script-src \'self\' \'unsafe-inline\'; img-src *"><img src="{}">',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'meta-referrer-no-referrer-img-src',
+      u'utf-8',
+      u'<meta name=referrer content=no-referrer><img src="{}">',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'base-href-script-src',
+      u'utf-8',
+      u'<base href=//{{{{domains[www1]}}}}:{{{{ports[http][0]}}}}><script src="{}"></script>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'script-src-unsupported-type',
+      u'utf-8',
+      u'<script src="{}" type=text/plain></script>',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      u'script-src-type-application-ecmascript',
+      u'utf-8',
+      u'<script src="{}" type=application/ecmascript></script>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'script-src-nomodule',
+      u'utf-8',
+      u'<script src="{}" nomodule></script>',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      u'script-src-module',
+      u'utf-8',
+      u'<script src="{}" type=module></script>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'script-src-async',
+      u'utf-8',
+      u'<script src="{}" async></script>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'script-src-defer',
+      u'utf-8',
+      u'<script src="{}" defer></script>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'script-src-crossorigin',
+      u'utf-8',
+      u'<script src="{}" crossorigin></script>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'script-src-integrity',
+      u'utf-8',
+      u'<script src="{}" integrity="sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb"></script>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'script-src-referrerpolicy-no-referrer',
+      u'utf-8',
+      u'<script src="{}" referrerpolicy=no-referrer></script>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'template-script-src',
+      u'utf-8',
+      u'<template><script src="{}"></script></template>',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      u'link-no-rel',
+      u'utf-8',
+      u'<link href="{}">',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      u'link-rel-stylesheet',
+      u'utf-8',
+      u'<link rel=stylesheet href="{}">',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'link-rel-alternate-stylesheet',
+      u'utf-8',
+      u'<link rel="alternate stylesheet" href="{}">',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      u'link-rel-stylesheet-disabled',
+      u'utf-8',
+      u'<link rel="stylesheet" href="{}" disabled>',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      u'link-rel-stylesheet-nomatch-media',
+      u'utf-8',
+      u'<link rel=stylesheet href="{}" media="not all">',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      u'link-rel-stylesheet-unsupported-type',
+      u'utf-8',
+      u'<link rel=stylesheet href="{}" type=text/plain>',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      u'link-rel-stylesheet-type-text-css',
+      u'utf-8',
+      u'<link rel=stylesheet href="{}" type=text/css>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'link-rel-stylesheet-crossorigin',
+      u'utf-8',
+      u'<link rel=stylesheet href="{}" crossorigin>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'link-rel-stylesheet-integrity',
+      u'utf-8',
+      u'<link rel=stylesheet href="{}" integrity="sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb">',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'link-rel-stylesheet-referrerpolicy-no-referrer',
+      u'utf-8',
+      u'<link rel=stylesheet href="{}" referrerpolicy=no-referrer>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'link-rel-preload-as-style',
+      u'utf-8',
+      u'<link rel=preload as=style href="{}">',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'link-rel-preload-as-font-crossorigin',
+      u'utf-8',
+      u'<link rel=preload as=font href="{}" crossorigin>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'link-rel-preload-as-script',
+      u'utf-8',
+      u'<link rel=preload as=script href="{}">',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'link-rel-preload-as-image',
+      u'utf-8',
+      u'<link rel=preload as=image href="{}">',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'img-src',
+      u'utf-8',
+      u'<img src="{}">',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'img-data-src',
+      u'utf-8',
+      u'<img data-src="{}">',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      # <image> is turned into <img> in the tree builder
+      u'image-src',
+      u'utf-8',
+      u'<image src="{}">',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'img-srcset',
+      u'utf-8',
+      u'<img srcset="{}">',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'img-src-crossorigin',
+      u'utf-8',
+      u'<img src="{}" crossorigin>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'img-src-referrerpolicy-no-referrer',
+      u'utf-8',
+      u'<img src="{}" referrerpolicy=no-referrer>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'img-src-loading-lazy',
+      u'utf-8',
+      u'<img src="{}" loading=lazy>',
+      None,
+      u'false',
+      u'false'
+    ),
+    (
+      u'picture-source-unsupported-type',
+      u'utf-8',
+      u'<picture><source srcset="{}" type=text/plain><img></picture>',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      u'picture-source-nomatch-media',
+      u'utf-8',
+      u'<picture><source srcset="{}" media="not all"><img></picture>',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      u'picture-source-no-img',
+      u'utf-8',
+      u'<picture><source srcset="{}"></picture>',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      u'picture-source-br-img',
+      u'utf-8',
+      u'<picture><source srcset="{}"><br><img></picture>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'video-poster',
+      u'utf-8',
+      u'<video poster="{}"></video>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'xmp-script-src',
+      u'utf-8',
+      u'<xmp><script src="{}"></script></xmp>',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      # MathML doesn't have script
+      u'math-script-src',
+      u'utf-8',
+      u'<math><script src="{}"></script></math>',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      u'math-font-script-src',
+      u'utf-8',
+      u'<math><font><script src="{}"></script></font></math>',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      # This breaks out of foreign content, so the script is an HTML script
+      # https://html.spec.whatwg.org/multipage/#parsing-main-inforeign
+      u'math-font-face-script-src',
+      u'utf-8',
+      u'<math><font face><script src="{}"></script></font></math>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'svg-script-href',
+      u'utf-8',
+      u'<svg><script href="{}"></script></svg>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'svg-script-xlinkhref',
+      u'utf-8',
+      u'<svg><script xlink:href="{}"></script></svg>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      # SVG script element doesn't have a src attribute
+      u'svg-script-src',
+      u'utf-8',
+      u'<svg><script src="{}"></script></svg>',
+      None,
+      u'false',
+      u'true'
+    ),
+    (
+      u'svg-image-href',
+      u'utf-8',
+      u'<svg><image href="{}"></image></svg>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      u'svg-image-xlinkhref',
+      u'utf-8',
+      u'<svg><image xlink:href="{}"></image></svg>',
+      None,
+      u'true',
+      u'true'
+    ),
+    (
+      # SVG image element doesn't have a src attribute
+      u'svg-image-src',
+      u'utf-8',
+      u'<svg><image src="{}"></image></svg>',
+      None,
+      u'false',
+      u'true'
+    ),
+]
+
+tests = [
+    # title,
+    # encoding,
+    # template_testcase_markup,
+    # expect_load,
+    # test_nonspeculative
+]
+
+# Templates
+
+preamble = u"""<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+     /html/syntax/speculative-parsing/tools/generate.py
+-->"""
+
+no_meta_charset = u"""<!-- no meta charset -->
+<!-- (padding to exceed 1024 bytes processed by the character encoding scanner)                  -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->
+<!--                                                                                             -->"""
+
+# Notes on `encodingcheck` in the URL below
+#
+# - &Gbreve; is the HTML character reference for U+011E LATIN CAPITAL LETTER G WITH BREVE
+# - In windows-1254, this character is encoded as 0xD0.
+#   When used in the query part of a URL, it gets percent-encoded as %D0.
+# - In windows-1252 (usually the fallback encoding), that character can't be encoded, so is instead
+#   represented as &#286; percent-encoded, so %26%23286%3B.
+#   https://url.spec.whatwg.org/#query-state
+#   https://url.spec.whatwg.org/#code-point-percent-encode-after-encoding
+# - In utf-8, it's percent-encoded as utf-8: %C4%9E
+# - stash.py will store this value as "param-encodingcheck"
+
+url_wptserve_sub = u"/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"
+url_js_sub = u"/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"
+
+
+# Non-speculative (normal) case to compare results with
+
+template_nonspeculative = u"""{preamble}
+{encoding_decl}
+<title>Speculative parsing, non-speculative (helper file): {title}</title>
+<!-- non-speculative case -->
+{nonspeculative_testcase_markup}
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay={delay}"></script>
+"""
+
+# Scenario: page load
+
+template_pageload_toplevel = u"""{preamble}
+{encoding_decl}
+<title>Speculative parsing, page load: {title}</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+  setup({{single_test: true}});
+  const uuid = token();
+  const iframe = document.createElement('iframe');
+  iframe.src = `resources/{title}-framed.sub.html?uuid=${{uuid}}`;
+  document.body.appendChild(iframe);
+  expect_fetched_onload(uuid, {expect_load})
+    .then(compare_with_nonspeculative(uuid, '{title}', {test_nonspeculative}))
+    .then(done);
+</script>
+"""
+
+template_pageload_framed = u"""{preamble}
+{encoding_decl}
+<title>Speculative parsing, page load (helper file): {title}</title>
+<script src="/common/slow.py?delay={delay}"></script>
+<script>
+  document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+{testcase_markup}
+"""
+
+# Scenario: document.write()
+
+template_docwrite = u"""{preamble}
+{encoding_decl}
+<title>Speculative parsing, document.write(): {title}</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+  setup({{single_test: true}});
+  const uuid = token();
+  expect_fetched_onload(uuid, {expect_load})
+    .then(compare_with_nonspeculative(uuid, '{title}', {test_nonspeculative}))
+    .then(done);
+  document.write(`
+    <script src="/common/slow.py?delay={delay}"><\\/script>
+    <script>
+     document.write('<plaintext>');
+    <\\/script>
+    <\\!-- speculative case in document.write -->
+    {testcase_markup}
+  `);
+</script>
+"""
+
+# Scenario: <link rel=prerender> - TODO(zcorpan)
+
+template_prerender_toplevel = u"""{preamble}
+{encoding_decl}
+<title>Speculative parsing, prerender: {title}</title>
+...
+"""
+
+template_prerender_linked = u"""{preamble}
+{encoding_decl}
+<title>Speculative parsing, prerender (helper file): {title}</title>
+...
+"""
+
+# Generate tests
+
+# wipe target_dir
+if os.path.isdir(target_dir):
+    shutil.rmtree(target_dir)
+
+def write_file(path, content):
+    path = os.path.join(target_dir, path)
+    os.makedirs(os.path.dirname(path), exist_ok=True)
+    file = open(os.path.join(target_dir, path), 'w')
+    file.write(content)
+    file.close()
+
+def generate_tests(testcase, tentative):
+    title, encoding, template_testcase_markup, template_nonspeculative_testcase_markup, expect_load, test_nonspeculative = testcase
+    if template_nonspeculative_testcase_markup == None:
+        template_nonspeculative_testcase_markup = template_testcase_markup
+    ext = u""
+    if tentative:
+        ext = u".tentative"
+
+    if encoding == None:
+        encoding_decl = no_meta_charset
+    else:
+        encoding_decl = f"<meta charset={encoding}>"
+
+    html_testcase_markup = template_testcase_markup.format(url_wptserve_sub)
+    html_nonspeculative_testcase_markup = template_nonspeculative_testcase_markup.format(url_wptserve_sub)
+    js_testcase_markup = template_testcase_markup.format(url_js_sub).replace(u"</script>", u"<\/script>").replace(u"<meta charset", u"<meta\ charset")
+
+    if test_nonspeculative == u'true':
+        nonspeculative = template_nonspeculative.format(preamble=preamble, encoding_decl=encoding_decl, title=title, nonspeculative_testcase_markup=html_nonspeculative_testcase_markup, delay=delay)
+        write_file(f"resources/{title}-nonspeculative.sub.html", nonspeculative)
+
+    pageload_toplevel = template_pageload_toplevel.format(preamble=preamble, encoding_decl=encoding_decl, title=title, expect_load=expect_load, test_nonspeculative=test_nonspeculative)
+    write_file(f"page-load/{title}{ext}.html", pageload_toplevel)
+    pageload_framed = template_pageload_framed.format(preamble=preamble, encoding_decl=encoding_decl, title=title, testcase_markup=html_testcase_markup, delay=delay)
+    write_file(f"page-load/resources/{title}-framed.sub.html", pageload_framed)
+
+    docwrite = template_docwrite.format(preamble=preamble, encoding_decl=encoding_decl, title=title, expect_load=expect_load, testcase_markup=js_testcase_markup, test_nonspeculative=test_nonspeculative, delay=delay)
+    write_file(f"document-write/{title}{ext}.sub.html", docwrite)
+
+for testcase in tests:
+    generate_tests(testcase, False)
+
+for testcase in tentative_tests:
+    generate_tests(testcase, True)
diff --git a/update-built-tests.sh b/update-built-tests.sh
index 635db67..0dd00e7 100755
--- a/update-built-tests.sh
+++ b/update-built-tests.sh
@@ -9,3 +9,4 @@
 python3 mimesniff/mime-types/resources/generated-mime-types.py
 python3 css/css-ui/tools/appearance-build-webkit-reftests.py
 python3 webidl/tools/generate-setlike.py
+python3 html/syntax/speculative-parsing/tools/generate.py