Merge mozilla-central to mozilla-inbound
authorCarsten "Tomcat" Book <cbook@mozilla.com>
Thu, 08 Dec 2016 16:28:42 +0100
changeset 325436 c65a9a96f48a5c3d7ac132df804cb829619a41b2
parent 325435 3bfbdec4ea08c9fb7fb0a4ee624c1607e85a4013 (current diff)
parent 325404 d8f63b2935af0915a6a24b3ea8e27d9a09f66416 (diff)
child 325437 422dd1f29d6e8e8d05300e02849724e7d5d032f0
push id24
push usermaklebus@msu.edu
push dateTue, 20 Dec 2016 03:11:33 +0000
milestone53.0a1
Merge mozilla-central to mozilla-inbound
devtools/client/package.json
devtools/client/webpack.config.js
--- a/addon-sdk/source/lib/sdk/util/object.js
+++ b/addon-sdk/source/lib/sdk/util/object.js
@@ -4,16 +4,20 @@
 "use strict";
 
 module.metadata = {
   "stability": "unstable"
 };
 
 const { flatten } = require('./array');
 
+// Create a shortcut for Array.prototype.slice.call().
+const unbind = Function.call.bind(Function.bind, Function.call);
+const slice = unbind(Array.prototype.slice);
+
 /**
  * Merges all the properties of all arguments into first argument. If two or
  * more argument objects have own properties with the same name, the property
  * is overridden, with precedence from right to left, implying, that properties
  * of the object on the left are overridden by a same named property of the
  * object on the right.
  *
  * Any argument given with "falsy" value - commonly `null` and `undefined` in
@@ -29,33 +33,33 @@ const { flatten } = require('./array');
  *    b.name    // 'b'
  */
 function merge(source) {
   let descriptor = {};
 
   // `Boolean` converts the first parameter to a boolean value. Any object is
   // converted to `true` where `null` and `undefined` becames `false`. Therefore
   // the `filter` method will keep only objects that are defined and not null.
-  Array.slice(arguments, 1).filter(Boolean).forEach(function onEach(properties) {
+  slice(arguments, 1).filter(Boolean).forEach(function onEach(properties) {
     getOwnPropertyIdentifiers(properties).forEach(function(name) {
       descriptor[name] = Object.getOwnPropertyDescriptor(properties, name);
     });
   });
   return Object.defineProperties(source, descriptor);
 }
 exports.merge = merge;
 
 /**
  * Returns an object that inherits from the first argument and contains all the
  * properties from all following arguments.
  * `extend(source1, source2, source3)` is equivalent of
  * `merge(Object.create(source1), source2, source3)`.
  */
 function extend(source) {
-  let rest = Array.slice(arguments, 1);
+  let rest = slice(arguments, 1);
   rest.unshift(Object.create(source));
   return merge.apply(null, rest);
 }
 exports.extend = extend;
 
 function has(obj, key) {
   return obj.hasOwnProperty(key);
 }
@@ -67,17 +71,17 @@ function each(obj, fn) {
 exports.each = each;
 
 /**
  * Like `merge`, except no property descriptors are manipulated, for use
  * with platform objects. Identical to underscore's `extend`. Useful for
  * merging XPCOM objects
  */
 function safeMerge(source) {
-  Array.slice(arguments, 1).forEach(function onEach (obj) {
+  slice(arguments, 1).forEach(function onEach (obj) {
     for (let prop in obj) source[prop] = obj[prop];
   });
   return source;
 }
 exports.safeMerge = safeMerge;
 
 /*
  * Returns a copy of the object without omitted properties
--- a/browser/config/mozconfigs/macosx64/artifact
+++ b/browser/config/mozconfigs/macosx64/artifact
@@ -1,10 +1,13 @@
 MOZ_AUTOMATION_BUILD_SYMBOLS=0
 MOZ_AUTOMATION_L10N_CHECK=0
 
+# Needed to set SourceRepository in application.ini (used by Talos)
+export MOZILLA_OFFICIAL=1
+
 . "$topsrcdir/build/macosx/mozconfig.common"
 . "$topsrcdir/build/mozconfig.common.override"
 
 ac_add_options --enable-artifact-builds
 ac_add_options --enable-artifact-build-symbols
 unset CC
 unset CXX
--- a/browser/config/mozconfigs/win32/artifact
+++ b/browser/config/mozconfigs/win32/artifact
@@ -1,10 +1,13 @@
 MOZ_AUTOMATION_BUILD_SYMBOLS=0
 MOZ_AUTOMATION_L10N_CHECK=0
 
+# Needed to set SourceRepository in application.ini (used by Talos)
+export MOZILLA_OFFICIAL=1
+
 . "$topsrcdir/browser/config/mozconfigs/common"
 . "$topsrcdir/build/mozconfig.win-common"
 . "$topsrcdir/build/win32/mozconfig.vs-latest"
 . "$topsrcdir/build/mozconfig.common.override"
 
 ac_add_options --enable-artifact-builds
 ac_add_options --enable-artifact-build-symbols
--- a/browser/config/mozconfigs/win64/artifact
+++ b/browser/config/mozconfigs/win64/artifact
@@ -1,11 +1,14 @@
 MOZ_AUTOMATION_BUILD_SYMBOLS=0
 MOZ_AUTOMATION_L10N_CHECK=0
 
+# Needed to set SourceRepository in application.ini (used by Talos)
+export MOZILLA_OFFICIAL=1
+
 . "$topsrcdir/browser/config/mozconfigs/win64/common-win64"
 . "$topsrcdir/browser/config/mozconfigs/common"
 . "$topsrcdir/build/mozconfig.win-common"
 . "$topsrcdir/build/win64/mozconfig.vs-latest"
 . "$topsrcdir/build/mozconfig.common.override"
 
 ac_add_options --enable-artifact-builds
 ac_add_options --enable-artifact-build-symbols
--- a/browser/themes/shared/incontentprefs/preferences.inc.css
+++ b/browser/themes/shared/incontentprefs/preferences.inc.css
@@ -508,17 +508,17 @@ description > html|a {
   text-align: center;
   padding-left: 11px;
   padding-right: 11px;
   margin: 0;
   min-width: 0;
 }
 
 .fxaAccountBoxButtons > button:first-child {
-  margin-right: 14px !important;
+  margin-inline-end: 14px !important;
 }
 
 .fxaSyncIllustration {
   width: 231px;
   list-style-image: url(chrome://browser/skin/fxa/sync-illustration.png)
 }
 
 #fxaLoginStatus[hasName] #fxaEmailAddress1 {
--- a/devtools/client/framework/devtools.js
+++ b/devtools/client/framework/devtools.js
@@ -23,17 +23,17 @@ const {Task} = require("devtools/shared/
 
 const FORBIDDEN_IDS = new Set(["toolbox", ""]);
 const MAX_ORDINAL = 99;
 
 /**
  * DevTools is a class that represents a set of developer tools, it holds a
  * set of tools and keeps track of open toolboxes in the browser.
  */
-this.DevTools = function DevTools() {
+function DevTools() {
   this._tools = new Map();     // Map<toolId, tool>
   this._themes = new Map();    // Map<themeId, theme>
   this._toolboxes = new Map(); // Map<target, toolbox>
   // List of toolboxes that are still in process of creation
   this._creatingToolboxes = new Map(); // Map<target, toolbox Promise>
 
   // destroy() is an observer's handler so we need to preserve context.
   this.destroy = this.destroy.bind(this);
--- a/devtools/client/framework/toolbox-highlighter-utils.js
+++ b/devtools/client/framework/toolbox-highlighter-utils.js
@@ -235,17 +235,17 @@ exports.getHighlighterUtils = function (
     if (isRemoteHighlightable()) {
       yield toolbox.highlighter.showBoxModel(nodeFront, options);
     } else {
       // If the target doesn't have the highlighter actor, revert to the
       // walker's highlight method, which draws a simple outline
       yield toolbox.walker.highlight(nodeFront);
     }
 
-    toolbox.emit("node-highlight", nodeFront, options.toSource());
+    toolbox.emit("node-highlight", nodeFront);
   });
 
   /**
    * This is a convenience method in case you don't have a nodeFront but a
    * valueGrip. This is often the case with VariablesView properties.
    * This method will simply translate the grip into a nodeFront and call
    * highlightNodeFront, so it has the same signature.
    * @see highlightNodeFront
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/bin/dev-server.js
@@ -0,0 +1,65 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set ts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* global __dirname */
+
+"use strict";
+
+const toolbox = require("../node_modules/devtools-local-toolbox/index");
+const feature = require("devtools-config");
+const envConfig = require("../configs/development.json");
+
+const fs = require("fs");
+const path = require("path");
+
+feature.setConfig(envConfig);
+const webpackConfig = require("../webpack.config")(envConfig);
+
+let {app} = toolbox.startDevServer(envConfig, webpackConfig);
+
+function sendFile(res, src, encoding) {
+  const filePath = path.join(__dirname, src);
+  const file = encoding ? fs.readFileSync(filePath, encoding) : fs.readFileSync(filePath);
+  res.send(file);
+}
+
+function addFileRoute(from, to) {
+  app.get(from, function (req, res) {
+    sendFile(res, to, "utf-8");
+  });
+}
+
+// Routes
+addFileRoute("/", "../inspector.xhtml");
+addFileRoute("/markup/markup.xhtml", "../markup/markup.xhtml");
+
+app.get("/devtools/skin/images/:file.png", function (req, res) {
+  res.contentType("image/png");
+  sendFile(res, "../../themes/images/" + req.params.file + ".png");
+});
+
+app.get("/devtools/skin/images/:file.svg", function (req, res) {
+  res.contentType("image/svg+xml");
+  sendFile(res, "../../themes/images/" + req.params.file + ".svg", "utf-8");
+});
+
+app.get("/images/:file.svg", function (req, res) {
+  res.contentType("image/svg+xml");
+  sendFile(res, "../../themes/images/" + req.params.file + ".svg", "utf-8");
+});
+
+// Redirect chrome:devtools/skin/file.css to ../../themes/file.css
+app.get("/devtools/skin/:file.css", function (req, res) {
+  res.contentType("text/css; charset=utf-8");
+  sendFile(res, "../../themes/" + req.params.file + ".css", "utf-8");
+});
+
+// Redirect chrome:devtools/client/path/to/file.css to ../../path/to/file.css
+//      and chrome:devtools/content/path/to/file.css to ../../path/to/file.css
+app.get(/^\/devtools\/(?:client|content)\/(.*)\.css$/, function (req, res) {
+  res.contentType("text/css; charset=utf-8");
+  sendFile(res, "../../" + req.params[0] + ".css");
+});
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/configs/development.json
@@ -0,0 +1,22 @@
+{
+  "title": "Inspector",
+  "environment": "development",
+  "baseWorkerURL": "public/build/",
+  "theme": "light",
+  "host": "",
+  "logging": {
+    "client": false,
+    "firefoxProxy": false
+  },
+  "features": {
+  },
+  "firefox": {
+    "proxyHost": "localhost:9000",
+    "webSocketConnection": false,
+    "webSocketHost": "localhost:6080"
+  },
+  "development": {
+    "serverPort": 8000,
+    "customIndex": true
+  }
+}
\ No newline at end of file
--- a/devtools/client/inspector/inspector.js
+++ b/devtools/client/inspector/inspector.js
@@ -1,20 +1,18 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set ft=javascript ts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-/* global window */
+/* global window, BrowserLoader */
 
 "use strict";
 
-var Cu = Components.utils;
-var { require } = Cu.import("resource://devtools/shared/Loader.jsm", {});
 var Services = require("Services");
 var promise = require("promise");
 var defer = require("devtools/shared/defer");
 var EventEmitter = require("devtools/shared/event-emitter");
 const {executeSoon} = require("devtools/shared/DevToolsUtils");
 var {KeyShortcuts} = require("devtools/client/shared/key-shortcuts");
 var {Task} = require("devtools/shared/task");
 const {initCssProperties} = require("devtools/shared/fronts/css-properties");
@@ -1349,25 +1347,25 @@ Inspector.prototype = {
   _initMarkup: function () {
     let doc = this.panelDoc;
 
     this._markupBox = doc.getElementById("markup-box");
 
     // create tool iframe
     this._markupFrame = doc.createElement("iframe");
     this._markupFrame.setAttribute("flex", "1");
+    // This is needed to enable tooltips inside the iframe document.
     this._markupFrame.setAttribute("tooltip", "aHTMLTooltip");
     this._markupFrame.addEventListener("contextmenu", this._onContextMenu);
 
-    // This is needed to enable tooltips inside the iframe document.
-    this._markupFrame.addEventListener("load", this._onMarkupFrameLoad, true);
-
     this._markupBox.setAttribute("collapsed", true);
     this._markupBox.appendChild(this._markupFrame);
-    this._markupFrame.setAttribute("src", "chrome://devtools/content/inspector/markup/markup.xhtml");
+
+    this._markupFrame.addEventListener("load", this._onMarkupFrameLoad, true);
+    this._markupFrame.setAttribute("src", "markup/markup.xhtml");
     this._markupFrame.setAttribute("aria-label",
       INSPECTOR_L10N.getStr("inspector.panelLabel.markupView"));
   },
 
   _onMarkupFrameLoad: function () {
     this._markupFrame.removeEventListener("load", this._onMarkupFrameLoad, true);
 
     this._markupFrame.contentWindow.focus();
@@ -1886,94 +1884,116 @@ Inspector.prototype = {
     // When the inspector menu was setup on click (see _getNodeLinkMenuItems), we
     // already checked that resolveRelativeURL existed.
     this.inspector.resolveRelativeURL(link, this.selection.nodeFront).then(url => {
       clipboardHelper.copyString(url);
     }, console.error);
   }
 };
 
+/**
+ * Create a fake toolbox when running the inspector standalone, either in a chrome tab or
+ * in a content tab.
+ *
+ * @param {Target} target to debug
+ * @param {Function} createThreadClient
+ *        When supported the thread client needs a reference to the toolbox.
+ *        This callback will be called right after the toolbox object is created.
+ * @param {Object} dependencies
+ *        - react
+ *        - reactDOM
+ *        - browserRequire
+ */
+const buildFakeToolbox = Task.async(function* (
+  target, createThreadClient, {
+    React,
+    ReactDOM,
+    browserRequire
+  }) {
+  const { InspectorFront } = require("devtools/shared/fronts/inspector");
+  const { Selection } = require("devtools/client/framework/selection");
+  const { getHighlighterUtils } = require("devtools/client/framework/toolbox-highlighter-utils");
+
+  let notImplemented = function () {
+    throw new Error("Not implemented in a tab");
+  };
+  let fakeToolbox = {
+    target,
+    hostType: "bottom",
+    doc: window.document,
+    win: window,
+    on() {}, emit() {}, off() {},
+    initInspector() {},
+    browserRequire,
+    React,
+    ReactDOM,
+    isToolRegistered() {
+      return false;
+    },
+    currentToolId: "inspector",
+    getCurrentPanel() {
+      return "inspector";
+    },
+    get textboxContextMenuPopup() {
+      notImplemented();
+    },
+    getPanel: notImplemented,
+    openSplitConsole: notImplemented,
+    viewCssSourceInStyleEditor: notImplemented,
+    viewJsSourceInDebugger: notImplemented,
+    viewSource: notImplemented,
+    viewSourceInDebugger: notImplemented,
+    viewSourceInStyleEditor: notImplemented,
+
+    // For attachThread:
+    highlightTool() {},
+    unhighlightTool() {},
+    selectTool() {},
+    raise() {},
+    getNotificationBox() {}
+  };
+
+  fakeToolbox.threadClient = yield createThreadClient(fakeToolbox);
+
+  let inspector = InspectorFront(target.client, target.form);
+  let showAllAnonymousContent =
+    Services.prefs.getBoolPref("devtools.inspector.showAllAnonymousContent");
+  let walker = yield inspector.getWalker({ showAllAnonymousContent });
+  let selection = new Selection(walker);
+  let highlighter = yield inspector.getHighlighter(false);
+  fakeToolbox.highlighterUtils = getHighlighterUtils(fakeToolbox);
+
+  fakeToolbox.inspector = inspector;
+  fakeToolbox.walker = walker;
+  fakeToolbox.selection = selection;
+  fakeToolbox.highlighter = highlighter;
+  return fakeToolbox;
+});
+
 // URL constructor doesn't support chrome: scheme
 let href = window.location.href.replace(/chrome:/, "http://");
 let url = new window.URL(href);
 
-// Only use this method to attach the toolbox if some query parameters are given
-if (url.search.length > 1) {
+// If query parameters are given in a chrome tab, the inspector is running in standalone.
+if (window.location.protocol === "chrome:" && url.search.length > 1) {
   const { targetFromURL } = require("devtools/client/framework/target-from-url");
   const { attachThread } = require("devtools/client/framework/attach-thread");
-  const { BrowserLoader } =
-    Cu.import("resource://devtools/client/shared/browser-loader.js", {});
 
-  const { Selection } = require("devtools/client/framework/selection");
-  const { InspectorFront } = require("devtools/shared/fronts/inspector");
-  const { getHighlighterUtils } = require("devtools/client/framework/toolbox-highlighter-utils");
+  const browserRequire = BrowserLoader({ window, useOnlyShared: true }).require;
+  const React = browserRequire("devtools/client/shared/vendor/react");
+  const ReactDOM = browserRequire("devtools/client/shared/vendor/react-dom");
 
   Task.spawn(function* () {
     let target = yield targetFromURL(url);
-
-    let notImplemented = function () {
-      throw new Error("Not implemented in a tab");
-    };
-    let fakeToolbox = {
+    let fakeToolbox = yield buildFakeToolbox(
       target,
-      hostType: "bottom",
-      doc: window.document,
-      win: window,
-      on() {}, emit() {}, off() {},
-      initInspector() {},
-      browserRequire: BrowserLoader({
-        window: window,
-        useOnlyShared: true
-      }).require,
-      get React() {
-        return this.browserRequire("devtools/client/shared/vendor/react");
-      },
-      get ReactDOM() {
-        return this.browserRequire("devtools/client/shared/vendor/react-dom");
-      },
-      isToolRegistered() {
-        return false;
-      },
-      currentToolId: "inspector",
-      getCurrentPanel() {
-        return "inspector";
-      },
-      get textboxContextMenuPopup() {
-        notImplemented();
-      },
-      getPanel: notImplemented,
-      openSplitConsole: notImplemented,
-      viewCssSourceInStyleEditor: notImplemented,
-      viewJsSourceInDebugger: notImplemented,
-      viewSource: notImplemented,
-      viewSourceInDebugger: notImplemented,
-      viewSourceInStyleEditor: notImplemented,
-
-      // For attachThread:
-      highlightTool() {},
-      unhighlightTool() {},
-      selectTool() {},
-      raise() {},
-      getNotificationBox() {}
-    };
-
-    // attachThread also expect a toolbox as argument
-    fakeToolbox.threadClient = yield attachThread(fakeToolbox);
-
-    let inspector = InspectorFront(target.client, target.form);
-    let showAllAnonymousContent =
-      Services.prefs.getBoolPref("devtools.inspector.showAllAnonymousContent");
-    let walker = yield inspector.getWalker({ showAllAnonymousContent });
-    let selection = new Selection(walker);
-    let highlighter = yield inspector.getHighlighter(false);
-
-    fakeToolbox.inspector = inspector;
-    fakeToolbox.walker = walker;
-    fakeToolbox.selection = selection;
-    fakeToolbox.highlighter = highlighter;
-    fakeToolbox.highlighterUtils = getHighlighterUtils(fakeToolbox);
-
+      (toolbox) => attachThread(toolbox),
+      { React, ReactDOM, browserRequire }
+    );
     let inspectorUI = new Inspector(fakeToolbox);
     inspectorUI.init();
   }).then(null, e => {
     window.alert("Unable to start the inspector:" + e.message + "\n" + e.stack);
   });
 }
+
+exports.Inspector = Inspector;
+exports.buildFakeToolbox = buildFakeToolbox;
--- a/devtools/client/inspector/inspector.xhtml
+++ b/devtools/client/inspector/inspector.xhtml
@@ -21,16 +21,28 @@
   <link rel="stylesheet" href="resource://devtools/client/shared/components/tabs/tabs.css"/>
   <link rel="stylesheet" href="resource://devtools/client/shared/components/tabs/tabbar.css"/>
   <link rel="stylesheet" href="resource://devtools/client/inspector/components/inspector-tab-panel.css"/>
   <link rel="stylesheet" href="resource://devtools/client/shared/components/splitter/split-box.css"/>
   <link rel="stylesheet" href="resource://devtools/client/inspector/layout/components/Accordion.css"/>
 
   <script type="application/javascript;version=1.8"
           src="chrome://devtools/content/shared/theme-switching.js"></script>
+  <script type="text/javascript">
+    /* eslint-disable */
+    var isInChrome = window.location.href.includes("chrome:");
+    if (isInChrome) {
+      var exports = {};
+      var Cu = Components.utils;
+      var { require } = Cu.import("resource://devtools/shared/Loader.jsm", {});
+      var { BrowserLoader } = Cu.import("resource://devtools/client/shared/browser-loader.js", {});
+    }
+  </script>
+
+  <!-- in content, inspector.js is mapped to the dynamically generated webpack bundle -->
   <script type="application/javascript;version=1.8" src="inspector.js" defer="true"></script>
 </head>
 <body class="theme-body" role="application">
   <div class="inspector-responsive-container theme-body inspector">
 
     <!-- Main Panel Content -->
     <div id="inspector-main-content" class="devtools-main-content">
       <div id="inspector-toolbar" class="devtools-toolbar" nowindowdrag="true"
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/local-toolbox.js
@@ -0,0 +1,121 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* global window, document */
+
+"use strict";
+
+const React = require("devtools/client/shared/vendor/react");
+const ReactDOM = require("devtools/client/shared/vendor/react-dom");
+const { appinfo } = require("Services");
+
+const { buildFakeToolbox, Inspector } = require("./inspector");
+
+function onConnect(arg) {
+  if (!arg || !arg.client) {
+    return;
+  }
+
+  let client = arg.client;
+
+  const tabTarget = client.getTabTarget();
+  let threadClient = { paused: false };
+  buildFakeToolbox(
+    tabTarget,
+    () => threadClient,
+    { React, ReactDOM, browserRequire: () => {} }
+  ).then(function (fakeToolbox) {
+    let inspector = new Inspector(fakeToolbox);
+    inspector.init();
+  });
+}
+
+/**
+ * Stylesheet links in devtools xhtml files are using chrome or resource URLs.
+ * Rewrite the href attribute to remove the protocol. web-server.js contains redirects
+ * to map CSS urls to the proper file. Supports urls using:
+ *   - devtools/client/
+ *   - devtools/content/
+ *   - skin/
+ * The css for the light-theme will additionally be loaded.
+ * Will also add mandatory classnames and attributes to be compatible with devtools theme
+ * stylesheet.
+ *
+ */
+function fixStylesheets(doc) {
+  let links = doc.head.querySelectorAll("link");
+  for (let link of links) {
+    link.href = link.href.replace(/(resource|chrome)\:\/\//, "/");
+  }
+
+  // Add the light theme stylesheet to compensate for the missing theme-switching.js
+  let themeLink = doc.createElement("link");
+  themeLink.setAttribute("rel", "stylesheet");
+  themeLink.setAttribute("href", "/devtools/skin/light-theme.css");
+
+  doc.head.appendChild(themeLink);
+  doc.documentElement.classList.add("theme-light");
+  doc.body.classList.add("theme-light");
+
+  if (appinfo.OS === "Darwin") {
+    doc.documentElement.setAttribute("platform", "mac");
+  } else if (appinfo.OS === "Linux") {
+    doc.documentElement.setAttribute("platform", "linux");
+  } else {
+    doc.documentElement.setAttribute("platform", "win");
+  }
+}
+
+/**
+ * Called each time a childList mutation is received on the main document.
+ * Check the iframes currently loaded in the document and call fixStylesheets if needed.
+ */
+function fixStylesheetsOnMutation() {
+  let frames = document.body.querySelectorAll("iframe");
+  for (let frame of frames) {
+    let doc = frame.contentDocument || frame.contentWindow.document;
+    if (doc.__fixStylesheetsFlag) {
+      continue;
+    }
+
+    // Mark the document as processed to avoid extra changes.
+    doc.__fixStylesheetsFlag = true;
+    if (doc.readyState !== "complete") {
+      // If the document is not loaded yet, wait for DOMContentLoaded.
+      frame.contentWindow.addEventListener("DOMContentLoaded", () => {
+        fixStylesheets(doc);
+      }, { once: true });
+    } else {
+      fixStylesheets(doc);
+    }
+  }
+}
+
+window.addEventListener("DOMContentLoaded", function onInspectorDOMLoaded() {
+  window.removeEventListener("DOMContentLoaded", onInspectorDOMLoaded);
+
+  // Add styling for the main document.
+  fixStylesheets(document);
+
+  // Add a mutation observer to check if new iframes have been loaded and need to have
+  //  their stylesheet links updated.
+  new window.MutationObserver(mutations => {
+    fixStylesheetsOnMutation();
+  }).observe(document.body, { childList: true, subtree: true });
+
+  const hasFirefoxTabParam = window.location.href.indexOf("firefox-tab") != -1;
+  if (!hasFirefoxTabParam) {
+    const inspectorRoot = document.querySelector(".inspector");
+    // Remove the inspector specific markup and add the landing page root element.
+    inspectorRoot.remove();
+    let mount = document.createElement("div");
+    mount.setAttribute("id", "mount");
+    document.body.appendChild(mount);
+  }
+
+  // Toolbox tries to add a theme classname on the documentElement and should only be
+  // required after DOMContentLoaded.
+  const { bootstrap } = require("devtools-local-toolbox");
+  bootstrap(React, ReactDOM).then(onConnect);
+});
--- a/devtools/client/inspector/markup/markup.xhtml
+++ b/devtools/client/inspector/markup/markup.xhtml
@@ -11,17 +11,16 @@
   <link rel="stylesheet" href="chrome://devtools/content/sourceeditor/codemirror/lib/codemirror.css" type="text/css"/>
   <link rel="stylesheet" href="chrome://devtools/content/sourceeditor/codemirror/addon/dialog/dialog.css" type="text/css"/>
   <link rel="stylesheet" href="chrome://devtools/content/sourceeditor/codemirror/mozilla.css" type="text/css"/>
 
   <script type="application/javascript;version=1.8"
           src="chrome://devtools/content/shared/theme-switching.js"></script>
   <script type="application/javascript;version=1.8"
           src="chrome://devtools/content/sourceeditor/codemirror/codemirror.bundle.js"></script>
-
 </head>
 <body class="theme-body devtools-monospace" role="application">
 
 <!-- NOTE THAT WE MAKE EXTENSIVE USE OF HTML COMMENTS IN THIS FILE IN ORDER -->
 <!-- TO MAKE SPANS READABLE WHILST AVOIDING SIGNIFICANT WHITESPACE          -->
 
   <div id="root-wrapper" role="presentation">
     <div id="root" role="presentation"></div>
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/package.json
@@ -0,0 +1,17 @@
+{
+  "name": "inspector.html",
+  "version": "0.0.1",
+  "description": "The Firefox Inspector",
+  "scripts": {
+    "start": "node bin/dev-server"
+  },
+  "author": "",
+  "dependencies": {
+    "devtools-local-toolbox": "0.0.10",
+    "devtools-modules": "0.0.9",
+    "devtools-sham-modules": "0.0.9",
+    "devtools-config": "0.0.9",
+    "raw-loader": "^0.5.1",
+    "json-loader": "^0.5.4"
+  }
+}
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/webpack.config.js
@@ -0,0 +1,136 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* global __dirname */
+
+"use strict";
+
+const {toolboxConfig} = require("devtools-local-toolbox/index");
+
+const path = require("path");
+const webpack = require("webpack");
+
+module.exports = envConfig => {
+  let webpackConfig = {
+    bail: true,
+    entry: [
+      path.join(__dirname, "local-toolbox.js")
+    ],
+    output: {
+      path: path.join(__dirname, "assets/build"),
+      filename: "inspector.js",
+      publicPath: "/"
+    },
+    module: {
+      // Disable handling of unknown requires
+      unknownContextRegExp: /$^/,
+      unknownContextCritical: false,
+
+      // Disable handling of requires with a single expression
+      exprContextRegExp: /$^/,
+      exprContextCritical: false,
+
+      // Warn for every expression in require
+      wrappedContextCritical: true,
+
+      loaders: [
+        {
+          test: /event-emitter/,
+          exclude: /node_modules/,
+          loaders: [path.join(__dirname, "./webpack/rewrite-event-emitter")],
+        }, {
+          // Replace all references to this.browserRequire() by require() in
+          // client/inspector/*.js files
+          test: /client\/inspector\/.*\.js$/,
+          loaders: [path.join(__dirname, "./webpack/rewrite-browser-require")],
+        }
+      ]
+    },
+    resolveLoader: {
+      root: [
+        path.resolve("./node_modules"),
+        path.resolve("./webpack"),
+      ]
+    },
+    resolve: {
+      alias: {
+        "acorn/util/walk": path.join(__dirname, "../../shared/acorn/walk"),
+        "acorn": path.join(__dirname, "../../shared/acorn"),
+        "devtools/client/framework/about-devtools-toolbox":
+          path.join(__dirname, "./webpack/about-devtools-sham.js"),
+        "devtools/client/framework/attach-thread":
+          path.join(__dirname, "./webpack/attach-thread-sham.js"),
+        "devtools/client/framework/target-from-url":
+          path.join(__dirname, "./webpack/target-from-url-sham.js"),
+        "devtools/client/jsonview/main":
+          path.join(__dirname, "./webpack/jsonview-sham.js"),
+        "devtools/client/sourceeditor/editor":
+          path.join(__dirname, "./webpack/editor-sham.js"),
+        "devtools/client/locales": path.join(__dirname, "../locales/en-US"),
+        "devtools/shared/DevToolsUtils":
+          path.join(__dirname, "./webpack/devtools-utils-sham.js"),
+        "devtools/shared/locales": path.join(__dirname, "../../shared/locales/en-US"),
+        "devtools/shared/platform": path.join(__dirname, "../../shared/platform/content"),
+        "devtools": path.join(__dirname, "../../"),
+        "gcli": path.join(__dirname, "../../shared/gcli/source/lib/gcli"),
+        "method": path.join(__dirname, "../../../addon-sdk/source/lib/method"),
+        "modules/libpref/init/all":
+          path.join(__dirname, "../../../modules/libpref/init/all.js"),
+        "sdk/system/unload": path.join(__dirname, "./webpack/system-unload-sham.js"),
+        "sdk": path.join(__dirname, "../../../addon-sdk/source/lib/sdk"),
+        "Services": path.join(__dirname, "../shared/shim/Services.js"),
+        "toolkit/locales":
+          path.join(__dirname, "../../../toolkit/locales/en-US/chrome/global"),
+      },
+    },
+
+    plugins: [
+      new webpack.DefinePlugin({
+        "isWorker": JSON.stringify(false),
+        "reportError": "console.error",
+        "AppConstants": "{ DEBUG: true, DEBUG_JS_MODULES: true }",
+        "loader": `{
+                      lazyRequireGetter: () => {},
+                      lazyGetter: () => {}
+                    }`,
+        "dump": "console.log",
+      }),
+    ]
+  };
+
+  webpackConfig.externals = [
+    /codemirror\//,
+    {
+      "promise": "var Promise",
+      "devtools/server/main": "{}",
+
+      // Just trying to get build to work.  These should be removed eventually:
+      "chrome": "{}",
+
+      // In case you end up in chrome-land you can use this to help track down issues.
+      // SDK for instance does a bunch of this so if you somehow end up importing an SDK
+      // dependency this might help for debugging:
+      // "chrome": `{
+      //   Cc: {
+      //     "@mozilla.org/uuid-generator;1": { getService: () => { return {} } },
+      //     "@mozilla.org/observer-service;1": { getService: () => { return {} } },
+      //   },
+      //   Ci: {},
+      //   Cr: {},
+      //   Cm: {},
+      //   components: { classesByID: () => {} , ID: () => {} }
+      // }`,
+
+      "resource://gre/modules/XPCOMUtils.jsm": "{}",
+      "resource://devtools/client/styleeditor/StyleEditorUI.jsm": "{}",
+      "resource://devtools/client/styleeditor/StyleEditorUtil.jsm": "{}",
+      "devtools/client/shared/developer-toolbar": "{}",
+    },
+  ];
+
+  // Exclude all files from devtools/ or addon-sdk/ or modules/ .
+  webpackConfig.babelExcludes = /(devtools\/|addon-sdk\/|modules\/)/;
+
+  return toolboxConfig(webpackConfig, envConfig);
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/webpack/about-devtools-sham.js
@@ -0,0 +1,12 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set ts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+module.exports = {
+  register: () => {},
+  unregister: () => {},
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/webpack/attach-thread-sham.js
@@ -0,0 +1,11 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set ts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+module.exports = {
+  attachThread: () => {},
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/webpack/devtools-utils-sham.js
@@ -0,0 +1,13 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set ts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* global setImmediate */
+
+"use strict";
+
+module.exports = {
+  executeSoon: setImmediate,
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/webpack/editor-sham.js
@@ -0,0 +1,13 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set ts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+function Editor() {}
+Editor.modes = {};
+Editor.prototype.appendToLocalElement = () => {};
+
+module.exports = Editor;
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/webpack/jsonview-sham.js
@@ -0,0 +1,14 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set ts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+module.exports = {
+  JsonView: {
+    initialize: () => {},
+    destroy: () => {},
+  }
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/webpack/prefs-loader.js
@@ -0,0 +1,71 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// Rewrite devtools.js or all.js, leaving just the relevant pref() calls.
+
+"use strict";
+
+const PREF_WHITELIST = [
+  "devtools",
+  "layout.css.grid.enabled"
+];
+
+const acceptLine = function (line) {
+  let matches = line.match(/^ *pref\("([^"]+)"/);
+  if (!matches || !matches[1]) {
+    return false;
+  }
+
+  let [, prefName] = matches;
+  return PREF_WHITELIST.some(filter => prefName.startsWith(filter));
+};
+
+module.exports = function (content) {
+  this.cacheable && this.cacheable();
+
+  // If we're reading devtools.js we have to do some preprocessing.
+  // If we're reading all.js we just assume we can dump all the
+  // conditionals.
+  let isDevtools = this.request.endsWith("/devtools.js");
+
+  // This maps the text of a "#if" to its truth value.  This has to
+  // cover all uses of #if in devtools.js.
+  const ifMap = {
+    "#if MOZ_UPDATE_CHANNEL == beta": false,
+    "#if defined(NIGHTLY_BUILD)": false,
+    "#ifdef NIGHTLY_BUILD": false,
+    "#ifdef MOZ_DEV_EDITION": false,
+    "#ifdef RELEASE_OR_BETA": true,
+    "#ifdef RELEASE_BUILD": true,
+  };
+
+  let lines = content.split("\n");
+  let ignoring = false;
+  let newLines = [];
+  let continuation = false;
+  for (let line of lines) {
+    if (line.startsWith("sticky_pref")) {
+      line = line.slice(7);
+    }
+
+    if (isDevtools) {
+      if (line.startsWith("#if")) {
+        if (!(line in ifMap)) {
+          throw new Error("missing line in ifMap: " + line);
+        }
+        ignoring = !ifMap[line];
+      } else if (line.startsWith("#else")) {
+        ignoring = !ignoring;
+      }
+    }
+
+    if (continuation || (!ignoring && acceptLine(line))) {
+      newLines.push(line);
+
+      // The call to pref(...); might span more than one line.
+      continuation = !/\);/.test(line);
+    }
+  }
+  return newLines.join("\n");
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/webpack/rewrite-browser-require.js
@@ -0,0 +1,12 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// Replace all occurrences of "this.browserRequire(" by "require(".
+
+"use strict";
+
+module.exports = function (content) {
+  this.cacheable && this.cacheable();
+  return content.replace(/this\.browserRequire\(/g, "require(");
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/webpack/rewrite-event-emitter.js
@@ -0,0 +1,26 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// Remove the header code from event-emitter.js.  This code confuses
+// webpack.
+
+"use strict";
+
+module.exports = function (content) {
+  this.cacheable && this.cacheable();
+
+  let lines = content.split("\n");
+  let ignoring = false;
+  let newLines = [];
+  for (let line of lines) {
+    if (/function \(factory\)/.test(line)) {
+      ignoring = true;
+    } else if (/call\(this, function /.test(line)) {
+      ignoring = false;
+    } else if (!ignoring && line !== "});") {
+      newLines.push(line);
+    }
+  }
+  return newLines.join("\n");
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/webpack/system-unload-sham.js
@@ -0,0 +1,11 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set ts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+module.exports = {
+  when: () => {},
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/webpack/target-from-url-sham.js
@@ -0,0 +1,11 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set ts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+module.exports = {
+  targetFromURL: () => {},
+};
--- a/devtools/client/shared/shim/Services.js
+++ b/devtools/client/shared/shim/Services.js
@@ -601,16 +601,24 @@ const Services = {
       // sufficient for our purposes.
       return {
         openUILinkIn: function (url) {
           window.open(url, "_blank");
         },
       };
     },
   },
+
+  /**
+   * Shims for Services.obs.add/removeObserver.
+   */
+  obs: {
+    addObserver: () => {},
+    removeObserver: () => {},
+  },
 };
 
 /**
  * Create a new preference.  This is used during startup (see
  * devtools/client/preferences/devtools.js) to install the
  * default preferences.
  *
  * @param {String} name the name of the preference
--- a/devtools/client/shared/undo.js
+++ b/devtools/client/shared/undo.js
@@ -148,18 +148,24 @@ UndoStack.prototype = {
   /**
    * ViewController implementation for undo/redo.
    */
 
   /**
    * Install this object as a command controller.
    */
   installController: function (controllerWindow) {
+    let controllers = controllerWindow.controllers;
+    // Only available when running in a Firefox panel.
+    if (!controllers || !controllers.appendController) {
+      return;
+    }
+
     this._controllerWindow = controllerWindow;
-    controllerWindow.controllers.appendController(this);
+    controllers.appendController(this);
   },
 
   /**
    * Uninstall this object from the command controller.
    */
   uninstallController: function () {
     if (!this._controllerWindow) {
       return;
rename from devtools/client/package.json
rename to devtools/client/sourceeditor/package.json
--- a/devtools/client/package.json
+++ b/devtools/client/sourceeditor/package.json
@@ -1,10 +1,10 @@
 {
-  "name": "devtools",
+  "name": "sourceeditor",
   "version": "0.0.1",
   "description": "",
   "main": "",
   "scripts": {
     "build": "webpack"
   },
   "babel":  {
     "presets": [ "es2015" ]
rename from devtools/client/webpack.config.js
rename to devtools/client/sourceeditor/webpack.config.js
--- a/devtools/client/webpack.config.js
+++ b/devtools/client/sourceeditor/webpack.config.js
@@ -2,38 +2,38 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 module.exports = [{
   bail: true,
   entry: [
-    "./sourceeditor/codemirror/addon/dialog/dialog.js",
-    "./sourceeditor/codemirror/addon/search/searchcursor.js",
-    "./sourceeditor/codemirror/addon/search/search.js",
-    "./sourceeditor/codemirror/addon/edit/matchbrackets.js",
-    "./sourceeditor/codemirror/addon/edit/closebrackets.js",
-    "./sourceeditor/codemirror/addon/comment/comment.js",
-    "./sourceeditor/codemirror/mode/javascript/javascript.js",
-    "./sourceeditor/codemirror/mode/xml/xml.js",
-    "./sourceeditor/codemirror/mode/css/css.js",
-    "./sourceeditor/codemirror/mode/htmlmixed/htmlmixed.js",
-    "./sourceeditor/codemirror/mode/clike/clike.js",
-    "./sourceeditor/codemirror/mode/wasm/wasm.js",
-    "./sourceeditor/codemirror/addon/selection/active-line.js",
-    "./sourceeditor/codemirror/addon/edit/trailingspace.js",
-    "./sourceeditor/codemirror/keymap/emacs.js",
-    "./sourceeditor/codemirror/keymap/vim.js",
-    "./sourceeditor/codemirror/keymap/sublime.js",
-    "./sourceeditor/codemirror/addon/fold/foldcode.js",
-    "./sourceeditor/codemirror/addon/fold/brace-fold.js",
-    "./sourceeditor/codemirror/addon/fold/comment-fold.js",
-    "./sourceeditor/codemirror/addon/fold/xml-fold.js",
-    "./sourceeditor/codemirror/addon/fold/foldgutter.js",
-    "./sourceeditor/codemirror/lib/codemirror.js",
+    "./codemirror/addon/dialog/dialog.js",
+    "./codemirror/addon/search/searchcursor.js",
+    "./codemirror/addon/search/search.js",
+    "./codemirror/addon/edit/matchbrackets.js",
+    "./codemirror/addon/edit/closebrackets.js",
+    "./codemirror/addon/comment/comment.js",
+    "./codemirror/mode/javascript/javascript.js",
+    "./codemirror/mode/xml/xml.js",
+    "./codemirror/mode/css/css.js",
+    "./codemirror/mode/htmlmixed/htmlmixed.js",
+    "./codemirror/mode/clike/clike.js",
+    "./codemirror/mode/wasm/wasm.js",
+    "./codemirror/addon/selection/active-line.js",
+    "./codemirror/addon/edit/trailingspace.js",
+    "./codemirror/keymap/emacs.js",
+    "./codemirror/keymap/vim.js",
+    "./codemirror/keymap/sublime.js",
+    "./codemirror/addon/fold/foldcode.js",
+    "./codemirror/addon/fold/brace-fold.js",
+    "./codemirror/addon/fold/comment-fold.js",
+    "./codemirror/addon/fold/xml-fold.js",
+    "./codemirror/addon/fold/foldgutter.js",
+    "./codemirror/lib/codemirror.js",
   ],
   output: {
-    filename: "./sourceeditor/codemirror/codemirror.bundle.js",
+    filename: "./codemirror/codemirror.bundle.js",
     libraryTarget: "var",
     library: "CodeMirror",
   },
 }];
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -787,17 +787,17 @@ private:
 
     NotifyAudioPlaybackChanged(
       AudioChannelService::AudibleChangedReasons::ePauseStateChanged);
   }
 
   void
   Resume()
   {
-    if (!IsSuspended() && mOwner->Paused()) {
+    if (!IsSuspended()) {
       MOZ_LOG(AudioChannelService::GetAudioChannelLog(), LogLevel::Debug,
              ("HTMLMediaElement::AudioChannelAgentCallback, ResumeFromAudioChannel, "
               "this = %p, Error : resume without suspended!\n", this));
       return;
     }
 
     SetSuspended(nsISuspendedTypes::NONE_SUSPENDED);
     nsresult rv = mOwner->Play();
--- a/dom/media/MediaData.cpp
+++ b/dom/media/MediaData.cpp
@@ -134,16 +134,38 @@ VideoData::VideoData(int64_t aOffset,
   mKeyframe = aKeyframe;
   mTimecode = aTimecode;
 }
 
 VideoData::~VideoData()
 {
 }
 
+void
+VideoData::SetListener(UniquePtr<Listener> aListener)
+{
+  MOZ_ASSERT(!mSentToCompositor, "Listener should be registered before sending data");
+
+  mListener = Move(aListener);
+}
+
+void
+VideoData::MarkSentToCompositor()
+{
+  if (mSentToCompositor) {
+    return;
+  }
+
+  mSentToCompositor = true;
+  if (mListener != nullptr) {
+    mListener->OnSentToCompositor();
+    mListener = nullptr;
+  }
+}
+
 size_t
 VideoData::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const
 {
   size_t size = aMallocSizeOf(this);
 
   // Currently only PLANAR_YCBCR has a well defined function for determining
   // it's size, so reporting is limited to that type.
   if (mImage && mImage->GetFormat() == ImageFormat::PLANAR_YCBCR) {
--- a/dom/media/MediaData.h
+++ b/dom/media/MediaData.h
@@ -442,16 +442,22 @@ public:
       uint32_t mOffset;
       uint32_t mSkip;
     };
 
     Plane mPlanes[3];
     YUVColorSpace mYUVColorSpace = YUVColorSpace::BT601;
   };
 
+  class Listener {
+  public:
+    virtual void OnSentToCompositor() = 0;
+    virtual ~Listener() {}
+  };
+
   // Constructs a VideoData object. If aImage is nullptr, creates a new Image
   // holding a copy of the YCbCr data passed in aBuffer. If aImage is not
   // nullptr, it's stored as the underlying video image and aBuffer is assumed
   // to point to memory within aImage so no copy is made. aTimecode is a codec
   // specific number representing the timestamp of the frame of video data.
   // Returns nsnull if an error occurs. This may indicate that memory couldn't
   // be allocated to create the VideoData object, or it may indicate some
   // problem with the input data (e.g. negative stride).
@@ -525,28 +531,33 @@ public:
   // dimensions scaled with respect to its aspect ratio.
   const IntSize mDisplay;
 
   // This frame's image.
   RefPtr<Image> mImage;
 
   int32_t mFrameID;
 
-  bool mSentToCompositor;
-
   VideoData(int64_t aOffset,
             int64_t aTime,
             int64_t aDuration,
             bool aKeyframe,
             int64_t aTimecode,
             IntSize aDisplay,
             uint32_t aFrameID);
 
+  void SetListener(UniquePtr<Listener> aListener);
+  void MarkSentToCompositor();
+  bool IsSentToCompositor() { return mSentToCompositor; }
+
 protected:
   ~VideoData();
+
+  bool mSentToCompositor;
+  UniquePtr<Listener> mListener;
 };
 
 class CryptoTrack
 {
 public:
   CryptoTrack() : mValid(false), mMode(0), mIVSize(0) {}
   bool mValid;
   int32_t mMode;
--- a/dom/media/mediasink/VideoSink.cpp
+++ b/dom/media/mediasink/VideoSink.cpp
@@ -254,17 +254,17 @@ VideoSink::Shutdown()
 
 void
 VideoSink::OnVideoQueuePushed(RefPtr<MediaData>&& aSample)
 {
   AssertOwnerThread();
   // Listen to push event, VideoSink should try rendering ASAP if first frame
   // arrives but update scheduler is not triggered yet.
   VideoData* v = aSample->As<VideoData>();
-  if (!v->mSentToCompositor) {
+  if (!v->IsSentToCompositor()) {
     // Since we push rendered frames back to the queue, we will receive
     // push events for them. We only need to trigger render loop
     // when this frame is not rendered yet.
     TryUpdateRenderedVideoFrames();
   }
 }
 
 void
@@ -354,17 +354,17 @@ VideoSink::RenderVideoFrames(int32_t aMa
   }
 
   AutoTArray<ImageContainer::NonOwningImage,16> images;
   TimeStamp lastFrameTime;
   MediaSink::PlaybackParams params = mAudioSink->GetPlaybackParams();
   for (uint32_t i = 0; i < frames.Length(); ++i) {
     VideoData* frame = frames[i]->As<VideoData>();
 
-    frame->mSentToCompositor = true;
+    frame->MarkSentToCompositor();
 
     if (!frame->mImage || !frame->mImage->IsValid() ||
         !frame->mImage->GetSize().width || !frame->mImage->GetSize().height) {
       continue;
     }
 
     int64_t frameTime = frame->mTime;
     if (frameTime < 0) {
@@ -412,17 +412,17 @@ VideoSink::UpdateRenderedVideoFrames()
   NS_ASSERTION(clockTime >= 0, "Should have positive clock time.");
 
   // Skip frames up to the playback position.
   int64_t lastFrameEndTime = 0;
   while (VideoQueue().GetSize() > mMinVideoQueueSize &&
          clockTime >= VideoQueue().PeekFront()->GetEndTime()) {
     RefPtr<MediaData> frame = VideoQueue().PopFront();
     lastFrameEndTime = frame->GetEndTime();
-    if (frame->As<VideoData>()->mSentToCompositor) {
+    if (frame->As<VideoData>()->IsSentToCompositor()) {
       mFrameStats.NotifyPresentedFrame();
     } else {
       mFrameStats.NotifyDecodedFrames({ 0, 0, 1 });
       VSINK_LOG_V("discarding video frame mTime=%lld clock_time=%lld",
                   frame->mTime, clockTime);
     }
   }
 
--- a/dom/media/platforms/android/RemoteDataDecoder.cpp
+++ b/dom/media/platforms/android/RemoteDataDecoder.cpp
@@ -109,16 +109,50 @@ struct SampleTime final
   int64_t mStart;
   int64_t mDuration;
 };
 
 
 class RemoteVideoDecoder final : public RemoteDataDecoder
 {
 public:
+  // Hold an output buffer and render it to the surface when the frame is sent to compositor, or
+  // release it if not presented.
+  class RenderOrReleaseOutput : public VideoData::Listener
+  {
+  public:
+    RenderOrReleaseOutput(java::CodecProxy::Param aCodec, java::Sample::Param aSample)
+      : mCodec(aCodec),
+        mSample(aSample)
+    {}
+
+    ~RenderOrReleaseOutput()
+    {
+      ReleaseOutput(false);
+    }
+
+    void OnSentToCompositor() override
+    {
+      ReleaseOutput(true);
+      mCodec = nullptr;
+      mSample = nullptr;
+    }
+
+  private:
+    void ReleaseOutput(bool aToRender)
+    {
+      if (mCodec && mSample) {
+        mCodec->ReleaseOutput(mSample, aToRender);
+      }
+    }
+
+    java::CodecProxy::GlobalRef mCodec;
+    java::Sample::GlobalRef mSample;
+  };
+
   class CallbacksSupport final : public JavaCallbacksSupport
   {
   public:
     CallbacksSupport(RemoteVideoDecoder* aDecoder, MediaDataDecoderCallback* aCallback)
       : JavaCallbacksSupport(aCallback)
       , mDecoder(aDecoder)
     {}
 
@@ -163,16 +197,19 @@ public:
                                     durationUs.value(),
                                     img,
                                     !!(flags & MediaCodec::BUFFER_FLAG_SYNC_FRAME),
                                     presentationTimeUs,
                                     gfx::IntRect(0, 0,
                                                   mDecoder->mConfig.mDisplay.width,
                                                   mDecoder->mConfig.mDisplay.height));
 
+        UniquePtr<VideoData::Listener> listener(new RenderOrReleaseOutput(mDecoder->mJavaDecoder, aSample));
+        v->SetListener(Move(listener));
+
         mDecoderCallback->Output(v);
       }
 
       if ((flags & MediaCodec::BUFFER_FLAG_END_OF_STREAM) != 0) {
         mDecoderCallback->DrainComplete();
       }
     }
 
--- a/layout/style/nsStyleStruct.h
+++ b/layout/style/nsStyleStruct.h
@@ -3953,17 +3953,17 @@ struct nsSize_Simple {
   nscoord width, height;
 };
 
 STATIC_ASSERT_TYPE_LAYOUTS_MATCH(nsSize, nsSize_Simple);
 STATIC_ASSERT_FIELD_OFFSET_MATCHES(nsSize, nsSize_Simple, width);
 STATIC_ASSERT_FIELD_OFFSET_MATCHES(nsSize, nsSize_Simple, height);
 
 /**
- * <div rustbindgen="true" replaces="mozilla_UniquePtr">
+ * <div rustbindgen="true" replaces="mozilla::UniquePtr">
  *
  * TODO(Emilio): This is a workaround and we should be able to get rid of this
  * one.
  */
 template<typename T, typename Deleter = mozilla::DefaultDelete<T>>
 struct UniquePtr_Simple {
   T* mPtr;
 };
--- a/layout/svg/nsSVGEffects.cpp
+++ b/layout/svg/nsSVGEffects.cpp
@@ -678,16 +678,34 @@ nsSVGEffects::EffectProperties::GetMaskF
       static_cast<nsSVGMaskFrame *>(props[i]->GetReferencedFrame(
                                                 nsGkAtoms::svgMaskFrame, &ok));
     result.AppendElement(maskFrame);
   }
 
   return result;
 }
 
+bool
+nsSVGEffects::EffectProperties::MightHaveNoneSVGMask() const
+{
+  if (!mMask) {
+    return false;
+  }
+
+  const nsTArray<RefPtr<nsSVGPaintingProperty>>& props = mMask->GetProps();
+  for (size_t i = 0; i < props.Length(); i++) {
+    if (!props[i] ||
+        !props[i]->GetReferencedFrame(nsGkAtoms::svgMaskFrame, nullptr)) {
+      return true;
+    }
+  }
+
+  return false;
+}
+
 void
 nsSVGEffects::UpdateEffects(nsIFrame* aFrame)
 {
   NS_ASSERTION(aFrame->GetContent()->IsElement(),
                "aFrame's content should be an element");
 
   FrameProperties props = aFrame->Properties();
   props.Delete(FilterProperty());
--- a/layout/svg/nsSVGEffects.h
+++ b/layout/svg/nsSVGEffects.h
@@ -488,16 +488,17 @@ public:
      */
     nsSVGMaskFrame *GetFirstMaskFrame(bool* aOK = nullptr);
 
     /**
      * @return an array which contains all SVG mask frames.
      */
     nsTArray<nsSVGMaskFrame*> GetMaskFrames();
 
+    bool MightHaveNoneSVGMask() const;
     bool HasValidFilter() {
       return mFilter && mFilter->ReferencesValidResources();
     }
 
     bool HasNoFilterOrHasValidFilter() {
       return !mFilter || mFilter->ReferencesValidResources();
     }
   };
--- a/layout/svg/nsSVGIntegrationUtils.cpp
+++ b/layout/svg/nsSVGIntegrationUtils.cpp
@@ -105,19 +105,28 @@ private:
     //
     //  * reftests/svg/svg-integration/clipPath-html-06.xhtml
     //  * reftests/svg/svg-integration/clipPath-html-06-extref.xhtml
     //
     // If we ever got passed a frame with the PreTransformOverflowAreasProperty
     // property set, that would be bad, since then our GetVisualOverflowRect()
     // call would give us the post-effects, and post-transform, overflow rect.
     //
-    NS_ASSERTION(aFrame->GetParent()->StyleContext()->GetPseudo() ==
+    // With image masks, there is one more exception.
+    //
+    // In nsStyleImageLayers::Layer::CalcDifference, we do not add
+    // nsChangeHint_UpdateOverflow hint when image mask(not SVG mask) property
+    // value changed, since replace image mask does not cause layout change.
+    // So even if we apply a new mask image to this frame,
+    // PreEffectsBBoxProperty might still left empty.
+    NS_ASSERTION(nsSVGEffects::GetEffectProperties(aFrame).MightHaveNoneSVGMask() ||
+                 aFrame->GetParent()->StyleContext()->GetPseudo() ==
                    nsCSSAnonBoxes::mozAnonymousBlock,
                  "How did we getting here, then?");
+
     NS_ASSERTION(!aFrame->Properties().Get(
                    aFrame->PreTransformOverflowAreasProperty()),
                  "GetVisualOverflowRect() won't return the pre-effects rect!");
     return aFrame->GetVisualOverflowRect();
   }
 
   nsIFrame*     mFirstContinuation;
   nsIFrame*     mCurrentFrame;
--- a/media/libstagefright/binding/AnnexB.cpp
+++ b/media/libstagefright/binding/AnnexB.cpp
@@ -329,16 +329,57 @@ AnnexB::HasSPS(const mozilla::MediaByteB
     return false;
   }
   uint8_t numSps = reader.ReadU8() & 0x1f;
 
   return numSps > 0;
 }
 
 bool
+AnnexB::HasPPS(const mozilla::MediaRawData* aSample)
+{
+  return HasPPS(aSample->mExtraData);
+}
+
+bool
+AnnexB::HasPPS(const mozilla::MediaByteBuffer* aExtraData)
+{
+  if (!aExtraData) {
+    return false;
+  }
+
+  ByteReader reader(aExtraData);
+  const uint8_t* ptr = reader.Read(5);
+  if (!ptr || !reader.CanRead8()) {
+    return false;
+  }
+  uint8_t numSps = reader.ReadU8() & 0x1f;
+  // Skip over the included SPS.
+  for (uint8_t i = 0; i < numSps; i++) {
+    if (reader.Remaining() < 3) {
+      return false;
+    }
+    uint16_t length = reader.ReadU16();
+    if ((reader.PeekU8() & 0x1f) != 7) {
+      // Not an SPS NAL type.
+      return false;
+    }
+    if (!reader.Read(length)) {
+      return false;
+    }
+  }
+  if (!reader.CanRead8()) {
+    return false;
+  }
+  uint8_t numPps = reader.ReadU8();
+
+  return numPps > 0;
+}
+
+bool
 AnnexB::ConvertSampleTo4BytesAVCC(mozilla::MediaRawData* aSample)
 {
   MOZ_ASSERT(IsAVCC(aSample));
 
   int nalLenSize = ((*aSample->mExtraData)[4] & 3) + 1;
 
   if (nalLenSize == 4) {
     return true;
--- a/media/libstagefright/binding/BitReader.cpp
+++ b/media/libstagefright/binding/BitReader.cpp
@@ -96,9 +96,15 @@ BitReader::ReadUTF8()
 }
 
 size_t
 BitReader::BitCount() const
 {
   return mSize * 8 - mBitReader->numBitsLeft();
 }
 
+size_t
+BitReader::BitsLeft() const
+{
+  return mBitReader->numBitsLeft();
+}
+
 } // namespace mp4_demuxer
--- a/media/libstagefright/binding/H264.cpp
+++ b/media/libstagefright/binding/H264.cpp
@@ -6,33 +6,143 @@
 #include "mozilla/PodOperations.h"
 #include "mp4_demuxer/AnnexB.h"
 #include "mp4_demuxer/BitReader.h"
 #include "mp4_demuxer/ByteReader.h"
 #include "mp4_demuxer/ByteWriter.h"
 #include "mp4_demuxer/H264.h"
 #include <media/stagefright/foundation/ABitReader.h>
 #include <limits>
+#include <cmath>
 
 using namespace mozilla;
 
-namespace mp4_demuxer
+namespace mp4_demuxer {
+
+// Default scaling lists (per spec).
+// ITU H264:
+// Table 7-2 – Assignment of mnemonic names to scaling list indices and
+// specification of fall-back rule
+static const uint8_t Default_4x4_Intra[16] = {
+    6, 13, 13, 20,
+   20, 20, 28, 28,
+   28, 28, 32, 32,
+   32, 37, 37, 42
+};
+
+static const uint8_t Default_4x4_Inter[16] = {
+   10, 14, 14, 20,
+   20, 20, 24, 24,
+   24, 24, 27, 27,
+   27, 30, 30, 34
+};
+
+static const uint8_t Default_8x8_Intra[64] = {
+    6, 10, 10, 13, 11, 13, 16, 16,
+   16, 16, 18, 18, 18, 18, 18, 23,
+   23, 23, 23, 23, 23, 25, 25, 25,
+   25, 25, 25, 25, 27, 27, 27, 27,
+   27, 27, 27, 27, 29, 29, 29, 29,
+   29, 29, 29, 31, 31, 31, 31, 31,
+   31, 33, 33, 33, 33, 33, 36, 36,
+   36, 36, 38, 38, 38, 40, 40, 42
+};
+
+static const uint8_t Default_8x8_Inter[64] = {
+    9, 13, 13, 15, 13, 15, 17, 17,
+   17, 17, 19, 19, 19, 19, 19, 21,
+   21, 21, 21, 21, 21, 22, 22, 22,
+   22, 22, 22, 22, 24, 24, 24, 24,
+   24, 24, 24, 24, 25, 25, 25, 25,
+   25, 25, 25, 27, 27, 27, 27, 27,
+   27, 28, 28, 28, 28, 28, 30, 30,
+   30, 30, 32, 32, 32, 33, 33, 35
+};
+
+namespace detail {
+static void
+scaling_list(BitReader& aBr, uint8_t* aScalingList, int aSizeOfScalingList,
+             const uint8_t* aDefaultList, const uint8_t* aFallbackList)
 {
+  int32_t lastScale = 8;
+  int32_t nextScale = 8;
+  int32_t deltaScale;
+
+  // (pic|seq)_scaling_list_present_flag[i]
+  if (!aBr.ReadBit()) {
+    if (aFallbackList) {
+      memcpy(aScalingList, aFallbackList, aSizeOfScalingList);
+    }
+    return;
+  }
+
+  for (int i = 0; i < aSizeOfScalingList; i++) {
+    if (nextScale != 0) {
+      deltaScale = aBr.ReadSE();
+      nextScale = (lastScale + deltaScale + 256) % 256;
+      if (!i && !nextScale) {
+        memcpy(aScalingList, aDefaultList, aSizeOfScalingList);
+        return;
+      }
+    }
+    aScalingList[i] = (nextScale == 0) ? lastScale : nextScale;
+    lastScale = aScalingList[i];
+  }
+}
+} // namespace detail.
+
+template <size_t N>
+static void
+scaling_list(BitReader& aBr, uint8_t (&aScalingList)[N],
+             const uint8_t (&aDefaultList)[N], const uint8_t (&aFallbackList)[N])
+{
+  detail::scaling_list(aBr, aScalingList, N, aDefaultList, aFallbackList);
+}
+
+template <size_t N>
+static void
+scaling_list(BitReader& aBr, uint8_t (&aScalingList)[N], const uint8_t (&aDefaultList)[N])
+{
+  detail::scaling_list(aBr, aScalingList, N, aDefaultList, nullptr);
+}
 
 SPSData::SPSData()
 {
   PodZero(this);
   // Default values when they aren't defined as per ITU-T H.264 (2014/02).
   chroma_format_idc = 1;
   video_format = 5;
   colour_primaries = 2;
   transfer_characteristics = 2;
   sample_ratio = 1.0;
+  memset(scaling_matrix4x4, 16, sizeof(scaling_matrix4x4));
+  memset(scaling_matrix8x8, 16, sizeof(scaling_matrix8x8));
 }
 
+PPSData::PPSData()
+{
+  PodZero(this);
+  memset(scaling_matrix4x4, 16, sizeof(scaling_matrix4x4));
+  memset(scaling_matrix8x8, 16, sizeof(scaling_matrix8x8));
+}
+
+const uint8_t H264::ZZ_SCAN[16] = { 0,  1,  4,  8,
+                                    5,  2,  3,  6,
+                                    9, 12, 13, 10,
+                                    7, 11, 14, 15 };
+
+const uint8_t H264::ZZ_SCAN8[64] = {  0,  1,  8, 16,  9,  2,  3, 10,
+                                     17, 24, 32, 25, 18, 11,  4,  5,
+                                     12, 19, 26, 33, 40, 48, 41, 34,
+                                     27, 20, 13,  6,  7, 14, 21, 28,
+                                     35, 42, 49, 56, 57, 50, 43, 36,
+                                     29, 22, 15, 23, 30, 37, 44, 51,
+                                     58, 59, 52, 45, 38, 31, 39, 46,
+                                     53, 60, 61, 54, 47, 55, 62, 63 };
+
 /* static */ already_AddRefed<mozilla::MediaByteBuffer>
 H264::DecodeNALUnit(const mozilla::MediaByteBuffer* aNAL)
 {
   MOZ_ASSERT(aNAL);
 
   if (aNAL->Length() < 4) {
     return nullptr;
   }
@@ -86,59 +196,70 @@ ConditionDimension(float aValue)
 /* static */ bool
 H264::DecodeSPS(const mozilla::MediaByteBuffer* aSPS, SPSData& aDest)
 {
   if (!aSPS) {
     return false;
   }
   BitReader br(aSPS);
 
-  int32_t lastScale;
-  int32_t nextScale;
-  int32_t deltaScale;
-
   aDest.profile_idc = br.ReadBits(8);
   aDest.constraint_set0_flag = br.ReadBit();
   aDest.constraint_set1_flag = br.ReadBit();
   aDest.constraint_set2_flag = br.ReadBit();
   aDest.constraint_set3_flag = br.ReadBit();
   aDest.constraint_set4_flag = br.ReadBit();
   aDest.constraint_set5_flag = br.ReadBit();
   br.ReadBits(2); // reserved_zero_2bits
   aDest.level_idc = br.ReadBits(8);
   aDest.seq_parameter_set_id = br.ReadUE();
   if (aDest.profile_idc == 100 || aDest.profile_idc == 110 ||
       aDest.profile_idc == 122 || aDest.profile_idc == 244 ||
       aDest.profile_idc == 44 || aDest.profile_idc == 83 ||
-     aDest.profile_idc == 86 || aDest.profile_idc == 118 ||
+      aDest.profile_idc == 86 || aDest.profile_idc == 118 ||
       aDest.profile_idc == 128 || aDest.profile_idc == 138 ||
       aDest.profile_idc == 139 || aDest.profile_idc == 134) {
     if ((aDest.chroma_format_idc = br.ReadUE()) == 3) {
       aDest.separate_colour_plane_flag = br.ReadBit();
     }
-    br.ReadUE();  // bit_depth_luma_minus8
-    br.ReadUE();  // bit_depth_chroma_minus8
-    br.ReadBit(); // qpprime_y_zero_transform_bypass_flag
-    if (br.ReadBit()) { // seq_scaling_matrix_present_flag
-      for (int idx = 0; idx < ((aDest.chroma_format_idc != 3) ? 8 : 12); ++idx) {
-        if (br.ReadBit()) { // Scaling list present
-          lastScale = nextScale = 8;
-          int sl_n = (idx < 6) ? 16 : 64;
-          for (int sl_i = 0; sl_i < sl_n; sl_i++) {
-            if (nextScale) {
-              deltaScale = br.ReadSE();
-              nextScale = (lastScale + deltaScale + 256) % 256;
-            }
-            lastScale = (nextScale == 0) ? lastScale : nextScale;
-          }
-        }
+    aDest.bit_depth_luma_minus8 = br.ReadUE();
+    aDest.bit_depth_chroma_minus8 = br.ReadUE();
+    br.ReadBit();       // qpprime_y_zero_transform_bypass_flag
+    aDest.seq_scaling_matrix_present_flag = br.ReadBit();
+    if (aDest.seq_scaling_matrix_present_flag) {
+      scaling_list(br, aDest.scaling_matrix4x4[0], Default_4x4_Intra,
+                   Default_4x4_Intra);
+      scaling_list(br, aDest.scaling_matrix4x4[1], Default_4x4_Intra,
+                   aDest.scaling_matrix4x4[0]);
+      scaling_list(br, aDest.scaling_matrix4x4[2], Default_4x4_Intra,
+                   aDest.scaling_matrix4x4[1]);
+      scaling_list(br, aDest.scaling_matrix4x4[3], Default_4x4_Inter,
+                   Default_4x4_Inter);
+      scaling_list(br, aDest.scaling_matrix4x4[4], Default_4x4_Inter,
+                   aDest.scaling_matrix4x4[3]);
+      scaling_list(br, aDest.scaling_matrix4x4[5], Default_4x4_Inter,
+                   aDest.scaling_matrix4x4[4]);
+
+      scaling_list(br, aDest.scaling_matrix8x8[0], Default_8x8_Intra,
+                   Default_8x8_Intra);
+      scaling_list(br, aDest.scaling_matrix8x8[1], Default_8x8_Inter,
+                   Default_8x8_Inter);
+      if (aDest.chroma_format_idc == 3) {
+        scaling_list(br, aDest.scaling_matrix8x8[2], Default_8x8_Intra,
+                     aDest.scaling_matrix8x8[0]);
+        scaling_list(br, aDest.scaling_matrix8x8[3], Default_8x8_Inter,
+                     aDest.scaling_matrix8x8[1]);
+        scaling_list(br, aDest.scaling_matrix8x8[4], Default_8x8_Intra,
+                     aDest.scaling_matrix8x8[2]);
+        scaling_list(br, aDest.scaling_matrix8x8[5], Default_8x8_Inter,
+                     aDest.scaling_matrix8x8[3]);
       }
     }
   } else if (aDest.profile_idc == 183) {
-      aDest.chroma_format_idc = 0;
+    aDest.chroma_format_idc = 0;
   } else {
     // default value if chroma_format_idc isn't set.
     aDest.chroma_format_idc = 1;
   }
   aDest.log2_max_frame_num = br.ReadUE() + 4;
   aDest.pic_order_cnt_type = br.ReadUE();
   if (aDest.pic_order_cnt_type == 0) {
     aDest.log2_max_pic_order_cnt_lsb = br.ReadUE() + 4;
@@ -155,17 +276,17 @@ H264::DecodeSPS(const mozilla::MediaByte
   aDest.gaps_in_frame_num_allowed_flag = br.ReadBit();
   aDest.pic_width_in_mbs = br.ReadUE() + 1;
   aDest.pic_height_in_map_units = br.ReadUE() + 1;
   aDest.frame_mbs_only_flag = br.ReadBit();
   if (!aDest.frame_mbs_only_flag) {
     aDest.pic_height_in_map_units *= 2;
     aDest.mb_adaptive_frame_field_flag = br.ReadBit();
   }
-  br.ReadBit(); // direct_8x8_inference_flag
+  aDest.direct_8x8_inference_flag = br.ReadBit();
   aDest.frame_cropping_flag = br.ReadBit();
   if (aDest.frame_cropping_flag) {
     aDest.frame_crop_left_offset = br.ReadUE();
     aDest.frame_crop_right_offset = br.ReadUE();
     aDest.frame_crop_top_offset = br.ReadUE();
     aDest.frame_crop_bottom_offset = br.ReadUE();
   }
 
@@ -235,17 +356,17 @@ H264::DecodeSPS(const mozilla::MediaByte
 H264::vui_parameters(BitReader& aBr, SPSData& aDest)
 {
   aDest.aspect_ratio_info_present_flag = aBr.ReadBit();
   if (aDest.aspect_ratio_info_present_flag) {
     aDest.aspect_ratio_idc = aBr.ReadBits(8);
     aDest.sar_width = aDest.sar_height = 0;
 
     // From E.2.1 VUI parameters semantics (ITU-T H.264 02/2014)
-    switch (aDest.aspect_ratio_idc)  {
+    switch (aDest.aspect_ratio_idc) {
       case 0:
         // Unspecified
         break;
       case 1:
         /*
           1:1
          7680x4320 16:9 frame without horizontal overscan
          3840x2160 16:9 frame without horizontal overscan
@@ -363,17 +484,17 @@ H264::vui_parameters(BitReader& aBr, SPS
         /*
           2:1
          960x1080 16:9 frame without horizontal overscan
          */
         aDest.sample_ratio = 2.0 / 1.0;
         break;
       case 255:
         /* Extended_SAR */
-        aDest.sar_width  = aBr.ReadBits(16);
+        aDest.sar_width = aBr.ReadBits(16);
         aDest.sar_height = aBr.ReadBits(16);
         if (aDest.sar_width && aDest.sar_height) {
           aDest.sample_ratio = float(aDest.sar_width) / float(aDest.sar_height);
         }
         break;
       default:
         break;
     }
@@ -396,46 +517,49 @@ H264::vui_parameters(BitReader& aBr, SPS
 
   aDest.chroma_loc_info_present_flag = aBr.ReadBit();
   if (aDest.chroma_loc_info_present_flag) {
     aDest.chroma_sample_loc_type_top_field = aBr.ReadUE();
     aDest.chroma_sample_loc_type_bottom_field = aBr.ReadUE();
   }
 
   aDest.timing_info_present_flag = aBr.ReadBit();
-  if (aDest.timing_info_present_flag ) {
+  if (aDest.timing_info_present_flag) {
     aDest.num_units_in_tick = aBr.ReadBits(32);
     aDest.time_scale = aBr.ReadBits(32);
     aDest.fixed_frame_rate_flag = aBr.ReadBit();
   }
 }
 
 /* static */ bool
-H264::DecodeSPSFromExtraData(const mozilla::MediaByteBuffer* aExtraData, SPSData& aDest)
+H264::DecodeSPSFromExtraData(const mozilla::MediaByteBuffer* aExtraData,
+                             SPSData& aDest)
 {
   if (!AnnexB::HasSPS(aExtraData)) {
     return false;
   }
   ByteReader reader(aExtraData);
 
   if (!reader.Read(5)) {
     return false;
   }
 
-  if (!(reader.ReadU8() & 0x1f)) {
+  uint8_t numSps = reader.ReadU8() & 0x1f;
+  if (!numSps) {
     // No SPS.
     return false;
   }
+  NS_ASSERTION(numSps == 1, "More than one SPS in extradata");
+
   uint16_t length = reader.ReadU16();
 
   if ((reader.PeekU8() & 0x1f) != 7) {
     // Not a SPS NAL type.
     return false;
   }
-
   const uint8_t* ptr = reader.Read(length);
   if (!ptr) {
     return false;
   }
 
   RefPtr<mozilla::MediaByteBuffer> rawNAL = new mozilla::MediaByteBuffer;
   rawNAL->AppendElements(ptr, length);
 
@@ -450,32 +574,214 @@ H264::DecodeSPSFromExtraData(const mozil
 
 /* static */ bool
 H264::EnsureSPSIsSane(SPSData& aSPS)
 {
   bool valid = true;
   static const float default_aspect = 4.0f / 3.0f;
   if (aSPS.sample_ratio <= 0.0f || aSPS.sample_ratio > 6.0f) {
     if (aSPS.pic_width && aSPS.pic_height) {
-      aSPS.sample_ratio =
-        (float) aSPS.pic_width / (float) aSPS.pic_height;
+      aSPS.sample_ratio = (float)aSPS.pic_width / (float)aSPS.pic_height;
     } else {
       aSPS.sample_ratio = default_aspect;
     }
     aSPS.display_width = aSPS.pic_width;
     aSPS.display_height = aSPS.pic_height;
     valid = false;
   }
   if (aSPS.max_num_ref_frames > 16) {
     aSPS.max_num_ref_frames = 16;
     valid = false;
   }
   return valid;
 }
 
+/* static */ bool
+H264::DecodePPSFromExtraData(const mozilla::MediaByteBuffer* aExtraData,
+                             const SPSData& aSPS, PPSData& aDest)
+{
+  if (!AnnexB::HasPPS(aExtraData)) {
+    return false;
+  }
+  ByteReader reader(aExtraData);
+
+  if (!reader.Read(5)) {
+    return false;
+  }
+
+  uint8_t numSps = reader.ReadU8() & 0x1f;
+  if (!numSps) {
+    // No SPS.
+    return false;
+  }
+  NS_ASSERTION(numSps == 1, "More than one SPS in extradata");
+  for (uint8_t i = 0; i < numSps; i++) {
+    uint16_t length = reader.ReadU16();
+
+    if ((reader.PeekU8() & 0x1f) != 7) {
+      // Not a SPS NAL type.
+      return false;
+    }
+    const uint8_t* ptr = reader.Read(length);
+    if (!ptr) {
+      return false;
+    }
+  }
+  uint8_t numPps = reader.ReadU8();
+  if (!numPps) {
+    // No PPs.
+    return false;
+  }
+  NS_ASSERTION(numPps == 1, "More than one PPS in extradata");
+  uint16_t length = reader.ReadU16();
+
+  if ((reader.PeekU8() & 0x1f) != 8) {
+    // Not a PPS NAL type.
+    return false;
+  }
+  const uint8_t* ptr = reader.Read(length);
+  if (!ptr) {
+    return false;
+  }
+
+  RefPtr<mozilla::MediaByteBuffer> rawNAL = new mozilla::MediaByteBuffer;
+  rawNAL->AppendElements(ptr, length);
+
+  RefPtr<mozilla::MediaByteBuffer> pps = DecodeNALUnit(rawNAL);
+
+  if (!pps) {
+    return false;
+  }
+
+  return DecodePPS(pps, aSPS, aDest);
+}
+
+/* static */ bool
+H264::DecodePPS(const mozilla::MediaByteBuffer* aPPS,const SPSData& aSPS,
+                PPSData& aDest)
+{
+  if (!aPPS) {
+    return false;
+  }
+
+  memcpy(aDest.scaling_matrix4x4, aSPS.scaling_matrix4x4,
+         sizeof(aDest.scaling_matrix4x4));
+  memcpy(aDest.scaling_matrix8x8, aSPS.scaling_matrix8x8,
+         sizeof(aDest.scaling_matrix8x8));
+
+  BitReader br(aPPS);
+
+  aDest.pic_parameter_set_id = br.ReadUE();
+  aDest.seq_parameter_set_id = br.ReadUE();
+  aDest.entropy_coding_mode_flag = br.ReadBit();
+  aDest.bottom_field_pic_order_in_frame_present_flag = br.ReadBit();
+  aDest.num_slice_groups_minus1 = br.ReadUE();
+  if (aDest.num_slice_groups_minus1 > 0) {
+    aDest.slice_group_map_type = br.ReadUE();
+    switch (aDest.slice_group_map_type) {
+      case 0:
+        for (uint8_t iGroup = 0; iGroup <= aDest.num_slice_groups_minus1;
+             iGroup++) {
+          aDest.run_length_minus1[iGroup] = br.ReadUE();
+        }
+        break;
+      case 2:
+        for (uint8_t iGroup = 0; iGroup < aDest.num_slice_groups_minus1;
+             iGroup++) {
+          aDest.top_left[iGroup] = br.ReadUE();
+          aDest.bottom_right[iGroup] = br.ReadUE();
+        }
+        break;
+      case 3:
+      case 4:
+      case 5:
+        aDest.slice_group_change_direction_flag = br.ReadBit();
+        aDest.slice_group_change_rate_minus1 = br.ReadUE();
+        break;
+      case 6:
+        aDest.pic_size_in_map_units_minus1 = br.ReadUE();
+        for (uint32_t i = 0; i <= aDest.pic_size_in_map_units_minus1; i++) {
+          /* slice_group_id[ i ] identifies a slice group of the i-th slice group map
+            unit in raster scan order. The length of the slice_group_id[i] syntax
+            element is Ceil(Log2(num_slice_groups_minus1+1)) bits. The value of
+            slice_group_id[i] shall be in the range of 0 to num_slice_groups_minus1,
+            inclusive. */
+          br.ReadBits(std::ceil(std::log2(aDest.num_slice_groups_minus1 + 1)));
+        }
+        break;
+      default:
+        return false;
+    }
+  }
+  aDest.num_ref_idx_l0_default_active_minus1 = br.ReadUE();
+  aDest.num_ref_idx_l1_default_active_minus1 = br.ReadUE();
+  if (aDest.num_ref_idx_l0_default_active_minus1 > 32 ||
+      aDest.num_ref_idx_l1_default_active_minus1 > 32) {
+    // reference overflow.
+    return false;
+  }
+  aDest.weighted_pred_flag = br.ReadBit();
+  aDest.weighted_bipred_idc = br.ReadBits(2);
+  aDest.pic_init_qp_minus26 = br.ReadSE();
+  aDest.pic_init_qs_minus26 = br.ReadSE();
+  aDest.chroma_qp_index_offset = br.ReadSE();
+  aDest.deblocking_filter_control_present_flag = br.ReadBit();
+  aDest.constrained_intra_pred_flag = br.ReadBit();
+  aDest.redundant_pic_cnt_present_flag = br.ReadBit();
+  if (br.BitsLeft()) {
+    aDest.transform_8x8_mode_flag = br.ReadBit();
+    if (br.ReadBit()) { // pic_scaling_matrix_present_flag
+      if (aSPS.seq_scaling_matrix_present_flag) {
+        scaling_list(br, aDest.scaling_matrix4x4[0], Default_4x4_Intra);
+        scaling_list(br, aDest.scaling_matrix4x4[1], Default_4x4_Intra,
+                     aDest.scaling_matrix4x4[0]);
+        scaling_list(br, aDest.scaling_matrix4x4[2], Default_4x4_Intra,
+                     aDest.scaling_matrix4x4[1]);
+        scaling_list(br, aDest.scaling_matrix4x4[3], Default_4x4_Inter);
+      } else {
+        scaling_list(br, aDest.scaling_matrix4x4[0], Default_4x4_Intra,
+                     Default_4x4_Intra);
+        scaling_list(br, aDest.scaling_matrix4x4[1], Default_4x4_Intra,
+                     aDest.scaling_matrix4x4[0]);
+        scaling_list(br, aDest.scaling_matrix4x4[2], Default_4x4_Intra,
+                     aDest.scaling_matrix4x4[1]);
+        scaling_list(br, aDest.scaling_matrix4x4[3], Default_4x4_Inter,
+                     Default_4x4_Inter);
+      }
+      scaling_list(br, aDest.scaling_matrix4x4[4], Default_4x4_Inter,
+                   aDest.scaling_matrix4x4[3]);
+      scaling_list(br, aDest.scaling_matrix4x4[5], Default_4x4_Inter,
+                   aDest.scaling_matrix4x4[4]);
+      if (aDest.transform_8x8_mode_flag) {
+        if (aSPS.seq_scaling_matrix_present_flag) {
+          scaling_list(br, aDest.scaling_matrix8x8[0], Default_8x8_Intra);
+          scaling_list(br, aDest.scaling_matrix8x8[1], Default_8x8_Inter);
+        } else {
+          scaling_list(br, aDest.scaling_matrix8x8[0], Default_8x8_Intra,
+                       Default_8x8_Intra);
+          scaling_list(br, aDest.scaling_matrix8x8[1], Default_8x8_Inter,
+                       Default_8x8_Inter);
+        }
+        if (aSPS.chroma_format_idc == 3) {
+          scaling_list(br, aDest.scaling_matrix8x8[2], Default_8x8_Intra,
+                       aDest.scaling_matrix8x8[0]);
+          scaling_list(br, aDest.scaling_matrix8x8[3], Default_8x8_Inter,
+                       aDest.scaling_matrix8x8[1]);
+          scaling_list(br, aDest.scaling_matrix8x8[4], Default_8x8_Intra,
+                       aDest.scaling_matrix8x8[2]);
+          scaling_list(br, aDest.scaling_matrix8x8[5], Default_8x8_Inter,
+                       aDest.scaling_matrix8x8[3]);
+        }
+      }
+    }
+    aDest.second_chroma_qp_index_offset = br.ReadSE();
+  }
+  return true;
+}
+
 /* static */ uint32_t
 H264::ComputeMaxRefFrames(const mozilla::MediaByteBuffer* aExtraData)
 {
   uint32_t maxRefFrames = 4;
   // Retrieve video dimensions from H264 SPS NAL.
   SPSData spsdata;
   if (DecodeSPSFromExtraData(aExtraData, spsdata)) {
     // max_num_ref_frames determines the size of the sliding window
--- a/media/libstagefright/binding/include/mp4_demuxer/AnnexB.h
+++ b/media/libstagefright/binding/include/mp4_demuxer/AnnexB.h
@@ -31,16 +31,18 @@ public:
     const mozilla::MediaByteBuffer* aExtraData);
   // Extract SPS and PPS NALs from aSample, aSample must be in AVCC format.
   // If aSample already contains an extradata with an SPS, it will be returned
   // otherwise the SPS/PPS NALs are searched in-band.
   static already_AddRefed<mozilla::MediaByteBuffer> ExtractExtraData(
     const mozilla::MediaRawData* aSample);
   static bool HasSPS(const mozilla::MediaRawData* aSample);
   static bool HasSPS(const mozilla::MediaByteBuffer* aExtraData);
+  static bool HasPPS(const mozilla::MediaRawData* aSample);
+  static bool HasPPS(const mozilla::MediaByteBuffer* aExtraData);
   // Returns true if format is AVCC and sample has valid extradata.
   static bool IsAVCC(const mozilla::MediaRawData* aSample);
   // Returns true if format is AnnexB.
   static bool IsAnnexB(const mozilla::MediaRawData* aSample);
   // Return true if both extradata are equal.
   static bool CompareExtraData(const mozilla::MediaByteBuffer* aExtraData1,
                                const mozilla::MediaByteBuffer* aExtraData2);
 
--- a/media/libstagefright/binding/include/mp4_demuxer/BitReader.h
+++ b/media/libstagefright/binding/include/mp4_demuxer/BitReader.h
@@ -29,16 +29,18 @@ public:
   uint64_t ReadUTF8();
   // Read unsigned integer Exp-Golomb-coded.
   uint32_t ReadUE();
   // Read signed integer Exp-Golomb-coded.
   int32_t ReadSE();
 
   // Return the number of bits parsed so far;
   size_t BitCount() const;
+  // Return the number of bits left.
+  size_t BitsLeft() const;
 
 private:
   nsAutoPtr<stagefright::ABitReader> mBitReader;
   const size_t mSize;
 };
 
 } // namespace mp4_demuxer
 
--- a/media/libstagefright/binding/include/mp4_demuxer/H264.h
+++ b/media/libstagefright/binding/include/mp4_demuxer/H264.h
@@ -2,18 +2,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef MP4_DEMUXER_H264_H_
 #define MP4_DEMUXER_H264_H_
 
 #include "mp4_demuxer/DecoderData.h"
 
-namespace mp4_demuxer
-{
+namespace mp4_demuxer {
 
 class BitReader;
 
 struct SPSData
 {
   /* Decoded Members */
   /*
     pic_width is the decoded width according to:
@@ -78,28 +77,62 @@ struct SPSData
     in the range of 0 to 3, inclusive. When chroma_format_idc is not present,
     it shall be inferred to be equal to 1 (4:2:0 chroma format).
     When profile_idc is equal to 183, chroma_format_idc shall be equal to 0
     (4:0:0 chroma format).
    */
   uint8_t chroma_format_idc;
 
   /*
+    bit_depth_luma_minus8 specifies the bit depth of the samples of the luma
+    array and the value of the luma quantisation parameter range offset
+    QpBdOffset Y , as specified by
+      BitDepth Y = 8 + bit_depth_luma_minus8 (7-3)
+      QpBdOffset Y = 6 * bit_depth_luma_minus8 (7-4)
+    When bit_depth_luma_minus8 is not present, it shall be inferred to be equal
+    to 0. bit_depth_luma_minus8 shall be in the range of 0 to 6, inclusive.
+  */
+  uint8_t bit_depth_luma_minus8;
+
+  /*
+    bit_depth_chroma_minus8 specifies the bit depth of the samples of the chroma
+    arrays and the value of the chroma quantisation parameter range offset
+    QpBdOffset C , as specified by
+      BitDepth C = 8 + bit_depth_chroma_minus8 (7-5)
+      QpBdOffset C = 6 * bit_depth_chroma_minus8 (7-6)
+    When bit_depth_chroma_minus8 is not present, it shall be inferred to be
+    equal to 0. bit_depth_chroma_minus8 shall be in the range of 0 to 6, inclusive.
+  */
+  uint8_t bit_depth_chroma_minus8;
+
+  /*
     separate_colour_plane_flag equal to 1 specifies that the three colour
     components of the 4:4:4 chroma format are coded separately.
     separate_colour_plane_flag equal to 0 specifies that the colour components
     are not coded separately. When separate_colour_plane_flag is not present,
     it shall be inferred to be equal to 0. When separate_colour_plane_flag is
     equal to 1, the primary coded picture consists of three separate components,
     each of which consists of coded samples of one colour plane (Y, Cb or Cr)
     that each use the monochrome coding syntax. In this case, each colour plane
     is associated with a specific colour_plane_id value.
    */
   bool separate_colour_plane_flag;
 
+/*
+   seq_scaling_matrix_present_flag equal to 1 specifies that the flags
+   seq_scaling_list_present_flag[ i ] for i = 0..7 or
+   i = 0..11 are present. seq_scaling_matrix_present_flag equal to 0 specifies
+   that these flags are not present and the sequence-level scaling list
+   specified by Flat_4x4_16 shall be inferred for i = 0..5 and the
+   sequence-level scaling list specified by Flat_8x8_16 shall be inferred for
+   i = 6..11. When seq_scaling_matrix_present_flag is not present, it shall be
+   inferred to be equal to 0.
+   */
+  bool seq_scaling_matrix_present_flag;
+
   /*
     log2_max_frame_num_minus4 specifies the value of the variable
     MaxFrameNum that is used in frame_num related derivations as
     follows:
 
      MaxFrameNum = 2( log2_max_frame_num_minus4 + 4 ). The value of
     log2_max_frame_num_minus4 shall be in the range of 0 to 12, inclusive.
    */
@@ -197,23 +230,31 @@ struct SPSData
     picture. mb_adaptive_frame_field_flag equal to 1 specifies
     the possible use of switching between frame and field
     macroblocks within frames. When mb_adaptive_frame_field_flag
     is not present, it shall be inferred to be equal to 0.
    */
   bool mb_adaptive_frame_field_flag;
 
   /*
+    direct_8x8_inference_flag specifies the method used in the derivation
+    process for luma motion vectors for B_Skip, B_Direct_16x16 and B_Direct_8x8
+    as specified in clause 8.4.1.2. When frame_mbs_only_flag is equal to 0,
+    direct_8x8_inference_flag shall be equal to 1.
+  */
+  bool direct_8x8_inference_flag;
+
+  /*
     frame_cropping_flag equal to 1 specifies that the frame cropping
     offset parameters follow next in the sequence parameter
     set. frame_cropping_flag equal to 0 specifies that the frame
     cropping offset parameters are not present.
    */
   bool frame_cropping_flag;
-  uint32_t frame_crop_left_offset;;
+  uint32_t frame_crop_left_offset;
   uint32_t frame_crop_right_offset;
   uint32_t frame_crop_top_offset;
   uint32_t frame_crop_bottom_offset;
 
   // VUI Parameters
 
   /*
     vui_parameters_present_flag equal to 1 specifies that the
@@ -320,53 +361,260 @@ struct SPSData
   bool chroma_loc_info_present_flag;
   uint32_t chroma_sample_loc_type_top_field;
   uint32_t chroma_sample_loc_type_bottom_field;
   bool timing_info_present_flag;
   uint32_t num_units_in_tick;
   uint32_t time_scale;
   bool fixed_frame_rate_flag;
 
+  bool scaling_matrix_present;
+  uint8_t scaling_matrix4x4[6][16];
+  uint8_t scaling_matrix8x8[6][64];
+
   SPSData();
 };
 
+struct PPSData
+{
+  /*
+    H264 decoding parameters according to ITU-T H.264 (T-REC-H.264-201402-I/en)
+   http://www.itu.int/rec/T-REC-H.264-201402-I/en
+   7.3.2.2 Picture parameter set RBSP syntax
+  */
+  /* pic_parameter_set_id identifies the picture parameter set that is referred
+      to in the slice header. The value of pic_parameter_set_id shall be in the
+      range of 0 to 255, inclusive. */
+  uint8_t pic_parameter_set_id;
+
+  /* seq_parameter_set_id refers to the active sequence parameter set. The value
+    of seq_parameter_set_id shall be in the range of 0 to 31, inclusive. */
+  uint8_t seq_parameter_set_id;
+
+  /* entropy_coding_mode_flag selects the entropy decoding method to be applied
+    for the syntax elements for which two descriptors appear in the syntax tables
+    as follows:
+    – If entropy_coding_mode_flag is equal to 0, the method specified by the
+      left descriptor in the syntax table is applied (Exp-Golomb coded, see
+      clause 9.1 or CAVLC, see clause 9.2).
+    – Otherwise (entropy_coding_mode_flag is equal to 1), the method specified
+      by the right descriptor in the syntax table is applied (CABAC, see clause
+      9.3) */
+  bool entropy_coding_mode_flag;
+
+  /* bottom_field_pic_order_in_frame_present_flag equal to 1 specifies that the
+    syntax  elements delta_pic_order_cnt_bottom (when pic_order_cnt_type is
+    equal to 0) or delta_pic_order_cnt[ 1 ] (when pic_order_cnt_type is equal to
+    1), which are related to picture order counts for the bottom field of a
+    coded frame, are present in the slice headers for coded frames as specified
+    in clause 7.3.3. bottom_field_pic_order_in_frame_present_flag equal to 0
+    specifies that the syntax elements delta_pic_order_cnt_bottom and
+    delta_pic_order_cnt[ 1 ] are not present in the slice headers.
+    Also known has pic_order_present_flag. */
+  bool bottom_field_pic_order_in_frame_present_flag;
+
+  /* num_slice_groups_minus1 plus 1 specifies the number of slice groups for a
+    picture. When num_slice_groups_minus1 is equal to 0, all slices of the
+    picture belong to the same slice group. The allowed range of
+    num_slice_groups_minus1 is specified in Annex A. */
+  uint8_t num_slice_groups_minus1;
+
+  /* slice_group_map_type specifies how the mapping of slice group map units to
+    slice groups is coded. The value of slice_group_map_type shall be in the
+    range of 0 to 6, inclusive. */
+  uint8_t slice_group_map_type;
+
+  /* run_length_minus1[i] is used to specify the number of consecutive slice
+    group map units to be assigned to the i-th slice group in raster scan order
+    of slice group map units. The value of run_length_minus1[ i ] shall be in
+    the range of 0 to PicSizeInMapUnits − 1, inclusive. */
+  uint32_t run_length_minus1[8];
+
+  /* top_left[i] and bottom_right[i] specify the top-left and bottom-right
+    corners of a rectangle, respectively. top_left[i] and bottom_right[i] are
+    slice group map unit positions in a raster scan of the picture for the slice
+    group map units. For each rectangle i, all of the following constraints
+    shall be obeyed by the values of the syntax elements top_left[i] and
+    bottom_right[i]:
+      – top_left[ i ] shall be less than or equal to bottom_right[i] and
+        bottom_right[i] shall be less than PicSizeInMapUnits.
+      – (top_left[i] % PicWidthInMbs) shall be less than or equal to the value
+        of (bottom_right[i] % PicWidthInMbs). */
+  uint32_t top_left[8];
+  uint32_t bottom_right[8];
+
+  /* slice_group_change_direction_flag is used with slice_group_map_type to
+    specify the refined map type when slice_group_map_type is 3, 4, or 5. */
+  bool slice_group_change_direction_flag;
+
+  /* slice_group_change_rate_minus1 is used to specify the variable
+    SliceGroupChangeRate. SliceGroupChangeRate specifies the multiple in number
+    of slice group map units by which the size of a slice group can change from
+    one picture to the next. The value of slice_group_change_rate_minus1 shall
+    be in the range of 0 to PicSizeInMapUnits − 1, inclusive.
+    The SliceGroupChangeRate variable is specified as follows:
+      SliceGroupChangeRate = slice_group_change_rate_minus1 + 1 */
+  uint32_t slice_group_change_rate_minus1;
+
+  /* pic_size_in_map_units_minus1 is used to specify the number of slice group
+    map units in the picture. pic_size_in_map_units_minus1 shall be equal to
+    PicSizeInMapUnits − 1. */
+  uint32_t pic_size_in_map_units_minus1;
+
+  /* num_ref_idx_l0_default_active_minus1 specifies how
+    num_ref_idx_l0_active_minus1 is inferred for P, SP, and B slices
+    with num_ref_idx_active_override_flag equal to 0. The value of
+    num_ref_idx_l0_default_active_minus1 shall be in the
+    range of 0 to 31, inclusive. */
+  uint8_t num_ref_idx_l0_default_active_minus1;
+
+  /* num_ref_idx_l1_default_active_minus1 specifies how
+    num_ref_idx_l1_active_minus1 is inferred for B slices with
+    num_ref_idx_active_override_flag equal to 0. The value of
+    num_ref_idx_l1_default_active_minus1 shall be in the range
+    of 0 to 31, inclusive. */
+  uint8_t num_ref_idx_l1_default_active_minus1;
+
+  /* weighted_pred_flag equal to 0 specifies that the default weighted
+    prediction shall be applied to P and SP slices.
+    weighted_pred_flag equal to 1 specifies that explicit weighted prediction
+    shall be applied to P and SP slices.weighted_pred_flag 1 */
+  bool weighted_pred_flag;
+
+  /* weighted_bipred_idc equal to 0 specifies that the default weighted
+     prediction shall be applied to B slices.
+     weighted_bipred_idc equal to 1 specifies that explicit weighted prediction
+     shall be applied to B slices. weighted_bipred_idc equal to 2 specifies that
+     implicit weighted prediction shall be applied to B slices. The value of
+     weighted_bipred_idc shall be in the range of 0 to 2, inclusive. */
+  uint8_t weighted_bipred_idc;
+
+  /* pic_init_qp_minus26 specifies the initial value minus 26 of SliceQP Y for
+     each slice. The initial value is modified at the slice layer when a
+     non-zero value of slice_qp_delta is decoded, and is modified further when a
+     non-zero value of mb_qp_delta is decoded at the macroblock layer.
+     The value of pic_init_qp_minus26 shall be in the range of
+     −(26 + QpBdOffset Y ) to +25, inclusive. */
+  int8_t pic_init_qp_minus26;
+
+  /* pic_init_qs_minus26 specifies the initial value minus 26 of SliceQS Y for
+    all macroblocks in SP or SI slices. The initial value is modified at the
+    slice layer when a non-zero value of slice_qs_delta is decoded.
+    The value of pic_init_qs_minus26 shall be in the range of −26 to +25,
+    inclusive. */
+  int8_t pic_init_qs_minus26;
+
+  /* chroma_qp_index_offset specifies the offset that shall be added to QP Y and
+    QS Y for addressing the table of QP C values for the Cb chroma component.
+    The value of chroma_qp_index_offset shall be in the range of −12 to +12,
+    inclusive. */
+  int8_t chroma_qp_index_offset;
+
+  /* deblocking_filter_control_present_flag equal to 1 specifies that a set of
+    syntax elements controlling the characteristics of the deblocking filter is
+    present in the slice header. deblocking_filter_control_present_flag equal to
+    0 specifies that the set of syntax elements controlling the characteristics
+    of the deblocking filter is not present in the slice headers and their
+    inferred values are in effect. */
+  bool deblocking_filter_control_present_flag;
+
+  /* constrained_intra_pred_flag equal to 0 specifies that intra prediction
+    allows usage of residual data and decoded samples of neighbouring
+    macroblocks coded using Inter macroblock prediction modes for the prediction
+    of macroblocks coded using Intra macroblock prediction modes.
+    constrained_intra_pred_flag equal to 1 specifies constrained intra
+    prediction, in which case prediction of macroblocks coded using Intra
+    macroblock prediction modes only uses residual data and decoded samples from
+    I or SI macroblock types. */
+  bool constrained_intra_pred_flag;
+
+  /* redundant_pic_cnt_present_flag equal to 0 specifies that the
+    redundant_pic_cnt syntax element is not present in slice headers, coded
+    slice data partition B NAL units, and coded slice data partition C NAL units
+    that refer (either directly or by association with a corresponding coded
+    slice data partition A NAL unit) to the picture parameter set.
+    redundant_pic_cnt_present_flag equal to 1 specifies that the
+    redundant_pic_cnt syntax element is present in all slice headers, coded
+    slice data partition B NAL units, and coded slice data partition C NAL units
+    that refer (either directly or by association with a corresponding coded
+    slice data partition A NAL unit) to the picture parameter set. */
+  bool redundant_pic_cnt_present_flag;
+
+  /* transform_8x8_mode_flag equal to 1 specifies that the 8x8 transform
+    decoding process may be in use (see clause 8.5).
+    transform_8x8_mode_flag equal to 0 specifies that the 8x8 transform decoding
+    process is not in use. When transform_8x8_mode_flag is not present, it shall
+    be inferred to be 0. */
+  bool transform_8x8_mode_flag;
+
+  /* second_chroma_qp_index_offset specifies the offset that shall be added to
+    QP Y and QS Y for addressing the table of QP C values for the Cr chroma
+    component.
+    The value of second_chroma_qp_index_offset shall be in the range of
+    −12 to +12, inclusive.
+    When second_chroma_qp_index_offset is not present, it shall be inferred to
+    be equal to chroma_qp_index_offset. */
+  int8_t second_chroma_qp_index_offset;
+
+  uint8_t scaling_matrix4x4[6][16];
+  uint8_t scaling_matrix8x8[6][64];
+
+  PPSData();
+};
+
 class H264
 {
 public:
-  static bool DecodeSPSFromExtraData(const mozilla::MediaByteBuffer* aExtraData, SPSData& aDest);
+  static bool DecodeSPSFromExtraData(const mozilla::MediaByteBuffer* aExtraData,
+                                     SPSData& aDest);
 
   /* Extract RAW BYTE SEQUENCE PAYLOAD from NAL content.
      Returns nullptr if invalid content.
      This is compliant to ITU H.264 7.3.1 Syntax in tabular form NAL unit syntax
    */
-  static already_AddRefed<mozilla::MediaByteBuffer> DecodeNALUnit(const mozilla::MediaByteBuffer* aNAL);
-
-  /* Decode SPS NAL RBSP and fill SPSData structure */
-  static bool DecodeSPS(const mozilla::MediaByteBuffer* aSPS, SPSData& aDest);
+  static already_AddRefed<mozilla::MediaByteBuffer> DecodeNALUnit(
+    const mozilla::MediaByteBuffer* aNAL);
 
   // Ensure that SPS data makes sense, Return true if SPS data was, and false
   // otherwise. If false, then content will be adjusted accordingly.
   static bool EnsureSPSIsSane(SPSData& aSPS);
 
+  static bool DecodePPSFromExtraData(const mozilla::MediaByteBuffer* aExtraData,
+                                     const SPSData& aSPS, PPSData& aDest);
+
   // If the given aExtraData is valid, return the aExtraData.max_num_ref_frames
   // clamped to be in the range of [4, 16]; otherwise return 4.
-  static uint32_t ComputeMaxRefFrames(const mozilla::MediaByteBuffer* aExtraData);
+  static uint32_t ComputeMaxRefFrames(
+    const mozilla::MediaByteBuffer* aExtraData);
 
   enum class FrameType
   {
     I_FRAME,
     OTHER,
     INVALID,
   };
 
   // Returns the frame type. Returns I_FRAME if the sample is an IDR
   // (Instantaneous Decoding Refresh) Picture.
   static FrameType GetFrameType(const mozilla::MediaRawData* aSample);
 
+  // ZigZag index taBles.
+  // Some hardware requires the tables to be in zigzag order.
+  // Use ZZ_SCAN table for the scaling_matrix4x4.
+  // Use ZZ_SCAN8 table for the scaling_matrix8x8.
+  // e.g. dest_scaling_matrix4x4[i,j] = scaling_matrix4x4[ZZ_SCAN(i,j)]
+  static const uint8_t ZZ_SCAN[16];
+  static const uint8_t ZZ_SCAN8[64];
+
 private:
+  /* Decode SPS NAL RBSP and fill SPSData structure */
+  static bool DecodeSPS(const mozilla::MediaByteBuffer* aSPS, SPSData& aDest);
+  /* Decode PPS NAL RBSP and fill PPSData structure */
+  static bool DecodePPS(const mozilla::MediaByteBuffer* aPPS, const SPSData& aSPS,
+                        PPSData& aDest);
   static void vui_parameters(BitReader& aBr, SPSData& aDest);
   // Read HRD parameters, all data is ignored.
   static void hrd_parameters(BitReader& aBr);
 };
 
 } // namespace mp4_demuxer
 
 #endif // MP4_DEMUXER_H264_H_
--- a/mobile/android/app/mobile.js
+++ b/mobile/android/app/mobile.js
@@ -609,16 +609,20 @@ pref("media.cache_readahead_limit", 30);
 
 // Number of video frames we buffer while decoding video.
 // On Android this is decided by a similar value which varies for
 // each OMX decoder |OMX_PARAM_PORTDEFINITIONTYPE::nBufferCountMin|. This
 // number must be less than the OMX equivalent or gecko will think it is
 // chronically starved of video frames. All decoders seen so far have a value
 // of at least 4.
 pref("media.video-queue.default-size", 3);
+// The maximum number of queued frames to send to the compositor.
+// On Android, it needs to be throttled because SurfaceTexture contains only one
+// (the most recent) image data.
+pref("media.video-queue.send-to-compositor-size", 1);
 
 #ifdef NIGHTLY_BUILD
 // Allow to check if the decoder supports recycling only on Fennec nightly build.
 pref("media.decoder.recycle.enabled", true);
 #endif
 
 // Enable the MediaCodec PlatformDecoderModule by default.
 pref("media.android-media-codec.enabled", true);
--- a/mobile/android/base/aidl/org/mozilla/gecko/media/ICodec.aidl
+++ b/mobile/android/base/aidl/org/mozilla/gecko/media/ICodec.aidl
@@ -18,10 +18,10 @@ interface ICodec {
     oneway void start();
     oneway void stop();
     oneway void flush();
     oneway void release();
 
     Sample dequeueInput(int size);
     oneway void queueInput(in Sample sample);
 
-    oneway void releaseOutput(in Sample sample);
+    oneway void releaseOutput(in Sample sample, in boolean render);
 }
--- a/mobile/android/base/java/org/mozilla/gecko/media/Codec.java
+++ b/mobile/android/base/java/org/mozilla/gecko/media/Codec.java
@@ -13,157 +13,107 @@ import android.os.IBinder;
 import android.os.RemoteException;
 import android.os.TransactionTooLargeException;
 import android.util.Log;
 import android.view.Surface;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.LinkedList;
-import java.util.NoSuchElementException;
 import java.util.Queue;
 import java.util.concurrent.ConcurrentLinkedQueue;
 
 /* package */ final class Codec extends ICodec.Stub implements IBinder.DeathRecipient {
     private static final String LOGTAG = "GeckoRemoteCodec";
     private static final boolean DEBUG = false;
 
     public enum Error {
         DECODE, FATAL
-    };
+    }
 
     private final class Callbacks implements AsyncCodec.Callbacks {
-        private ICodecCallbacks mRemote;
-        private boolean mHasInputCapacitySet;
-        private boolean mHasOutputCapacitySet;
-
-        public Callbacks(ICodecCallbacks remote) {
-            mRemote = remote;
-        }
-
         @Override
         public void onInputBufferAvailable(AsyncCodec codec, int index) {
             if (mFlushing) {
                 // Flush invalidates all buffers.
                 return;
             }
-            if (!mHasInputCapacitySet) {
-                int capacity = codec.getInputBuffer(index).capacity();
-                if (capacity > 0) {
-                    mSamplePool.setInputBufferSize(capacity);
-                    mHasInputCapacitySet = true;
-                }
-            }
-            if (!mInputProcessor.onBuffer(index)) {
-                reportError(Error.FATAL, new Exception("FAIL: input buffer queue is full"));
-            }
+
+            mInputProcessor.onBuffer(index);
         }
 
         @Override
         public void onOutputBufferAvailable(AsyncCodec codec, int index, MediaCodec.BufferInfo info) {
             if (mFlushing) {
                 // Flush invalidates all buffers.
                 return;
             }
-            ByteBuffer output = codec.getOutputBuffer(index);
-            if (!mHasOutputCapacitySet) {
-                int capacity = output.capacity();
-                if (capacity > 0) {
-                    mSamplePool.setOutputBufferSize(capacity);
-                    mHasOutputCapacitySet = true;
-                }
-            }
-            Sample copy = mSamplePool.obtainOutput(info);
-            try {
-                if (info.size > 0) {
-                    copy.buffer.readFromByteBuffer(output, info.offset, info.size);
-                }
-                mSentOutputs.add(copy);
-                mRemote.onOutput(copy);
-            } catch (IOException e) {
-                Log.e(LOGTAG, "Fail to read output buffer:" + e.getMessage());
-                outputDummy(info);
-            } catch (TransactionTooLargeException ttle) {
-                Log.e(LOGTAG, "Output is too large:" + ttle.getMessage());
-                outputDummy(info);
-            } catch (RemoteException e) {
-                // Dead recipient.
-                e.printStackTrace();
-            }
 
-            mCodec.releaseOutputBuffer(index, true);
-            boolean eos = (info.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0;
-            if (DEBUG && eos) {
-                Log.d(LOGTAG, "output EOS");
-            }
-        }
-
-        private void outputDummy(MediaCodec.BufferInfo info) {
-            try {
-                if (DEBUG) Log.d(LOGTAG, "return dummy sample");
-                mRemote.onOutput(Sample.create(null, info, null));
-            } catch (RemoteException e) {
-                // Dead recipient.
-                e.printStackTrace();
-            }
+            mOutputProcessor.onBuffer(index, info);
         }
 
         @Override
         public void onError(AsyncCodec codec, int error) {
             reportError(Error.FATAL, new Exception("codec error:" + error));
         }
 
         @Override
         public void onOutputFormatChanged(AsyncCodec codec, MediaFormat format) {
-            try {
-                mRemote.onOutputFormatChanged(new FormatParam(format));
-            } catch (RemoteException re) {
-                // Dead recipient.
-                re.printStackTrace();
-            }
+            mOutputProcessor.onFormatChanged(format);
         }
     }
 
     private final class InputProcessor {
-        private Queue<Sample> mInputSamples = new LinkedList<>();
+        private boolean mHasInputCapacitySet;
         private Queue<Integer> mAvailableInputBuffers = new LinkedList<>();
         private Queue<Sample> mDequeuedSamples = new LinkedList<>();
+        private Queue<Sample> mInputSamples = new LinkedList<>();
 
         private synchronized Sample onAllocate(int size) {
             Sample sample = mSamplePool.obtainInput(size);
             mDequeuedSamples.add(sample);
             return sample;
         }
 
-        private synchronized boolean onSample(Sample sample) {
+        private synchronized void onSample(Sample sample) {
             if (sample == null) {
-                return false;
+                Log.w(LOGTAG, "WARN: null input sample");
+                return;
             }
 
             if (!sample.isEOS()) {
                 Sample temp = sample;
                 sample = mDequeuedSamples.remove();
                 sample.info = temp.info;
                 sample.cryptoInfo = temp.cryptoInfo;
                 temp.dispose();
             }
 
-            if (!mInputSamples.offer(sample)) {
-                return false;
+            if (mInputSamples.offer(sample)) {
+                feedSampleToBuffer();
+            } else {
+                reportError(Error.FATAL, new Exception("FAIL: input sample queue is full"));
             }
-            feedSampleToBuffer();
-            return true;
         }
 
-        private synchronized boolean onBuffer(int index) {
-            if (!mAvailableInputBuffers.offer(index)) {
-                return false;
+        private synchronized void onBuffer(int index) {
+            if (!mHasInputCapacitySet) {
+                int capacity = mCodec.getInputBuffer(index).capacity();
+                if (capacity > 0) {
+                    mSamplePool.setInputBufferSize(capacity);
+                    mHasInputCapacitySet = true;
+                }
             }
-            feedSampleToBuffer();
-            return true;
+
+            if (mAvailableInputBuffers.offer(index)) {
+                feedSampleToBuffer();
+            } else {
+                reportError(Error.FATAL, new Exception("FAIL: input buffer queue is full"));
+            }
+
         }
 
         private void feedSampleToBuffer() {
             while (!mAvailableInputBuffers.isEmpty() && !mInputSamples.isEmpty()) {
                 int index = mAvailableInputBuffers.poll();
                 int len = 0;
                 Sample sample = mInputSamples.poll();
                 long pts = sample.info.presentationTimeUs;
@@ -187,24 +137,118 @@ import java.util.concurrent.ConcurrentLi
                     mCodec.queueSecureInputBuffer(index, 0, cryptoInfo, pts, flags);
                 } else {
                     mCodec.queueInputBuffer(index, 0, len, pts, flags);
                 }
             }
         }
 
         private synchronized void reset() {
+            for (Sample s : mInputSamples) {
+                mSamplePool.recycleInput(s);
+            }
             mInputSamples.clear();
+
+            for (Sample s : mDequeuedSamples) {
+                mSamplePool.recycleInput(s);
+            }
+            mDequeuedSamples.clear();
+
             mAvailableInputBuffers.clear();
         }
-   }
+    }
+
+    private class OutputProcessor {
+        private boolean mHasOutputCapacitySet;
+        private Queue<Integer> mSentIndices = new LinkedList<>();
+        private Queue<Sample> mSentOutputs = new LinkedList<>();
+
+
+        private synchronized void onBuffer(int index, MediaCodec.BufferInfo info) {
+            ByteBuffer output = mCodec.getOutputBuffer(index);
+            if (!mHasOutputCapacitySet) {
+                int capacity = output.capacity();
+                if (capacity > 0) {
+                    mSamplePool.setOutputBufferSize(capacity);
+                    mHasOutputCapacitySet = true;
+                }
+            }
+            Sample copy = mSamplePool.obtainOutput(info);
+            try {
+                if (info.size > 0) {
+                    copy.buffer.readFromByteBuffer(output, info.offset, info.size);
+                }
+                mSentIndices.add(index);
+                mSentOutputs.add(copy);
+                mCallbacks.onOutput(copy);
+            } catch (IOException e) {
+                Log.e(LOGTAG, "Fail to read output buffer:" + e.getMessage());
+                outputDummy(info);
+            } catch (TransactionTooLargeException ttle) {
+                Log.e(LOGTAG, "Output is too large:" + ttle.getMessage());
+                outputDummy(info);
+            } catch (RemoteException e) {
+                // Dead recipient.
+                e.printStackTrace();
+            }
+
+            boolean eos = (info.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0;
+            if (DEBUG && eos) {
+                Log.d(LOGTAG, "output EOS");
+            }
+       }
+
+        private void outputDummy(MediaCodec.BufferInfo info) {
+            try {
+                if (DEBUG) Log.d(LOGTAG, "return dummy sample");
+                mCallbacks.onOutput(Sample.create(null, info, null));
+            } catch (RemoteException e) {
+                // Dead recipient.
+                e.printStackTrace();
+            }
+        }
+
+        private synchronized void onRelease(Sample sample, boolean render) {
+            Integer i = mSentIndices.poll();
+            Sample output = mSentOutputs.poll();
+            if (i == null || output == null) {
+                Log.d(LOGTAG, "output buffer#" + i + "(" + output + ")" + ": " + sample + " already released");
+                return;
+            }
+            mCodec.releaseOutputBuffer(i, render);
+            mSamplePool.recycleOutput(output);
+
+            sample.dispose();
+        }
+
+        private void onFormatChanged(MediaFormat format) {
+            try {
+                mCallbacks.onOutputFormatChanged(new FormatParam(format));
+            } catch (RemoteException re) {
+                // Dead recipient.
+                re.printStackTrace();
+            }
+        }
+
+        private synchronized void reset() {
+            for (int i : mSentIndices) {
+                mCodec.releaseOutputBuffer(i, false);
+            }
+            mSentIndices.clear();
+            for (Sample s : mSentOutputs) {
+                mSamplePool.recycleOutput(s);
+            }
+            mSentOutputs.clear();
+        }
+    }
 
     private volatile ICodecCallbacks mCallbacks;
     private AsyncCodec mCodec;
     private InputProcessor mInputProcessor;
+    private OutputProcessor mOutputProcessor;
     private volatile boolean mFlushing = false;
     private SamplePool mSamplePool;
     private Queue<Sample> mSentOutputs = new ConcurrentLinkedQueue<>();
     // Value will be updated after configure called.
     private volatile boolean mIsAdaptivePlaybackSupported = false;
 
     public synchronized void setCallbacks(ICodecCallbacks callbacks) throws RemoteException {
         mCallbacks = callbacks;
@@ -250,33 +294,34 @@ import java.util.concurrent.ConcurrentLi
             AsyncCodec codec = AsyncCodecFactory.create(codecName);
 
             MediaCrypto crypto = RemoteMediaDrmBridgeStub.getMediaCrypto(drmStubId);
             if (DEBUG) {
                 boolean hasCrypto = crypto != null;
                 Log.d(LOGTAG, "configure mediacodec with crypto(" + hasCrypto + ") / Id :" + drmStubId);
             }
 
-            codec.setCallbacks(new Callbacks(mCallbacks), null);
+            codec.setCallbacks(new Callbacks(), null);
 
             // Video decoder should config with adaptive playback capability.
             if (surface != null) {
                 mIsAdaptivePlaybackSupported = codec.isAdaptivePlaybackSupported(
                                                    fmt.getString(MediaFormat.KEY_MIME));
                 if (mIsAdaptivePlaybackSupported) {
                     if (DEBUG) Log.d(LOGTAG, "codec supports adaptive playback  = " + mIsAdaptivePlaybackSupported);
                     // TODO: may need to find a way to not use hard code to decide the max w/h.
                     fmt.setInteger(MediaFormat.KEY_MAX_WIDTH, 1920);
                     fmt.setInteger(MediaFormat.KEY_MAX_HEIGHT, 1080);
                 }
             }
 
             codec.configure(fmt, surface, crypto, flags);
             mCodec = codec;
             mInputProcessor = new InputProcessor();
+            mOutputProcessor = new OutputProcessor();
             mSamplePool = new SamplePool(codecName);
             if (DEBUG) Log.d(LOGTAG, codec.toString() + " created");
             return true;
         } catch (Exception e) {
             if (DEBUG) Log.d(LOGTAG, "FAIL: cannot create codec -- " + codecName);
             e.printStackTrace();
             return false;
         }
@@ -284,16 +329,17 @@ import java.util.concurrent.ConcurrentLi
 
     @Override
     public synchronized boolean isAdaptivePlaybackSupported() {
         return mIsAdaptivePlaybackSupported;
     }
 
     private void releaseCodec() {
         mInputProcessor.reset();
+        mOutputProcessor.reset();
         try {
             mCodec.release();
         } catch (Exception e) {
             reportError(Error.FATAL, e);
         }
         mCodec = null;
     }
 
@@ -353,16 +399,17 @@ import java.util.concurrent.ConcurrentLi
         }
     }
 
     @Override
     public synchronized void flush() throws RemoteException {
         mFlushing = true;
         if (DEBUG) Log.d(LOGTAG, "flush " + this);
         mInputProcessor.reset();
+        mOutputProcessor.reset();
         try {
             mCodec.flush();
         } catch (Exception e) {
             reportError(Error.FATAL, e);
         }
 
         mFlushing = false;
         if (DEBUG) Log.d(LOGTAG, "flushed " + this);
@@ -370,30 +417,22 @@ import java.util.concurrent.ConcurrentLi
 
     @Override
     public synchronized Sample dequeueInput(int size) {
         return mInputProcessor.onAllocate(size);
     }
 
     @Override
     public synchronized void queueInput(Sample sample) throws RemoteException {
-        if (!mInputProcessor.onSample(sample)) {
-            reportError(Error.FATAL, new Exception("FAIL: input sample queue is full"));
-        }
+        mInputProcessor.onSample(sample);
     }
 
     @Override
-    public synchronized void releaseOutput(Sample sample) {
-        try {
-            mSamplePool.recycleOutput(mSentOutputs.remove());
-        } catch (Exception e) {
-            Log.e(LOGTAG, "failed to release output:" + sample);
-            e.printStackTrace();
-        }
-        sample.dispose();
+    public synchronized void releaseOutput(Sample sample, boolean render) {
+        mOutputProcessor.onRelease(sample, render);
     }
 
     @Override
     public synchronized void release() throws RemoteException {
         if (DEBUG) Log.d(LOGTAG, "release " + this);
         releaseCodec();
         mSamplePool.reset();
         mSamplePool = null;
--- a/mobile/android/base/java/org/mozilla/gecko/media/CodecProxy.java
+++ b/mobile/android/base/java/org/mozilla/gecko/media/CodecProxy.java
@@ -13,27 +13,30 @@ import android.os.RemoteException;
 import android.util.Log;
 import android.view.Surface;
 
 import org.mozilla.gecko.annotation.WrapForJNI;
 import org.mozilla.gecko.mozglue.JNIObject;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
 
 // Proxy class of ICodec binder.
 public final class CodecProxy {
     private static final String LOGTAG = "GeckoRemoteCodecProxy";
     private static final boolean DEBUG = false;
 
     private ICodec mRemote;
     private FormatParam mFormat;
     private Surface mOutputSurface;
     private CallbacksForwarder mCallbacks;
     private String mRemoteDrmStubId;
+    private Queue<Sample> mSurfaceOutputs = new ConcurrentLinkedQueue<>();
 
     public interface Callbacks {
         void onInputExhausted();
         void onOutputFormatChanged(MediaFormat format);
         void onOutput(Sample output);
         void onError(boolean fatal);
     }
 
@@ -62,27 +65,36 @@ public final class CodecProxy {
 
         @Override
         public void onOutputFormatChanged(FormatParam format) throws RemoteException {
             mCallbacks.onOutputFormatChanged(format.asFormat());
         }
 
         @Override
         public void onOutput(Sample sample) throws RemoteException {
-            mCallbacks.onOutput(sample);
-            mRemote.releaseOutput(sample);
-            sample.dispose();
+            if (mOutputSurface != null) {
+                // Don't render to surface just yet. Callback will make that happen when it's time.
+                if (!sample.isEOS() || sample.info.size > 0) {
+                    mSurfaceOutputs.offer(sample);
+                }
+                mCallbacks.onOutput(sample);
+            } else {
+                // Non-surface output needs no rendering.
+                mCallbacks.onOutput(sample);
+                mRemote.releaseOutput(sample, false);
+                sample.dispose();
+            }
         }
 
         @Override
         public void onError(boolean fatal) throws RemoteException {
             reportError(fatal);
         }
 
-        public void reportError(boolean fatal) {
+        private void reportError(boolean fatal) {
             mCallbacks.onError(fatal);
         }
     }
 
     @WrapForJNI
     public static CodecProxy create(MediaFormat format,
                                     Surface surface,
                                     Callbacks callbacks,
@@ -191,23 +203,63 @@ public final class CodecProxy {
 
     @WrapForJNI
     public synchronized boolean release() {
         if (mRemote == null) {
             Log.w(LOGTAG, "codec already ended");
             return true;
         }
         if (DEBUG) Log.d(LOGTAG, "release " + this);
+
+        if (!mSurfaceOutputs.isEmpty()) {
+            // Flushing output buffers to surface may cause some frames to be skipped and
+            // should not happen unless caller release codec before processing all buffers.
+            Log.w(LOGTAG, "release codec when " + mSurfaceOutputs.size() + " output buffers unhandled");
+            try {
+                for (Sample s : mSurfaceOutputs) {
+                    mRemote.releaseOutput(s, true);
+                }
+            } catch (RemoteException e) {
+                e.printStackTrace();
+            }
+            mSurfaceOutputs.clear();
+        }
+
         try {
             RemoteManager.getInstance().releaseCodec(this);
         } catch (DeadObjectException e) {
             return false;
         } catch (RemoteException e) {
             e.printStackTrace();
             return false;
         }
         return true;
     }
 
-    public synchronized void reportError(boolean fatal) {
+    @WrapForJNI
+    public synchronized boolean releaseOutput(Sample sample, boolean render) {
+        if (!mSurfaceOutputs.remove(sample)) {
+            if (mRemote != null) Log.w(LOGTAG, "already released: " + sample);
+            return true;
+        }
+
+        if (mRemote == null) {
+            Log.w(LOGTAG, "codec already ended");
+            sample.dispose();
+            return true;
+        }
+
+        if (DEBUG && !render) Log.d(LOGTAG, "drop output:" + sample.info.presentationTimeUs);
+
+        try {
+            mRemote.releaseOutput(sample, render);
+        } catch (RemoteException e) {
+            e.printStackTrace();
+        }
+        sample.dispose();
+
+        return true;
+    }
+
+    /* package */ synchronized void reportError(boolean fatal) {
         mCallbacks.reportError(fatal);
     }
 }
--- a/python/mozbuild/mozbuild/backend/tup.py
+++ b/python/mozbuild/mozbuild/backend/tup.py
@@ -15,17 +15,17 @@ from mozbuild.shellutil import quote as 
 from .common import CommonBackend
 from ..frontend.data import (
     ContextDerived,
     Defines,
     FinalTargetFiles,
     FinalTargetPreprocessedFiles,
     GeneratedFile,
     HostDefines,
-    ObjdirPreprocessedFiles,
+    ObjdirFiles,
 )
 from ..util import (
     FileAvoidWrite,
 )
 from ..frontend.context import (
     AbsolutePath,
     RenamedSourcePath,
     ObjDirPath,
@@ -182,18 +182,16 @@ class TupOnly(CommonBackend, PartialBack
         elif isinstance(obj, Defines):
             self._process_defines(backend_file, obj)
         elif isinstance(obj, HostDefines):
             self._process_defines(backend_file, obj, host=True)
         elif isinstance(obj, FinalTargetFiles):
             self._process_final_target_files(obj)
         elif isinstance(obj, FinalTargetPreprocessedFiles):
             self._process_final_target_pp_files(obj, backend_file)
-        elif isinstance(obj, ObjdirPreprocessedFiles):
-            self._process_final_target_pp_files(obj, backend_file)
 
         return True
 
     def consume_finished(self):
         CommonBackend.consume_finished(self)
 
         for objdir, backend_file in sorted(self._backend_files.items()):
             for obj in backend_file.delayed_generated_files:
@@ -240,16 +238,17 @@ class TupOnly(CommonBackend, PartialBack
             cmd.extend([
                 obj.script,
                 obj.method,
                 obj.outputs[0],
                 '%s.pp' % obj.outputs[0], # deps file required
             ])
             full_inputs = [f.full_path for f in obj.inputs]
             cmd.extend(full_inputs)
+            cmd.extend(shell_quote(f) for f in obj.flags)
 
             outputs = []
             outputs.extend(obj.outputs)
             outputs.append('%s.pp' % obj.outputs[0])
 
             backend_file.rule(
                 display='python {script}:{method} -> [%o]'.format(script=obj.script, method=obj.method),
                 cmd=cmd,
@@ -262,34 +261,32 @@ class TupOnly(CommonBackend, PartialBack
         if defines:
             if host:
                 backend_file.host_defines = defines
             else:
                 backend_file.defines = defines
 
     def _process_final_target_files(self, obj):
         target = obj.install_target
-        path = mozpath.basedir(target, (
-            'dist/bin',
-            'dist/xpi-stage',
-            '_tests',
-            'dist/include',
-            'dist/branding',
-            'dist/sdk',
-        ))
-        if not path:
-            raise Exception("Cannot install to " + target)
-
-        reltarget = mozpath.relpath(target, path)
+        if not isinstance(obj, ObjdirFiles):
+            path = mozpath.basedir(target, (
+                'dist/bin',
+                'dist/xpi-stage',
+                '_tests',
+                'dist/include',
+                'dist/branding',
+                'dist/sdk',
+            ))
+            if not path:
+                raise Exception("Cannot install to " + target)
 
         for path, files in obj.files.walk():
             backend_file = self._get_backend_file(mozpath.join(target, path))
             for f in files:
                 assert not isinstance(f, RenamedSourcePath)
-                dest = mozpath.join(reltarget, path, f.target_basename)
                 if not isinstance(f, ObjDirPath):
                     if '*' in f:
                         if f.startswith('/') or isinstance(f, AbsolutePath):
                             basepath, wild = os.path.split(f.full_path)
                             if '*' in basepath:
                                 raise Exception("Wildcards are only supported in the filename part of "
                                                 "srcdir-relative or absolute paths.")
 
--- a/security/manager/ssl/StaticHPKPins.h
+++ b/security/manager/ssl/StaticHPKPins.h
@@ -1144,9 +1144,9 @@ static const TransportSecurityPreload kP
   { "za.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
   { "zh.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
 };
 
 // Pinning Preload List Length = 471;
 
 static const int32_t kUnknownId = -1;
 
-static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1489505883092000);
+static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1489674148138000);
--- a/security/manager/ssl/nsSTSPreloadList.errors
+++ b/security/manager/ssl/nsSTSPreloadList.errors
@@ -20,16 +20,17 @@ 25daysof.io: could not connect to host
 2859cc.com: could not connect to host
 2or3.tk: could not connect to host
 300651.ru: did not receive HSTS header
 302.nyc: could not connect to host
 360ds.co.in: could not connect to host
 360gradus.com: did not receive HSTS header
 365.or.jp: did not receive HSTS header
 3chit.cf: could not connect to host
+404.sh: max-age too low: 0
 420dongstorm.com: could not connect to host
 42ms.org: could not connect to host
 4455software.com: did not receive HSTS header
 4679.space: could not connect to host
 47ronin.com: did not receive HSTS header
 491mhz.net: could not connect to host
 4elements.com: did not receive HSTS header
 4mm.org: could not connect to host
@@ -48,17 +49,16 @@ 9point6.com: could not connect to host
 a-plus.space: could not connect to host
 a9c.co: could not connect to host
 aaeblog.com: did not receive HSTS header
 aaeblog.net: did not receive HSTS header
 aaeblog.org: did not receive HSTS header
 aapp.space: could not connect to host
 abearofsoap.com: did not receive HSTS header
 abecodes.net: did not receive HSTS header
-abeestrada.com: did not receive HSTS header
 abilitylist.org: did not receive HSTS header
 abioniere.de: could not connect to host
 about.ge: could not connect to host
 aboutmyip.info: did not receive HSTS header
 aboutyou-deals.de: did not receive HSTS header
 abtom.de: did not receive HSTS header
 abury.fr: did not receive HSTS header
 abury.me: did not receive HSTS header
@@ -174,16 +174,17 @@ anagra.ms: could not connect to host
 anakros.me: did not receive HSTS header
 analytic-s.ml: could not connect to host
 anarchistischegroepnijmegen.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 anassiriphotography.com: could not connect to host
 ancientkarma.com: could not connect to host
 andere-gedanken.net: max-age too low: 10
 andreasbreitenlohner.de: did not receive HSTS header
 andreasolsson.se: could not connect to host
+andreastoneman.com: could not connect to host
 andreigec.net: did not receive HSTS header
 andrewmichaud.beer: could not connect to host
 andreypopp.com: could not connect to host
 androoz.se: did not receive HSTS header
 andymartin.cc: did not receive HSTS header
 anfsanchezo.co: could not connect to host
 anfsanchezo.me: could not connect to host
 anghami.com: did not receive HSTS header
@@ -210,17 +211,16 @@ antoniomarques.eu: did not receive HSTS 
 antoniorequena.com.ve: could not connect to host
 antscript.com: did not receive HSTS header
 any.pm: could not connect to host
 anycoin.me: could not connect to host
 aojiao.org: did not receive HSTS header
 aosc.io: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 apachelounge.com: did not receive HSTS header
 apeasternpower.com: max-age too low: 0
-apervita.net: could not connect to host
 api.lookout.com: could not connect to host
 api.mega.co.nz: could not connect to host
 apibot.de: could not connect to host
 apis.google.com: did not receive HSTS header (error ignored - included regardless)
 apis.world: did not receive HSTS header
 apnakliyat.com: did not receive HSTS header
 aponkral.net: did not receive HSTS header
 aponkralsunucu.com: did not receive HSTS header
@@ -246,16 +246,17 @@ armory.consulting: could not connect to 
 armory.supplies: could not connect to host
 armytricka.cz: did not receive HSTS header
 arrayify.com: could not connect to host
 ars-design.net: could not connect to host
 ars.toscana.it: max-age too low: 0
 artegusto.ru: could not connect to host
 artistnetwork.nl: did not receive HSTS header
 arturkohut.com: could not connect to host
+arvamus.eu: could not connect to host
 as.se: could not connect to host
 as9178.net: could not connect to host
 asandu.eu: could not connect to host
 asasuou.pw: could not connect to host
 asc16.com: could not connect to host
 asdpress.cn: could not connect to host
 askfit.cz: did not receive HSTS header
 asmui.ga: could not connect to host
@@ -270,17 +271,16 @@ astrolpost.com: could not connect to hos
 astromelody.com: did not receive HSTS header
 atavio.at: could not connect to host
 atavio.ch: could not connect to host
 atavio.de: did not receive HSTS header
 atbeckett.com: did not receive HSTS header
 athaliasoft.com: did not receive HSTS header
 athenelive.com: could not connect to host
 athul.xyz: did not receive HSTS header
-atlantischild.hu: could not connect to host
 atlex.nl: did not receive HSTS header
 atomik.pro: could not connect to host
 atop.io: could not connect to host
 attimidesigns.com: did not receive HSTS header
 au.search.yahoo.com: max-age too low: 172800
 aubiosales.com: did not receive HSTS header
 aucubin.moe: could not connect to host
 aufmerksamkeitsstudie.com: could not connect to host
@@ -293,25 +293,26 @@ auth.mail.ru: did not receive HSTS heade
 authentication.io: could not connect to host
 auto-serwis.zgorzelec.pl: did not receive HSTS header
 auto4trade.nl: could not connect to host
 autojuhos.sk: did not receive HSTS header
 autokovrik-diskont.ru: did not receive HSTS header
 autotsum.com: could not connect to host
 autumnwindsagility.com: could not connect to host
 auverbox.ovh: did not receive HSTS header
-auxiliumincrementum.co.uk: did not receive HSTS header
 av.de: did not receive HSTS header
+avantmfg.com: could not connect to host
 avec-ou-sans-ordonnance.fr: could not connect to host
 avinet.com: max-age too low: 0
 awg-mode.de: did not receive HSTS header
 axado.com.br: did not receive HSTS header
 axeny.com: did not receive HSTS header
 az.search.yahoo.com: did not receive HSTS header
 azprep.us: could not connect to host
+azuxul.fr: could not connect to host
 b3orion.com: max-age too low: 0
 babak.de: did not receive HSTS header
 baby-click.de: did not receive HSTS header
 babybic.hu: did not receive HSTS header
 babyhouse.xyz: could not connect to host
 babysaying.me: could not connect to host
 back-bone.nl: did not receive HSTS header
 badcronjob.com: could not connect to host
@@ -367,16 +368,17 @@ bermytraq.bm: [Exception... "Component r
 berrymark.be: max-age too low: 0
 besixdouze.world: could not connect to host
 betafive.net: could not connect to host
 betlander.com: could not connect to host
 betnet.fr: could not connect to host
 betplanning.it: did not receive HSTS header
 bets.de: did not receive HSTS header
 bettercrypto.org: could not connect to host
+bettertest.it: could not connect to host
 bettween.com: could not connect to host
 betz.ro: did not receive HSTS header
 beulahtabernacle.com: could not connect to host
 bevapehappy.com: did not receive HSTS header
 beyuna.co.uk: did not receive HSTS header
 beyuna.eu: did not receive HSTS header
 beyuna.nl: did not receive HSTS header
 bezorg.ninja: could not connect to host
@@ -444,17 +446,16 @@ bm-trading.nl: did not receive HSTS head
 bngsecure.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 bobiji.com: did not receive HSTS header
 bodyblog.nl: did not receive HSTS header
 bodybuilding-legends.com: could not connect to host
 bodyweightsolution.com: did not receive HSTS header
 boensou.com: did not receive HSTS header
 bogosity.se: could not connect to host
 bohan.life: did not receive HSTS header
-boltdata.io: did not receive HSTS header
 bonapp.restaurant: could not connect to host
 bonfi.net: did not receive HSTS header
 bonigo.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 bonitabrazilian.co.nz: did not receive HSTS header
 bookcelerator.com: did not receive HSTS header
 booked.holiday: did not receive HSTS header
 boomerang.com: could not connect to host
 boosterlearnpro.com: did not receive HSTS header
@@ -473,17 +474,16 @@ braintreepayments.com: did not receive H
 brainvation.de: did not receive HSTS header
 bran.cc: could not connect to host
 branchtrack.com: did not receive HSTS header
 branchzero.com: did not receive HSTS header
 brandnewdays.nl: could not connect to host
 brandon.so: could not connect to host
 brandred.net: did not receive HSTS header
 brandspray.com: did not receive HSTS header
-brewtrackr.com: could not connect to host
 brianmwaters.net: could not connect to host
 brickoo.com: could not connect to host
 brideandgroomdirect.ie: did not receive HSTS header
 brks.xyz: could not connect to host
 broken-oak.com: could not connect to host
 brokenhands.io: did not receive HSTS header
 brookechase.com: did not receive HSTS header
 browserid.org: did not receive HSTS header
@@ -518,17 +518,16 @@ buyfox.de: did not receive HSTS header
 bvalle.com: did not receive HSTS header
 by4cqb.cn: could not connect to host
 bydisk.com: could not connect to host
 bypassed.press: could not connect to host
 bypro.xyz: could not connect to host
 bysymphony.com: max-age too low: 0
 byte.wtf: could not connect to host
 bytepark.de: did not receive HSTS header
-bytesystems.com: could not connect to host
 c1yd3i.me: could not connect to host
 c3b.info: could not connect to host
 cabarave.com: could not connect to host
 cabusar.fr: could not connect to host
 caconnect.org: could not connect to host
 cadao.me: did not receive HSTS header
 cadusilva.com: did not receive HSTS header
 cafe-scientifique.org.ec: could not connect to host
@@ -662,21 +661,21 @@ clintwilson.technology: max-age too low:
 cloud.wtf: could not connect to host
 cloudapi.vc: could not connect to host
 cloudcert.org: did not receive HSTS header
 cloudcy.net: could not connect to host
 clouddesktop.co.nz: could not connect to host
 cloudey.net: did not receive HSTS header
 cloudflare.com: did not receive HSTS header
 cloudimag.es: could not connect to host
+cloudlink.club: could not connect to host
 cloudns.com.au: could not connect to host
 cloudstoragemaus.com: could not connect to host
 cloudwalk.io: did not receive HSTS header
 cloverleaf.net: max-age too low: 0
-clubmate.rocks: could not connect to host
 clywedogmaths.co.uk: could not connect to host
 cmacacias.ch: did not receive HSTS header
 cmc-versand.de: did not receive HSTS header
 cmci.dk: did not receive HSTS header
 cmlachapelle.ch: did not receive HSTS header
 cmlancy.ch: did not receive HSTS header
 cmlignon.ch: did not receive HSTS header
 cmplainpalais.ch: did not receive HSTS header
@@ -686,17 +685,16 @@ cn.search.yahoo.com: did not receive HST
 co50.com: did not receive HSTS header
 cocaine-import.agency: could not connect to host
 codabix.com: did not receive HSTS header
 codabix.de: could not connect to host
 codabix.net: could not connect to host
 code.google.com: did not receive HSTS header (error ignored - included regardless)
 codeco.pw: could not connect to host
 codeforce.io: did not receive HSTS header
-codepult.com: could not connect to host
 codepx.com: did not receive HSTS header
 codiva.io: max-age too low: 2592000
 coffeeetc.co.uk: did not receive HSTS header
 coffeestrategies.com: max-age too low: 2592000
 coiffeurschnittstelle.ch: did not receive HSTS header
 coindam.com: could not connect to host
 coldlostsick.net: could not connect to host
 colisfrais.com: did not receive HSTS header
@@ -723,17 +721,16 @@ consciousandglamorous.com: could not con
 console.python.org: did not receive HSTS header
 constructionjobs.com: did not receive HSTS header
 contactbig.com: could not connect to host
 content-api-dev.azurewebsites.net: could not connect to host
 continuumgaming.com: could not connect to host
 controlcenter.gigahost.dk: did not receive HSTS header
 coolchevy.org.ua: could not connect to host
 coralproject.net: did not receive HSTS header
-coralrosado.com.br: could not connect to host
 cordial-restaurant.com: did not receive HSTS header
 core.mx: could not connect to host
 core4system.de: did not receive HSTS header
 corenetworking.de: could not connect to host
 cormactagging.ie: could not connect to host
 cormilu.com.br: did not receive HSTS header
 cornodo.com: could not connect to host
 correctpaardbatterijnietje.nl: did not receive HSTS header
@@ -753,17 +750,16 @@ craftedge.xyz: could not connect to host
 craftmine.cz: did not receive HSTS header
 crate.io: did not receive HSTS header
 cravelyrics.com: did not receive HSTS header
 crazycen.com: did not receive HSTS header
 crazyhotseeds.com: did not receive HSTS header
 create-test-publish.co.uk: could not connect to host
 creativephysics.ml: could not connect to host
 creativeplayuk.com: did not receive HSTS header
-creep.im: could not connect to host
 crendontech.com: could not connect to host
 crestoncottage.com: could not connect to host
 criena.net: could not connect to host
 critical.today: could not connect to host
 criticalaim.com: could not connect to host
 crizk.com: could not connect to host
 crosssec.com: did not receive HSTS header
 crowd.supply: could not connect to host
@@ -801,17 +797,16 @@ custe.rs: could not connect to host
 cuvva.insure: did not receive HSTS header
 cyanogenmod.xxx: could not connect to host
 cybershambles.com: could not connect to host
 cycleluxembourg.lu: did not receive HSTS header
 cydia-search.io: could not connect to host
 cyphertite.com: could not connect to host
 czechamlp.com: could not connect to host
 d3xt3r01.tk: could not connect to host
-d42.no: could not connect to host
 dad256.tk: could not connect to host
 dah5.com: did not receive HSTS header
 dailystormerpodcasts.com: did not receive HSTS header
 dakrib.net: could not connect to host
 dalingk.co: could not connect to host
 dango.in: did not receive HSTS header
 daniel-steuer.de: did not receive HSTS header
 danieldk.eu: did not receive HSTS header
@@ -822,16 +817,17 @@ danrl.de: did not receive HSTS header
 daolerp.xyz: could not connect to host
 dargasia.is: could not connect to host
 dario.im: could not connect to host
 dark-x.cf: could not connect to host
 darkengine.io: could not connect to host
 darkhole.cn: could not connect to host
 darknebula.space: could not connect to host
 darkpony.ru: could not connect to host
+darksideof.it: could not connect to host
 dashburst.com: did not receive HSTS header
 dashnimorad.com: did not receive HSTS header
 data-abundance.com: could not connect to host
 databionix.com: could not connect to host
 databutlr.com: could not connect to host
 databutlr.net: could not connect to host
 datahove.no: did not receive HSTS header
 datarank.com: max-age too low: 0
@@ -842,24 +838,25 @@ dateno1.com: max-age too low: 2592000
 datenreiter.cf: could not connect to host
 datenreiter.gq: could not connect to host
 datenreiter.ml: could not connect to host
 datenreiter.tk: could not connect to host
 datewon.net: did not receive HSTS header
 davidglidden.eu: could not connect to host
 davidhunter.scot: did not receive HSTS header
 davidmessenger.co.uk: could not connect to host
+davidnoren.com: did not receive HSTS header
 davidreinhardt.de: could not connect to host
 davidscherzer.at: could not connect to host
 daylightcompany.com: did not receive HSTS header
 db.gy: did not receive HSTS header
 dbx.ovh: did not receive HSTS header
 dccode.gov: could not connect to host
 dcurt.is: did not receive HSTS header
-ddatsh.com: did not receive HSTS header
+ddatsh.com: could not connect to host
 dden.ca: could not connect to host
 debank.tv: did not receive HSTS header
 debatch.se: could not connect to host
 debtkit.co.uk: did not receive HSTS header
 decafu.co: could not connect to host
 decibelios.li: could not connect to host
 deco.me: could not connect to host
 dedicatutiempo.es: could not connect to host
@@ -868,17 +865,16 @@ deepcovelabs.net: could not connect to h
 deepearth.uk: did not receive HSTS header
 degroetenvanrosaline.nl: did not receive HSTS header
 deight.co: could not connect to host
 dekasan.ru: could not connect to host
 delayrefunds.co.uk: could not connect to host
 deliverance.co.uk: could not connect to host
 deltaconcepts.de: did not receive HSTS header
 deltanet-production.de: did not receive HSTS header
-demdis.org: could not connect to host
 demilitarized.ninja: could not connect to host
 democracychronicles.com: did not receive HSTS header
 denh.am: did not receive HSTS header
 denisjean.fr: could not connect to host
 dentaldomain.org: did not receive HSTS header
 dentaldomain.ph: did not receive HSTS header
 depeche-mode.moscow: max-age too low: 7200
 depijl-mz.nl: did not receive HSTS header
@@ -914,16 +910,18 @@ discovery.lookout.com: did not receive H
 dislocated.de: did not receive HSTS header
 dissimulo.me: could not connect to host
 dittvertshus.no: could not connect to host
 dizihocasi.com: did not receive HSTS header
 dizorg.net: could not connect to host
 dj4et.de: did not receive HSTS header
 dl.google.com: did not receive HSTS header (error ignored - included regardless)
 dlouwrink.nl: could not connect to host
+dmarc.dk: did not receive HSTS header
+dmi.es: could not connect to host
 dmxledlights.com: could not connect to host
 dn42.eu: could not connect to host
 dns.google.com: did not receive HSTS header (error ignored - included regardless)
 do-do.tk: could not connect to host
 do.search.yahoo.com: did not receive HSTS header
 dobet.in: could not connect to host
 docket.news: could not connect to host
 docs.google.com: did not receive HSTS header (error ignored - included regardless)
@@ -941,28 +939,28 @@ donttrustrobots.nl: could not connect to
 donzelot.co.uk: max-age too low: 3600
 doomleika.com: could not connect to host
 dopost.it: could not connect to host
 doridian.com: could not connect to host
 doridian.de: could not connect to host
 doridian.net: did not receive HSTS header
 doridian.org: could not connect to host
 dossplumbing.co.za: did not receive HSTS header
-dot42.no: could not connect to host
 dotadata.me: could not connect to host
 dougferris.id.au: could not connect to host
 download.jitsi.org: did not receive HSTS header
 downsouthweddings.com.au: did not receive HSTS header
 doyoucheck.com: did not receive HSTS header
 dpratt.de: could not connect to host
 dprd-wonogirikab.go.id: did not receive HSTS header
 dragonisles.net: could not connect to host
 dragons-of-highlands.cz: could not connect to host
 dragontrainingmobilezoo.com.au: max-age too low: 0
 draw.uy: could not connect to host
+drawingcode.net: could not connect to host
 drbethanybarnes.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 drdevil.ru: could not connect to host
 drdim.ru: could not connect to host
 dreadbyte.com: could not connect to host
 dreamlinehost.com: did not receive HSTS header
 drishti.guru: could not connect to host
 drive.google.com: did not receive HSTS header (error ignored - included regardless)
 driving-lessons.co.uk: did not receive HSTS header
@@ -973,16 +971,17 @@ drumbandesperanto.nl: could not connect 
 dshiv.io: could not connect to host
 dubrovskiy.net: could not connect to host
 dubrovskiy.pro: could not connect to host
 duch.cloud: could not connect to host
 duesee.org: could not connect to host
 dullsir.com: did not receive HSTS header
 duria.de: max-age too low: 3600
 dwhd.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
+dworzak.ch: could not connect to host
 dxa.io: could not connect to host
 dycontrol.de: could not connect to host
 dylanscott.com.au: did not receive HSTS header
 dymersion.com: did not receive HSTS header
 dzimejl.sk: did not receive HSTS header
 dzlibs.io: could not connect to host
 e-aut.net: could not connect to host
 e-deca2.org: did not receive HSTS header
@@ -1008,17 +1007,16 @@ ecorus.eu: did not receive HSTS header
 edcphenix.tk: could not connect to host
 edelsteincosmetic.com: max-age too low: 0
 edissecurity.sk: did not receive HSTS header
 edix.ru: could not connect to host
 edk.com.tr: did not receive HSTS header
 edmodo.com: did not receive HSTS header
 edp-collaborative.com: max-age too low: 2500
 eduvance.in: did not receive HSTS header
-edwards.me.uk: could not connect to host
 eeqj.com: could not connect to host
 efficienthealth.com: did not receive HSTS header
 effortlesshr.com: did not receive HSTS header
 egg-ortho.ch: did not receive HSTS header
 egit.co: could not connect to host
 eglek.com: did not receive HSTS header
 ego-world.org: could not connect to host
 ehrenamt-skpfcw.de: could not connect to host
@@ -1109,17 +1107,16 @@ eucl3d.com: did not receive HSTS header
 euph.eu: could not connect to host
 euren.se: could not connect to host
 euroshop24.net: could not connect to host
 evantage.org: could not connect to host
 evasion-energie.com: could not connect to host
 evdenevenakliyatankara.pw: did not receive HSTS header
 everybooks.com: max-age too low: 60
 everylab.org: could not connect to host
-evilsay.com: did not receive HSTS header
 evin.ml: could not connect to host
 evomon.com: could not connect to host
 evossd.tk: could not connect to host
 exceltobarcode.com: did not receive HSTS header
 exfiles.cz: did not receive HSTS header
 exgravitus.com: could not connect to host
 exitus.jp: max-age too low: 0
 exno.co: could not connect to host
@@ -1166,30 +1163,32 @@ fayolle.info: [Exception... "Component r
 fbox.li: could not connect to host
 fdj.im: could not connect to host
 feard.space: could not connect to host
 feastr.de: did not receive HSTS header
 fedux.com.ar: could not connect to host
 feezmodo.com: max-age too low: 0
 felisslovakia.sk: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 feliwyn.fr: did not receive HSTS header
+felixsanz.com: could not connect to host
 feminists.co: could not connect to host
 fenteo.com: could not connect to host
 feragon.net: max-age too low: 84600
 feriahuamantla.com: could not connect to host
 festember.com: did not receive HSTS header
 fexmen.com: could not connect to host
 ffmradio.de: did not receive HSTS header
 fhdhelp.de: could not connect to host
 fhdhilft.de: could not connect to host
 fifieldtech.com: could not connect to host
 fiftyshadesofluca.ml: could not connect to host
 fig.co: did not receive HSTS header
 fightr.co: could not connect to host
 fikt.space: could not connect to host
+filestar.io: did not receive HSTS header
 filmipop.com: max-age too low: 0
 finalgear.com: did not receive HSTS header
 financieringsportaal.nl: did not receive HSTS header
 finanzkontor.net: could not connect to host
 findtutorsnearme.com: did not receive HSTS header
 finneas.net: could not connect to host
 finpt.com: could not connect to host
 firebaseio-demo.com: could not connect to host
@@ -1200,17 +1199,16 @@ first-time-offender.com: could not conne
 firstforex.co.uk: did not receive HSTS header
 fish2.me: did not receive HSTS header
 fit4medien.de: did not receive HSTS header
 fitiapp.com: could not connect to host
 fitnesswerk.de: could not connect to host
 fivestarsitters.com: did not receive HSTS header
 fixatom.com: did not receive HSTS header
 fixingdns.com: did not receive HSTS header
-fizz.buzz: could not connect to host
 fj.search.yahoo.com: did not receive HSTS header
 fjruiz.es: could not connect to host
 flags.ninja: could not connect to host
 flamewall.net: could not connect to host
 flawcheck.com: did not receive HSTS header
 fliexer.com: did not receive HSTS header
 floless.co.uk: did not receive HSTS header
 florian-lillpopp.de: max-age too low: 10
@@ -1224,17 +1222,16 @@ flukethoughts.com: could not connect to 
 flushstudios.com: did not receive HSTS header
 flyaces.com: did not receive HSTS header
 flyss.net: did not receive HSTS header
 fm83.nl: could not connect to host
 fndout.com: did not receive HSTS header
 fnvsecurity.com: could not connect to host
 fonetiq.io: could not connect to host
 food4health.guide: could not connect to host
-foodblogger.club: did not receive HSTS header
 footballmapped.com: could not connect to host
 foraje-profesionale.ro: did not receive HSTS header
 forbook.net: could not connect to host
 foreignexchangeresource.com: did not receive HSTS header
 foreveralone.io: could not connect to host
 forex-dan.com: did not receive HSTS header
 formbetter.com: could not connect to host
 formini.dz: did not receive HSTS header
@@ -1267,17 +1264,16 @@ frezbo.com: could not connect to host
 frforms.com: did not receive HSTS header
 friendica.ch: could not connect to host
 frizo.com: did not receive HSTS header
 froggstack.de: could not connect to host
 frontmin.com: did not receive HSTS header
 frost-ci.xyz: could not connect to host
 fruitusers.com: could not connect to host
 frusky.net: could not connect to host
-fs-gamenet.de: could not connect to host
 ftctele.com: did not receive HSTS header
 fuckgfw233.org: could not connect to host
 fugle.de: could not connect to host
 fukushima-web.com: did not receive HSTS header
 funkyweddingideas.com.au: could not connect to host
 funrun.com: did not receive HSTS header
 furiffic.com: did not receive HSTS header
 furry.be: max-age too low: 86400
@@ -1325,23 +1321,23 @@ geekbundle.org: did not receive HSTS hea
 geekcast.co.uk: did not receive HSTS header
 geeky.software: could not connect to host
 geli-graphics.com: did not receive HSTS header
 gem-indonesia.net: could not connect to host
 genuu.com: could not connect to host
 genuxation.com: could not connect to host
 genyaa.com: could not connect to host
 gerencianet.com.br: did not receive HSTS header
-gesiwista.net: could not connect to host
 get.zenpayroll.com: did not receive HSTS header
 getable.com: did not receive HSTS header
 getblys.com.au: did not receive HSTS header
 getbooks.co.il: did not receive HSTS header
 getcarefirst.com: did not receive HSTS header
 getcolor.com: did not receive HSTS header
+getfirepress.com: could not connect to host
 getinternet.de: max-age too low: 0
 getlantern.org: did not receive HSTS header
 getlifti.com: did not receive HSTS header
 getlolaccount.com: could not connect to host
 getmassage.com.ng: did not receive HSTS header
 getsello.com: did not receive HSTS header
 getwashdaddy.com: did not receive HSTS header
 gfhgiro.nl: max-age too low: 604800
@@ -1359,17 +1355,16 @@ gilly.berlin: did not receive HSTS heade
 gingali.de: did not receive HSTS header
 gintenreiter-photography.com: did not receive HSTS header
 gipsamsfashion.com: could not connect to host
 gipsic.com: did not receive HSTS header
 gistfy.com: could not connect to host
 github.party: could not connect to host
 givemyanswer.com: did not receive HSTS header
 gizzo.sk: could not connect to host
-gjspunk.de: did not receive HSTS header
 gl.search.yahoo.com: did not receive HSTS header
 glass.google.com: did not receive HSTS header (error ignored - included regardless)
 glentakahashi.com: max-age too low: 0
 glitzmirror.com: could not connect to host
 globalexpert.co.nz: could not connect to host
 globalittech.com: could not connect to host
 globalmusic.ga: could not connect to host
 gloomyvancouver.com: could not connect to host
@@ -1385,16 +1380,17 @@ goaltree.ch: did not receive HSTS header
 goarmy.eu: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 goat.chat: did not receive HSTS header
 goat.xyz: did not receive HSTS header
 goben.ch: could not connect to host
 goerner.me: did not receive HSTS header
 goge.site: could not connect to host
 gogenenglish.com: could not connect to host
 gogetssl.com: did not receive HSTS header
+goggs.eu: could not connect to host
 gogold-g.com: could not connect to host
 gold24.in: did not receive HSTS header
 goldendata.io: could not connect to host
 goldminer.ga: could not connect to host
 golocal-media.de: did not receive HSTS header
 gonzalosanchez.mx: did not receive HSTS header
 goodenough.nz: did not receive HSTS header
 goodwin43.ru: did not receive HSTS header
@@ -1406,17 +1402,16 @@ gorilla-gym.site: could not connect to h
 goto.google.com: did not receive HSTS header (error ignored - included regardless)
 gottcode.org: did not receive HSTS header
 govillemo.ca: did not receive HSTS header
 gowe.wang: could not connect to host
 gparent.org: did not receive HSTS header
 gpsfix.cz: could not connect to host
 gpstuner.com: did not receive HSTS header
 gracesofgrief.com: max-age too low: 86400
-graffen.dk: did not receive HSTS header
 grandmascookieblog.com: did not receive HSTS header
 graph.no: did not receive HSTS header
 gravity-net.de: could not connect to host
 grazetech.com: could not connect to host
 greenhillantiques.co.uk: did not receive HSTS header
 greenvines.com.tw: did not receive HSTS header
 gregorytlee.me: could not connect to host
 gremots.com: did not receive HSTS header
@@ -1453,31 +1448,31 @@ habanaavenue.com: did not receive HSTS h
 hablemosdetecnologia.com.ve: could not connect to host
 hack.cz: could not connect to host
 hack.li: did not receive HSTS header
 hacker.one: could not connect to host
 hackerforever.com: did not receive HSTS header
 hackerone-ext-adroll.com: could not connect to host
 hackit.im: could not connect to host
 hadzic.co: could not connect to host
-haeckdesign.com: could not connect to host
+haeckdesign.com: did not receive HSTS header
 hahayidu.org: could not connect to host
 haitschi.com: could not connect to host
 haitschi.de: could not connect to host
 haitschi.net: could not connect to host
 haitschi.org: could not connect to host
 haktec.de: could not connect to host
 haku.moe: could not connect to host
 hakugin.org: could not connect to host
 halo.red: could not connect to host
 hancc.net: did not receive HSTS header
 hanfu.la: could not connect to host
 hannover-banditen.de: did not receive HSTS header
 hao2taiwan.com: max-age too low: 0
-haozi.me: could not connect to host
+haozi.me: did not receive HSTS header
 happycoder.net: could not connect to host
 happyfabric.me: did not receive HSTS header
 happygadget.me: could not connect to host
 harabuhouse.com: did not receive HSTS header
 hardline.xyz: could not connect to host
 harmonycosmetic.com: max-age too low: 300
 harristony.com: could not connect to host
 hartmancpa.com: did not receive HSTS header
@@ -1495,43 +1490,44 @@ haufschild.de: could not connect to host
 haurumcraft.net: could not connect to host
 haveeruexaminer.com: could not connect to host
 havellab.de: could not connect to host
 haxoff.com: did not receive HSTS header
 haydenhill.us: could not connect to host
 hazcod.com: could not connect to host
 hcie.pl: could not connect to host
 hdm.io: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
+hdsmigrationtool.com: could not connect to host
 hduin.xyz: did not receive HSTS header
 hdwallpapers.net: did not receive HSTS header
 healtious.com: did not receive HSTS header
 heart.ge: did not receive HSTS header
 heartlandrentals.com: did not receive HSTS header
 heftkaufen.de: did not receive HSTS header
 helloworldhost.com: did not receive HSTS header
 helpadmin.net: could not connect to host
 helpium.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 helpmebuild.com: did not receive HSTS header
 hemdal.se: could not connect to host
 hencagon.com: could not connect to host
 henriknoerr.com: could not connect to host
 hermes-net.de: did not receive HSTS header
 herpaderp.net: did not receive HSTS header
 herzbotschaft.de: did not receive HSTS header
-heutger.net: did not receive HSTS header
 heyguevara.com: could not connect to host
 hibilog.com: could not connect to host
 hicn.gq: could not connect to host
 hiddendepth.ie: max-age too low: 0
 hiddenmail.xyz: could not connect to host
 highseer.com: did not receive HSTS header
 highsurf-miyazaki.com: did not receive HSTS header
 hiitcentre.com: did not receive HSTS header
 hikariempire.com: could not connect to host
 hillcity.org.nz: did not receive HSTS header
+hilnu.tk: could not connect to host
 hiphopconvention.nl: could not connect to host
 hitoy.org: did not receive HSTS header
 hittipps.com: did not receive HSTS header
 hlyue.com: could not connect to host
 hmm.nyc: could not connect to host
 hn.search.yahoo.com: did not receive HSTS header
 hoerbuecher-und-hoerspiele.de: could not connect to host
 hogar123.es: could not connect to host
@@ -1544,17 +1540,16 @@ honeytracks.com: [Exception... "Componen
 hongzhaxiaofendui.com: could not connect to host
 honoo.com: could not connect to host
 hookandloom.com: did not receive HSTS header
 hooray.beer: could not connect to host
 horosho.in: could not connect to host
 horseboners.xxx: did not receive HSTS header
 hortifarm.ro: did not receive HSTS header
 hosmussynergie.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
-hostam.link: could not connect to host
 hosted-service.com: did not receive HSTS header
 hostedtalkgadget.google.com: did not receive HSTS header (error ignored - included regardless)
 hostgarou.com: did not receive HSTS header
 hostinaus.com.au: could not connect to host
 hostisan.com: did not receive HSTS header
 hotchillibox.com: max-age too low: 0
 hotchoc.io: did not receive HSTS header
 hotting.nl: could not connect to host
@@ -1608,29 +1603,28 @@ ifleurs.com: could not connect to host
 ifoss.me: could not connect to host
 ignatisd.gr: did not receive HSTS header
 ignitedmindz.in: could not connect to host
 igule.net: could not connect to host
 ihrlotto.de: could not connect to host
 ihrnationalrat.ch: could not connect to host
 ihsbsd.me: could not connect to host
 ihuanmeng.com: did not receive HSTS header
-ikk.me: did not receive HSTS header
 ikujii.com: max-age too low: 0
 ikwilguidobellen.nl: did not receive HSTS header
 ilbuongiorno.it: did not receive HSTS header
 ilikerainbows.co: could not connect to host
 ilikerainbows.co.uk: could not connect to host
 ilmconpm.de: did not receive HSTS header
 ilona.graphics: max-age too low: 3600
 iluvscotland.co.uk: did not receive HSTS header
+imakepoems.net: could not connect to host
 ime.moe: could not connect to host
 imguoguo.com: did not receive HSTS header
 imim.pw: did not receive HSTS header
-imjiangtao.com: could not connect to host
 immoprotect.ca: did not receive HSTS header
 immortals-co.com: did not receive HSTS header
 immoverkauf24.at: did not receive HSTS header
 immoverkauf24.de: did not receive HSTS header
 immunicity.info: could not connect to host
 immunicity.press: could not connect to host
 immunicity.top: could not connect to host
 imolug.org: did not receive HSTS header
@@ -1712,17 +1706,16 @@ itos.asia: did not receive HSTS header
 itos.pl: did not receive HSTS header
 itsadog.co.uk: did not receive HSTS header
 itsamurai.ru: max-age too low: 2592000
 itsecurityassurance.pw: did not receive HSTS header
 itshost.ru: could not connect to host
 ivi-fertility.com: max-age too low: 0
 ivi.es: max-age too low: 0
 ivk.website: could not connect to host
-iwannarefill.com: could not connect to host
 iww.mx: could not connect to host
 izdiwho.com: could not connect to host
 izoox.com: did not receive HSTS header
 izzzorgconcerten.nl: could not connect to host
 ja-publications.com: did not receive HSTS header
 jabbari.io: did not receive HSTS header
 jackalworks.com: could not connect to host
 jacobparry.ca: did not receive HSTS header
@@ -1791,22 +1784,22 @@ jimas.eu: did not receive HSTS header
 jimmycai.org: could not connect to host
 jinbo123.com: did not receive HSTS header
 jkb.pics: could not connect to host
 jkbuster.com: could not connect to host
 jmdekker.it: could not connect to host
 joakimalgroy.com: could not connect to host
 jobmedic.com: did not receive HSTS header
 joedavison.me: could not connect to host
-joepitt.co.uk: could not connect to host
 jogi-server.de: did not receive HSTS header
 johners.me: could not connect to host
 johners.tech: did not receive HSTS header
 johnhgaunt.com: did not receive HSTS header
 johnrom.com: did not receive HSTS header
+jokewignand.nl: did not receive HSTS header
 jonas-keidel.de: did not receive HSTS header
 jonasgroth.se: max-age too low: 2592000
 jonathan.ir: could not connect to host
 jonathancarter.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 jonn.me: could not connect to host
 joostbovee.nl: did not receive HSTS header
 jordanhamilton.me: could not connect to host
 joretapo.fr: could not connect to host
@@ -1853,29 +1846,30 @@ katiaetdavid.fr: could not connect to ho
 katproxy.online: could not connect to host
 katproxy.site: could not connect to host
 katproxy.tech: could not connect to host
 kaufkraftkiel.de: could not connect to host
 kausch.at: could not connect to host
 kawaii.io: could not connect to host
 kawaiiku.com: could not connect to host
 kawaiiku.de: could not connect to host
-kaylyn.ink: could not connect to host
 kayon.cf: could not connect to host
 kdata.it: did not receive HSTS header
 kdm-online.de: did not receive HSTS header
 keeley.gq: could not connect to host
 keeley.ml: could not connect to host
 keeleysam.me: could not connect to host
 keepclean.me: could not connect to host
+ken.fm: did not receive HSTS header
 kerangalam.com: did not receive HSTS header
 kerksanders.nl: did not receive HSTS header
 kermadec.net: could not connect to host
 kernl.us: did not receive HSTS header
 kevinapease.com: could not connect to host
+kevinmeijer.nl: could not connect to host
 keymaster.lookout.com: did not receive HSTS header
 kg-rating.com: did not receive HSTS header
 kgxtech.com: max-age too low: 2592000
 kickass.al: could not connect to host
 kid-dachau.de: did not receive HSTS header
 kiel-media.de: did not receive HSTS header
 kienlen.org: could not connect to host
 kimpost.org: could not connect to host
@@ -1920,17 +1914,16 @@ kontorhaus-schlachte.de: could not conne
 koop-bremen.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 koophetlokaal.nl: max-age too low: 300
 koordinate.net: could not connect to host
 korni22.org: did not receive HSTS header
 korsanparti.org: could not connect to host
 kotonehoko.net: could not connect to host
 kotovstyle.ru: could not connect to host
 kr.search.yahoo.com: did not receive HSTS header
-kraynik.com: could not connect to host
 kredite.sale: could not connect to host
 kriegt.es: could not connect to host
 krmela.com: could not connect to host
 kroetenfuchs.de: could not connect to host
 kropkait.pl: could not connect to host
 krouzkyliduska.cz: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 krunut.com: did not receive HSTS header
 krypteia.org: could not connect to host
@@ -1977,16 +1970,17 @@ lavval.com: could not connect to host
 lawformt.com: did not receive HSTS header
 lawly.org: did not receive HSTS header
 laxatus.com: did not receive HSTS header
 laxiongames.es: could not connect to host
 lbrt.xyz: could not connect to host
 ldarby.me.uk: could not connect to host
 leadership9.com: could not connect to host
 leardev.de: did not receive HSTS header
+learnedovo.com: could not connect to host
 learnfrenchfluently.com: did not receive HSTS header
 learningorder.com: could not connect to host
 ledgerscope.net: could not connect to host
 leermotorrijden.nl: max-age too low: 300
 legarage.org: did not receive HSTS header
 leinir.dk: max-age too low: 86400
 leitner.com.au: did not receive HSTS header
 leiyun.me: did not receive HSTS header
@@ -2021,17 +2015,16 @@ lianye4.cc: could not connect to host
 lianye5.cc: could not connect to host
 lianye6.cc: could not connect to host
 lianyexiuchang.in: could not connect to host
 liaoshuma.com: could not connect to host
 libertyrp.org: could not connect to host
 library.linode.com: did not receive HSTS header
 librechan.net: could not connect to host
 libscode.com: did not receive HSTS header
-liceserv.com: could not connect to host
 lifeguard.aecom.com: did not receive HSTS header
 lifeinitsownway.com: did not receive HSTS header
 lifeskillsdirect.com: did not receive HSTS header
 lifestylehunter.co.uk: did not receive HSTS header
 lifetimemoneymachine.com: did not receive HSTS header
 lifi.digital: could not connect to host
 lightarmory.com: could not connect to host
 lightpaste.com: could not connect to host
@@ -2060,17 +2053,16 @@ loadingdeck.com: did not receive HSTS he
 loafbox.com: could not connect to host
 locktheirphone.com: could not connect to host
 locomotive.ca: did not receive HSTS header
 login.corp.google.com: max-age too low: 7776000 (error ignored - included regardless)
 loginseite.com: could not connect to host
 loli.bz: could not connect to host
 lonal.com: could not connect to host
 londonlanguageexchange.com: could not connect to host
-longboarding-ulm.de: could not connect to host
 look-at-my.site: could not connect to host
 lookastic.co.uk: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 lookastic.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 lookastic.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 lookastic.es: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 lookastic.fr: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 lookastic.mx: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 lookastic.ru: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
@@ -2099,16 +2091,17 @@ luine.xyz: could not connect to host
 luis-checa.com: could not connect to host
 lukas.im: did not receive HSTS header
 luke.ch: could not connect to host
 lukeng.me: could not connect to host
 lukeng.net: could not connect to host
 lukonet.com: did not receive HSTS header
 lumi.do: did not receive HSTS header
 lunix.io: did not receive HSTS header
+luody.info: did not receive HSTS header
 luoe.ml: could not connect to host
 luoxiao.im: could not connect to host
 lusis.fr: did not receive HSTS header
 lusis.net: did not receive HSTS header
 lustrumxi.nl: did not receive HSTS header
 luxus-russen.de: did not receive HSTS header
 luxwatch.com: could not connect to host
 lv.search.yahoo.com: did not receive HSTS header
@@ -2120,16 +2113,17 @@ m3-gmbh.de: did not receive HSTS header
 m82labs.com: did not receive HSTS header
 maarten.nyc: did not receive HSTS header
 maartenvandekamp.nl: did not receive HSTS header
 macbolo.com: could not connect to host
 macchaberrycream.com: could not connect to host
 macchedil.com: did not receive HSTS header
 macgeneral.de: did not receive HSTS header
 machon.biz: could not connect to host
+macker.io: could not connect to host
 maclemon.at: could not connect to host
 macosxfilerecovery.com: did not receive HSTS header
 madars.org: did not receive HSTS header
 maddin.ga: could not connect to host
 madebymagnitude.com: did not receive HSTS header
 maderwin.com: did not receive HSTS header
 madusecurity.com: could not connect to host
 mafamane.com: could not connect to host
@@ -2185,20 +2179,18 @@ mattwb65.com: could not connect to host
 matty.digital: max-age too low: 3600
 maultrom.ml: could not connect to host
 maur.cz: did not receive HSTS header
 mavisang.cf: did not receive HSTS header
 maya.mg: did not receive HSTS header
 mbinformatik.de: could not connect to host
 mca2017.org: did not receive HSTS header
 mcc.re: could not connect to host
-mccarty.io: could not connect to host
 mcdonalds.ru: did not receive HSTS header
 mclab.su: could not connect to host
-mcpart.land: could not connect to host
 mdewendt.de: could not connect to host
 mdfnet.se: did not receive HSTS header
 mdscomp.net: did not receive HSTS header
 mea.in.ua: could not connect to host
 mechanus.io: max-age too low: 2592000
 medallia.io: could not connect to host
 media-courses.com: did not receive HSTS header
 mediacru.sh: could not connect to host
@@ -2232,16 +2224,17 @@ metebalci.com: could not connect to host
 meteosky.net: could not connect to host
 metin2blog.de: did not receive HSTS header
 metis.pw: could not connect to host
 meuemail.pro: could not connect to host
 mexbt.com: could not connect to host
 mfcatalin.com: could not connect to host
 mfiles.pl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 mhealthdemocamp.com: could not connect to host
+mhertel.com: did not receive HSTS header
 mhict.nl: max-age too low: 0
 mia.to: could not connect to host
 michaelfitzpatrickruth.com: could not connect to host
 michal-kral.cz: could not connect to host
 michalborka.cz: could not connect to host
 michelchouinard.ca: did not receive HSTS header
 micro-dv.ru: could not connect to host
 micro-rain-systems.com: could not connect to host
@@ -2257,17 +2250,16 @@ mikaelemilsson.net: did not receive HSTS
 mikeburns.com: could not connect to host
 mikeg.de: did not receive HSTS header
 mikek.work: did not receive HSTS header
 mikeology.org: could not connect to host
 mikonmaa.fi: could not connect to host
 miku.be: could not connect to host
 miku.hatsune.my: max-age too low: 5184000
 milesgeek.com: did not receive HSTS header
-millenniumweb.com: did not receive HSTS header
 mindoktor.se: did not receive HSTS header
 minecraftserverz.com: could not connect to host
 minecraftvoter.com: could not connect to host
 minikneet.nl: did not receive HSTS header
 minis-hip.de: could not connect to host
 minnesotadata.com: could not connect to host
 miragrow.com: could not connect to host
 mirindadomo.ru: did not receive HSTS header
@@ -2278,42 +2270,41 @@ missrain.tw: could not connect to host
 mister.hosting: could not connect to host
 mitchellrenouf.ca: could not connect to host
 mittenhacks.com: could not connect to host
 mivcon.net: could not connect to host
 miyoshi-kikaku.co.jp: did not receive HSTS header
 miyoshi-kikaku.com: did not receive HSTS header
 mizd.at: could not connect to host
 mizi.name: did not receive HSTS header
+mjcaffarattilaw.com: could not connect to host
 mlpepilepsy.org: could not connect to host
 mmgazhomeloans.com: did not receive HSTS header
 mnemotiv.com: could not connect to host
 mnetworkingsolutions.co.uk: did not receive HSTS header
 mobifinans.ru: did not receive HSTS header
 mobilekey.co: could not connect to host
 mobilemedics.com: did not receive HSTS header
 mobilethreat.net: could not connect to host
 mobilethreatnetwork.net: could not connect to host
 mobilpass.no: could not connect to host
 mocloud.eu: could not connect to host
 moddedark.com: could not connect to host
 modemagazines.co.uk: could not connect to host
-modydev.club: could not connect to host
 moebel-nagel.de: did not receive HSTS header
 moelord.org: could not connect to host
 moen.io: did not receive HSTS header
 mogry.net: did not receive HSTS header
 mona.lu: did not receive HSTS header
 monarca.systems: could not connect to host
 monasterialis.eu: could not connect to host
 mondar.io: could not connect to host
 mondopoint.com: could not connect to host
 moneycrownmedia.com: did not receive HSTS header
 monitman.com: could not connect to host
-monpc-pro.fr: did not receive HSTS header
 moon.lc: could not connect to host
 moparisthebest.biz: could not connect to host
 moparisthebest.info: could not connect to host
 moparscape.org: did not receive HSTS header
 mor.gl: could not connect to host
 morbitzer.de: did not receive HSTS header
 morethanadream.lv: could not connect to host
 moriz.net: could not connect to host
@@ -2331,16 +2322,17 @@ moula.com.au: did not receive HSTS heade
 mountainmusicpromotions.com: did not receive HSTS header
 moviesabout.net: could not connect to host
 mozoa.net: did not receive HSTS header
 mp3juices.is: could not connect to host
 mqas.net: could not connect to host
 mrnonz.com: max-age too low: 0
 mrpopat.in: did not receive HSTS header
 mrs-shop.com: did not receive HSTS header
+ms-alternativ.de: could not connect to host
 msc-seereisen.net: could not connect to host
 mszaki.com: did not receive HSTS header
 mt.me.uk: could not connect to host
 mt.search.yahoo.com: did not receive HSTS header
 mtcgf.com: did not receive HSTS header
 mtg-esport.de: could not connect to host
 mtg-tutor.de: could not connect to host
 mu.search.yahoo.com: did not receive HSTS header
@@ -2412,42 +2404,40 @@ ncc60205.info: could not connect to host
 ncpc.gov: could not connect to host
 nct.org.uk: max-age too low: 1
 nctx.co.uk: did not receive HSTS header
 near.st: did not receive HSTS header
 neel.ch: could not connect to host
 neftaly.com: did not receive HSTS header
 negai.moe: could not connect to host
 negativecurvature.net: could not connect to host
-neilgreen.net: did not receive HSTS header
 neko-life.com: did not receive HSTS header
 neko-system.com: did not receive HSTS header
 nella-project.org: could not connect to host
 nellacms.com: could not connect to host
 nellacms.org: could not connect to host
 nellafw.org: could not connect to host
 nemno.de: could not connect to host
 nemovement.org: did not receive HSTS header
 neonisi.com: could not connect to host
 nepustil.net: did not receive HSTS header
 neris.io: could not connect to host
 nerven.se: could not connect to host
-nestedquotes.ca: could not connect to host
 netbox.cc: could not connect to host
 netherwind.eu: did not receive HSTS header
 netlilo.com: did not receive HSTS header
 netmagik.com: did not receive HSTS header
 netsight.org: could not connect to host
 netzbit.de: could not connect to host
 netzpolitik.org: did not receive HSTS header
 netztest.at: did not receive HSTS header
 neueonlinecasino2016.com: could not connect to host
 neuralgic.net: could not connect to host
 neutralox.com: max-age too low: 3600
-never-afk.de: could not connect to host
+never-afk.de: did not receive HSTS header
 neveta.com: could not connect to host
 newcitygas.ca: max-age too low: 0
 newlooknow.com: did not receive HSTS header
 newtonwarp.com: could not connect to host
 nextcloud.org: could not connect to host
 nexth.de: could not connect to host
 nexth.net: could not connect to host
 nexth.us: could not connect to host
@@ -2457,36 +2447,35 @@ ngine.ch: did not receive HSTS header
 nginxnudes.com: could not connect to host
 ni.search.yahoo.com: did not receive HSTS header
 nibiisclaim.com: could not connect to host
 nicestresser.fr: could not connect to host
 nicky.io: did not receive HSTS header
 nicoborghuis.nl: could not connect to host
 nicolasbettag.me: could not connect to host
 niconiconi.xyz: could not connect to host
-niconode.com: could not connect to host
+niconode.com: did not receive HSTS header
 nien.chat: could not connect to host
 niho.jp: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 nikcub.com: could not connect to host
 nikksno.io: did not receive HSTS header
 nikomo.fi: could not connect to host
+nilrem.org: did not receive HSTS header
 ninchisho-online.com: did not receive HSTS header
 ninhs.org: could not connect to host
 nippler.org: did not receive HSTS header
 nippombashi.net: did not receive HSTS header
 nipponcareers.com: did not receive HSTS header
 nixien.fr: could not connect to host
-nixmag.net: could not connect to host
 nkinka.de: did not receive HSTS header
 nmctest.net: could not connect to host
 nnya.cat: did not receive HSTS header
 no17sifangjie.cc: could not connect to host
 nocallaghan.com: could not connect to host
 nocs.cn: did not receive HSTS header
-noctinus.tk: could not connect to host
 nodebrewery.com: could not connect to host
 nodecompat.com: did not receive HSTS header
 nodetemple.com: could not connect to host
 noexpect.org: could not connect to host
 noima.com: did not receive HSTS header
 nojestorget.se: could not connect to host
 nolatepayments.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 nolte.work: could not connect to host
@@ -2502,31 +2491,29 @@ nossasenhoradaconceicao.com.br: could no
 notnl.com: could not connect to host
 nottheonion.net: did not receive HSTS header
 nouvelle-vague-saint-cast.fr: did not receive HSTS header
 novacoast.com: did not receive HSTS header
 novatrucking.de: could not connect to host
 nowak.ninja: did not receive HSTS header
 noworrywp.com: could not connect to host
 np.search.yahoo.com: did not receive HSTS header
-npm.li: could not connect to host
 npol.de: did not receive HSTS header
 ntbs.pro: could not connect to host
 nu3.at: did not receive HSTS header
 nu3.ch: did not receive HSTS header
 nu3.co.uk: did not receive HSTS header
 nu3.com: did not receive HSTS header
 nu3.de: did not receive HSTS header
 nu3.dk: did not receive HSTS header
 nu3.fi: did not receive HSTS header
 nu3.fr: did not receive HSTS header
 nu3.no: did not receive HSTS header
 nu3.se: did not receive HSTS header
 nufla.de: could not connect to host
-nukenet.se: could not connect to host
 null-sec.ru: could not connect to host
 null.cat: could not connect to host
 null.tips: could not connect to host
 nullpoint.at: did not receive HSTS header
 numericacu.com: did not receive HSTS header
 numero-di-telefono.it: could not connect to host
 nuos.org: could not connect to host
 nutleyeducationalfoundation.org: did not receive HSTS header
@@ -2557,18 +2544,16 @@ oishioffice.com: did not receive HSTS he
 okane.love: could not connect to host
 okok.rent: could not connect to host
 okutama.in.th: could not connect to host
 olafnorge.de: could not connect to host
 oliver-pietsch.de: did not receive HSTS header
 oliverdunk.com: did not receive HSTS header
 ollehbizev.co.kr: could not connect to host
 ollie.io: did not receive HSTS header
-ollies.cloud: could not connect to host
-olliespage.net: could not connect to host
 omgaanmetidealen.com: could not connect to host
 ominto.com: max-age too low: 0
 omniti.com: max-age too low: 1
 omquote.gq: could not connect to host
 oneb4nk.com: could not connect to host
 onefour.co: could not connect to host
 oneminute.io: did not receive HSTS header
 onepluscamps.com: did not receive HSTS header
@@ -2583,16 +2568,17 @@ onlinedeposit.us: could not connect to h
 onlinekasino.de: did not receive HSTS header
 onlinepollsph.com: could not connect to host
 onlinespielothek.com: did not receive HSTS header
 onlinewetten.de: could not connect to host
 onlyshopstation.com: did not receive HSTS header
 ononpay.com: did not receive HSTS header
 onovlena.dn.ua: could not connect to host
 ontras.com: could not connect to host
+onyxwall.com: could not connect to host
 onyxwall.net: could not connect to host
 ookjesprookje.nl: could not connect to host
 ooonja.de: could not connect to host
 oopsmycase.com: could not connect to host
 oost.io: could not connect to host
 open-mx.de: could not connect to host
 open-to-repair.fr: did not receive HSTS header
 opendesk.cc: did not receive HSTS header
@@ -2618,17 +2604,16 @@ orionfcu.com: did not receive HSTS heade
 orleika.ml: could not connect to host
 osaiyuwu.com: could not connect to host
 oslfoundation.org: could not connect to host
 osp.cx: could not connect to host
 ossan-kobe-gourmet.com: did not receive HSTS header
 ossbinaries.com: could not connect to host
 osteammate.com: did not receive HSTS header
 osticketawesome.com: did not receive HSTS header
-ostr.io: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 otakuworld.de: could not connect to host
 othercode.nl: could not connect to host
 othermedia.cc: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 otherstuff.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 otichi.com: did not receive HSTS header
 ottospora.nl: could not connect to host
 ourbank.com: did not receive HSTS header
 outdoorproducts.com: did not receive HSTS header
@@ -2642,19 +2627,19 @@ overclockers.ge: could not connect to ho
 override.io: did not receive HSTS header
 oversight.io: could not connect to host
 overthinkingit.com: max-age too low: 3600
 owncloud.help: could not connect to host
 ownmovies.fr: could not connect to host
 oxygenabsorbers.com: did not receive HSTS header
 oxynux.fr: could not connect to host
 p.linode.com: could not connect to host
-p3in.com: could not connect to host
 p8r.de: did not receive HSTS header
 pa.search.yahoo.com: did not receive HSTS header
+pacelink.de: could not connect to host
 packlane.com: did not receive HSTS header
 pader-deko.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 paestbin.com: could not connect to host
 pagerate.io: did not receive HSTS header
 pagetoimage.com: could not connect to host
 paisaone.com: did not receive HSTS header
 paku.me: could not connect to host
 pamsoft.pl: max-age too low: 0
@@ -2694,16 +2679,17 @@ paxwinkel.nl: did not receive HSTS heade
 pay.gigahost.dk: did not receive HSTS header
 payments.google.com: did not receive HSTS header (error ignored - included regardless)
 payroll.ch: did not receive HSTS header
 pbapp.net: did not receive HSTS header
 pbprint.ru: max-age too low: 0
 pc-nf.de: did not receive HSTS header
 pcfun.net: did not receive HSTS header
 pchax.net: could not connect to host
+pebbles.net.in: could not connect to host
 pebblesdemo.com: could not connect to host
 peissen.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 pekkapikkarainen.fi: could not connect to host
 pekkarik.ru: could not connect to host
 penguinclientsystem.com: did not receive HSTS header
 pensacolawinterfest.org: could not connect to host
 pentandra.com: could not connect to host
 pepchid.com: did not receive HSTS header
@@ -2721,42 +2707,44 @@ pet-nsk.ru: could not connect to host
 petchart.net: could not connect to host
 petplum.com: did not receive HSTS header
 petrachuk.ru: did not receive HSTS header
 petravdbos.nl: did not receive HSTS header
 petrolplus.ru: did not receive HSTS header
 pettsy.com: could not connect to host
 pewboards.com: could not connect to host
 pgpm.io: could not connect to host
+pharmgkb.org: could not connect to host
 phillprice.com: could not connect to host
 phonenumberinfo.co.uk: could not connect to host
 phongmay24h.com: could not connect to host
 phurl.de: could not connect to host
 pickr.co: could not connect to host
 picotronic.biz: could not connect to host
 picscare.co.uk: did not receive HSTS header
 pijuice.com: could not connect to host
 piligrimname.com: could not connect to host
 pinesandneedles.com: did not receive HSTS header
 pinkhq.com: could not connect to host
 pippen.io: could not connect to host
 pir9.com: max-age too low: 2592000
 piratedb.com: could not connect to host
 piratedot.com: could not connect to host
-piratelist.online: could not connect to host
+piratelist.online: did not receive HSTS header
 piratenlogin.de: could not connect to host
 pirati.cz: max-age too low: 604800
 pirlitu.com: did not receive HSTS header
 pisexy.me: did not receive HSTS header
 pisidia.de: could not connect to host
 pittonpreschool.com: did not receive HSTS header
 piwko.co: could not connect to host
 pixel.google.com: did not receive HSTS header (error ignored - included regardless)
 pixelcode.com.au: max-age too low: 0
 pixelhero.co.uk: did not receive HSTS header
+pixelminers.net: could not connect to host
 pixi.me: could not connect to host
 pj83.duckdns.org: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 pk.search.yahoo.com: did not receive HSTS header
 placefade.com: could not connect to host
 placollection.org: could not connect to host
 plaettliaktion.ch: did not receive HSTS header
 platform.lookout.com: could not connect to host
 play.google.com: did not receive HSTS header (error ignored - included regardless)
@@ -2769,16 +2757,17 @@ pleier.it: did not receive HSTS header
 plhdb.org: did not receive HSTS header
 plixer.com: did not receive HSTS header
 plogable.co: could not connect to host
 plothost.com: did not receive HSTS header
 ploup.net: could not connect to host
 pmnts.io: could not connect to host
 po.gl: did not receive HSTS header
 poiema.com.sg: did not receive HSTS header
+poinsot.info: could not connect to host
 pol.in.th: could not connect to host
 pole.net.nz: did not receive HSTS header
 poleartschool.com: could not connect to host
 polimat.org: could not connect to host
 politically-incorrect.xyz: could not connect to host
 politologos.org: could not connect to host
 polycoise.com: could not connect to host
 polypho.nyc: could not connect to host
@@ -2826,17 +2815,16 @@ profundr.com: could not connect to host
 progg.no: could not connect to host
 prohostonline.fi: could not connect to host
 promecon-gmbh.de: did not receive HSTS header
 prontolight.com: did not receive HSTS header
 prontomovers.co.uk: could not connect to host
 prosocialmachines.com: could not connect to host
 prosoft.sk: did not receive HSTS header
 prosperident.com: did not receive HSTS header
-protoyou.de: did not receive HSTS header
 prowhisky.de: did not receive HSTS header
 proximato.com: could not connect to host
 proxybay.al: could not connect to host
 proxybay.club: could not connect to host
 proxybay.info: did not receive HSTS header
 prxio.date: could not connect to host
 prxio.site: did not receive HSTS header
 prytkov.com: did not receive HSTS header
@@ -2866,18 +2854,18 @@ qldconservation.org: could not connect t
 qorm.co.uk: did not receive HSTS header
 qrara.net: did not receive HSTS header
 qrlending.com: did not receive HSTS header
 quail.solutions: could not connect to host
 quantacloud.ch: could not connect to host
 quantenteranik.eu: could not connect to host
 quantumcourse.org: did not receive HSTS header
 queercoders.com: did not receive HSTS header
-quemmeliga.com: could not connect to host
 questsandrewards.com: could not connect to host
+quotehex.com: could not connect to host
 quranserver.net: could not connect to host
 qvi.st: did not receive HSTS header
 qwaser.fr: could not connect to host
 qwilink.me: did not receive HSTS header
 r10n.com: did not receive HSTS header
 r15.me: could not connect to host
 r3bl.me: did not receive HSTS header
 r811.de: could not connect to host
@@ -2909,30 +2897,32 @@ realmic.net: could not connect to host
 realmofespionage.com: could not connect to host
 reardenporn.com: could not connect to host
 recommended.reviews: could not connect to host
 redar.xyz: could not connect to host
 reddiseals.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 reddit.com: did not receive HSTS header
 rede.ca: did not receive HSTS header
 redicabo.de: could not connect to host
+redirectman.com: did not receive HSTS header
 redlatam.org: did not receive HSTS header
 redmbk.com: did not receive HSTS header
 regaloaks.com: did not receive HSTS header
 regalpalms.com: did not receive HSTS header
 regenbogenwald.de: did not receive HSTS header
 regenerescence.com: did not receive HSTS header
 reggae-cdmx.com: did not receive HSTS header
 reic.me: could not connect to host
 rejo.in: could not connect to host
 relisten.nl: did not receive HSTS header
 rem.pe: could not connect to host
 remitatm.com: could not connect to host
 remodela.com.ve: could not connect to host
 renem.net: did not receive HSTS header
+renkhosting.com: did not receive HSTS header
 renlong.org: could not connect to host
 renrenss.com: did not receive HSTS header
 rent-a-coder.de: did not receive HSTS header
 rentcarassist.com: could not connect to host
 renteater.com: could not connect to host
 repaxan.com: could not connect to host
 replacemychina.com: did not receive HSTS header
 reprolife.co.uk: max-age too low: 0
@@ -2970,24 +2960,26 @@ rippleunion.com: could not connect to ho
 riskmgt.com.au: could not connect to host
 rj.gg: could not connect to host
 rk6.cz: could not connect to host
 rkmantpur.org: did not receive HSTS header
 rme.li: did not receive HSTS header
 roan24.pl: did not receive HSTS header
 robertglastra.com: could not connect to host
 robigalia.org: did not receive HSTS header
+robtex.com: did not receive HSTS header
 robtex.net: did not receive HSTS header
 robtex.org: did not receive HSTS header
 rochman.id: could not connect to host
 rocksberg.net: did not receive HSTS header
 roddis.net: did not receive HSTS header
 rodney.id.au: did not receive HSTS header
 rodosto.com: did not receive HSTS header
 roeper.party: could not connect to host
+rointe.online: could not connect to host
 romans-place.me.uk: did not receive HSTS header
 ronvandordt.info: did not receive HSTS header
 ronwo.de: max-age too low: 1
 room-checkin24.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 rootforum.org: did not receive HSTS header
 rootservice.org: did not receive HSTS header
 rootwpn.com: could not connect to host
 rotterdamjazz.info: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
@@ -3004,20 +2996,20 @@ rsf.io: could not connect to host
 rsmaps.org: could not connect to host
 rsync.eu: could not connect to host
 rubbereggs.ca: could not connect to host
 rubberfurs.org: max-age too low: 86400
 rubecodeberg.com: could not connect to host
 rubenschulz.nl: did not receive HSTS header
 ruborr.se: did not receive HSTS header
 rubyshop.nl: max-age too low: 604800
-rudeotter.com: did not receive HSTS header
+rudeotter.com: could not connect to host
 rudloff.pro: did not receive HSTS header
 rugirlfriend.com: could not connect to host
-ruiming.me: did not receive HSTS header
+ruiming.me: max-age too low: 86400
 runawebinar.nl: could not connect to host
 runementors.com: could not connect to host
 runtondev.com: did not receive HSTS header
 ruobiyi.com: could not connect to host
 ruqu.nl: could not connect to host
 rusadmin.biz: did not receive HSTS header
 rusl.me: could not connect to host
 russmarshall.com: could not connect to host
@@ -3038,66 +3030,64 @@ sakaserver.com: did not receive HSTS hea
 salesmachine.io: did not receive HSTS header
 salserocafe.com: did not receive HSTS header
 salserototal.com: did not receive HSTS header
 salud.top: did not receive HSTS header
 saml2.com: could not connect to host
 sampoznay.ru: did not receive HSTS header
 samraskauskas.com: could not connect to host
 samsen.club: did not receive HSTS header
-sanatfilan.com: could not connect to host
 sandviks.com: did not receive HSTS header
 sansemea.com: could not connect to host
 sapk.fr: could not connect to host
 sarah-beckett-harpist.com: did not receive HSTS header
 sarisonproductions.com: did not receive HSTS header
 saruwebshop.co.za: did not receive HSTS header
 satmep.com: did not receive HSTS header
 satriyowibowo.my.id: did not receive HSTS header
 satsukii.moe: did not receive HSTS header
 saturngames.co.uk: did not receive HSTS header
 saucyfox.net: did not receive HSTS header
 saunasandstuff.ca: did not receive HSTS header
 saunasandstuff.com: did not receive HSTS header
 save.gov: could not connect to host
 saveaward.gov: could not connect to host
 saveyour.biz: did not receive HSTS header
-savingrecipe.com: did not receive HSTS header
 sawamura-rental.com: did not receive HSTS header
 sb-group.dk: did not receive HSTS header
 sbox-archives.com: could not connect to host
 sby.de: did not receive HSTS header
 sc4le.com: could not connect to host
 schmitz.link: could not connect to host
 schnell-gold.com: could not connect to host
 schoop.me: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 schreiber-netzwerk.eu: did not receive HSTS header
 schrodinger.io: could not connect to host
-schwarzkopfforyou.de: could not connect to host
+schwarzkopfforyou.de: did not receive HSTS header
 scienceathome.org: did not receive HSTS header
 scooshonline.co.uk: did not receive HSTS header
 scotbirchfield.com: did not receive HSTS header
 scrambl.is: could not connect to host
 scrambler.in: could not connect to host
 scrapings.net: could not connect to host
 screencaster.io: did not receive HSTS header
+screenlight.tv: did not receive HSTS header
 screenresolution.space: could not connect to host
 scribe.systems: could not connect to host
 script.google.com: did not receive HSTS header (error ignored - included regardless)
 scriptict.nl: could not connect to host
-scriptjunkie.us: could not connect to host
 sdmoscow.ru: could not connect to host
 sdrobs.com: did not receive HSTS header
 sdsl-speedtest.de: could not connect to host
 search-one.de: did not receive HSTS header
 sebastian-lutsch.de: could not connect to host
 secandtech.com: could not connect to host
 secondpay.nl: did not receive HSTS header
 sectia22.ro: could not connect to host
-sectun.com: could not connect to host
+sectun.com: did not receive HSTS header
 secure-games.us: could not connect to host
 secureradio.net: could not connect to host
 security-carpet.com: could not connect to host
 security.google.com: did not receive HSTS header (error ignored - included regardless)
 securitybsides.pl: did not receive HSTS header
 securityinet.biz: did not receive HSTS header
 securityinet.net: did not receive HSTS header
 securityinet.org.il: did not receive HSTS header
@@ -3132,50 +3122,48 @@ serverdensity.io: did not receive HSTS h
 servergno.me: did not receive HSTS header
 serverstuff.info: could not connect to host
 seryo.moe: could not connect to host
 sethcaplan.com: could not connect to host
 setphaserstostun.org: could not connect to host
 setuid.de: could not connect to host
 setuid.io: did not receive HSTS header
 seyahatsagliksigortalari.com: could not connect to host
-sgtcodfish.com: did not receive HSTS header
 shadoom.com: did not receive HSTS header
 shadowmorph.info: did not receive HSTS header
 shadowsocks.net: could not connect to host
 shakepeers.org: did not receive HSTS header
 shakespearesolutions.com.au: did not receive HSTS header
 shanesage.com: could not connect to host
 shanewadleigh.com: could not connect to host
 sharepass.pw: could not connect to host
 sharescope.co.uk: max-age too low: 14400
 shauncrowley.co.uk: could not connect to host
 shaunwheelhou.se: could not connect to host
 shawnh.net: could not connect to host
-sheilasdrivingschool.com: could not connect to host
 shellsec.pw: did not receive HSTS header
 shibe.club: could not connect to host
 shiftins.com: did not receive HSTS header
 shiinko.com: could not connect to host
 shinebijoux.com.br: could not connect to host
 shinju.moe: could not connect to host
 shiona.xyz: did not receive HSTS header
 shocksrv.com: did not receive HSTS header
 shooshosha.com: did not receive HSTS header
 shopontarget.com: did not receive HSTS header
 shoprose.ru: could not connect to host
 shops.neonisi.com: could not connect to host
 shortr.li: could not connect to host
 showkeeper.tv: did not receive HSTS header
+shtorku.com: could not connect to host
 shukatsu-note.com: could not connect to host
 shv25.se: could not connect to host
 shwongacc.com: could not connect to host
 siammedia.co: could not connect to host
 siddhant.me: could not connect to host
-siebens.net: could not connect to host
 sifls.com: could not connect to host
 silentcircle.org: could not connect to host
 silicagelpackets.ca: did not receive HSTS header
 silver-drachenkrieger.de: did not receive HSTS header
 silverpvp.com: could not connect to host
 silverwind.io: did not receive HSTS header
 simbast.com: could not connect to host
 simod.org: could not connect to host
@@ -3195,16 +3183,17 @@ sitsy.ru: did not receive HSTS header
 skhosting.eu: did not receive HSTS header
 skile.ru: could not connect to host
 skk.io: could not connect to host
 skoda-clever-lead.de: could not connect to host
 skoda-im-dialog.de: could not connect to host
 skullhouse.nyc: did not receive HSTS header
 skyflix.me: did not receive HSTS header
 skyoy.com: did not receive HSTS header
+slainvet.net: could not connect to host
 slash-dev.de: did not receive HSTS header
 slashem.me: did not receive HSTS header
 slattery.co: could not connect to host
 sleep10.com: could not connect to host
 slicketl.com: did not receive HSTS header
 slightfuture.click: could not connect to host
 slix.io: could not connect to host
 slope.haus: could not connect to host
@@ -3251,50 +3240,52 @@ solidfuelappliancespares.co.uk: did not 
 solinter.com.br: did not receive HSTS header
 soll-i.ch: did not receive HSTS header
 solsystems.ru: could not connect to host
 someshit.xyz: could not connect to host
 somethingnew.xyz: did not receive HSTS header
 songzhuolun.com: did not receive HSTS header
 sonic.sk: max-age too low: 0
 sonicrainboom.rocks: did not receive HSTS header
+soondy.com: could not connect to host
 sotar.us: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 sotor.de: did not receive HSTS header
 soulboy.io: did not receive HSTS header
 soulema.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 soulfulglamour.uk: could not connect to host
 sourcelair.com: did not receive HSTS header
 southside-crew.club: could not connect to host
 southworcestershiregpservices.co.uk: could not connect to host
 souyar.de: could not connect to host
 souyar.net: could not connect to host
 souyar.us: could not connect to host
 sovereignshare.com: could not connect to host
 sown.dyndns.org: could not connect to host
 spacehq.org: max-age too low: 0
+sparelib.com: could not connect to host
 spark.team: could not connect to host
 sparklingsparklers.com: did not receive HSTS header
 sparsa.army: could not connect to host
 spartantheatre.org: max-age too low: 172800
 spauted.com: could not connect to host
 spdysync.com: could not connect to host
 speculor.net: could not connect to host
 speed-mailer.com: could not connect to host
 speedcounter.net: did not receive HSTS header
 speedmann.de: could not connect to host
+speeds.vip: could not connect to host
 speedtest-russia.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 speidel.com.tr: did not receive HSTS header
 spencerbaer.com: could not connect to host
 sperohub.io: could not connect to host
 spherenix.org: could not connect to host
 spideroak.com: did not receive HSTS header
 spiegels.nl: could not connect to host
 spikeykc.me: did not receive HSTS header
 spilsbury.io: could not connect to host
-spitefultowel.com: could not connect to host
 sportwette.eu: did not receive HSTS header
 spot-events.com: could not connect to host
 spotlightsrule.ddns.net: could not connect to host
 spreadsheets.google.com: did not receive HSTS header (error ignored - included regardless)
 spreed.me: did not receive HSTS header
 sproutconnections.com: did not receive HSTS header
 sprybear.com: did not receive HSTS header
 square.gs: could not connect to host
@@ -3308,18 +3299,16 @@ ssersay.com: max-age too low: 0
 ssl.panoramio.com: did not receive HSTS header
 ssl.rip: could not connect to host
 ssmato.me: could not connect to host
 ssnc.org: max-age too low: 300
 sss3s.com: did not receive HSTS header
 stabletoken.com: could not connect to host
 stadjerspasonline.nl: could not connect to host
 stahl.xyz: could not connect to host
-starsam80.net: could not connect to host
-starttraffic.com: did not receive HSTS header
 stateofexception.io: could not connect to host
 static.or.at: did not receive HSTS header
 staticanime.net: could not connect to host
 stationaryjourney.com: did not receive HSTS header
 stationnementdenuit.ca: did not receive HSTS header
 statuschecks.net: could not connect to host
 stefany.eu: could not connect to host
 stephanierxo.com: did not receive HSTS header
@@ -3359,39 +3348,38 @@ studentresearcher.org: did not receive H
 studentrightsadvocate.org: could not connect to host
 studentskydenik.cz: could not connect to host
 studenttravel.cz: did not receive HSTS header
 studybay.com: did not receive HSTS header
 studydrive.net: did not receive HSTS header
 stugb.de: did not receive HSTS header
 stw-group.at: could not connect to host
 subbing.work: could not connect to host
-subdimension.org: did not receive HSTS header
+subdimension.org: could not connect to host
 subrosa.io: could not connect to host
 subtitle.rip: could not connect to host
 sudo.li: did not receive HSTS header
 suian.or.jp: max-age too low: 86400
 suite73.org: could not connect to host
 suksit.com: could not connect to host
 sumoatm.com: did not receive HSTS header
 sumoscout.de: did not receive HSTS header
 suncountrymarine.com: did not receive HSTS header
-sunflyer.cn: did not receive HSTS header
 sunnyfruit.ru: did not receive HSTS header
 sunshinepress.org: could not connect to host
 superbabysitting.ch: could not connect to host
 superbike.tw: could not connect to host
 supereight.net: did not receive HSTS header
 superiorfloridavacation.com: did not receive HSTS header
 supersalescontest.nl: did not receive HSTS header
 superwally.org: could not connect to host
 suprlink.net: could not connect to host
 supweb.ovh: did not receive HSTS header
 surfeasy.com: did not receive HSTS header
-sushi101tempe.com: could not connect to host
+sushi101tempe.com: did not receive HSTS header
 suzukikenichi.com: did not receive HSTS header
 sv.search.yahoo.com: did not receive HSTS header
 svatba-frantovi.cz: did not receive HSTS header
 sweetstreats.ca: could not connect to host
 swimbee.nl: did not receive HSTS header
 swimming.ca: did not receive HSTS header
 swimturk.com.tr: did not receive HSTS header
 swmd5c.org: did not receive HSTS header
@@ -3406,31 +3394,33 @@ syneic.com: did not receive HSTS header
 syno.gq: could not connect to host
 syntheticmotoroil.org: did not receive HSTS header
 sysadmin.xyz: could not connect to host
 syso.name: could not connect to host
 szaszm.tk: max-age too low: 0
 t.facebook.com: did not receive HSTS header
 taabe.xyz: could not connect to host
 tablet.facebook.com: did not receive HSTS header
+taboragroup.com: could not connect to host
 tacomafia.net: did not receive HSTS header
 tadigitalstore.com: could not connect to host
 tafoma.com: did not receive HSTS header
 tageau.com: could not connect to host
 taglondon.org: did not receive HSTS header
 tails.com.ar: did not receive HSTS header
 talk.google.com: did not receive HSTS header (error ignored - included regardless)
 talktwincities.com: could not connect to host
 tallr.se: could not connect to host
 tallshoe.com: could not connect to host
 tandarts-haarlem.nl: did not receive HSTS header
 tangibilizing.com: could not connect to host
 tanzhijun.com: did not receive HSTS header
 tapfinder.ca: could not connect to host
 tapka.cz: did not receive HSTS header
+tappublisher.com: did not receive HSTS header
 taravancil.com: did not receive HSTS header
 tarhauskielto.fi: did not receive HSTS header
 tartaros.fi: could not connect to host
 taskstats.com: could not connect to host
 taskulu.ir: could not connect to host
 tasmansecurity.com: could not connect to host
 tastyyy.co: could not connect to host
 tauchkater.de: could not connect to host
@@ -3438,16 +3428,17 @@ tavopica.lt: did not receive HSTS header
 taxbench.com: could not connect to host
 tazemama.biz: could not connect to host
 tazz.in: could not connect to host
 tcao.info: could not connect to host
 tcby45.xyz: did not receive HSTS header
 tcdw.net: did not receive HSTS header
 tcl.ath.cx: did not receive HSTS header
 tcomms.org: max-age too low: 0
+tcp.expert: max-age too low: 0
 teachforcanada.ca: did not receive HSTS header
 team-pancake.eu: could not connect to host
 teamblueridge.org: could not connect to host
 teamsocial.co: did not receive HSTS header
 teamzeus.cz: could not connect to host
 techassist.io: could not connect to host
 techhub.ml: could not connect to host
 techllage.com: could not connect to host
@@ -3486,16 +3477,17 @@ the-sky-of-valkyries.com: could not conn
 theamateurs.net: did not receive HSTS header
 theater.cf: could not connect to host
 thebrotherswarde.com: could not connect to host
 thecharlestonwaldorf.com: could not connect to host
 theclementinebutchers.com: could not connect to host
 thecoffeehouse.xyz: could not connect to host
 thediaryofadam.com: did not receive HSTS header
 theendofzion.com: did not receive HSTS header
+theeyeopener.com: did not receive HSTS header
 thefootballanalyst.com: could not connect to host
 thehiddenbay.me: could not connect to host
 thehiddenbay.net: could not connect to host
 thehistory.me: could not connect to host
 thehonorguard.org: did not receive HSTS header
 theinvisibletrailer.com: could not connect to host
 themarble.co: could not connect to host
 themerchandiser.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
@@ -3514,16 +3506,17 @@ thetradinghall.com: could not connect to
 theurbanyoga.com: did not receive HSTS header
 thevintagenews.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 thezonders.com: did not receive HSTS header
 thierfreund.de: could not connect to host
 thinkcoding.de: could not connect to host
 thinlyveiledcontempt.com: could not connect to host
 thirdpartytrade.com: did not receive HSTS header
 thirty5.net: did not receive HSTS header
+thisisacompletetest.ga: could not connect to host
 thiswebhost.com: did not receive HSTS header
 thomaswoo.com: could not connect to host
 thorncreek.net: did not receive HSTS header
 thriveapproach.co.uk: did not receive HSTS header
 thumbtack.com: did not receive HSTS header
 tickopa.co.uk: could not connect to host
 tickreport.com: did not receive HSTS header
 tictactux.de: could not connect to host
@@ -3545,35 +3538,37 @@ tirex.media: did not receive HSTS header
 titanleaf.com: could not connect to host
 tittelbach.at: did not receive HSTS header
 titties.ml: could not connect to host
 tkarstens.de: did not receive HSTS header
 tlo.hosting: could not connect to host
 tlo.network: could not connect to host
 tls.li: could not connect to host
 tm-solutions.eu: did not receive HSTS header
+tmaward.net: could not connect to host
 tmitchell.io: could not connect to host
 tmprod.com: did not receive HSTS header
 tncnanet.com.br: could not connect to host
 tnrsca.jp: did not receive HSTS header
-tobias-bielefeld.de: could not connect to host
 tobiasmathes.com: could not connect to host
 tobiasmathes.name: could not connect to host
 tobiasofficial.at: could not connect to host
 todo.is: did not receive HSTS header
 todobazar.es: could not connect to host
+tokke.dk: could not connect to host
 tokyopopline.com: did not receive HSTS header
 tollmanz.com: did not receive HSTS header
 tomberek.info: could not connect to host
 tomeara.net: could not connect to host
 tomharling.co.uk: max-age too low: 86400
 tomharling.uk: max-age too low: 86400
 tomharris.tech: could not connect to host
 tomlankhorst.nl: did not receive HSTS header
 tommsy.com: did not receive HSTS header
+tonage.de: could not connect to host
 tonburi.jp: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 tonyfantjr.com: could not connect to host
 toomanypillows.com: could not connect to host
 topbargains.com.au: did not receive HSTS header
 topmarine.se: could not connect to host
 topnewstoday.org: could not connect to host
 topshelfguild.com: could not connect to host
 tor2web.org: could not connect to host
@@ -3584,32 +3579,33 @@ toshnix.com: could not connect to host
 totem-eshop.cz: could not connect to host
 toucedo.de: could not connect to host
 tourpeer.com: did not receive HSTS header
 toxme.se: did not receive HSTS header
 tpbcdn.com: could not connect to host
 tpe-edu.com: could not connect to host
 track.plus: could not connect to host
 tracktivity.com.au: did not receive HSTS header
-tradeinvent.co.uk: could not connect to host
 tradingcentre.com.au: did not receive HSTS header
 tradinghope.com: could not connect to host
 traeningsprojekt.dk: did not receive HSTS header
 traindb.nl: could not connect to host
 trainut.com: could not connect to host
 translate.googleapis.com: did not receive HSTS header (error ignored - included regardless)
 transportal.sk: did not receive HSTS header
 treeby.net: could not connect to host
 trendberry.ru: could not connect to host
 trinityaffirmations.com: max-age too low: 0
 trinitycore.org: max-age too low: 2592000
 tripdelta.com: did not receive HSTS header
 trixies-wish.nz: could not connect to host
+trollme.me: could not connect to host
 trusitio.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 trustmeimfancy.com: could not connect to host
+truthmessages.pw: could not connect to host
 trybind.com: could not connect to host
 ts2.se: did not receive HSTS header
 tsecy.com: did not receive HSTS header
 tsgoc.com: did not receive HSTS header
 tssouthernpower.com: max-age too low: 0
 tuingereedschappen.net: could not connect to host
 tunai.id: could not connect to host
 tuningblog.eu: did not receive HSTS header
@@ -3638,16 +3634,17 @@ txclimbers.com: could not connect to hos
 txf.pw: could not connect to host
 ty2u.com: did not receive HSTS header
 tylian.net: max-age too low: 0
 tyrelius.com: did not receive HSTS header
 tyroproducts.eu: did not receive HSTS header
 tzappa.net: could not connect to host
 u-blox.com: did not receive HSTS header
 ua.search.yahoo.com: did not receive HSTS header
+uangteman.com: did not receive HSTS header
 ubicloud.de: could not connect to host
 ublox.com: did not receive HSTS header
 ubtce.com: could not connect to host
 ubuntuhot.com: did not receive HSTS header
 uega.net: did not receive HSTS header
 ufgaming.com: did not receive HSTS header
 ufotable.uk: max-age too low: 0
 ui8.net: max-age too low: 86400
@@ -3672,20 +3669,20 @@ unison.com: could not connect to host
 unitedcyberdevelopment.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 unitel2000.de: could not connect to host
 university4industry.com: did not receive HSTS header
 univz.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 unknownphenomena.net: could not connect to host
 unplugg3r.dk: could not connect to host
 unravel.ie: could not connect to host
 unterschicht.tv: could not connect to host
+unun.fi: could not connect to host
 unwiredbrain.com: could not connect to host
 uonstaffhub.com: could not connect to host
 uow.ninja: could not connect to host
-up1.ca: could not connect to host
 upaknship.com: did not receive HSTS header
 upani.net: did not receive HSTS header
 upldr.pw: could not connect to host
 upr.com.ua: could not connect to host
 uprotect.it: could not connect to host
 upstats.eu: could not connect to host
 urandom.eu.org: did not receive HSTS header
 url.rw: could not connect to host
@@ -3708,35 +3705,36 @@ uzmandroid.top: could not connect to hos
 v4veedu.com: could not connect to host
 vaddder.com: could not connect to host
 vadik.me: could not connect to host
 valethound.com: could not connect to host
 valis.sx: could not connect to host
 valkyrja.xyz: did not receive HSTS header
 valleyridgepta.org: could not connect to host
 vallis.net: could not connect to host
-valshamar.is: could not connect to host
 vanderkley.it: could not connect to host
 vanestack.com: could not connect to host
 vanetv.com: could not connect to host
 vanitas.xyz: could not connect to host
 vanitynailworkz.com: could not connect to host
 vansieleghem.com: could not connect to host
 vasanth.org: could not connect to host
 vavai.net: could not connect to host
 vbh2o.com: did not receive HSTS header
 vbulletin-russia.com: could not connect to host
 vbulletinrussia.com: could not connect to host
 vcdove.com: did not receive HSTS header
 vcr.re: could not connect to host
 veblen.com: could not connect to host
+veblr.com: did not receive HSTS header
 vechkasov.ru: did not receive HSTS header
 vemokin.net: could not connect to host
 venixplays-stream.ml: could not connect to host
 verifikatorindonesia.com: could not connect to host
+veriny.tf: did not receive HSTS header
 vermontcareergateway.org: could not connect to host
 versia.ru: did not receive HSTS header
 veryhax.de: could not connect to host
 vetmgmt.com: could not connect to host
 vfree.org: could not connect to host
 vglimg.com: could not connect to host
 vhost.co.id: could not connect to host
 videnskabsklubben.dk: did not receive HSTS header
@@ -3791,18 +3789,19 @@ wanban.io: could not connect to host
 wangqiliang.xn--fiqs8s: could not connect to host
 wangzuan168.cc: did not receive HSTS header
 wapjt.cn: could not connect to host
 warandpeace.xyz: could not connect to host
 warhistoryonline.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 warmlyyours.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 warped.com: did not receive HSTS header
 warsentech.com: could not connect to host
-warsh.moe: could not connect to host
+wassim.is: could not connect to host
 watchium.com: did not receive HSTS header
+watertrails.io: could not connect to host
 watsonhall.uk: could not connect to host
 wave.is: could not connect to host
 wavefrontsystemstech.com: could not connect to host
 wealthfactory.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 wear2work.nl: did not receive HSTS header
 wearandcare.net: could not connect to host
 weaverhairextensions.nl: did not receive HSTS header
 web4all.fr: max-age too low: 0
@@ -3938,16 +3937,17 @@ xellos.ml: could not connect to host
 xendo.net: did not receive HSTS header
 xenesisziarovky.sk: could not connect to host
 xett.com: did not receive HSTS header
 xf-liam.com: could not connect to host
 xfive.de: did not receive HSTS header
 xiaody.me: could not connect to host
 xiaolvmu.me: could not connect to host
 xiaoxiao.im: could not connect to host
+xichtsbuch.de: could not connect to host
 ximens.me: did not receive HSTS header
 xisa.it: could not connect to host
 xiyu.moe: could not connect to host
 xn--3lqp21gwna.xn--fiqs8s: could not connect to host
 xn--3lqp21gwna.xn--fiqz9s: could not connect to host
 xn--3lqt7ir4md4tzwa.xn--fiqs8s: could not connect to host
 xn--4dbjwf8c.cf: could not connect to host
 xn--4dbjwf8c.ga: could not connect to host
@@ -3979,16 +3979,17 @@ xuri.me: max-age too low: 2592000
 xuyh0120.win: did not receive HSTS header
 xxbase.com: could not connect to host
 y-o-w.com: did not receive HSTS header
 y-s.pw: did not receive HSTS header
 yabrt.cn: could not connect to host
 yahvehyireh.com: did not receive HSTS header
 yamaken.jp: did not receive HSTS header
 yamamo10.com: could not connect to host
+yaoidreams.com: could not connect to host
 yaporn.tv: did not receive HSTS header
 yard-fu.com: did not receive HSTS header
 yasinaydin.net: max-age too low: 2592000
 yaucy.win: did not receive HSTS header
 yello.website: could not connect to host
 yellowcar.website: could not connect to host
 yenniferallulli.de: could not connect to host
 yenniferallulli.es: did not receive HSTS header
@@ -4007,17 +4008,17 @@ yoloprod.fr: could not connect to host
 yoloseo.com: could not connect to host
 yorname.ml: could not connect to host
 youcontrol.ru: could not connect to host
 youngandunited.nl: did not receive HSTS header
 yourstrongbox.com: could not connect to host
 yout.com: max-age too low: 60000
 yu.gg: did not receive HSTS header
 yuan.ga: did not receive HSTS header
-yuhen.ru: could not connect to host
+yuhen.ru: did not receive HSTS header
 yuko.moe: could not connect to host
 yukontec.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121"  data: no]
 yunzhu.li: did not receive HSTS header
 yunzhu.org: could not connect to host
 yux.io: did not receive HSTS header
 yzal.io: could not connect to host
 z33.ch: did not receive HSTS header
 z3liff.com: could not connect to host
--- a/security/manager/ssl/nsSTSPreloadList.inc
+++ b/security/manager/ssl/nsSTSPreloadList.inc
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /*****************************************************************************/
 /* This is an automatically generated file. If you're not                    */
 /* nsSiteSecurityService.cpp, you shouldn't be #including it.     */
 /*****************************************************************************/
 
 #include <stdint.h>
-const PRTime gPreloadListExpirationTime = INT64_C(1491925073537000);
+const PRTime gPreloadListExpirationTime = INT64_C(1492093338933000);
 
 static const char kSTSHostTable[] = {
   /* "0.me.uk", true */ '0', '.', 'm', 'e', '.', 'u', 'k', '\0',
   /* "007-preisvergleich.de", true */ '0', '0', '7', '-', 'p', 'r', 'e', 'i', 's', 'v', 'e', 'r', 'g', 'l', 'e', 'i', 'c', 'h', '.', 'd', 'e', '\0',
   /* "007sascha.de", true */ '0', '0', '7', 's', 'a', 's', 'c', 'h', 'a', '.', 'd', 'e', '\0',
   /* "00f.net", true */ '0', '0', 'f', '.', 'n', 'e', 't', '\0',
   /* "01electronica.com.ar", true */ '0', '1', 'e', 'l', 'e', 'c', 't', 'r', 'o', 'n', 'i', 'c', 'a', '.', 'c', 'o', 'm', '.', 'a', 'r', '\0',
   /* "01seguridad.com.ar", true */ '0', '1', 's', 'e', 'g', 'u', 'r', 'i', 'd', 'a', 'd', '.', 'c', 'o', 'm', '.', 'a', 'r', '\0',
@@ -152,17 +152,16 @@ static const char kSTSHostTable[] = {
   /* "3r.org.uk", true */ '3', 'r', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "3s-hosting.de", true */ '3', 's', '-', 'h', 'o', 's', 't', 'i', 'n', 'g', '.', 'd', 'e', '\0',
   /* "3sreporting.com", true */ '3', 's', 'r', 'e', 'p', 'o', 'r', 't', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "3timegear.com", true */ '3', 't', 'i', 'm', 'e', 'g', 'e', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "3yearloans.com", true */ '3', 'y', 'e', 'a', 'r', 'l', 'o', 'a', 'n', 's', '.', 'c', 'o', 'm', '\0',
   /* "4-1-where.com", true */ '4', '-', '1', '-', 'w', 'h', 'e', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "4-it.de", true */ '4', '-', 'i', 't', '.', 'd', 'e', '\0',
   /* "403.ch", true */ '4', '0', '3', '.', 'c', 'h', '\0',
-  /* "404.sh", true */ '4', '0', '4', '.', 's', 'h', '\0',
   /* "404404.info", true */ '4', '0', '4', '4', '0', '4', '.', 'i', 'n', 'f', 'o', '\0',
   /* "4096bit.de", true */ '4', '0', '9', '6', 'b', 'i', 't', '.', 'd', 'e', '\0',
   /* "41-where.com", true */ '4', '1', '-', 'w', 'h', 'e', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "41844.de", true */ '4', '1', '8', '4', '4', '.', 'd', 'e', '\0',
   /* "41where.com", true */ '4', '1', 'w', 'h', 'e', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "4500.co.il", true */ '4', '5', '0', '0', '.', 'c', 'o', '.', 'i', 'l', '\0',
   /* "4azino777.ru", true */ '4', 'a', 'z', 'i', 'n', 'o', '7', '7', '7', '.', 'r', 'u', '\0',
   /* "4cclothing.com", true */ '4', 'c', 'c', 'l', 'o', 't', 'h', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
@@ -232,16 +231,17 @@ static const char kSTSHostTable[] = {
   /* "aatf.us", true */ 'a', 'a', 't', 'f', '.', 'u', 's', '\0',
   /* "aati.info", true */ 'a', 'a', 't', 'i', '.', 'i', 'n', 'f', 'o', '\0',
   /* "abacustech.co.jp", true */ 'a', 'b', 'a', 'c', 'u', 's', 't', 'e', 'c', 'h', '.', 'c', 'o', '.', 'j', 'p', '\0',
   /* "abareplace.com", true */ 'a', 'b', 'a', 'r', 'e', 'p', 'l', 'a', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "abc-rz.de", true */ 'a', 'b', 'c', '-', 'r', 'z', '.', 'd', 'e', '\0',
   /* "abc.li", true */ 'a', 'b', 'c', '.', 'l', 'i', '\0',
   /* "abcheck.se", false */ 'a', 'b', 'c', 'h', 'e', 'c', 'k', '.', 's', 'e', '\0',
   /* "abe-elektro.de", true */ 'a', 'b', 'e', '-', 'e', 'l', 'e', 'k', 't', 'r', 'o', '.', 'd', 'e', '\0',
+  /* "abeestrada.com", true */ 'a', 'b', 'e', 'e', 's', 't', 'r', 'a', 'd', 'a', '.', 'c', 'o', 'm', '\0',
   /* "aberdeenjudo.co.uk", true */ 'a', 'b', 'e', 'r', 'd', 'e', 'e', 'n', 'j', 'u', 'd', 'o', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "abeus.com", true */ 'a', 'b', 'e', 'u', 's', '.', 'c', 'o', 'm', '\0',
   /* "abiapp.net", true */ 'a', 'b', 'i', 'a', 'p', 'p', '.', 'n', 'e', 't', '\0',
   /* "abilitynet.org.uk", true */ 'a', 'b', 'i', 'l', 'i', 't', 'y', 'n', 'e', 't', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "abilma.com", true */ 'a', 'b', 'i', 'l', 'm', 'a', '.', 'c', 'o', 'm', '\0',
   /* "abilymp06.net", true */ 'a', 'b', 'i', 'l', 'y', 'm', 'p', '0', '6', '.', 'n', 'e', 't', '\0',
   /* "abiturma.de", true */ 'a', 'b', 'i', 't', 'u', 'r', 'm', 'a', '.', 'd', 'e', '\0',
   /* "ablak-nyilaszaro.info", true */ 'a', 'b', 'l', 'a', 'k', '-', 'n', 'y', 'i', 'l', 'a', 's', 'z', 'a', 'r', 'o', '.', 'i', 'n', 'f', 'o', '\0',
@@ -650,17 +650,16 @@ static const char kSTSHostTable[] = {
   /* "andre-otto.com", true */ 'a', 'n', 'd', 'r', 'e', '-', 'o', 't', 't', 'o', '.', 'c', 'o', 'm', '\0',
   /* "andrea-kiaora.de", true */ 'a', 'n', 'd', 'r', 'e', 'a', '-', 'k', 'i', 'a', 'o', 'r', 'a', '.', 'd', 'e', '\0',
   /* "andrea-wirthensohn.at", true */ 'a', 'n', 'd', 'r', 'e', 'a', '-', 'w', 'i', 'r', 't', 'h', 'e', 'n', 's', 'o', 'h', 'n', '.', 'a', 't', '\0',
   /* "andreaboero.it", true */ 'a', 'n', 'd', 'r', 'e', 'a', 'b', 'o', 'e', 'r', 'o', '.', 'i', 't', '\0',
   /* "andreas-kluge.eu", true */ 'a', 'n', 'd', 'r', 'e', 'a', 's', '-', 'k', 'l', 'u', 'g', 'e', '.', 'e', 'u', '\0',
   /* "andreasfeusi.ch", true */ 'a', 'n', 'd', 'r', 'e', 'a', 's', 'f', 'e', 'u', 's', 'i', '.', 'c', 'h', '\0',
   /* "andreaskluge.eu", true */ 'a', 'n', 'd', 'r', 'e', 'a', 's', 'k', 'l', 'u', 'g', 'e', '.', 'e', 'u', '\0',
   /* "andreaskrasa.com", true */ 'a', 'n', 'd', 'r', 'e', 'a', 's', 'k', 'r', 'a', 's', 'a', '.', 'c', 'o', 'm', '\0',
-  /* "andreastoneman.com", true */ 'a', 'n', 'd', 'r', 'e', 'a', 's', 't', 'o', 'n', 'e', 'm', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "andrepicard.de", true */ 'a', 'n', 'd', 'r', 'e', 'p', 'i', 'c', 'a', 'r', 'd', '.', 'd', 'e', '\0',
   /* "andrewbroekman.com", true */ 'a', 'n', 'd', 'r', 'e', 'w', 'b', 'r', 'o', 'e', 'k', 'm', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "andrewhowden.com", true */ 'a', 'n', 'd', 'r', 'e', 'w', 'h', 'o', 'w', 'd', 'e', 'n', '.', 'c', 'o', 'm', '\0',
   /* "andrewimeson.com", true */ 'a', 'n', 'd', 'r', 'e', 'w', 'i', 'm', 'e', 's', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "andrewin.ru", true */ 'a', 'n', 'd', 'r', 'e', 'w', 'i', 'n', '.', 'r', 'u', '\0',
   /* "andrewmichaud.com", true */ 'a', 'n', 'd', 'r', 'e', 'w', 'm', 'i', 'c', 'h', 'a', 'u', 'd', '.', 'c', 'o', 'm', '\0',
   /* "andrewmichaud.me", true */ 'a', 'n', 'd', 'r', 'e', 'w', 'm', 'i', 'c', 'h', 'a', 'u', 'd', '.', 'm', 'e', '\0',
   /* "andrewregan.me", true */ 'a', 'n', 'd', 'r', 'e', 'w', 'r', 'e', 'g', 'a', 'n', '.', 'm', 'e', '\0',
@@ -738,16 +737,17 @@ static const char kSTSHostTable[] = {
   /* "aojf.fr", true */ 'a', 'o', 'j', 'f', '.', 'f', 'r', '\0',
   /* "aopedeure.nl", true */ 'a', 'o', 'p', 'e', 'd', 'e', 'u', 'r', 'e', '.', 'n', 'l', '\0',
   /* "aosus.org", true */ 'a', 'o', 's', 'u', 's', '.', 'o', 'r', 'g', '\0',
   /* "aovcentrum.nl", true */ 'a', 'o', 'v', 'c', 'e', 'n', 't', 'r', 'u', 'm', '.', 'n', 'l', '\0',
   /* "apachehaus.de", false */ 'a', 'p', 'a', 'c', 'h', 'e', 'h', 'a', 'u', 's', '.', 'd', 'e', '\0',
   /* "apadvantage.com", true */ 'a', 'p', 'a', 'd', 'v', 'a', 'n', 't', 'a', 'g', 'e', '.', 'c', 'o', 'm', '\0',
   /* "aperture-laboratories.science", true */ 'a', 'p', 'e', 'r', 't', 'u', 'r', 'e', '-', 'l', 'a', 'b', 'o', 'r', 'a', 't', 'o', 'r', 'i', 'e', 's', '.', 's', 'c', 'i', 'e', 'n', 'c', 'e', '\0',
   /* "aperturesciencelabs.de", true */ 'a', 'p', 'e', 'r', 't', 'u', 'r', 'e', 's', 'c', 'i', 'e', 'n', 'c', 'e', 'l', 'a', 'b', 's', '.', 'd', 'e', '\0',
+  /* "apervita.net", true */ 'a', 'p', 'e', 'r', 'v', 'i', 't', 'a', '.', 'n', 'e', 't', '\0',
   /* "apexitsolutions.ca", true */ 'a', 'p', 'e', 'x', 'i', 't', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 's', '.', 'c', 'a', '\0',
   /* "api-geek.com", true */ 'a', 'p', 'i', '-', 'g', 'e', 'e', 'k', '.', 'c', 'o', 'm', '\0',
   /* "api.cloudflare.com", false */ 'a', 'p', 'i', '.', 'c', 'l', 'o', 'u', 'd', 'f', 'l', 'a', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "api.intercom.io", true */ 'a', 'p', 'i', '.', 'i', 'n', 't', 'e', 'r', 'c', 'o', 'm', '.', 'i', 'o', '\0',
   /* "api.recurly.com", true */ 'a', 'p', 'i', '.', 'r', 'e', 'c', 'u', 'r', 'l', 'y', '.', 'c', 'o', 'm', '\0',
   /* "api.simple.com", false */ 'a', 'p', 'i', '.', 's', 'i', 'm', 'p', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "api.xero.com", false */ 'a', 'p', 'i', '.', 'x', 'e', 'r', 'o', '.', 'c', 'o', 'm', '\0',
   /* "apis.google.com", true */ 'a', 'p', 'i', 's', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
@@ -868,17 +868,16 @@ static const char kSTSHostTable[] = {
   /* "artlogo.sk", true */ 'a', 'r', 't', 'l', 'o', 'g', 'o', '.', 's', 'k', '\0',
   /* "artmoney.com", true */ 'a', 'r', 't', 'm', 'o', 'n', 'e', 'y', '.', 'c', 'o', 'm', '\0',
   /* "artofwhere.com", true */ 'a', 'r', 't', 'o', 'f', 'w', 'h', 'e', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "artroot.jp", true */ 'a', 'r', 't', 'r', 'o', 'o', 't', '.', 'j', 'p', '\0',
   /* "artspac.es", true */ 'a', 'r', 't', 's', 'p', 'a', 'c', '.', 'e', 's', '\0',
   /* "artweby.cz", true */ 'a', 'r', 't', 'w', 'e', 'b', 'y', '.', 'c', 'z', '\0',
   /* "arty.name", true */ 'a', 'r', 't', 'y', '.', 'n', 'a', 'm', 'e', '\0',
   /* "arubasunsetbeach.com", true */ 'a', 'r', 'u', 'b', 'a', 's', 'u', 'n', 's', 'e', 't', 'b', 'e', 'a', 'c', 'h', '.', 'c', 'o', 'm', '\0',
-  /* "arvamus.eu", true */ 'a', 'r', 'v', 'a', 'm', 'u', 's', '.', 'e', 'u', '\0',
   /* "arvid.io", true */ 'a', 'r', 'v', 'i', 'd', '.', 'i', 'o', '\0',
   /* "arw.me", true */ 'a', 'r', 'w', '.', 'm', 'e', '\0',
   /* "aryasenna.net", true */ 'a', 'r', 'y', 'a', 's', 'e', 'n', 'n', 'a', '.', 'n', 'e', 't', '\0',
   /* "arzaroth.com", false */ 'a', 'r', 'z', 'a', 'r', 'o', 't', 'h', '.', 'c', 'o', 'm', '\0',
   /* "arzid.com", true */ 'a', 'r', 'z', 'i', 'd', '.', 'c', 'o', 'm', '\0',
   /* "as200753.com", true */ 'a', 's', '2', '0', '0', '7', '5', '3', '.', 'c', 'o', 'm', '\0',
   /* "as200753.net", true */ 'a', 's', '2', '0', '0', '7', '5', '3', '.', 'n', 'e', 't', '\0',
   /* "asadatec.de", true */ 'a', 's', 'a', 'd', 'a', 't', 'e', 'c', '.', 'd', 'e', '\0',
@@ -934,16 +933,17 @@ static const char kSTSHostTable[] = {
   /* "atishchenko.com", true */ 'a', 't', 'i', 's', 'h', 'c', 'h', 'e', 'n', 'k', 'o', '.', 'c', 'o', 'm', '\0',
   /* "atisoft.biz", true */ 'a', 't', 'i', 's', 'o', 'f', 't', '.', 'b', 'i', 'z', '\0',
   /* "atisoft.com.tr", true */ 'a', 't', 'i', 's', 'o', 'f', 't', '.', 'c', 'o', 'm', '.', 't', 'r', '\0',
   /* "atisoft.net", true */ 'a', 't', 'i', 's', 'o', 'f', 't', '.', 'n', 'e', 't', '\0',
   /* "atisoft.net.tr", true */ 'a', 't', 'i', 's', 'o', 'f', 't', '.', 'n', 'e', 't', '.', 't', 'r', '\0',
   /* "atisoft.web.tr", true */ 'a', 't', 'i', 's', 'o', 'f', 't', '.', 'w', 'e', 'b', '.', 't', 'r', '\0',
   /* "atitude.com", true */ 'a', 't', 'i', 't', 'u', 'd', 'e', '.', 'c', 'o', 'm', '\0',
   /* "atlantichomes.com.au", true */ 'a', 't', 'l', 'a', 'n', 't', 'i', 'c', 'h', 'o', 'm', 'e', 's', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
+  /* "atlantischild.hu", true */ 'a', 't', 'l', 'a', 'n', 't', 'i', 's', 'c', 'h', 'i', 'l', 'd', '.', 'h', 'u', '\0',
   /* "atlassian.net", true */ 'a', 't', 'l', 'a', 's', 's', 'i', 'a', 'n', '.', 'n', 'e', 't', '\0',
   /* "atletika.hu", true */ 'a', 't', 'l', 'e', 't', 'i', 'k', 'a', '.', 'h', 'u', '\0',
   /* "atnis.com", true */ 'a', 't', 'n', 'i', 's', '.', 'c', 'o', 'm', '\0',
   /* "atolm.net", true */ 'a', 't', 'o', 'l', 'm', '.', 'n', 'e', 't', '\0',
   /* "atom-china.org", true */ 'a', 't', 'o', 'm', '-', 'c', 'h', 'i', 'n', 'a', '.', 'o', 'r', 'g', '\0',
   /* "atom.solutions", true */ 'a', 't', 'o', 'm', '.', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 's', '\0',
   /* "atombase.org", true */ 'a', 't', 'o', 'm', 'b', 'a', 's', 'e', '.', 'o', 'r', 'g', '\0',
   /* "atrinik.org", true */ 'a', 't', 'r', 'i', 'n', 'i', 'k', '.', 'o', 'r', 'g', '\0',
@@ -989,22 +989,22 @@ static const char kSTSHostTable[] = {
   /* "autoauctionsohio.com", true */ 'a', 'u', 't', 'o', 'a', 'u', 'c', 't', 'i', 'o', 'n', 's', 'o', 'h', 'i', 'o', '.', 'c', 'o', 'm', '\0',
   /* "autoauctionsvirginia.com", true */ 'a', 'u', 't', 'o', 'a', 'u', 'c', 't', 'i', 'o', 'n', 's', 'v', 'i', 'r', 'g', 'i', 'n', 'i', 'a', '.', 'c', 'o', 'm', '\0',
   /* "autodeploy.it", true */ 'a', 'u', 't', 'o', 'd', 'e', 'p', 'l', 'o', 'y', '.', 'i', 't', '\0',
   /* "autoledky.sk", true */ 'a', 'u', 't', 'o', 'l', 'e', 'd', 'k', 'y', '.', 's', 'k', '\0',
   /* "automacity.com", true */ 'a', 'u', 't', 'o', 'm', 'a', 'c', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "autoskola.hr", true */ 'a', 'u', 't', 'o', 's', 'k', 'o', 'l', 'a', '.', 'h', 'r', '\0',
   /* "autoskole.hr", true */ 'a', 'u', 't', 'o', 's', 'k', 'o', 'l', 'e', '.', 'h', 'r', '\0',
   /* "auxetek.se", true */ 'a', 'u', 'x', 'e', 't', 'e', 'k', '.', 's', 'e', '\0',
+  /* "auxiliumincrementum.co.uk", true */ 'a', 'u', 'x', 'i', 'l', 'i', 'u', 'm', 'i', 'n', 'c', 'r', 'e', 'm', 'e', 'n', 't', 'u', 'm', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "ava-creative.de", true */ 'a', 'v', 'a', '-', 'c', 'r', 'e', 'a', 't', 'i', 'v', 'e', '.', 'd', 'e', '\0',
   /* "avaaz.org", true */ 'a', 'v', 'a', 'a', 'z', '.', 'o', 'r', 'g', '\0',
   /* "avacariu.me", true */ 'a', 'v', 'a', 'c', 'a', 'r', 'i', 'u', '.', 'm', 'e', '\0',
   /* "avalon-island.ru", true */ 'a', 'v', 'a', 'l', 'o', 'n', '-', 'i', 's', 'l', 'a', 'n', 'd', '.', 'r', 'u', '\0',
   /* "avanovum.de", true */ 'a', 'v', 'a', 'n', 'o', 'v', 'u', 'm', '.', 'd', 'e', '\0',
-  /* "avantmfg.com", true */ 'a', 'v', 'a', 'n', 't', 'm', 'f', 'g', '.', 'c', 'o', 'm', '\0',
   /* "avaq.fr", true */ 'a', 'v', 'a', 'q', '.', 'f', 'r', '\0',
   /* "avarty.com", true */ 'a', 'v', 'a', 'r', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "avarty.net", true */ 'a', 'v', 'a', 'r', 't', 'y', '.', 'n', 'e', 't', '\0',
   /* "avastantivirus.ro", true */ 'a', 'v', 'a', 's', 't', 'a', 'n', 't', 'i', 'v', 'i', 'r', 'u', 's', '.', 'r', 'o', '\0',
   /* "avdelivers.com", true */ 'a', 'v', 'd', 'e', 'l', 'i', 'v', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "avenueeyecare.com", true */ 'a', 'v', 'e', 'n', 'u', 'e', 'e', 'y', 'e', 'c', 'a', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "avg.club", true */ 'a', 'v', 'g', '.', 'c', 'l', 'u', 'b', '\0',
   /* "aviacao.pt", true */ 'a', 'v', 'i', 'a', 'c', 'a', 'o', '.', 'p', 't', '\0',
@@ -1037,17 +1037,16 @@ static const char kSTSHostTable[] = {
   /* "azazy.net", true */ 'a', 'z', 'a', 'z', 'y', '.', 'n', 'e', 't', '\0',
   /* "azbuki.by", true */ 'a', 'z', 'b', 'u', 'k', 'i', '.', 'b', 'y', '\0',
   /* "azimut.fr", true */ 'a', 'z', 'i', 'm', 'u', 't', '.', 'f', 'r', '\0',
   /* "azino777.ru", true */ 'a', 'z', 'i', 'n', 'o', '7', '7', '7', '.', 'r', 'u', '\0',
   /* "azirevpn.com", true */ 'a', 'z', 'i', 'r', 'e', 'v', 'p', 'n', '.', 'c', 'o', 'm', '\0',
   /* "azlk-team.ru", true */ 'a', 'z', 'l', 'k', '-', 't', 'e', 'a', 'm', '.', 'r', 'u', '\0',
   /* "azort.com", true */ 'a', 'z', 'o', 'r', 't', '.', 'c', 'o', 'm', '\0',
   /* "aztrix.me", true */ 'a', 'z', 't', 'r', 'i', 'x', '.', 'm', 'e', '\0',
-  /* "azuxul.fr", true */ 'a', 'z', 'u', 'x', 'u', 'l', '.', 'f', 'r', '\0',
   /* "azzag.co.uk", true */ 'a', 'z', 'z', 'a', 'g', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "azzorti.com", false */ 'a', 'z', 'z', 'o', 'r', 't', 'i', '.', 'c', 'o', 'm', '\0',
   /* "b-root-force.de", true */ 'b', '-', 'r', 'o', 'o', 't', '-', 'f', 'o', 'r', 'c', 'e', '.', 'd', 'e', '\0',
   /* "b1c1l1.com", true */ 'b', '1', 'c', '1', 'l', '1', '.', 'c', 'o', 'm', '\0',
   /* "b2and.com", false */ 'b', '2', 'a', 'n', 'd', '.', 'c', 'o', 'm', '\0',
   /* "b303.me", true */ 'b', '3', '0', '3', '.', 'm', 'e', '\0',
   /* "b64.club", true */ 'b', '6', '4', '.', 'c', 'l', 'u', 'b', '\0',
   /* "baalsworld.de", true */ 'b', 'a', 'a', 'l', 's', 'w', 'o', 'r', 'l', 'd', '.', 'd', 'e', '\0',
@@ -1301,17 +1300,16 @@ static const char kSTSHostTable[] = {
   /* "betaworx.de", true */ 'b', 'e', 't', 'a', 'w', 'o', 'r', 'x', '.', 'd', 'e', '\0',
   /* "betaworx.eu", true */ 'b', 'e', 't', 'a', 'w', 'o', 'r', 'x', '.', 'e', 'u', '\0',
   /* "betcafearena.ro", false */ 'b', 'e', 't', 'c', 'a', 'f', 'e', 'a', 'r', 'e', 'n', 'a', '.', 'r', 'o', '\0',
   /* "betonmoney.com", true */ 'b', 'e', 't', 'o', 'n', 'm', 'o', 'n', 'e', 'y', '.', 'c', 'o', 'm', '\0',
   /* "betpamm.com", true */ 'b', 'e', 't', 'p', 'a', 'm', 'm', '.', 'c', 'o', 'm', '\0',
   /* "betterbabyshop.com.au", true */ 'b', 'e', 't', 't', 'e', 'r', 'b', 'a', 'b', 'y', 's', 'h', 'o', 'p', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "betterhelp.com", true */ 'b', 'e', 't', 't', 'e', 'r', 'h', 'e', 'l', 'p', '.', 'c', 'o', 'm', '\0',
   /* "betterlifemakers.com", true */ 'b', 'e', 't', 't', 'e', 'r', 'l', 'i', 'f', 'e', 'm', 'a', 'k', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
-  /* "bettertest.it", true */ 'b', 'e', 't', 't', 'e', 'r', 't', 'e', 's', 't', '.', 'i', 't', '\0',
   /* "bettingbusiness.ru", true */ 'b', 'e', 't', 't', 'i', 'n', 'g', 'b', 'u', 's', 'i', 'n', 'e', 's', 's', '.', 'r', 'u', '\0',
   /* "bettrlifeapp.com", true */ 'b', 'e', 't', 't', 'r', 'l', 'i', 'f', 'e', 'a', 'p', 'p', '.', 'c', 'o', 'm', '\0',
   /* "betulashop.ch", true */ 'b', 'e', 't', 'u', 'l', 'a', 's', 'h', 'o', 'p', '.', 'c', 'h', '\0',
   /* "beulen.email", true */ 'b', 'e', 'u', 'l', 'e', 'n', '.', 'e', 'm', 'a', 'i', 'l', '\0',
   /* "bevinco2020.com", true */ 'b', 'e', 'v', 'i', 'n', 'c', 'o', '2', '0', '2', '0', '.', 'c', 'o', 'm', '\0',
   /* "bevinsco.org", true */ 'b', 'e', 'v', 'i', 'n', 's', 'c', 'o', '.', 'o', 'r', 'g', '\0',
   /* "bewerbungsfibel.de", true */ 'b', 'e', 'w', 'e', 'r', 'b', 'u', 'n', 'g', 's', 'f', 'i', 'b', 'e', 'l', '.', 'd', 'e', '\0',
   /* "bexit-hosting.nl", true */ 'b', 'e', 'x', 'i', 't', '-', 'h', 'o', 's', 't', 'i', 'n', 'g', '.', 'n', 'l', '\0',
@@ -1588,16 +1586,17 @@ static const char kSTSHostTable[] = {
   /* "bodrumfarm.com", true */ 'b', 'o', 'd', 'r', 'u', 'm', 'f', 'a', 'r', 'm', '.', 'c', 'o', 'm', '\0',
   /* "boeddhashop.nl", true */ 'b', 'o', 'e', 'd', 'd', 'h', 'a', 's', 'h', 'o', 'p', '.', 'n', 'l', '\0',
   /* "boernecancerfonden.dk", true */ 'b', 'o', 'e', 'r', 'n', 'e', 'c', 'a', 'n', 'c', 'e', 'r', 'f', 'o', 'n', 'd', 'e', 'n', '.', 'd', 'k', '\0',
   /* "bohramt.de", true */ 'b', 'o', 'h', 'r', 'a', 'm', 't', '.', 'd', 'e', '\0',
   /* "boilesen.com", true */ 'b', 'o', 'i', 'l', 'e', 's', 'e', 'n', '.', 'c', 'o', 'm', '\0',
   /* "boiseonlinemall.com", true */ 'b', 'o', 'i', 's', 'e', 'o', 'n', 'l', 'i', 'n', 'e', 'm', 'a', 'l', 'l', '.', 'c', 'o', 'm', '\0',
   /* "bokeyy.com", true */ 'b', 'o', 'k', 'e', 'y', 'y', '.', 'c', 'o', 'm', '\0',
   /* "bolt.cm", true */ 'b', 'o', 'l', 't', '.', 'c', 'm', '\0',
+  /* "boltdata.io", false */ 'b', 'o', 'l', 't', 'd', 'a', 't', 'a', '.', 'i', 'o', '\0',
   /* "bombsquad.studio", true */ 'b', 'o', 'm', 'b', 's', 'q', 'u', 'a', 'd', '.', 's', 't', 'u', 'd', 'i', 'o', '\0',
   /* "bondskampeerder.nl", true */ 'b', 'o', 'n', 'd', 's', 'k', 'a', 'm', 'p', 'e', 'e', 'r', 'd', 'e', 'r', '.', 'n', 'l', '\0',
   /* "bonifacius.be", true */ 'b', 'o', 'n', 'i', 'f', 'a', 'c', 'i', 'u', 's', '.', 'b', 'e', '\0',
   /* "bonnyprints.at", true */ 'b', 'o', 'n', 'n', 'y', 'p', 'r', 'i', 'n', 't', 's', '.', 'a', 't', '\0',
   /* "bonnyprints.ch", true */ 'b', 'o', 'n', 'n', 'y', 'p', 'r', 'i', 'n', 't', 's', '.', 'c', 'h', '\0',
   /* "bonnyprints.fr", true */ 'b', 'o', 'n', 'n', 'y', 'p', 'r', 'i', 'n', 't', 's', '.', 'f', 'r', '\0',
   /* "bonobo.cz", true */ 'b', 'o', 'n', 'o', 'b', 'o', '.', 'c', 'z', '\0',
   /* "boof.com", true */ 'b', 'o', 'o', 'f', '.', 'c', 'o', 'm', '\0',
@@ -1684,16 +1683,17 @@ static const char kSTSHostTable[] = {
   /* "breeswish.org", true */ 'b', 'r', 'e', 'e', 's', 'w', 'i', 's', 'h', '.', 'o', 'r', 'g', '\0',
   /* "brefy.com", true */ 'b', 'r', 'e', 'f', 'y', '.', 'c', 'o', 'm', '\0',
   /* "bregnedalsystems.dk", true */ 'b', 'r', 'e', 'g', 'n', 'e', 'd', 'a', 'l', 's', 'y', 's', 't', 'e', 'm', 's', '.', 'd', 'k', '\0',
   /* "breitbild-beamer.de", true */ 'b', 'r', 'e', 'i', 't', 'b', 'i', 'l', 'd', '-', 'b', 'e', 'a', 'm', 'e', 'r', '.', 'd', 'e', '\0',
   /* "brejoc.com", true */ 'b', 'r', 'e', 'j', 'o', 'c', '.', 'c', 'o', 'm', '\0',
   /* "brettabel.com", true */ 'b', 'r', 'e', 't', 't', 'a', 'b', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "bretz-hufer.de", true */ 'b', 'r', 'e', 't', 'z', '-', 'h', 'u', 'f', 'e', 'r', '.', 'd', 'e', '\0',
   /* "brevboxar.se", true */ 'b', 'r', 'e', 'v', 'b', 'o', 'x', 'a', 'r', '.', 's', 'e', '\0',
+  /* "brewtrackr.com", true */ 'b', 'r', 'e', 'w', 't', 'r', 'a', 'c', 'k', 'r', '.', 'c', 'o', 'm', '\0',
   /* "brianpcurran.com", true */ 'b', 'r', 'i', 'a', 'n', 'p', 'c', 'u', 'r', 'r', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "brid.gy", true */ 'b', 'r', 'i', 'd', '.', 'g', 'y', '\0',
   /* "bridgeout.com", true */ 'b', 'r', 'i', 'd', 'g', 'e', 'o', 'u', 't', '.', 'c', 'o', 'm', '\0',
   /* "bridholm.se", true */ 'b', 'r', 'i', 'd', 'h', 'o', 'l', 'm', '.', 's', 'e', '\0',
   /* "brightonbank.com", true */ 'b', 'r', 'i', 'g', 'h', 't', 'o', 'n', 'b', 'a', 'n', 'k', '.', 'c', 'o', 'm', '\0',
   /* "brightstarkids.co.uk", false */ 'b', 'r', 'i', 'g', 'h', 't', 's', 't', 'a', 'r', 'k', 'i', 'd', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "brightstarkids.com.au", false */ 'b', 'r', 'i', 'g', 'h', 't', 's', 't', 'a', 'r', 'k', 'i', 'd', 's', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "brightstarkids.net", false */ 'b', 'r', 'i', 'g', 'h', 't', 's', 't', 'a', 'r', 'k', 'i', 'd', 's', '.', 'n', 'e', 't', '\0',
@@ -1853,16 +1853,17 @@ static const char kSTSHostTable[] = {
   /* "bytema.cz", true */ 'b', 'y', 't', 'e', 'm', 'a', '.', 'c', 'z', '\0',
   /* "bytema.re", true */ 'b', 'y', 't', 'e', 'm', 'a', '.', 'r', 'e', '\0',
   /* "bytesatwork.de", true */ 'b', 'y', 't', 'e', 's', 'a', 't', 'w', 'o', 'r', 'k', '.', 'd', 'e', '\0',
   /* "bytesatwork.eu", true */ 'b', 'y', 't', 'e', 's', 'a', 't', 'w', 'o', 'r', 'k', '.', 'e', 'u', '\0',
   /* "byteshark.org", true */ 'b', 'y', 't', 'e', 's', 'h', 'a', 'r', 'k', '.', 'o', 'r', 'g', '\0',
   /* "bytesofcode.de", true */ 'b', 'y', 't', 'e', 's', 'o', 'f', 'c', 'o', 'd', 'e', '.', 'd', 'e', '\0',
   /* "bytesund.biz", true */ 'b', 'y', 't', 'e', 's', 'u', 'n', 'd', '.', 'b', 'i', 'z', '\0',
   /* "bytesunlimited.com", true */ 'b', 'y', 't', 'e', 's', 'u', 'n', 'l', 'i', 'm', 'i', 't', 'e', 'd', '.', 'c', 'o', 'm', '\0',
+  /* "bytesystems.com", true */ 'b', 'y', 't', 'e', 's', 'y', 's', 't', 'e', 'm', 's', '.', 'c', 'o', 'm', '\0',
   /* "byteturtle.eu", true */ 'b', 'y', 't', 'e', 't', 'u', 'r', 't', 'l', 'e', '.', 'e', 'u', '\0',
   /* "bythisverse.com", true */ 'b', 'y', 't', 'h', 'i', 's', 'v', 'e', 'r', 's', 'e', '.', 'c', 'o', 'm', '\0',
   /* "bziaks.xyz", true */ 'b', 'z', 'i', 'a', 'k', 's', '.', 'x', 'y', 'z', '\0',
   /* "bztech.com.br", true */ 'b', 'z', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "bzv-fr.eu", true */ 'b', 'z', 'v', '-', 'f', 'r', '.', 'e', 'u', '\0',
   /* "c-shock.org", true */ 'c', '-', 's', 'h', 'o', 'c', 'k', '.', 'o', 'r', 'g', '\0',
   /* "c-webdesign.net", true */ 'c', '-', 'w', 'e', 'b', 'd', 'e', 's', 'i', 'g', 'n', '.', 'n', 'e', 't', '\0',
   /* "c-world.co.uk", true */ 'c', '-', 'w', 'o', 'r', 'l', 'd', '.', 'c', 'o', '.', 'u', 'k', '\0',
@@ -2335,17 +2336,16 @@ static const char kSTSHostTable[] = {
   /* "cloud-surfer.net", true */ 'c', 'l', 'o', 'u', 'd', '-', 's', 'u', 'r', 'f', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "cloud.google.com", true */ 'c', 'l', 'o', 'u', 'd', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "cloud.gov", false */ 'c', 'l', 'o', 'u', 'd', '.', 'g', 'o', 'v', '\0',
   /* "cloudapps.digital", true */ 'c', 'l', 'o', 'u', 'd', 'a', 'p', 'p', 's', '.', 'd', 'i', 'g', 'i', 't', 'a', 'l', '\0',
   /* "cloudbolin.es", true */ 'c', 'l', 'o', 'u', 'd', 'b', 'o', 'l', 'i', 'n', '.', 'e', 's', '\0',
   /* "cloudcaprice.net", true */ 'c', 'l', 'o', 'u', 'd', 'c', 'a', 'p', 'r', 'i', 'c', 'e', '.', 'n', 'e', 't', '\0',
   /* "cloudflareonazure.com", true */ 'c', 'l', 'o', 'u', 'd', 'f', 'l', 'a', 'r', 'e', 'o', 'n', 'a', 'z', 'u', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "cloudily.com", true */ 'c', 'l', 'o', 'u', 'd', 'i', 'l', 'y', '.', 'c', 'o', 'm', '\0',
-  /* "cloudlink.club", true */ 'c', 'l', 'o', 'u', 'd', 'l', 'i', 'n', 'k', '.', 'c', 'l', 'u', 'b', '\0',
   /* "cloudmigrator365.com", true */ 'c', 'l', 'o', 'u', 'd', 'm', 'i', 'g', 'r', 'a', 't', 'o', 'r', '3', '6', '5', '.', 'c', 'o', 'm', '\0',
   /* "cloudpagesforwork.com", true */ 'c', 'l', 'o', 'u', 'd', 'p', 'a', 'g', 'e', 's', 'f', 'o', 'r', 'w', 'o', 'r', 'k', '.', 'c', 'o', 'm', '\0',
   /* "cloudpebble.net", true */ 'c', 'l', 'o', 'u', 'd', 'p', 'e', 'b', 'b', 'l', 'e', '.', 'n', 'e', 't', '\0',
   /* "cloudpipes.com", true */ 'c', 'l', 'o', 'u', 'd', 'p', 'i', 'p', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "clouds.webcam", true */ 'c', 'l', 'o', 'u', 'd', 's', '.', 'w', 'e', 'b', 'c', 'a', 'm', '\0',
   /* "cloudsecurityalliance.org", true */ 'c', 'l', 'o', 'u', 'd', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', 'a', 'l', 'l', 'i', 'a', 'n', 'c', 'e', '.', 'o', 'r', 'g', '\0',
   /* "cloudspace-analytics.com", true */ 'c', 'l', 'o', 'u', 'd', 's', 'p', 'a', 'c', 'e', '-', 'a', 'n', 'a', 'l', 'y', 't', 'i', 'c', 's', '.', 'c', 'o', 'm', '\0',
   /* "cloudspotterapp.com", true */ 'c', 'l', 'o', 'u', 'd', 's', 'p', 'o', 't', 't', 'e', 'r', 'a', 'p', 'p', '.', 'c', 'o', 'm', '\0',
@@ -2356,16 +2356,17 @@ static const char kSTSHostTable[] = {
   /* "clowde.in", true */ 'c', 'l', 'o', 'w', 'd', 'e', '.', 'i', 'n', '\0',
   /* "clownish.co.il", true */ 'c', 'l', 'o', 'w', 'n', 'i', 's', 'h', '.', 'c', 'o', '.', 'i', 'l', '\0',
   /* "cloxy.com", true */ 'c', 'l', 'o', 'x', 'y', '.', 'c', 'o', 'm', '\0',
   /* "clr3.com", true */ 'c', 'l', 'r', '3', '.', 'c', 'o', 'm', '\0',
   /* "clsimplex.com", true */ 'c', 'l', 's', 'i', 'm', 'p', 'l', 'e', 'x', '.', 'c', 'o', 'm', '\0',
   /* "clu-in.org", true */ 'c', 'l', 'u', '-', 'i', 'n', '.', 'o', 'r', 'g', '\0',
   /* "club-is.ru", true */ 'c', 'l', 'u', 'b', '-', 'i', 's', '.', 'r', 'u', '\0',
   /* "clubeohara.com", true */ 'c', 'l', 'u', 'b', 'e', 'o', 'h', 'a', 'r', 'a', '.', 'c', 'o', 'm', '\0',
+  /* "clubmate.rocks", true */ 'c', 'l', 'u', 'b', 'm', 'a', 't', 'e', '.', 'r', 'o', 'c', 'k', 's', '\0',
   /* "clubmini.jp", true */ 'c', 'l', 'u', 'b', 'm', 'i', 'n', 'i', '.', 'j', 'p', '\0',
   /* "clubmix.co.kr", true */ 'c', 'l', 'u', 'b', 'm', 'i', 'x', '.', 'c', 'o', '.', 'k', 'r', '\0',
   /* "clubon.space", true */ 'c', 'l', 'u', 'b', 'o', 'n', '.', 's', 'p', 'a', 'c', 'e', '\0',
   /* "clustermaze.net", true */ 'c', 'l', 'u', 's', 't', 'e', 'r', 'm', 'a', 'z', 'e', '.', 'n', 'e', 't', '\0',
   /* "clvrwebdesign.com", true */ 'c', 'l', 'v', 'r', 'w', 'e', 'b', 'd', 'e', 's', 'i', 'g', 'n', '.', 'c', 'o', 'm', '\0',
   /* "clvs7.com", true */ 'c', 'l', 'v', 's', '7', '.', 'c', 'o', 'm', '\0',
   /* "clycat.ru", true */ 'c', 'l', 'y', 'c', 'a', 't', '.', 'r', 'u', '\0',
   /* "cmahy.be", true */ 'c', 'm', 'a', 'h', 'y', '.', 'b', 'e', '\0',
@@ -2401,16 +2402,17 @@ static const char kSTSHostTable[] = {
   /* "codeit.guru", true */ 'c', 'o', 'd', 'e', 'i', 't', '.', 'g', 'u', 'r', 'u', '\0',
   /* "codelayer.ca", true */ 'c', 'o', 'd', 'e', 'l', 'a', 'y', 'e', 'r', '.', 'c', 'a', '\0',
   /* "codelove.de", true */ 'c', 'o', 'd', 'e', 'l', 'o', 'v', 'e', '.', 'd', 'e', '\0',
   /* "codemonkeyrawks.net", true */ 'c', 'o', 'd', 'e', 'm', 'o', 'n', 'k', 'e', 'y', 'r', 'a', 'w', 'k', 's', '.', 'n', 'e', 't', '\0',
   /* "codeplay.org", true */ 'c', 'o', 'd', 'e', 'p', 'l', 'a', 'y', '.', 'o', 'r', 'g', '\0',
   /* "codepoet.de", true */ 'c', 'o', 'd', 'e', 'p', 'o', 'e', 't', '.', 'd', 'e', '\0',
   /* "codepoints.net", true */ 'c', 'o', 'd', 'e', 'p', 'o', 'i', 'n', 't', 's', '.', 'n', 'e', 't', '\0',
   /* "codepref.com", true */ 'c', 'o', 'd', 'e', 'p', 'r', 'e', 'f', '.', 'c', 'o', 'm', '\0',
+  /* "codepult.com", true */ 'c', 'o', 'd', 'e', 'p', 'u', 'l', 't', '.', 'c', 'o', 'm', '\0',
   /* "codera.co.uk", true */ 'c', 'o', 'd', 'e', 'r', 'a', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "codereview.appspot.com", false */ 'c', 'o', 'd', 'e', 'r', 'e', 'v', 'i', 'e', 'w', '.', 'a', 'p', 'p', 's', 'p', 'o', 't', '.', 'c', 'o', 'm', '\0',
   /* "codereview.chromium.org", false */ 'c', 'o', 'd', 'e', 'r', 'e', 'v', 'i', 'e', 'w', '.', 'c', 'h', 'r', 'o', 'm', 'i', 'u', 'm', '.', 'o', 'r', 'g', '\0',
   /* "coderhangout.com", true */ 'c', 'o', 'd', 'e', 'r', 'h', 'a', 'n', 'g', 'o', 'u', 't', '.', 'c', 'o', 'm', '\0',
   /* "codesport.io", true */ 'c', 'o', 'd', 'e', 's', 'p', 'o', 'r', 't', '.', 'i', 'o', '\0',
   /* "codeux.com", true */ 'c', 'o', 'd', 'e', 'u', 'x', '.', 'c', 'o', 'm', '\0',
   /* "codewild.de", true */ 'c', 'o', 'd', 'e', 'w', 'i', 'l', 'd', '.', 'd', 'e', '\0',
   /* "codewiththepros.org", true */ 'c', 'o', 'd', 'e', 'w', 'i', 't', 'h', 't', 'h', 'e', 'p', 'r', 'o', 's', '.', 'o', 'r', 'g', '\0',
@@ -2566,16 +2568,17 @@ static const char kSTSHostTable[] = {
   /* "coolviewthermostat.com", true */ 'c', 'o', 'o', 'l', 'v', 'i', 'e', 'w', 't', 'h', 'e', 'r', 'm', 'o', 's', 't', 'a', 't', '.', 'c', 'o', 'm', '\0',
   /* "coopens.com", true */ 'c', 'o', 'o', 'p', 'e', 'n', 's', '.', 'c', 'o', 'm', '\0',
   /* "coore.jp", true */ 'c', 'o', 'o', 'r', 'e', '.', 'j', 'p', '\0',
   /* "cooxa.com", true */ 'c', 'o', 'o', 'x', 'a', '.', 'c', 'o', 'm', '\0',
   /* "copperhead.co", true */ 'c', 'o', 'p', 'p', 'e', 'r', 'h', 'e', 'a', 'd', '.', 'c', 'o', '\0',
   /* "copypoison.com", true */ 'c', 'o', 'p', 'y', 'p', 'o', 'i', 's', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "copytrack.com", true */ 'c', 'o', 'p', 'y', 't', 'r', 'a', 'c', 'k', '.', 'c', 'o', 'm', '\0',
   /* "cor-ser.es", true */ 'c', 'o', 'r', '-', 's', 'e', 'r', '.', 'e', 's', '\0',
+  /* "coralrosado.com.br", true */ 'c', 'o', 'r', 'a', 'l', 'r', 'o', 's', 'a', 'd', 'o', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "corbinhesse.com", true */ 'c', 'o', 'r', 'b', 'i', 'n', 'h', 'e', 's', 's', 'e', '.', 'c', 'o', 'm', '\0',
   /* "cordlessdog.com", true */ 'c', 'o', 'r', 'd', 'l', 'e', 's', 's', 'd', 'o', 'g', '.', 'c', 'o', 'm', '\0',
   /* "core-networks.de", true */ 'c', 'o', 'r', 'e', '-', 'n', 'e', 't', 'w', 'o', 'r', 'k', 's', '.', 'd', 'e', '\0',
   /* "coredump.gr", true */ 'c', 'o', 'r', 'e', 'd', 'u', 'm', 'p', '.', 'g', 'r', '\0',
   /* "coreinfrastructure.org", true */ 'c', 'o', 'r', 'e', 'i', 'n', 'f', 'r', 'a', 's', 't', 'r', 'u', 'c', 't', 'u', 'r', 'e', '.', 'o', 'r', 'g', '\0',
   /* "coreless-stretchfilm.com", true */ 'c', 'o', 'r', 'e', 'l', 'e', 's', 's', '-', 's', 't', 'r', 'e', 't', 'c', 'h', 'f', 'i', 'l', 'm', '.', 'c', 'o', 'm', '\0',
   /* "corepartners.com.ua", true */ 'c', 'o', 'r', 'e', 'p', 'a', 'r', 't', 'n', 'e', 'r', 's', '.', 'c', 'o', 'm', '.', 'u', 'a', '\0',
   /* "corgi.party", true */ 'c', 'o', 'r', 'g', 'i', '.', 'p', 'a', 'r', 't', 'y', '\0',
@@ -2647,16 +2650,17 @@ static const char kSTSHostTable[] = {
   /* "creative-wave.fr", true */ 'c', 'r', 'e', 'a', 't', 'i', 'v', 'e', '-', 'w', 'a', 'v', 'e', '.', 'f', 'r', '\0',
   /* "creativeartifice.com", true */ 'c', 'r', 'e', 'a', 't', 'i', 'v', 'e', 'a', 'r', 't', 'i', 'f', 'i', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "creativecaptiv.es", true */ 'c', 'r', 'e', 'a', 't', 'i', 'v', 'e', 'c', 'a', 'p', 't', 'i', 'v', '.', 'e', 's', '\0',
   /* "credential.eu", true */ 'c', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', '.', 'e', 'u', '\0',
   /* "creditclear.com.au", true */ 'c', 'r', 'e', 'd', 'i', 't', 'c', 'l', 'e', 'a', 'r', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "crediteo.pl", true */ 'c', 'r', 'e', 'd', 'i', 't', 'e', 'o', '.', 'p', 'l', '\0',
   /* "creditkarma.com", true */ 'c', 'r', 'e', 'd', 'i', 't', 'k', 'a', 'r', 'm', 'a', '.', 'c', 'o', 'm', '\0',
   /* "creditproautos.com", false */ 'c', 'r', 'e', 'd', 'i', 't', 'p', 'r', 'o', 'a', 'u', 't', 'o', 's', '.', 'c', 'o', 'm', '\0',
+  /* "creep.im", true */ 'c', 'r', 'e', 'e', 'p', '.', 'i', 'm', '\0',
   /* "crefelder.com", true */ 'c', 'r', 'e', 'f', 'e', 'l', 'd', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "crepererum.net", true */ 'c', 'r', 'e', 'p', 'e', 'r', 'e', 'r', 'u', 'm', '.', 'n', 'e', 't', '\0',
   /* "crestasantos.com", true */ 'c', 'r', 'e', 's', 't', 'a', 's', 'a', 'n', 't', 'o', 's', '.', 'c', 'o', 'm', '\0',
   /* "crimson.no", true */ 'c', 'r', 'i', 'm', 's', 'o', 'n', '.', 'n', 'o', '\0',
   /* "cristiandeluxe.com", true */ 'c', 'r', 'i', 's', 't', 'i', 'a', 'n', 'd', 'e', 'l', 'u', 'x', 'e', '.', 'c', 'o', 'm', '\0',
   /* "critcola.com", true */ 'c', 'r', 'i', 't', 'c', 'o', 'l', 'a', '.', 'c', 'o', 'm', '\0',
   /* "criticalsurveys.co.uk", true */ 'c', 'r', 'i', 't', 'i', 'c', 'a', 'l', 's', 'u', 'r', 'v', 'e', 'y', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "crl-autos.com", true */ 'c', 'r', 'l', '-', 'a', 'u', 't', 'o', 's', '.', 'c', 'o', 'm', '\0',
@@ -2831,16 +2835,17 @@ static const char kSTSHostTable[] = {
   /* "czerno.com", true */ 'c', 'z', 'e', 'r', 'n', 'o', '.', 'c', 'o', 'm', '\0',
   /* "czk.mk", true */ 'c', 'z', 'k', '.', 'm', 'k', '\0',
   /* "czlx.co", true */ 'c', 'z', 'l', 'x', '.', 'c', 'o', '\0',
   /* "d-20.fr", true */ 'd', '-', '2', '0', '.', 'f', 'r', '\0',
   /* "d-designerin.de", true */ 'd', '-', 'd', 'e', 's', 'i', 'g', 'n', 'e', 'r', 'i', 'n', '.', 'd', 'e', '\0',
   /* "d-quantum.com", true */ 'd', '-', 'q', 'u', 'a', 'n', 't', 'u', 'm', '.', 'c', 'o', 'm', '\0',
   /* "d-training.de", true */ 'd', '-', 't', 'r', 'a', 'i', 'n', 'i', 'n', 'g', '.', 'd', 'e', '\0',
   /* "d0xq.net", true */ 'd', '0', 'x', 'q', '.', 'n', 'e', 't', '\0',
+  /* "d42.no", true */ 'd', '4', '2', '.', 'n', 'o', '\0',
   /* "d66.nl", true */ 'd', '6', '6', '.', 'n', 'l', '\0',
   /* "da-ist-kunst.de", true */ 'd', 'a', '-', 'i', 's', 't', '-', 'k', 'u', 'n', 's', 't', '.', 'd', 'e', '\0',
   /* "daallexx.eu", true */ 'd', 'a', 'a', 'l', 'l', 'e', 'x', 'x', '.', 'e', 'u', '\0',
   /* "dachb0den.net", true */ 'd', 'a', 'c', 'h', 'b', '0', 'd', 'e', 'n', '.', 'n', 'e', 't', '\0',
   /* "dadons-laserdiscs.com", true */ 'd', 'a', 'd', 'o', 'n', 's', '-', 'l', 'a', 's', 'e', 'r', 'd', 'i', 's', 'c', 's', '.', 'c', 'o', 'm', '\0',
   /* "dadrian.io", true */ 'd', 'a', 'd', 'r', 'i', 'a', 'n', '.', 'i', 'o', '\0',
   /* "dadtheimpaler.com", true */ 'd', 'a', 'd', 't', 'h', 'e', 'i', 'm', 'p', 'a', 'l', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "daduke.org", true */ 'd', 'a', 'd', 'u', 'k', 'e', '.', 'o', 'r', 'g', '\0',
@@ -2914,17 +2919,16 @@ static const char kSTSHostTable[] = {
   /* "darkdestiny.ch", true */ 'd', 'a', 'r', 'k', 'd', 'e', 's', 't', 'i', 'n', 'y', '.', 'c', 'h', '\0',
   /* "darkishgreen.com", true */ 'd', 'a', 'r', 'k', 'i', 's', 'h', 'g', 'r', 'e', 'e', 'n', '.', 'c', 'o', 'm', '\0',
   /* "darkkeepers.dk", true */ 'd', 'a', 'r', 'k', 'k', 'e', 'e', 'p', 'e', 'r', 's', '.', 'd', 'k', '\0',
   /* "darknode.in", true */ 'd', 'a', 'r', 'k', 'n', 'o', 'd', 'e', '.', 'i', 'n', '\0',
   /* "darkserver.fedoraproject.org", true */ 'd', 'a', 'r', 'k', 's', 'e', 'r', 'v', 'e', 'r', '.', 'f', 'e', 'd', 'o', 'r', 'a', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'o', 'r', 'g', '\0',
   /* "darkserver.stg.fedoraproject.org", true */ 'd', 'a', 'r', 'k', 's', 'e', 'r', 'v', 'e', 'r', '.', 's', 't', 'g', '.', 'f', 'e', 'd', 'o', 'r', 'a', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'o', 'r', 'g', '\0',
   /* "darkshop.nl", true */ 'd', 'a', 'r', 'k', 's', 'h', 'o', 'p', '.', 'n', 'l', '\0',
   /* "darkside.re", true */ 'd', 'a', 'r', 'k', 's', 'i', 'd', 'e', '.', 'r', 'e', '\0',
-  /* "darksideof.it", true */ 'd', 'a', 'r', 'k', 's', 'i', 'd', 'e', 'o', 'f', '.', 'i', 't', '\0',
   /* "darkspacelab.com", true */ 'd', 'a', 'r', 'k', 's', 'p', 'a', 'c', 'e', 'l', 'a', 'b', '.', 'c', 'o', 'm', '\0',
   /* "darktime.ru", true */ 'd', 'a', 'r', 'k', 't', 'i', 'm', 'e', '.', 'r', 'u', '\0',
   /* "darktree.in", true */ 'd', 'a', 'r', 'k', 't', 'r', 'e', 'e', '.', 'i', 'n', '\0',
   /* "darkwater.info", true */ 'd', 'a', 'r', 'k', 'w', 'a', 't', 'e', 'r', '.', 'i', 'n', 'f', 'o', '\0',
   /* "darlo.co.uk", false */ 'd', 'a', 'r', 'l', 'o', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "darom.jp", true */ 'd', 'a', 'r', 'o', 'm', '.', 'j', 'p', '\0',
   /* "darrenellis.xyz", true */ 'd', 'a', 'r', 'r', 'e', 'n', 'e', 'l', 'l', 'i', 's', '.', 'x', 'y', 'z', '\0',
   /* "darrenm.net", true */ 'd', 'a', 'r', 'r', 'e', 'n', 'm', '.', 'n', 'e', 't', '\0',
@@ -2967,17 +2971,16 @@ static const char kSTSHostTable[] = {
   /* "davidcrx.net", true */ 'd', 'a', 'v', 'i', 'd', 'c', 'r', 'x', '.', 'n', 'e', 't', '\0',
   /* "davidgouveia.net", true */ 'd', 'a', 'v', 'i', 'd', 'g', 'o', 'u', 'v', 'e', 'i', 'a', '.', 'n', 'e', 't', '\0',
   /* "davidgow.net", true */ 'd', 'a', 'v', 'i', 'd', 'g', 'o', 'w', '.', 'n', 'e', 't', '\0',
   /* "davidgrudl.com", true */ 'd', 'a', 'v', 'i', 'd', 'g', 'r', 'u', 'd', 'l', '.', 'c', 'o', 'm', '\0',
   /* "davidlillo.com", true */ 'd', 'a', 'v', 'i', 'd', 'l', 'i', 'l', 'l', 'o', '.', 'c', 'o', 'm', '\0',
   /* "davidlyness.com", true */ 'd', 'a', 'v', 'i', 'd', 'l', 'y', 'n', 'e', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "davidmcevoy.org.uk", true */ 'd', 'a', 'v', 'i', 'd', 'm', 'c', 'e', 'v', 'o', 'y', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "davidnadaski.com", true */ 'd', 'a', 'v', 'i', 'd', 'n', 'a', 'd', 'a', 's', 'k', 'i', '.', 'c', 'o', 'm', '\0',
-  /* "davidnoren.com", true */ 'd', 'a', 'v', 'i', 'd', 'n', 'o', 'r', 'e', 'n', '.', 'c', 'o', 'm', '\0',
   /* "davidpearce.com", true */ 'd', 'a', 'v', 'i', 'd', 'p', 'e', 'a', 'r', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "davimun.org", true */ 'd', 'a', 'v', 'i', 'm', 'u', 'n', '.', 'o', 'r', 'g', '\0',
   /* "davisroi.com", true */ 'd', 'a', 'v', 'i', 's', 'r', 'o', 'i', '.', 'c', 'o', 'm', '\0',
   /* "dawson-floridavilla.co.uk", true */ 'd', 'a', 'w', 's', 'o', 'n', '-', 'f', 'l', 'o', 'r', 'i', 'd', 'a', 'v', 'i', 'l', 'l', 'a', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "daylightpirates.org", true */ 'd', 'a', 'y', 'l', 'i', 'g', 'h', 't', 'p', 'i', 'r', 'a', 't', 'e', 's', '.', 'o', 'r', 'g', '\0',
   /* "dayman.net", true */ 'd', 'a', 'y', 'm', 'a', 'n', '.', 'n', 'e', 't', '\0',
   /* "daysoftheyear.com", true */ 'd', 'a', 'y', 's', 'o', 'f', 't', 'h', 'e', 'y', 'e', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "daytonaseaside.com", true */ 'd', 'a', 'y', 't', 'o', 'n', 'a', 's', 'e', 'a', 's', 'i', 'd', 'e', '.', 'c', 'o', 'm', '\0',
@@ -3075,16 +3078,17 @@ static const char kSTSHostTable[] = {
   /* "delbrouck.ch", true */ 'd', 'e', 'l', 'b', 'r', 'o', 'u', 'c', 'k', '.', 'c', 'h', '\0',
   /* "delfic.org", true */ 'd', 'e', 'l', 'f', 'i', 'c', '.', 'o', 'r', 'g', '\0',
   /* "deliberatedigital.com", true */ 'd', 'e', 'l', 'i', 'b', 'e', 'r', 'a', 't', 'e', 'd', 'i', 'g', 'i', 't', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "deliciisanatoase.ro", true */ 'd', 'e', 'l', 'i', 'c', 'i', 'i', 's', 'a', 'n', 'a', 't', 'o', 'a', 's', 'e', '.', 'r', 'o', '\0',
   /* "deliciousmedia.co.uk", true */ 'd', 'e', 'l', 'i', 'c', 'i', 'o', 'u', 's', 'm', 'e', 'd', 'i', 'a', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "delphine.dance", true */ 'd', 'e', 'l', 'p', 'h', 'i', 'n', 'e', '.', 'd', 'a', 'n', 'c', 'e', '\0',
   /* "delta-data.ch", true */ 'd', 'e', 'l', 't', 'a', '-', 'd', 'a', 't', 'a', '.', 'c', 'h', '\0',
   /* "delvj.org", true */ 'd', 'e', 'l', 'v', 'j', '.', 'o', 'r', 'g', '\0',
+  /* "demdis.org", true */ 'd', 'e', 'm', 'd', 'i', 's', '.', 'o', 'r', 'g', '\0',
   /* "dementiapraecox.de", true */ 'd', 'e', 'm', 'e', 'n', 't', 'i', 'a', 'p', 'r', 'a', 'e', 'c', 'o', 'x', '.', 'd', 'e', '\0',
   /* "demo.swedbank.se", true */ 'd', 'e', 'm', 'o', '.', 's', 'w', 'e', 'd', 'b', 'a', 'n', 'k', '.', 's', 'e', '\0',
   /* "democracy.io", true */ 'd', 'e', 'm', 'o', 'c', 'r', 'a', 'c', 'y', '.', 'i', 'o', '\0',
   /* "demomanca.com", true */ 'd', 'e', 'm', 'o', 'm', 'a', 'n', 'c', 'a', '.', 'c', 'o', 'm', '\0',
   /* "demotops.com", false */ 'd', 'e', 'm', 'o', 't', 'o', 'p', 's', '.', 'c', 'o', 'm', '\0',
   /* "demuzere.be", true */ 'd', 'e', 'm', 'u', 'z', 'e', 'r', 'e', '.', 'b', 'e', '\0',
   /* "demuzere.com", true */ 'd', 'e', 'm', 'u', 'z', 'e', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "demuzere.eu", true */ 'd', 'e', 'm', 'u', 'z', 'e', 'r', 'e', '.', 'e', 'u', '\0',
@@ -3317,21 +3321,19 @@ static const char kSTSHostTable[] = {
   /* "dlc.viasinc.com", true */ 'd', 'l', 'c', '.', 'v', 'i', 'a', 's', 'i', 'n', 'c', '.', 'c', 'o', 'm', '\0',
   /* "dlemper.de", true */ 'd', 'l', 'e', 'm', 'p', 'e', 'r', '.', 'd', 'e', '\0',
   /* "dlitz.net", true */ 'd', 'l', 'i', 't', 'z', '.', 'n', 'e', 't', '\0',
   /* "dlld.com", true */ 'd', 'l', 'l', 'd', '.', 'c', 'o', 'm', '\0',
   /* "dlscomputers.com.au", true */ 'd', 'l', 's', 'c', 'o', 'm', 'p', 'u', 't', 'e', 'r', 's', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "dm.lookout.com", false */ 'd', 'm', '.', 'l', 'o', 'o', 'k', 'o', 'u', 't', '.', 'c', 'o', 'm', '\0',
   /* "dm.mylookout.com", false */ 'd', 'm', '.', 'm', 'y', 'l', 'o', 'o', 'k', 'o', 'u', 't', '.', 'c', 'o', 'm', '\0',
   /* "dm7ds.de", true */ 'd', 'm', '7', 'd', 's', '.', 'd', 'e', '\0',
-  /* "dmarc.dk", true */ 'd', 'm', 'a', 'r', 'c', '.', 'd', 'k', '\0',
   /* "dmcibulldog.com", true */ 'd', 'm', 'c', 'i', 'b', 'u', 'l', 'l', 'd', 'o', 'g', '.', 'c', 'o', 'm', '\0',
   /* "dmeevalumate.com", true */ 'd', 'm', 'e', 'e', 'v', 'a', 'l', 'u', 'm', 'a', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "dmfd.net", true */ 'd', 'm', 'f', 'd', '.', 'n', 'e', 't', '\0',
-  /* "dmi.es", true */ 'd', 'm', 'i', '.', 'e', 's', '\0',
   /* "dmix.ca", true */ 'd', 'm', 'i', 'x', '.', 'c', 'a', '\0',
   /* "dmlogic.com", true */ 'd', 'm', 'l', 'o', 'g', 'i', 'c', '.', 'c', 'o', 'm', '\0',
   /* "dmtry.me", true */ 'd', 'm', 't', 'r', 'y', '.', 'm', 'e', '\0',
   /* "dmwall.cn", true */ 'd', 'm', 'w', 'a', 'l', 'l', '.', 'c', 'n', '\0',
   /* "dmz.ninja", true */ 'd', 'm', 'z', '.', 'n', 'i', 'n', 'j', 'a', '\0',
   /* "dn3s.me", true */ 'd', 'n', '3', 's', '.', 'm', 'e', '\0',
   /* "dn42.us", true */ 'd', 'n', '4', '2', '.', 'u', 's', '\0',
   /* "dna.li", true */ 'd', 'n', 'a', '.', 'l', 'i', '\0',
@@ -3418,16 +3420,17 @@ static const char kSTSHostTable[] = {
   /* "doorflow.com", true */ 'd', 'o', 'o', 'r', 'f', 'l', 'o', 'w', '.', 'c', 'o', 'm', '\0',
   /* "dopesoft.de", true */ 'd', 'o', 'p', 'e', 's', 'o', 'f', 't', '.', 'd', 'e', '\0',
   /* "doppenpost.nl", true */ 'd', 'o', 'p', 'p', 'e', 'n', 'p', 'o', 's', 't', '.', 'n', 'l', '\0',
   /* "dorianharmans.nl", true */ 'd', 'o', 'r', 'i', 'a', 'n', 'h', 'a', 'r', 'm', 'a', 'n', 's', '.', 'n', 'l', '\0',
   /* "dorianmuthig.com", true */ 'd', 'o', 'r', 'i', 'a', 'n', 'm', 'u', 't', 'h', 'i', 'g', '.', 'c', 'o', 'm', '\0',
   /* "dormiu.com", true */ 'd', 'o', 'r', 'm', 'i', 'u', '.', 'c', 'o', 'm', '\0',
   /* "dormiu.com.br", true */ 'd', 'o', 'r', 'm', 'i', 'u', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "dot.ro", true */ 'd', 'o', 't', '.', 'r', 'o', '\0',
+  /* "dot42.no", true */ 'd', 'o', 't', '4', '2', '.', 'n', 'o', '\0',
   /* "dotbigbang.com", true */ 'd', 'o', 't', 'b', 'i', 'g', 'b', 'a', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "dotbox.org", true */ 'd', 'o', 't', 'b', 'o', 'x', '.', 'o', 'r', 'g', '\0',
   /* "dothebangthingsalon.com", true */ 'd', 'o', 't', 'h', 'e', 'b', 'a', 'n', 'g', 't', 'h', 'i', 'n', 'g', 's', 'a', 'l', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "dotkod.com", true */ 'd', 'o', 't', 'k', 'o', 'd', '.', 'c', 'o', 'm', '\0',
   /* "dotkod.pl", true */ 'd', 'o', 't', 'k', 'o', 'd', '.', 'p', 'l', '\0',
   /* "dotphoto.com", true */ 'd', 'o', 't', 'p', 'h', 'o', 't', 'o', '.', 'c', 'o', 'm', '\0',
   /* "dotrox.net", true */ 'd', 'o', 't', 'r', 'o', 'x', '.', 'n', 'e', 't', '\0',
   /* "dotsiam.com", true */ 'd', 'o', 't', 's', 'i', 'a', 'm', '.', 'c', 'o', 'm', '\0',
@@ -3455,17 +3458,16 @@ static const char kSTSHostTable[] = {
   /* "drakefortreasurer.sexy", true */ 'd', 'r', 'a', 'k', 'e', 'f', 'o', 'r', 't', 'r', 'e', 'a', 's', 'u', 'r', 'e', 'r', '.', 's', 'e', 'x', 'y', '\0',
   /* "drakeluce.com", true */ 'd', 'r', 'a', 'k', 'e', 'l', 'u', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "drakenprospero.com", true */ 'd', 'r', 'a', 'k', 'e', 'n', 'p', 'r', 'o', 's', 'p', 'e', 'r', 'o', '.', 'c', 'o', 'm', '\0',
   /* "dramaticpeople.com", true */ 'd', 'r', 'a', 'm', 'a', 't', 'i', 'c', 'p', 'e', 'o', 'p', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "dranderle.com", true */ 'd', 'r', 'a', 'n', 'd', 'e', 'r', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "dranek.com", true */ 'd', 'r', 'a', 'n', 'e', 'k', '.', 'c', 'o', 'm', '\0',
   /* "draugr.de", true */ 'd', 'r', 'a', 'u', 'g', 'r', '.', 'd', 'e', '\0',
   /* "drawesome.uy", true */ 'd', 'r', 'a', 'w', 'e', 's', 'o', 'm', 'e', '.', 'u', 'y', '\0',
-  /* "drawingcode.net", true */ 'd', 'r', 'a', 'w', 'i', 'n', 'g', 'c', 'o', 'd', 'e', '.', 'n', 'e', 't', '\0',
   /* "dreamcreator108.com", true */ 'd', 'r', 'e', 'a', 'm', 'c', 'r', 'e', 'a', 't', 'o', 'r', '1', '0', '8', '.', 'c', 'o', 'm', '\0',
   /* "dreaming.solutions", true */ 'd', 'r', 'e', 'a', 'm', 'i', 'n', 'g', '.', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 's', '\0',
   /* "dreamsforabetterworld.com.au", true */ 'd', 'r', 'e', 'a', 'm', 's', 'f', 'o', 'r', 'a', 'b', 'e', 't', 't', 'e', 'r', 'w', 'o', 'r', 'l', 'd', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "dreamtechie.com", true */ 'd', 'r', 'e', 'a', 'm', 't', 'e', 'c', 'h', 'i', 'e', '.', 'c', 'o', 'm', '\0',
   /* "dredgepress.com", true */ 'd', 'r', 'e', 'd', 'g', 'e', 'p', 'r', 'e', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "dreid.org", true */ 'd', 'r', 'e', 'i', 'd', '.', 'o', 'r', 'g', '\0',
   /* "dreizwosechs.de", true */ 'd', 'r', 'e', 'i', 'z', 'w', 'o', 's', 'e', 'c', 'h', 's', '.', 'd', 'e', '\0',
   /* "drew.red", true */ 'd', 'r', 'e', 'w', '.', 'r', 'e', 'd', '\0',
@@ -3545,17 +3547,16 @@ static const char kSTSHostTable[] = {
   /* "dutyfreeonboard.com", true */ 'd', 'u', 't', 'y', 'f', 'r', 'e', 'e', 'o', 'n', 'b', 'o', 'a', 'r', 'd', '.', 'c', 'o', 'm', '\0',
   /* "duuu.ch", true */ 'd', 'u', 'u', 'u', '.', 'c', 'h', '\0',
   /* "dvbris.co.uk", true */ 'd', 'v', 'b', 'r', 'i', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "dvbris.com", true */ 'd', 'v', 'b', 'r', 'i', 's', '.', 'c', 'o', 'm', '\0',
   /* "dvorupotocnych.sk", true */ 'd', 'v', 'o', 'r', 'u', 'p', 'o', 't', 'o', 'c', 'n', 'y', 'c', 'h', '.', 's', 'k', '\0',
   /* "dvotx.org", true */ 'd', 'v', 'o', 't', 'x', '.', 'o', 'r', 'g', '\0',
   /* "dvwc.org", true */ 'd', 'v', 'w', 'c', '.', 'o', 'r', 'g', '\0',
   /* "dwnld.me", true */ 'd', 'w', 'n', 'l', 'd', '.', 'm', 'e', '\0',
-  /* "dworzak.ch", true */ 'd', 'w', 'o', 'r', 'z', 'a', 'k', '.', 'c', 'h', '\0',
   /* "dwtm.ch", true */ 'd', 'w', 't', 'm', '.', 'c', 'h', '\0',
   /* "dxgl.info", true */ 'd', 'x', 'g', 'l', '.', 'i', 'n', 'f', 'o', '\0',
   /* "dyeager.org", true */ 'd', 'y', 'e', 'a', 'g', 'e', 'r', '.', 'o', 'r', 'g', '\0',
   /* "dyktig.as", true */ 'd', 'y', 'k', 't', 'i', 'g', '.', 'a', 's', '\0',
   /* "dyn-nserve.net", true */ 'd', 'y', 'n', '-', 'n', 's', 'e', 'r', 'v', 'e', '.', 'n', 'e', 't', '\0',
   /* "dyn.im", true */ 'd', 'y', 'n', '.', 'i', 'm', '\0',
   /* "dynaloop.net", true */ 'd', 'y', 'n', 'a', 'l', 'o', 'o', 'p', '.', 'n', 'e', 't', '\0',
   /* "dynamic-innovations.net", true */ 'd', 'y', 'n', 'a', 'm', 'i', 'c', '-', 'i', 'n', 'n', 'o', 'v', 'a', 't', 'i', 'o', 'n', 's', '.', 'n', 'e', 't', '\0',
@@ -3669,16 +3670,17 @@ static const char kSTSHostTable[] = {
   /* "educationunlimited.com", true */ 'e', 'd', 'u', 'c', 'a', 't', 'i', 'o', 'n', 'u', 'n', 'l', 'i', 'm', 'i', 't', 'e', 'd', '.', 'c', 'o', 'm', '\0',
   /* "educator-one.com", true */ 'e', 'd', 'u', 'c', 'a', 't', 'o', 'r', '-', 'o', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "eduid.se", true */ 'e', 'd', 'u', 'i', 'd', '.', 's', 'e', '\0',
   /* "eduif.nl", false */ 'e', 'd', 'u', 'i', 'f', '.', 'n', 'l', '\0',
   /* "eduroam.no", true */ 'e', 'd', 'u', 'r', 'o', 'a', 'm', '.', 'n', 'o', '\0',
   /* "edusantorini.com", true */ 'e', 'd', 'u', 's', 'a', 'n', 't', 'o', 'r', 'i', 'n', 'i', '.', 'c', 'o', 'm', '\0',
   /* "edv-lehrgang.de", true */ 'e', 'd', 'v', '-', 'l', 'e', 'h', 'r', 'g', 'a', 'n', 'g', '.', 'd', 'e', '\0',
   /* "edvmesstec.de", true */ 'e', 'd', 'v', 'm', 'e', 's', 's', 't', 'e', 'c', '.', 'd', 'e', '\0',
+  /* "edwards.me.uk", true */ 'e', 'd', 'w', 'a', 'r', 'd', 's', '.', 'm', 'e', '.', 'u', 'k', '\0',
   /* "edwardsnowden.com", true */ 'e', 'd', 'w', 'a', 'r', 'd', 's', 'n', 'o', 'w', 'd', 'e', 'n', '.', 'c', 'o', 'm', '\0',
   /* "edxg.de", false */ 'e', 'd', 'x', 'g', '.', 'd', 'e', '\0',
   /* "edyou.eu", true */ 'e', 'd', 'y', 'o', 'u', '.', 'e', 'u', '\0',
   /* "edzilla.info", true */ 'e', 'd', 'z', 'i', 'l', 'l', 'a', '.', 'i', 'n', 'f', 'o', '\0',
   /* "ee-terminals.com", true */ 'e', 'e', '-', 't', 'e', 'r', 'm', 'i', 'n', 'a', 'l', 's', '.', 'c', 'o', 'm', '\0',
   /* "eelsden.net", true */ 'e', 'e', 'l', 's', 'd', 'e', 'n', '.', 'n', 'e', 't', '\0',
   /* "eelzak.nl", true */ 'e', 'e', 'l', 'z', 'a', 'k', '.', 'n', 'l', '\0',
   /* "eenhoorn.ga", true */ 'e', 'e', 'n', 'h', 'o', 'o', 'r', 'n', '.', 'g', 'a', '\0',
@@ -4042,16 +4044,17 @@ static const char kSTSHostTable[] = {
   /* "everwaking.com", false */ 'e', 'v', 'e', 'r', 'w', 'a', 'k', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "everyarti.st", true */ 'e', 'v', 'e', 'r', 'y', 'a', 'r', 't', 'i', '.', 's', 't', '\0',
   /* "everymove.org", true */ 'e', 'v', 'e', 'r', 'y', 'm', 'o', 'v', 'e', '.', 'o', 'r', 'g', '\0',
   /* "everywhere.cloud", true */ 'e', 'v', 'e', 'r', 'y', 'w', 'h', 'e', 'r', 'e', '.', 'c', 'l', 'o', 'u', 'd', '\0',
   /* "eveseat.net", true */ 'e', 'v', 'e', 's', 'e', 'a', 't', '.', 'n', 'e', 't', '\0',
   /* "eveshamglass.co.uk", true */ 'e', 'v', 'e', 's', 'h', 'a', 'm', 'g', 'l', 'a', 's', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "evi.be", true */ 'e', 'v', 'i', '.', 'b', 'e', '\0',
   /* "evilized.de", true */ 'e', 'v', 'i', 'l', 'i', 'z', 'e', 'd', '.', 'd', 'e', '\0',
+  /* "evilsay.com", true */ 'e', 'v', 'i', 'l', 's', 'a', 'y', '.', 'c', 'o', 'm', '\0',
   /* "evites.me", true */ 'e', 'v', 'i', 't', 'e', 's', '.', 'm', 'e', '\0',
   /* "evlear.com", true */ 'e', 'v', 'l', 'e', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "evodation.com", true */ 'e', 'v', 'o', 'd', 'a', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "evolutionexpeditions.com", true */ 'e', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'e', 'x', 'p', 'e', 'd', 'i', 't', 'i', 'o', 'n', 's', '.', 'c', 'o', 'm', '\0',
   /* "evolutionlending.co.uk", true */ 'e', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'l', 'e', 'n', 'd', 'i', 'n', 'g', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "evowl.com", false */ 'e', 'v', 'o', 'w', 'l', '.', 'c', 'o', 'm', '\0',
   /* "evrial.com", true */ 'e', 'v', 'r', 'i', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "evstatus.com", true */ 'e', 'v', 's', 't', 'a', 't', 'u', 's', '.', 'c', 'o', 'm', '\0',
@@ -4235,17 +4238,16 @@ static const char kSTSHostTable[] = {
   /* "feel.aero", true */ 'f', 'e', 'e', 'l', '.', 'a', 'e', 'r', 'o', '\0',
   /* "feen.us", true */ 'f', 'e', 'e', 'n', '.', 'u', 's', '\0',
   /* "fehngarten.de", true */ 'f', 'e', 'h', 'n', 'g', 'a', 'r', 't', 'e', 'n', '.', 'd', 'e', '\0',
   /* "fehnladen.de", true */ 'f', 'e', 'h', 'n', 'l', 'a', 'd', 'e', 'n', '.', 'd', 'e', '\0',
   /* "feirlane.org", false */ 'f', 'e', 'i', 'r', 'l', 'a', 'n', 'e', '.', 'o', 'r', 'g', '\0',
   /* "feistyduck.com", true */ 'f', 'e', 'i', 's', 't', 'y', 'd', 'u', 'c', 'k', '.', 'c', 'o', 'm', '\0',
   /* "felixklein.at", true */ 'f', 'e', 'l', 'i', 'x', 'k', 'l', 'e', 'i', 'n', '.', 'a', 't', '\0',
   /* "felixrr.pro", true */ 'f', 'e', 'l', 'i', 'x', 'r', 'r', '.', 'p', 'r', 'o', '\0',
-  /* "felixsanz.com", true */ 'f', 'e', 'l', 'i', 'x', 's', 'a', 'n', 'z', '.', 'c', 'o', 'm', '\0',
   /* "felixseele.de", true */ 'f', 'e', 'l', 'i', 'x', 's', 'e', 'e', 'l', 'e', '.', 'd', 'e', '\0',
   /* "fenno.net", true */ 'f', 'e', 'n', 'n', 'o', '.', 'n', 'e', 't', '\0',
   /* "fenster-bank.at", true */ 'f', 'e', 'n', 's', 't', 'e', 'r', '-', 'b', 'a', 'n', 'k', '.', 'a', 't', '\0',
   /* "fenster-bank.de", true */ 'f', 'e', 'n', 's', 't', 'e', 'r', '-', 'b', 'a', 'n', 'k', '.', 'd', 'e', '\0',
   /* "ferien-netzwerk.de", true */ 'f', 'e', 'r', 'i', 'e', 'n', '-', 'n', 'e', 't', 'z', 'w', 'e', 'r', 'k', '.', 'd', 'e', '\0',
   /* "ferienhaus-polchow-ruegen.de", false */ 'f', 'e', 'r', 'i', 'e', 'n', 'h', 'a', 'u', 's', '-', 'p', 'o', 'l', 'c', 'h', 'o', 'w', '-', 'r', 'u', 'e', 'g', 'e', 'n', '.', 'd', 'e', '\0',
   /* "fernandes.org", true */ 'f', 'e', 'r', 'n', 'a', 'n', 'd', 'e', 's', '.', 'o', 'r', 'g', '\0',
   /* "fernandob.com", true */ 'f', 'e', 'r', 'n', 'a', 'n', 'd', 'o', 'b', '.', 'c', 'o', 'm', '\0',
@@ -4285,17 +4287,16 @@ static const char kSTSHostTable[] = {
   /* "figuurzagers.nl", false */ 'f', 'i', 'g', 'u', 'u', 'r', 'z', 'a', 'g', 'e', 'r', 's', '.', 'n', 'l', '\0',
   /* "fiilr.com", true */ 'f', 'i', 'i', 'l', 'r', '.', 'c', 'o', 'm', '\0',
   /* "fiix.io", true */ 'f', 'i', 'i', 'x', '.', 'i', 'o', '\0',
   /* "fiken.no", true */ 'f', 'i', 'k', 'e', 'n', '.', 'n', 'o', '\0',
   /* "fiksel.info", true */ 'f', 'i', 'k', 's', 'e', 'l', '.', 'i', 'n', 'f', 'o', '\0',
   /* "file-pdf.it", true */ 'f', 'i', 'l', 'e', '-', 'p', 'd', 'f', '.', 'i', 't', '\0',
   /* "filedir.com", false */ 'f', 'i', 'l', 'e', 'd', 'i', 'r', '.', 'c', 'o', 'm', '\0',
   /* "filemeal.com", true */ 'f', 'i', 'l', 'e', 'm', 'e', 'a', 'l', '.', 'c', 'o', 'm', '\0',
-  /* "filestar.io", true */ 'f', 'i', 'l', 'e', 's', 't', 'a', 'r', '.', 'i', 'o', '\0',
   /* "filhodohomem.com", true */ 'f', 'i', 'l', 'h', 'o', 'd', 'o', 'h', 'o', 'm', 'e', 'm', '.', 'c', 'o', 'm', '\0',
   /* "filip-prochazka.com", true */ 'f', 'i', 'l', 'i', 'p', '-', 'p', 'r', 'o', 'c', 'h', 'a', 'z', 'k', 'a', '.', 'c', 'o', 'm', '\0',
   /* "filippo.io", true */ 'f', 'i', 'l', 'i', 'p', 'p', 'o', '.', 'i', 'o', '\0',
   /* "fillmysuitca.se", true */ 'f', 'i', 'l', 'l', 'm', 'y', 's', 'u', 'i', 't', 'c', 'a', '.', 's', 'e', '\0',
   /* "film.photos", true */ 'f', 'i', 'l', 'm', '.', 'p', 'h', 'o', 't', 'o', 's', '\0',
   /* "filmatiporno.xxx", true */ 'f', 'i', 'l', 'm', 'a', 't', 'i', 'p', 'o', 'r', 'n', 'o', '.', 'x', 'x', 'x', '\0',
   /* "filoo.de", true */ 'f', 'i', 'l', 'o', 'o', '.', 'd', 'e', '\0',
   /* "financier.io", true */ 'f', 'i', 'n', 'a', 'n', 'c', 'i', 'e', 'r', '.', 'i', 'o', '\0',
@@ -4345,16 +4346,17 @@ static const char kSTSHostTable[] = {
   /* "fitzsim.org", true */ 'f', 'i', 't', 'z', 's', 'i', 'm', '.', 'o', 'r', 'g', '\0',
   /* "five.vn", true */ 'f', 'i', 'v', 'e', '.', 'v', 'n', '\0',
   /* "fiws.net", true */ 'f', 'i', 'w', 's', '.', 'n', 'e', 't', '\0',
   /* "fixate.ru", true */ 'f', 'i', 'x', 'a', 't', 'e', '.', 'r', 'u', '\0',
   /* "fixel.express", true */ 'f', 'i', 'x', 'e', 'l', '.', 'e', 'x', 'p', 'r', 'e', 's', 's', '\0',
   /* "fixforce.nl", true */ 'f', 'i', 'x', 'f', 'o', 'r', 'c', 'e', '.', 'n', 'l', '\0',
   /* "fixhotsauce.com", true */ 'f', 'i', 'x', 'h', 'o', 't', 's', 'a', 'u', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "fixmycomputerdude.com", true */ 'f', 'i', 'x', 'm', 'y', 'c', 'o', 'm', 'p', 'u', 't', 'e', 'r', 'd', 'u', 'd', 'e', '.', 'c', 'o', 'm', '\0',
+  /* "fizz.buzz", true */ 'f', 'i', 'z', 'z', '.', 'b', 'u', 'z', 'z', '\0',
   /* "fj.simple.com", false */ 'f', 'j', '.', 's', 'i', 'm', 'p', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "flaemig42.de", true */ 'f', 'l', 'a', 'e', 'm', 'i', 'g', '4', '2', '.', 'd', 'e', '\0',
   /* "flagburningworld.com", true */ 'f', 'l', 'a', 'g', 'b', 'u', 'r', 'n', 'i', 'n', 'g', 'w', 'o', 'r', 'l', 'd', '.', 'c', 'o', 'm', '\0',
   /* "flagspot.net", true */ 'f', 'l', 'a', 'g', 's', 'p', 'o', 't', '.', 'n', 'e', 't', '\0',
   /* "flajshans.cz", true */ 'f', 'l', 'a', 'j', 's', 'h', 'a', 'n', 's', '.', 'c', 'z', '\0',
   /* "flam.io", true */ 'f', 'l', 'a', 'm', '.', 'i', 'o', '\0',
   /* "flamer-scene.com", false */ 'f', 'l', 'a', 'm', 'e', 'r', '-', 's', 'c', 'e', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "flamingcow.tv", true */ 'f', 'l', 'a', 'm', 'i', 'n', 'g', 'c', 'o', 'w', '.', 't', 'v', '\0',
@@ -4431,16 +4433,17 @@ static const char kSTSHostTable[] = {
   /* "folv.es", true */ 'f', 'o', 'l', 'v', '.', 'e', 's', '\0',
   /* "fondanastasia.ru", true */ 'f', 'o', 'n', 'd', 'a', 'n', 'a', 's', 't', 'a', 's', 'i', 'a', '.', 'r', 'u', '\0',
   /* "fondy.eu", true */ 'f', 'o', 'n', 'd', 'y', '.', 'e', 'u', '\0',
   /* "fonga.ch", true */ 'f', 'o', 'n', 'g', 'a', '.', 'c', 'h', '\0',
   /* "font-converter.net", true */ 'f', 'o', 'n', 't', '-', 'c', 'o', 'n', 'v', 'e', 'r', 't', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "fontein.de", true */ 'f', 'o', 'n', 't', 'e', 'i', 'n', '.', 'd', 'e', '\0',
   /* "fontlibrary.org", true */ 'f', 'o', 'n', 't', 'l', 'i', 'b', 'r', 'a', 'r', 'y', '.', 'o', 'r', 'g', '\0',
   /* "foodacademy.capetown", true */ 'f', 'o', 'o', 'd', 'a', 'c', 'a', 'd', 'e', 'm', 'y', '.', 'c', 'a', 'p', 'e', 't', 'o', 'w', 'n', '\0',
+  /* "foodblogger.club", true */ 'f', 'o', 'o', 'd', 'b', 'l', 'o', 'g', 'g', 'e', 'r', '.', 'c', 'l', 'u', 'b', '\0',
   /* "foodiebox.no", true */ 'f', 'o', 'o', 'd', 'i', 'e', 'b', 'o', 'x', '.', 'n', 'o', '\0',
   /* "foodies.my", true */ 'f', 'o', 'o', 'd', 'i', 'e', 's', '.', 'm', 'y', '\0',
   /* "foodievenues.com", true */ 'f', 'o', 'o', 'd', 'i', 'e', 'v', 'e', 'n', 'u', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "foodplantengineering.com", true */ 'f', 'o', 'o', 'd', 'p', 'l', 'a', 'n', 't', 'e', 'n', 'g', 'i', 'n', 'e', 'e', 'r', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "foodwise.marketing", true */ 'f', 'o', 'o', 'd', 'w', 'i', 's', 'e', '.', 'm', 'a', 'r', 'k', 'e', 't', 'i', 'n', 'g', '\0',
   /* "fooishbar.org", true */ 'f', 'o', 'o', 'i', 's', 'h', 'b', 'a', 'r', '.', 'o', 'r', 'g', '\0',
   /* "foolwealth.com", true */ 'f', 'o', 'o', 'l', 'w', 'e', 'a', 'l', 't', 'h', '.', 'c', 'o', 'm', '\0',
   /* "foorack.com", true */ 'f', 'o', 'o', 'r', 'a', 'c', 'k', '.', 'c', 'o', 'm', '\0',
@@ -4566,29 +4569,30 @@ static const char kSTSHostTable[] = {
   /* "frly.de", true */ 'f', 'r', 'l', 'y', '.', 'd', 'e', '\0',
   /* "frob.nl", true */ 'f', 'r', 'o', 'b', '.', 'n', 'l', '\0',
   /* "frogatto.com", true */ 'f', 'r', 'o', 'g', 'a', 't', 't', 'o', '.', 'c', 'o', 'm', '\0',
   /* "frogeye.fr", false */ 'f', 'r', 'o', 'g', 'e', 'y', 'e', '.', 'f', 'r', '\0',
   /* "frokenblomma.se", true */ 'f', 'r', 'o', 'k', 'e', 'n', 'b', 'l', 'o', 'm', 'm', 'a', '.', 's', 'e', '\0',
   /* "fromix.de", true */ 'f', 'r', 'o', 'm', 'i', 'x', '.', 'd', 'e', '\0',
   /* "fromlemaytoz.com", true */ 'f', 'r', 'o', 'm', 'l', 'e', 'm', 'a', 'y', 't', 'o', 'z', '.', 'c', 'o', 'm', '\0',
   /* "fromscratch.rocks", true */ 'f', 'r', 'o', 'm', 's', 'c', 'r', 'a', 't', 'c', 'h', '.', 'r', 'o', 'c', 'k', 's', '\0',
-  /* "fronteers.nl", true */ 'f', 'r', 'o', 'n', 't', 'e', 'e', 'r', 's', '.', 'n', 'l', '\0',
+  /* "fronteers.nl", false */ 'f', 'r', 'o', 'n', 't', 'e', 'e', 'r', 's', '.', 'n', 'l', '\0',
   /* "frontisme.nl", true */ 'f', 'r', 'o', 'n', 't', 'i', 's', 'm', 'e', '.', 'n', 'l', '\0',
   /* "froot.se", true */ 'f', 'r', 'o', 'o', 't', '.', 's', 'e', '\0',
   /* "frostbytes.net", true */ 'f', 'r', 'o', 's', 't', 'b', 'y', 't', 'e', 's', '.', 'n', 'e', 't', '\0',
   /* "frosty-gaming.xyz", true */ 'f', 'r', 'o', 's', 't', 'y', '-', 'g', 'a', 'm', 'i', 'n', 'g', '.', 'x', 'y', 'z', '\0',
   /* "frothy.coffee", true */ 'f', 'r', 'o', 't', 'h', 'y', '.', 'c', 'o', 'f', 'f', 'e', 'e', '\0',
   /* "frowin-stemmer.de", true */ 'f', 'r', 'o', 'w', 'i', 'n', '-', 's', 't', 'e', 'm', 'm', 'e', 'r', '.', 'd', 'e', '\0',
   /* "froxlor.support", true */ 'f', 'r', 'o', 'x', 'l', 'o', 'r', '.', 's', 'u', 'p', 'p', 'o', 'r', 't', '\0',
   /* "frtn.com", true */ 'f', 'r', 't', 'n', '.', 'c', 'o', 'm', '\0',
   /* "frtr.gov", true */ 'f', 'r', 't', 'r', '.', 'g', 'o', 'v', '\0',
   /* "fruchthof24.de", true */ 'f', 'r', 'u', 'c', 'h', 't', 'h', 'o', 'f', '2', '4', '.', 'd', 'e', '\0',
   /* "frugro.be", true */ 'f', 'r', 'u', 'g', 'r', 'o', '.', 'b', 'e', '\0',
   /* "frusky.de", true */ 'f', 'r', 'u', 's', 'k', 'y', '.', 'd', 'e', '\0',
+  /* "fs-gamenet.de", true */ 'f', 's', '-', 'g', 'a', 'm', 'e', 'n', 'e', 't', '.', 'd', 'e', '\0',
   /* "fsapubs.gov", true */ 'f', 's', 'a', 'p', 'u', 'b', 's', '.', 'g', 'o', 'v', '\0',
   /* "fsbpaintrock.com", true */ 'f', 's', 'b', 'p', 'a', 'i', 'n', 't', 'r', 'o', 'c', 'k', '.', 'c', 'o', 'm', '\0',
   /* "fsbturton.com", true */ 'f', 's', 'b', 't', 'u', 'r', 't', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "fsf.moe", true */ 'f', 's', 'f', '.', 'm', 'o', 'e', '\0',
   /* "fsfi.is", true */ 'f', 's', 'f', 'i', '.', 'i', 's', '\0',
   /* "fsinf.at", true */ 'f', 's', 'i', 'n', 'f', '.', 'a', 't', '\0',
   /* "fsm2016.org", true */ 'f', 's', 'm', '2', '0', '1', '6', '.', 'o', 'r', 'g', '\0',
   /* "fspphoto.com", true */ 'f', 's', 'p', 'p', 'h', 'o', 't', 'o', '.', 'c', 'o', 'm', '\0',
@@ -4795,37 +4799,37 @@ static const char kSTSHostTable[] = {
   /* "georgioskontaxis.com", true */ 'g', 'e', 'o', 'r', 'g', 'i', 'o', 's', 'k', 'o', 'n', 't', 'a', 'x', 'i', 's', '.', 'c', 'o', 'm', '\0',
   /* "georgioskontaxis.net", true */ 'g', 'e', 'o', 'r', 'g', 'i', 'o', 's', 'k', 'o', 'n', 't', 'a', 'x', 'i', 's', '.', 'n', 'e', 't', '\0',
   /* "georgioskontaxis.org", true */ 'g', 'e', 'o', 'r', 'g', 'i', 'o', 's', 'k', 'o', 'n', 't', 'a', 'x', 'i', 's', '.', 'o', 'r', 'g', '\0',
   /* "georgmayer.eu", true */ 'g', 'e', 'o', 'r', 'g', 'm', 'a', 'y', 'e', 'r', '.', 'e', 'u', '\0',
   /* "geoscan.aero", true */ 'g', 'e', 'o', 's', 'c', 'a', 'n', '.', 'a', 'e', 'r', 'o', '\0',
   /* "geraintwhite.co.uk", true */ 'g', 'e', 'r', 'a', 'i', 'n', 't', 'w', 'h', 'i', 't', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "gerardozamudio.mx", true */ 'g', 'e', 'r', 'a', 'r', 'd', 'o', 'z', 'a', 'm', 'u', 'd', 'i', 'o', '.', 'm', 'x', '\0',
   /* "gereon.ch", true */ 'g', 'e', 'r', 'e', 'o', 'n', '.', 'c', 'h', '\0',
-  /* "germandarknes.net", true */ 'g', 'e', 'r', 'm', 'a', 'n', 'd', 'a', 'r', 'k', 'n', 'e', 's', '.', 'n', 'e', 't', '\0',
+  /* "germandarknes.net", false */ 'g', 'e', 'r', 'm', 'a', 'n', 'd', 'a', 'r', 'k', 'n', 'e', 's', '.', 'n', 'e', 't', '\0',
   /* "gernert-server.de", true */ 'g', 'e', 'r', 'n', 'e', 'r', 't', '-', 's', 'e', 'r', 'v', 'e', 'r', '.', 'd', 'e', '\0',
   /* "gerritcodereview.com", true */ 'g', 'e', 'r', 'r', 'i', 't', 'c', 'o', 'd', 'e', 'r', 'e', 'v', 'i', 'e', 'w', '.', 'c', 'o', 'm', '\0',
   /* "gersting.net", true */ 'g', 'e', 'r', 's', 't', 'i', 'n', 'g', '.', 'n', 'e', 't', '\0',
   /* "gerwinvanderkamp.nl", true */ 'g', 'e', 'r', 'w', 'i', 'n', 'v', 'a', 'n', 'd', 'e', 'r', 'k', 'a', 'm', 'p', '.', 'n', 'l', '\0',
   /* "ges-bo.de", true */ 'g', 'e', 's', '-', 'b', 'o', '.', 'd', 'e', '\0',
   /* "geschwinder.net", true */ 'g', 'e', 's', 'c', 'h', 'w', 'i', 'n', 'd', 'e', 'r', '.', 'n', 'e', 't', '\0',
+  /* "gesiwista.net", true */ 'g', 'e', 's', 'i', 'w', 'i', 's', 't', 'a', '.', 'n', 'e', 't', '\0',
   /* "get-asterisk.ru", true */ 'g', 'e', 't', '-', 'a', 's', 't', 'e', 'r', 'i', 's', 'k', '.', 'r', 'u', '\0',
   /* "get-erp.ru", true */ 'g', 'e', 't', '-', 'e', 'r', 'p', '.', 'r', 'u', '\0',
   /* "get-on.bid", true */ 'g', 'e', 't', '-', 'o', 'n', '.', 'b', 'i', 'd', '\0',
   /* "get4x.com", true */ 'g', 'e', 't', '4', 'x', '.', 'c', 'o', 'm', '\0',
   /* "getbox.me", true */ 'g', 'e', 't', 'b', 'o', 'x', '.', 'm', 'e', '\0',
   /* "getbutterfly.com", true */ 'g', 'e', 't', 'b', 'u', 't', 't', 'e', 'r', 'f', 'l', 'y', '.', 'c', 'o', 'm', '\0',
   /* "getcarina.com", true */ 'g', 'e', 't', 'c', 'a', 'r', 'i', 'n', 'a', '.', 'c', 'o', 'm', '\0',
   /* "getcloak.com", false */ 'g', 'e', 't', 'c', 'l', 'o', 'a', 'k', '.', 'c', 'o', 'm', '\0',
   /* "getcolq.com", true */ 'g', 'e', 't', 'c', 'o', 'l', 'q', '.', 'c', 'o', 'm', '\0',
   /* "getdash.io", true */ 'g', 'e', 't', 'd', 'a', 's', 'h', '.', 'i', 'o', '\0',
   /* "getdigitized.net", true */ 'g', 'e', 't', 'd', 'i', 'g', 'i', 't', 'i', 'z', 'e', 'd', '.', 'n', 'e', 't', '\0',
   /* "geterp.ru", true */ 'g', 'e', 't', 'e', 'r', 'p', '.', 'r', 'u', '\0',
   /* "getfedora.org", true */ 'g', 'e', 't', 'f', 'e', 'd', 'o', 'r', 'a', '.', 'o', 'r', 'g', '\0',
-  /* "getfirepress.com", true */ 'g', 'e', 't', 'f', 'i', 'r', 'e', 'p', 'r', 'e', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "getfittedstore.com", true */ 'g', 'e', 't', 'f', 'i', 't', 't', 'e', 'd', 's', 't', 'o', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "getflorence.co.uk", true */ 'g', 'e', 't', 'f', 'l', 'o', 'r', 'e', 'n', 'c', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "getgeek.dk", true */ 'g', 'e', 't', 'g', 'e', 'e', 'k', '.', 'd', 'k', '\0',
   /* "getgeek.eu", true */ 'g', 'e', 't', 'g', 'e', 'e', 'k', '.', 'e', 'u', '\0',
   /* "getgeek.fi", true */ 'g', 'e', 't', 'g', 'e', 'e', 'k', '.', 'f', 'i', '\0',
   /* "getgeek.io", true */ 'g', 'e', 't', 'g', 'e', 'e', 'k', '.', 'i', 'o', '\0',
   /* "getgeek.no", true */ 'g', 'e', 't', 'g', 'e', 'e', 'k', '.', 'n', 'o', '\0',
   /* "getgeek.nu", true */ 'g', 'e', 't', 'g', 'e', 'e', 'k', '.', 'n', 'u', '\0',
@@ -4895,16 +4899,17 @@ static const char kSTSHostTable[] = {
   /* "giveattheoffice.org", false */ 'g', 'i', 'v', 'e', 'a', 't', 't', 'h', 'e', 'o', 'f', 'f', 'i', 'c', 'e', '.', 'o', 'r', 'g', '\0',
   /* "givingnexus.org", false */ 'g', 'i', 'v', 'i', 'n', 'g', 'n', 'e', 'x', 'u', 's', '.', 'o', 'r', 'g', '\0',
   /* "gix.net.pl", true */ 'g', 'i', 'x', '.', 'n', 'e', 't', '.', 'p', 'l', '\0',
   /* "gixtools.co.uk", true */ 'g', 'i', 'x', 't', 'o', 'o', 'l', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "gixtools.com", true */ 'g', 'i', 'x', 't', 'o', 'o', 'l', 's', '.', 'c', 'o', 'm', '\0',
   /* "gixtools.net", true */ 'g', 'i', 'x', 't', 'o', 'o', 'l', 's', '.', 'n', 'e', 't', '\0',
   /* "gixtools.uk", true */ 'g', 'i', 'x', 't', 'o', 'o', 'l', 's', '.', 'u', 'k', '\0',
   /* "gjcampbell.co.uk", true */ 'g', 'j', 'c', 'a', 'm', 'p', 'b', 'e', 'l', 'l', '.', 'c', 'o', '.', 'u', 'k', '\0',
+  /* "gjspunk.de", true */ 'g', 'j', 's', 'p', 'u', 'n', 'k', '.', 'd', 'e', '\0',
   /* "gjung.com", false */ 'g', 'j', 'u', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "gkralik.eu", true */ 'g', 'k', 'r', 'a', 'l', 'i', 'k', '.', 'e', 'u', '\0',
   /* "glamguru.co.il", true */ 'g', 'l', 'a', 'm', 'g', 'u', 'r', 'u', '.', 'c', 'o', '.', 'i', 'l', '\0',
   /* "glasen-hardt.de", true */ 'g', 'l', 'a', 's', 'e', 'n', '-', 'h', 'a', 'r', 'd', 't', '.', 'd', 'e', '\0',
   /* "glasfaser-im-hanseviertel.de", true */ 'g', 'l', 'a', 's', 'f', 'a', 's', 'e', 'r', '-', 'i', 'm', '-', 'h', 'a', 'n', 's', 'e', 'v', 'i', 'e', 'r', 't', 'e', 'l', '.', 'd', 'e', '\0',
   /* "glasgestaltung.biz", true */ 'g', 'l', 'a', 's', 'g', 'e', 's', 't', 'a', 'l', 't', 'u', 'n', 'g', '.', 'b', 'i', 'z', '\0',
   /* "glasner.photo", true */ 'g', 'l', 'a', 's', 'n', 'e', 'r', '.', 'p', 'h', 'o', 't', 'o', '\0',
   /* "glass.google.com", true */ 'g', 'l', 'a', 's', 's', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
@@ -4947,17 +4952,16 @@ static const char kSTSHostTable[] = {
   /* "goalsetup.com", true */ 'g', 'o', 'a', 'l', 's', 'e', 't', 'u', 'p', '.', 'c', 'o', 'm', '\0',
   /* "gocardless.com", true */ 'g', 'o', 'c', 'a', 'r', 'd', 'l', 'e', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "godesigner.ru", true */ 'g', 'o', 'd', 'e', 's', 'i', 'g', 'n', 'e', 'r', '.', 'r', 'u', '\0',
   /* "godrive.ga", true */ 'g', 'o', 'd', 'r', 'i', 'v', 'e', '.', 'g', 'a', '\0',
   /* "godsofhell.com", true */ 'g', 'o', 'd', 's', 'o', 'f', 'h', 'e', 'l', 'l', '.', 'c', 'o', 'm', '\0',
   /* "goerres2014.de", true */ 'g', 'o', 'e', 'r', 'r', 'e', 's', '2', '0', '1', '4', '.', 'd', 'e', '\0',
   /* "goetemp.de", true */ 'g', 'o', 'e', 't', 'e', 'm', 'p', '.', 'd', 'e', '\0',
   /* "gofigure.fr", false */ 'g', 'o', 'f', 'i', 'g', 'u', 'r', 'e', '.', 'f', 'r', '\0',
-  /* "goggs.eu", true */ 'g', 'o', 'g', 'g', 's', '.', 'e', 'u', '\0',
   /* "gogoodyear.eu", true */ 'g', 'o', 'g', 'o', 'o', 'd', 'y', 'e', 'a', 'r', '.', 'e', 'u', '\0',
   /* "gogsat.com", true */ 'g', 'o', 'g', 's', 'a', 't', '.', 'c', 'o', 'm', '\0',
   /* "gohon.org", true */ 'g', 'o', 'h', 'o', 'n', '.', 'o', 'r', 'g', '\0',
   /* "gokhankesici.com", true */ 'g', 'o', 'k', 'h', 'a', 'n', 'k', 'e', 's', 'i', 'c', 'i', '.', 'c', 'o', 'm', '\0',
   /* "gokmenguresci.com", true */ 'g', 'o', 'k', 'm', 'e', 'n', 'g', 'u', 'r', 'e', 's', 'c', 'i', '.', 'c', 'o', 'm', '\0',
   /* "gold24.ru", true */ 'g', 'o', 'l', 'd', '2', '4', '.', 'r', 'u', '\0',
   /* "goldenhillsoftware.com", true */ 'g', 'o', 'l', 'd', 'e', 'n', 'h', 'i', 'l', 'l', 's', 'o', 'f', 't', 'w', 'a', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "goldenhost.ca", true */ 'g', 'o', 'l', 'd', 'e', 'n', 'h', 'o', 's', 't', '.', 'c', 'a', '\0',
@@ -5024,16 +5028,17 @@ static const char kSTSHostTable[] = {
   /* "graceful-project.eu", true */ 'g', 'r', 'a', 'c', 'e', 'f', 'u', 'l', '-', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'e', 'u', '\0',
   /* "gracethrufaith.com", true */ 'g', 'r', 'a', 'c', 'e', 't', 'h', 'r', 'u', 'f', 'a', 'i', 't', 'h', '.', 'c', 'o', 'm', '\0',
   /* "graciousmay.com", true */ 'g', 'r', 'a', 'c', 'i', 'o', 'u', 's', 'm', 'a', 'y', '.', 'c', 'o', 'm', '\0',
   /* "grademymac.com", true */ 'g', 'r', 'a', 'd', 'e', 'm', 'y', 'm', 'a', 'c', '.', 'c', 'o', 'm', '\0',
   /* "grademypc.com", true */ 'g', 'r', 'a', 'd', 'e', 'm', 'y', 'p', 'c', '.', 'c', 'o', 'm', '\0',
   /* "gradienthosting.co.uk", true */ 'g', 'r', 'a', 'd', 'i', 'e', 'n', 't', 'h', 'o', 's', 't', 'i', 'n', 'g', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "graf.re", true */ 'g', 'r', 'a', 'f', '.', 'r', 'e', '\0',
   /* "grafcaps.com", true */ 'g', 'r', 'a', 'f', 'c', 'a', 'p', 's', '.', 'c', 'o', 'm', '\0',
+  /* "graffen.dk", true */ 'g', 'r', 'a', 'f', 'f', 'e', 'n', '.', 'd', 'k', '\0',
   /* "grafitec.ru", true */ 'g', 'r', 'a', 'f', 'i', 't', 'e', 'c', '.', 'r', 'u', '\0',
   /* "grafmurr.de", true */ 'g', 'r', 'a', 'f', 'm', 'u', 'r', 'r', '.', 'd', 'e', '\0',
   /* "graingert.co.uk", true */ 'g', 'r', 'a', 'i', 'n', 'g', 'e', 'r', 't', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "graliv.net", true */ 'g', 'r', 'a', 'l', 'i', 'v', '.', 'n', 'e', 't', '\0',
   /* "granary-demo.appspot.com", true */ 'g', 'r', 'a', 'n', 'a', 'r', 'y', '-', 'd', 'e', 'm', 'o', '.', 'a', 'p', 'p', 's', 'p', 'o', 't', '.', 'c', 'o', 'm', '\0',
   /* "grandcapital.id", true */ 'g', 'r', 'a', 'n', 'd', 'c', 'a', 'p', 'i', 't', 'a', 'l', '.', 'i', 'd', '\0',
   /* "grandcapital.ru", true */ 'g', 'r', 'a', 'n', 'd', 'c', 'a', 'p', 'i', 't', 'a', 'l', '.', 'r', 'u', '\0',
   /* "grandlinecsk.ru", true */ 'g', 'r', 'a', 'n', 'd', 'l', 'i', 'n', 'e', 'c', 's', 'k', '.', 'r', 'u', '\0',
@@ -5341,17 +5346,16 @@ static const char kSTSHostTable[] = {
   /* "hdcenter.cc", true */ 'h', 'd', 'c', 'e', 'n', 't', 'e', 'r', '.', 'c', 'c', '\0',
   /* "hdeaves.uk", true */ 'h', 'd', 'e', 'a', 'v', 'e', 's', '.', 'u', 'k', '\0',
   /* "hdfgroup.org", true */ 'h', 'd', 'f', 'g', 'r', 'o', 'u', 'p', '.', 'o', 'r', 'g', '\0',
   /* "hdhoang.space", true */ 'h', 'd', 'h', 'o', 'a', 'n', 'g', '.', 's', 'p', 'a', 'c', 'e', '\0',
   /* "hdrboundless.com", true */ 'h', 'd', 'r', 'b', 'o', 'u', 'n', 'd', 'l', 'e', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "hdrsource.com", true */ 'h', 'd', 'r', 's', 'o', 'u', 'r', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "hdrtranscon.com", true */ 'h', 'd', 'r', 't', 'r', 'a', 'n', 's', 'c', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "hds-lan.de", true */ 'h', 'd', 's', '-', 'l', 'a', 'n', '.', 'd', 'e', '\0',
-  /* "hdsmigrationtool.com", true */ 'h', 'd', 's', 'm', 'i', 'g', 'r', 'a', 't', 'i', 'o', 'n', 't', 'o', 'o', 'l', '.', 'c', 'o', 'm', '\0',
   /* "hdy.nz", true */ 'h', 'd', 'y', '.', 'n', 'z', '\0',
   /* "head.org", true */ 'h', 'e', 'a', 'd', '.', 'o', 'r', 'g', '\0',
   /* "headjapan.com", true */ 'h', 'e', 'a', 'd', 'j', 'a', 'p', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "healthcare.gov", false */ 'h', 'e', 'a', 'l', 't', 'h', 'c', 'a', 'r', 'e', '.', 'g', 'o', 'v', '\0',
   /* "healtheffectsofasbestos.com", true */ 'h', 'e', 'a', 'l', 't', 'h', 'e', 'f', 'f', 'e', 'c', 't', 's', 'o', 'f', 'a', 's', 'b', 'e', 's', 't', 'o', 's', '.', 'c', 'o', 'm', '\0',
   /* "healthfoam.com", true */ 'h', 'e', 'a', 'l', 't', 'h', 'f', 'o', 'a', 'm', '.', 'c', 'o', 'm', '\0',
   /* "healthiercompany.com", true */ 'h', 'e', 'a', 'l', 't', 'h', 'i', 'e', 'r', 'c', 'o', 'm', 'p', 'a', 'n', 'y', '.', 'c', 'o', 'm', '\0',
   /* "healthjoy.com", true */ 'h', 'e', 'a', 'l', 't', 'h', 'j', 'o', 'y', '.', 'c', 'o', 'm', '\0',
@@ -5438,16 +5442,17 @@ static const char kSTSHostTable[] = {
   /* "herr-webdesign.de", true */ 'h', 'e', 'r', 'r', '-', 'w', 'e', 'b', 'd', 'e', 's', 'i', 'g', 'n', '.', 'd', 'e', '\0',
   /* "herrenfahrt.com", true */ 'h', 'e', 'r', 'r', 'e', 'n', 'f', 'a', 'h', 'r', 't', '.', 'c', 'o', 'm', '\0',
   /* "herringsresidence.be", true */ 'h', 'e', 'r', 'r', 'i', 'n', 'g', 's', 'r', 'e', 's', 'i', 'd', 'e', 'n', 'c', 'e', '.', 'b', 'e', '\0',
   /* "herrsmith.com", true */ 'h', 'e', 'r', 'r', 's', 'm', 'i', 't', 'h', '.', 'c', 'o', 'm', '\0',
   /* "hesaplama.net", true */ 'h', 'e', 's', 'a', 'p', 'l', 'a', 'm', 'a', '.', 'n', 'e', 't', '\0',
   /* "hethely.ch", true */ 'h', 'e', 't', 'h', 'e', 'l', 'y', '.', 'c', 'h', '\0',
   /* "hetmer.com", true */ 'h', 'e', 't', 'm', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "heute-kaufen.de", true */ 'h', 'e', 'u', 't', 'e', '-', 'k', 'a', 'u', 'f', 'e', 'n', '.', 'd', 'e', '\0',
+  /* "heutger.net", true */ 'h', 'e', 'u', 't', 'g', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "hex2013.com", true */ 'h', 'e', 'x', '2', '0', '1', '3', '.', 'c', 'o', 'm', '\0',
   /* "hexacon.io", true */ 'h', 'e', 'x', 'a', 'c', 'o', 'n', '.', 'i', 'o', '\0',
   /* "hexagon-e.com", true */ 'h', 'e', 'x', 'a', 'g', 'o', 'n', '-', 'e', '.', 'c', 'o', 'm', '\0',
   /* "hexe.net", true */ 'h', 'e', 'x', 'e', '.', 'n', 'e', 't', '\0',
   /* "hexed.it", true */ 'h', 'e', 'x', 'e', 'd', '.', 'i', 't', '\0',
   /* "hexicurity.com", true */ 'h', 'e', 'x', 'i', 'c', 'u', 'r', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "hexid.me", true */ 'h', 'e', 'x', 'i', 'd', '.', 'm', 'e', '\0',
   /* "hexo.io", true */ 'h', 'e', 'x', 'o', '.', 'i', 'o', '\0',
@@ -5464,34 +5469,33 @@ static const char kSTSHostTable[] = {
   /* "hiexmerida-mailing.com", true */ 'h', 'i', 'e', 'x', 'm', 'e', 'r', 'i', 'd', 'a', '-', 'm', 'a', 'i', 'l', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "higgstools.org", true */ 'h', 'i', 'g', 'g', 's', 't', 'o', 'o', 'l', 's', '.', 'o', 'r', 'g', '\0',
   /* "highvelocitydesign.com", true */ 'h', 'i', 'g', 'h', 'v', 'e', 'l', 'o', 'c', 'i', 't', 'y', 'd', 'e', 's', 'i', 'g', 'n', '.', 'c', 'o', 'm', '\0',
   /* "higp.de", true */ 'h', 'i', 'g', 'p', '.', 'd', 'e', '\0',
   /* "hiisukun.com", true */ 'h', 'i', 'i', 's', 'u', 'k', 'u', 'n', '.', 'c', 'o', 'm', '\0',
   /* "hilahdih.cz", true */ 'h', 'i', 'l', 'a', 'h', 'd', 'i', 'h', '.', 'c', 'z', '\0',
   /* "hilaolu.com", true */ 'h', 'i', 'l', 'a', 'o', 'l', 'u', '.', 'c', 'o', 'm', '\0',
   /* "hilnu.com", true */ 'h', 'i', 'l', 'n', 'u', '.', 'c', 'o', 'm', '\0',
-  /* "hilnu.tk", true */ 'h', 'i', 'l', 'n', 'u', '.', 't', 'k', '\0',
   /* "hilti.ee", false */ 'h', 'i', 'l', 't', 'i', '.', 'e', 'e', '\0',
   /* "hilti.kz", false */ 'h', 'i', 'l', 't', 'i', '.', 'k', 'z', '\0',
   /* "hilti.lv", false */ 'h', 'i', 'l', 't', 'i', '.', 'l', 'v', '\0',
   /* "hintergedanken.com", true */ 'h', 'i', 'n', 't', 'e', 'r', 'g', 'e', 'd', 'a', 'n', 'k', 'e', 'n', '.', 'c', 'o', 'm', '\0',
   /* "hintergrundbewegung.de", true */ 'h', 'i', 'n', 't', 'e', 'r', 'g', 'r', 'u', 'n', 'd', 'b', 'e', 'w', 'e', 'g', 'u', 'n', 'g', '.', 'd', 'e', '\0',
   /* "hippies.com.br", true */ 'h', 'i', 'p', 'p', 'i', 'e', 's', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "hipstercat.fr", true */ 'h', 'i', 'p', 's', 't', 'e', 'r', 'c', 'a', 't', '.', 'f', 'r', '\0',
   /* "hiqfleet.co.uk", true */ 'h', 'i', 'q', 'f', 'l', 'e', 'e', 't', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "hiqfranchise.co.uk", true */ 'h', 'i', 'q', 'f', 'r', 'a', 'n', 'c', 'h', 'i', 's', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "hiqhub.co.uk", true */ 'h', 'i', 'q', 'h', 'u', 'b', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "hiqonline.co.uk", true */ 'h', 'i', 'q', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "hirake55.com", true */ 'h', 'i', 'r', 'a', 'k', 'e', '5', '5', '.', 'c', 'o', 'm', '\0',
   /* "hirte-digital.de", true */ 'h', 'i', 'r', 't', 'e', '-', 'd', 'i', 'g', 'i', 't', 'a', 'l', '.', 'd', 'e', '\0',
   /* "hisbrucker.net", true */ 'h', 'i', 's', 'b', 'r', 'u', 'c', 'k', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "hisnet.de", true */ 'h', 'i', 's', 'n', 'e', 't', '.', 'd', 'e', '\0',
   /* "hispanic.dating", true */ 'h', 'i', 's', 'p', 'a', 'n', 'i', 'c', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0',
-  /* "history.google.com", false */ 'h', 'i', 's', 't', 'o', 'r', 'y', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
+  /* "history.google.com", true */ 'h', 'i', 's', 't', 'o', 'r', 'y', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "hitchunion.org", true */ 'h', 'i', 't', 'c', 'h', 'u', 'n', 'i', 'o', 'n', '.', 'o', 'r', 'g', '\0',
   /* "hititgunesi-tr.com", true */ 'h', 'i', 't', 'i', 't', 'g', 'u', 'n', 'e', 's', 'i', '-', 't', 'r', '.', 'c', 'o', 'm', '\0',
   /* "hiv.gov", true */ 'h', 'i', 'v', '.', 'g', 'o', 'v', '\0',
   /* "hiverlune.net", true */ 'h', 'i', 'v', 'e', 'r', 'l', 'u', 'n', 'e', '.', 'n', 'e', 't', '\0',
   /* "hjortland.org", true */ 'h', 'j', 'o', 'r', 't', 'l', 'a', 'n', 'd', '.', 'o', 'r', 'g', '\0',
   /* "hjw-kunstwerk.de", true */ 'h', 'j', 'w', '-', 'k', 'u', 'n', 's', 't', 'w', 'e', 'r', 'k', '.', 'd', 'e', '\0',
   /* "hk.search.yahoo.com", false */ 'h', 'k', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "hkdobrev.com", true */ 'h', 'k', 'd', 'o', 'b', 'r', 'e', 'v', '.', 'c', 'o', 'm', '\0',
@@ -5567,16 +5571,17 @@ static const char kSTSHostTable[] = {
   /* "horvathd.eu", false */ 'h', 'o', 'r', 'v', 'a', 't', 'h', 'd', '.', 'e', 'u', '\0',
   /* "horvathtom.com", true */ 'h', 'o', 'r', 'v', 'a', 't', 'h', 't', 'o', 'm', '.', 'c', 'o', 'm', '\0',
   /* "hory.me", true */ 'h', 'o', 'r', 'y', '.', 'm', 'e', '\0',
   /* "horza.org", true */ 'h', 'o', 'r', 'z', 'a', '.', 'o', 'r', 'g', '\0',
   /* "hoshinplan.com", true */ 'h', 'o', 's', 'h', 'i', 'n', 'p', 'l', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "hoshisato.com", true */ 'h', 'o', 's', 'h', 'i', 's', 'a', 't', 'o', '.', 'c', 'o', 'm', '\0',
   /* "hosiet.me", true */ 'h', 'o', 's', 'i', 'e', 't', '.', 'm', 'e', '\0',
   /* "hospitalhomelottery.org", true */ 'h', 'o', 's', 'p', 'i', 't', 'a', 'l', 'h', 'o', 'm', 'e', 'l', 'o', 't', 't', 'e', 'r', 'y', '.', 'o', 'r', 'g', '\0',
+  /* "hostam.link", true */ 'h', 'o', 's', 't', 'a', 'm', '.', 'l', 'i', 'n', 'k', '\0',
   /* "hostanalyticsconsulting.com", true */ 'h', 'o', 's', 't', 'a', 'n', 'a', 'l', 'y', 't', 'i', 'c', 's', 'c', 'o', 'n', 's', 'u', 'l', 't', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "hosteasy.nl", true */ 'h', 'o', 's', 't', 'e', 'a', 's', 'y', '.', 'n', 'l', '\0',
   /* "hosted-oswa.org", true */ 'h', 'o', 's', 't', 'e', 'd', '-', 'o', 's', 'w', 'a', '.', 'o', 'r', 'g', '\0',
   /* "hosted4u.de", true */ 'h', 'o', 's', 't', 'e', 'd', '4', 'u', '.', 'd', 'e', '\0',
   /* "hostedbgp.net", true */ 'h', 'o', 's', 't', 'e', 'd', 'b', 'g', 'p', '.', 'n', 'e', 't', '\0',
   /* "hostedtalkgadget.google.com", true */ 'h', 'o', 's', 't', 'e', 'd', 't', 'a', 'l', 'k', 'g', 'a', 'd', 'g', 'e', 't', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "hostelite.com", true */ 'h', 'o', 's', 't', 'e', 'l', 'i', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "hostfission.com", true */ 'h', 'o', 's', 't', 'f', 'i', 's', 's', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
@@ -5782,16 +5787,17 @@ static const char kSTSHostTable[] = {
   /* "ihostup.net", true */ 'i', 'h', 'o', 's', 't', 'u', 'p', '.', 'n', 'e', 't', '\0',
   /* "ihsbsd.tk", true */ 'i', 'h', 's', 'b', 's', 'd', '.', 't', 'k', '\0',
   /* "iirii.com", true */ 'i', 'i', 'r', 'i', 'i', '.', 'c', 'o', 'm', '\0',
   /* "iispeed.com", true */ 'i', 'i', 's', 'p', 'e', 'e', 'd', '.', 'c', 'o', 'm', '\0',
   /* "ijohan.nl", true */ 'i', 'j', 'o', 'h', 'a', 'n', '.', 'n', 'l', '\0',
   /* "ijsclubtilburg.nl", true */ 'i', 'j', 's', 'c', 'l', 'u', 'b', 't', 'i', 'l', 'b', 'u', 'r', 'g', '.', 'n', 'l', '\0',
   /* "ikachalife.com", true */ 'i', 'k', 'a', 'c', 'h', 'a', 'l', 'i', 'f', 'e', '.', 'c', 'o', 'm', '\0',
   /* "ikeyless.com", true */ 'i', 'k', 'e', 'y', 'l', 'e', 's', 's', '.', 'c', 'o', 'm', '\0',
+  /* "ikk.me", true */ 'i', 'k', 'k', '.', 'm', 'e', '\0',
   /* "ikkatsu-satei.jp", true */ 'i', 'k', 'k', 'a', 't', 's', 'u', '-', 's', 'a', 't', 'e', 'i', '.', 'j', 'p', '\0',
   /* "iklive.org", true */ 'i', 'k', 'l', 'i', 'v', 'e', '.', 'o', 'r', 'g', '\0',
   /* "ikocik.sk", true */ 'i', 'k', 'o', 'c', 'i', 'k', '.', 's', 'k', '\0',
   /* "ikon.name", true */ 'i', 'k', 'o', 'n', '.', 'n', 'a', 'm', 'e', '\0',
   /* "ikvts.de", true */ 'i', 'k', 'v', 't', 's', '.', 'd', 'e', '\0',
   /* "ikwilthepiratebay.org", true */ 'i', 'k', 'w', 'i', 'l', 't', 'h', 'e', 'p', 'i', 'r', 'a', 't', 'e', 'b', 'a', 'y', '.', 'o', 'r', 'g', '\0',
   /* "ikzoekjeugdhulp.nl", true */ 'i', 'k', 'z', 'o', 'e', 'k', 'j', 'e', 'u', 'g', 'd', 'h', 'u', 'l', 'p', '.', 'n', 'l', '\0',
   /* "ila.fi", true */ 'i', 'l', 'a', '.', 'f', 'i', '\0',
@@ -5807,17 +5813,16 @@ static const char kSTSHostTable[] = {
   /* "ilrg.com", true */ 'i', 'l', 'r', 'g', '.', 'c', 'o', 'm', '\0',
   /* "iltisim.ch", true */ 'i', 'l', 't', 'i', 's', 'i', 'm', '.', 'c', 'h', '\0',
   /* "im-c-shop.com", true */ 'i', 'm', '-', 'c', '-', 's', 'h', 'o', 'p', '.', 'c', 'o', 'm', '\0',
   /* "im2net.com", true */ 'i', 'm', '2', 'n', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "imagefu.com", true */ 'i', 'm', 'a', 'g', 'e', 'f', 'u', '.', 'c', 'o', 'm', '\0',
   /* "imagescostumes.com", true */ 'i', 'm', 'a', 'g', 'e', 's', 'c', 'o', 's', 't', 'u', 'm', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "imaginary.ca", true */ 'i', 'm', 'a', 'g', 'i', 'n', 'a', 'r', 'y', '.', 'c', 'a', '\0',
   /* "imagr.io", true */ 'i', 'm', 'a', 'g', 'r', '.', 'i', 'o', '\0',
-  /* "imakepoems.net", true */ 'i', 'm', 'a', 'k', 'e', 'p', 'o', 'e', 'm', 's', '.', 'n', 'e', 't', '\0',
   /* "imanolbarba.net", true */ 'i', 'm', 'a', 'n', 'o', 'l', 'b', 'a', 'r', 'b', 'a', '.', 'n', 'e', 't', '\0',
   /* "imanudin.net", true */ 'i', 'm', 'a', 'n', 'u', 'd', 'i', 'n', '.', 'n', 'e', 't', '\0',
   /* "imbrian.org", true */ 'i', 'm', 'b', 'r', 'i', 'a', 'n', '.', 'o', 'r', 'g', '\0',
   /* "imbushuo.net", true */ 'i', 'm', 'b', 'u', 's', 'h', 'u', 'o', '.', 'n', 'e', 't', '\0',
   /* "imed.pt", true */ 'i', 'm', 'e', 'd', '.', 'p', 't', '\0',
   /* "imedi.co.uk", true */ 'i', 'm', 'e', 'd', 'i', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "imedi.it", true */ 'i', 'm', 'e', 'd', 'i', '.', 'i', 't', '\0',
   /* "imedikament.de", true */ 'i', 'm', 'e', 'd', 'i', 'k', 'a', 'm', 'e', 'n', 't', '.', 'd', 'e', '\0',
@@ -5825,16 +5830,17 @@ static const char kSTSHostTable[] = {
   /* "imforza.com", true */ 'i', 'm', 'f', 'o', 'r', 'z', 'a', '.', 'c', 'o', 'm', '\0',
   /* "imgaa.com", true */ 'i', 'm', 'g', 'a', 'a', '.', 'c', 'o', 'm', '\0',
   /* "imgencrypt.com", true */ 'i', 'm', 'g', 'e', 'n', 'c', 'r', 'y', 'p', 't', '.', 'c', 'o', 'm', '\0',
   /* "imgg.es", true */ 'i', 'm', 'g', 'g', '.', 'e', 's', '\0',
   /* "imguploaden.nl", true */ 'i', 'm', 'g', 'u', 'p', 'l', 'o', 'a', 'd', 'e', 'n', '.', 'n', 'l', '\0',
   /* "imirhil.fr", true */ 'i', 'm', 'i', 'r', 'h', 'i', 'l', '.', 'f', 'r', '\0',
   /* "imitza.com", true */ 'i', 'm', 'i', 't', 'z', 'a', '.', 'c', 'o', 'm', '\0',
   /* "imjad.cn", true */ 'i', 'm', 'j', 'a', 'd', '.', 'c', 'n', '\0',
+  /* "imjiangtao.com", true */ 'i', 'm', 'j', 'i', 'a', 'n', 'g', 't', 'a', 'o', '.', 'c', 'o', 'm', '\0',
   /* "imlonghao.com", true */ 'i', 'm', 'l', 'o', 'n', 'g', 'h', 'a', 'o', '.', 'c', 'o', 'm', '\0',
   /* "immaterium.de", true */ 'i', 'm', 'm', 'a', 't', 'e', 'r', 'i', 'u', 'm', '.', 'd', 'e', '\0',
   /* "immersivewebportal.com", true */ 'i', 'm', 'm', 'e', 'r', 's', 'i', 'v', 'e', 'w', 'e', 'b', 'p', 'o', 'r', 't', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "immigrationdirect.com.au", true */ 'i', 'm', 'm', 'i', 'g', 'r', 'a', 't', 'i', 'o', 'n', 'd', 'i', 'r', 'e', 'c', 't', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "immobilier-nice.fr", true */ 'i', 'm', 'm', 'o', 'b', 'i', 'l', 'i', 'e', 'r', '-', 'n', 'i', 'c', 'e', '.', 'f', 'r', '\0',
   /* "immunicity.cc", true */ 'i', 'm', 'm', 'u', 'n', 'i', 'c', 'i', 't', 'y', '.', 'c', 'c', '\0',
   /* "immunicity.date", true */ 'i', 'm', 'm', 'u', 'n', 'i', 'c', 'i', 't', 'y', '.', 'd', 'a', 't', 'e', '\0',
   /* "immunicity.eu", true */ 'i', 'm', 'm', 'u', 'n', 'i', 'c', 'i', 't', 'y', '.', 'e', 'u', '\0',
@@ -6157,16 +6163,17 @@ static const char kSTSHostTable[] = {
   /* "ivi.net.br", true */ 'i', 'v', 'i', '.', 'n', 'e', 't', '.', 'b', 'r', '\0',
   /* "ivi.pt", true */ 'i', 'v', 'i', '.', 'p', 't', '\0',
   /* "ivinet.cl", true */ 'i', 'v', 'i', 'n', 'e', 't', '.', 'c', 'l', '\0',
   /* "ivitalia.it", true */ 'i', 'v', 'i', 't', 'a', 'l', 'i', 'a', '.', 'i', 't', '\0',
   /* "ivo.co.za", true */ 'i', 'v', 'o', '.', 'c', 'o', '.', 'z', 'a', '\0',
   /* "ivpn.net", true */ 'i', 'v', 'p', 'n', '.', 'n', 'e', 't', '\0',
   /* "iwader.co.uk", true */ 'i', 'w', 'a', 'd', 'e', 'r', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "iwalton.com", true */ 'i', 'w', 'a', 'l', 't', 'o', 'n', '.', 'c', 'o', 'm', '\0',
+  /* "iwannarefill.com", true */ 'i', 'w', 'a', 'n', 'n', 'a', 'r', 'e', 'f', 'i', 'l', 'l', '.', 'c', 'o', 'm', '\0',
   /* "iwilcox.me.uk", true */ 'i', 'w', 'i', 'l', 'c', 'o', 'x', '.', 'm', 'e', '.', 'u', 'k', '\0',
   /* "iwizerunek.pl", true */ 'i', 'w', 'i', 'z', 'e', 'r', 'u', 'n', 'e', 'k', '.', 'p', 'l', '\0',
   /* "iww.me", true */ 'i', 'w', 'w', '.', 'm', 'e', '\0',
   /* "ix8.ru", true */ 'i', 'x', '8', '.', 'r', 'u', '\0',
   /* "ixds.org", true */ 'i', 'x', 'd', 's', '.', 'o', 'r', 'g', '\0',
   /* "ixio.cz", true */ 'i', 'x', 'i', 'o', '.', 'c', 'z', '\0',
   /* "ixnext.de", true */ 'i', 'x', 'n', 'e', 'x', 't', '.', 'd', 'e', '\0',
   /* "ixquick-proxy.com", true */ 'i', 'x', 'q', 'u', 'i', 'c', 'k', '-', 'p', 'r', 'o', 'x', 'y', '.', 'c', 'o', 'm', '\0',
@@ -6368,16 +6375,17 @@ static const char kSTSHostTable[] = {
   /* "jobs.at", true */ 'j', 'o', 'b', 's', '.', 'a', 't', '\0',
   /* "jobss.co.uk", true */ 'j', 'o', 'b', 's', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "jodlajodla.si", true */ 'j', 'o', 'd', 'l', 'a', 'j', 'o', 'd', 'l', 'a', '.', 's', 'i', '\0',
   /* "joduska.me", true */ 'j', 'o', 'd', 'u', 's', 'k', 'a', '.', 'm', 'e', '\0',
   /* "jodyboucher.com", true */ 'j', 'o', 'd', 'y', 'b', 'o', 'u', 'c', 'h', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "joe-pagan.com", true */ 'j', 'o', 'e', '-', 'p', 'a', 'g', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "joehenry.co.uk", true */ 'j', 'o', 'e', 'h', 'e', 'n', 'r', 'y', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "joelj.org", true */ 'j', 'o', 'e', 'l', 'j', '.', 'o', 'r', 'g', '\0',
+  /* "joepitt.co.uk", false */ 'j', 'o', 'e', 'p', 'i', 't', 't', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "joerss.at", true */ 'j', 'o', 'e', 'r', 's', 's', '.', 'a', 't', '\0',
   /* "joestead.codes", true */ 'j', 'o', 'e', 's', 't', 'e', 'a', 'd', '.', 'c', 'o', 'd', 'e', 's', '\0',
   /* "jogorama.com.br", false */ 'j', 'o', 'g', 'o', 'r', 'a', 'm', 'a', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "johannes-sprink.de", true */ 'j', 'o', 'h', 'a', 'n', 'n', 'e', 's', '-', 's', 'p', 'r', 'i', 'n', 'k', '.', 'd', 'e', '\0',
   /* "johannes.io", true */ 'j', 'o', 'h', 'a', 'n', 'n', 'e', 's', '.', 'i', 'o', '\0',
   /* "johannes.wtf", true */ 'j', 'o', 'h', 'a', 'n', 'n', 'e', 's', '.', 'w', 't', 'f', '\0',
   /* "johnblackbourn.com", true */ 'j', 'o', 'h', 'n', 'b', 'l', 'a', 'c', 'k', 'b', 'o', 'u', 'r', 'n', '.', 'c', 'o', 'm', '\0',
   /* "johnbrownphotography.ch", true */ 'j', 'o', 'h', 'n', 'b', 'r', 'o', 'w', 'n', 'p', 'h', 'o', 't', 'o', 'g', 'r', 'a', 'p', 'h', 'y', '.', 'c', 'h', '\0',
@@ -6388,17 +6396,16 @@ static const char kSTSHostTable[] = {
   /* "johnmcintosh.pro", true */ 'j', 'o', 'h', 'n', 'm', 'c', 'i', 'n', 't', 'o', 's', 'h', '.', 'p', 'r', 'o', '\0',
   /* "johnmh.me", true */ 'j', 'o', 'h', 'n', 'm', 'h', '.', 'm', 'e', '\0',
   /* "johnmichel.org", true */ 'j', 'o', 'h', 'n', 'm', 'i', 'c', 'h', 'e', 'l', '.', 'o', 'r', 'g', '\0',
   /* "johnnybet.com", true */ 'j', 'o', 'h', 'n', 'n', 'y', 'b', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "johnroach.io", true */ 'j', 'o', 'h', 'n', 'r', 'o', 'a', 'c', 'h', '.', 'i', 'o', '\0',
   /* "johnvanhese.nl", true */ 'j', 'o', 'h', 'n', 'v', 'a', 'n', 'h', 'e', 's', 'e', '.', 'n', 'l', '\0',
   /* "johnverkerk.com", true */ 'j', 'o', 'h', 'n', 'v', 'e', 'r', 'k', 'e', 'r', 'k', '.', 'c', 'o', 'm', '\0',
   /* "jointoweb.com", true */ 'j', 'o', 'i', 'n', 't', 'o', 'w', 'e', 'b', '.', 'c', 'o', 'm', '\0',
-  /* "jokewignand.nl", true */ 'j', 'o', 'k', 'e', 'w', 'i', 'g', 'n', 'a', 'n', 'd', '.', 'n', 'l', '\0',
   /* "jollausers.de", true */ 'j', 'o', 'l', 'l', 'a', 'u', 's', 'e', 'r', 's', '.', 'd', 'e', '\0',
   /* "jonarcher.info", true */ 'j', 'o', 'n', 'a', 'r', 'c', 'h', 'e', 'r', '.', 'i', 'n', 'f', 'o', '\0',
   /* "jonas-thelemann.de", true */ 'j', 'o', 'n', 'a', 's', '-', 't', 'h', 'e', 'l', 'e', 'm', 'a', 'n', 'n', '.', 'd', 'e', '\0',
   /* "jonaskjodt.com", true */ 'j', 'o', 'n', 'a', 's', 'k', 'j', 'o', 'd', 't', '.', 'c', 'o', 'm', '\0',
   /* "jonaswitmer.ch", true */ 'j', 'o', 'n', 'a', 's', 'w', 'i', 't', 'm', 'e', 'r', '.', 'c', 'h', '\0',
   /* "jonathan-apps.com", true */ 'j', 'o', 'n', 'a', 't', 'h', 'a', 'n', '-', 'a', 'p', 'p', 's', '.', 'c', 'o', 'm', '\0',
   /* "jonathandowning.uk", true */ 'j', 'o', 'n', 'a', 't', 'h', 'a', 'n', 'd', 'o', 'w', 'n', 'i', 'n', 'g', '.', 'u', 'k', '\0',
   /* "jondarby.com", true */ 'j', 'o', 'n', 'd', 'a', 'r', 'b', 'y', '.', 'c', 'o', 'm', '\0',
@@ -6594,16 +6601,17 @@ static const char kSTSHostTable[] = {
   /* "katyl.info", true */ 'k', 'a', 't', 'y', 'l', '.', 'i', 'n', 'f', 'o', '\0',
   /* "kau-boys.com", true */ 'k', 'a', 'u', '-', 'b', 'o', 'y', 's', '.', 'c', 'o', 'm', '\0',
   /* "kau-boys.de", true */ 'k', 'a', 'u', '-', 'b', 'o', 'y', 's', '.', 'd', 'e', '\0',
   /* "kaufberatung.community", true */ 'k', 'a', 'u', 'f', 'b', 'e', 'r', 'a', 't', 'u', 'n', 'g', '.', 'c', 'o', 'm', 'm', 'u', 'n', 'i', 't', 'y', '\0',
   /* "kavik.no", true */ 'k', 'a', 'v', 'i', 'k', '.', 'n', 'o', '\0',
   /* "kavovary-kava.cz", true */ 'k', 'a', 'v', 'o', 'v', 'a', 'r', 'y', '-', 'k', 'a', 'v', 'a', '.', 'c', 'z', '\0',
   /* "kawaiii.link", true */ 'k', 'a', 'w', 'a', 'i', 'i', 'i', '.', 'l', 'i', 'n', 'k', '\0',
   /* "kayleen.net", true */ 'k', 'a', 'y', 'l', 'e', 'e', 'n', '.', 'n', 'e', 't', '\0',
+  /* "kaylyn.ink", true */ 'k', 'a', 'y', 'l', 'y', 'n', '.', 'i', 'n', 'k', '\0',
   /* "kazandaemon.ru", true */ 'k', 'a', 'z', 'a', 'n', 'd', 'a', 'e', 'm', 'o', 'n', '.', 'r', 'u', '\0',
   /* "kazenojiyu.fr", true */ 'k', 'a', 'z', 'e', 'n', 'o', 'j', 'i', 'y', 'u', '.', 'f', 'r', '\0',
   /* "kb3.net", true */ 'k', 'b', '3', '.', 'n', 'e', 't', '\0',
   /* "kba-online.de", true */ 'k', 'b', 'a', '-', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'd', 'e', '\0',
   /* "kbcequitas.hu", true */ 'k', 'b', 'c', 'e', 'q', 'u', 'i', 't', 'a', 's', '.', 'h', 'u', '\0',
   /* "kbit.dk", true */ 'k', 'b', 'i', 't', '.', 'd', 'k', '\0',
   /* "kbjorklu.com", true */ 'k', 'b', 'j', 'o', 'r', 'k', 'l', 'u', '.', 'c', 'o', 'm', '\0',
   /* "kc5mpk.com", true */ 'k', 'c', '5', 'm', 'p', 'k', '.', 'c', 'o', 'm', '\0',
@@ -6630,17 +6638,16 @@ static const char kSTSHostTable[] = {
   /* "kein-design.de", true */ 'k', 'e', 'i', 'n', '-', 'd', 'e', 's', 'i', 'g', 'n', '.', 'd', 'e', '\0',
   /* "keisaku.org", true */ 'k', 'e', 'i', 's', 'a', 'k', 'u', '.', 'o', 'r', 'g', '\0',
   /* "keithws.net", true */ 'k', 'e', 'i', 't', 'h', 'w', 's', '.', 'n', 'e', 't', '\0',
   /* "keke-shop.ch", true */ 'k', 'e', 'k', 'e', '-', 's', 'h', 'o', 'p', '.', 'c', 'h', '\0',
   /* "kekku.li", true */ 'k', 'e', 'k', 'k', 'u', '.', 'l', 'i', '\0',
   /* "kekz.org", true */ 'k', 'e', 'k', 'z', '.', 'o', 'r', 'g', '\0',
   /* "kellyandantony.com", true */ 'k', 'e', 'l', 'l', 'y', 'a', 'n', 'd', 'a', 'n', 't', 'o', 'n', 'y', '.', 'c', 'o', 'm', '\0',
   /* "kempkens.io", true */ 'k', 'e', 'm', 'p', 'k', 'e', 'n', 's', '.', 'i', 'o', '\0',
-  /* "ken.fm", true */ 'k', 'e', 'n', '.', 'f', 'm', '\0',
   /* "kenderbeton-magyarorszag.hu", true */ 'k', 'e', 'n', 'd', 'e', 'r', 'b', 'e', 't', 'o', 'n', '-', 'm', 'a', 'g', 'y', 'a', 'r', 'o', 'r', 's', 'z', 'a', 'g', '.', 'h', 'u', '\0',
   /* "kenderbetonmagyarorszag.hu", true */ 'k', 'e', 'n', 'd', 'e', 'r', 'b', 'e', 't', 'o', 'n', 'm', 'a', 'g', 'y', 'a', 'r', 'o', 'r', 's', 'z', 'a', 'g', '.', 'h', 'u', '\0',
   /* "kenderhaz-magyarorszag.hu", true */ 'k', 'e', 'n', 'd', 'e', 'r', 'h', 'a', 'z', '-', 'm', 'a', 'g', 'y', 'a', 'r', 'o', 'r', 's', 'z', 'a', 'g', '.', 'h', 'u', '\0',
   /* "kenderhazmagyarorszag.hu", true */ 'k', 'e', 'n', 'd', 'e', 'r', 'h', 'a', 'z', 'm', 'a', 'g', 'y', 'a', 'r', 'o', 'r', 's', 'z', 'a', 'g', '.', 'h', 'u', '\0',
   /* "kendra.io", true */ 'k', 'e', 'n', 'd', 'r', 'a', '.', 'i', 'o', '\0',
   /* "kendu.si", true */ 'k', 'e', 'n', 'd', 'u', '.', 's', 'i', '\0',
   /* "kengilmour.com", true */ 'k', 'e', 'n', 'g', 'i', 'l', 'm', 'o', 'u', 'r', '.', 'c', 'o', 'm', '\0',
   /* "kenguntokku.jp", true */ 'k', 'e', 'n', 'g', 'u', 'n', 't', 'o', 'k', 'k', 'u', '.', 'j', 'p', '\0',
@@ -6664,17 +6671,16 @@ static const char kSTSHostTable[] = {
   /* "keskeces.com", true */ 'k', 'e', 's', 'k', 'e', 'c', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "kesteren.com", true */ 'k', 'e', 's', 't', 'e', 'r', 'e', 'n', '.', 'c', 'o', 'm', '\0',
   /* "kesteren.org", true */ 'k', 'e', 's', 't', 'e', 'r', 'e', 'n', '.', 'o', 'r', 'g', '\0',
   /* "ketosecology.co.uk", true */ 'k', 'e', 't', 'o', 's', 'e', 'c', 'o', 'l', 'o', 'g', 'y', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "kevinbowers.me", true */ 'k', 'e', 'v', 'i', 'n', 'b', 'o', 'w', 'e', 'r', 's', '.', 'm', 'e', '\0',
   /* "kevinbusse.de", true */ 'k', 'e', 'v', 'i', 'n', 'b', 'u', 's', 's', 'e', '.', 'd', 'e', '\0',
   /* "kevincox.ca", true */ 'k', 'e', 'v', 'i', 'n', 'c', 'o', 'x', '.', 'c', 'a', '\0',
   /* "kevindekoninck.com", false */ 'k', 'e', 'v', 'i', 'n', 'd', 'e', 'k', 'o', 'n', 'i', 'n', 'c', 'k', '.', 'c', 'o', 'm', '\0',
-  /* "kevinmeijer.nl", true */ 'k', 'e', 'v', 'i', 'n', 'm', 'e', 'i', 'j', 'e', 'r', '.', 'n', 'l', '\0',
   /* "kevinratcliff.com", true */ 'k', 'e', 'v', 'i', 'n', 'r', 'a', 't', 'c', 'l', 'i', 'f', 'f', '.', 'c', 'o', 'm', '\0',
   /* "keybase.io", true */ 'k', 'e', 'y', 'b', 'a', 's', 'e', '.', 'i', 'o', '\0',
   /* "keybored.me", true */ 'k', 'e', 'y', 'b', 'o', 'r', 'e', 'd', '.', 'm', 'e', '\0',
   /* "keycdn.com", true */ 'k', 'e', 'y', 'c', 'd', 'n', '.', 'c', 'o', 'm', '\0',
   /* "keyerror.com", true */ 'k', 'e', 'y', 'e', 'r', 'r', 'o', 'r', '.', 'c', 'o', 'm', '\0',
   /* "keys.fedoraproject.org", true */ 'k', 'e', 'y', 's', '.', 'f', 'e', 'd', 'o', 'r', 'a', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'o', 'r', 'g', '\0',
   /* "keysupport.org", true */ 'k', 'e', 'y', 's', 'u', 'p', 'p', 'o', 'r', 't', '.', 'o', 'r', 'g', '\0',
   /* "kfbrussels.be", true */ 'k', 'f', 'b', 'r', 'u', 's', 's', 'e', 'l', 's', '.', 'b', 'e', '\0',
@@ -6887,16 +6893,17 @@ static const char kSTSHostTable[] = {
   /* "kraiwon.com", true */ 'k', 'r', 'a', 'i', 'w', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "kraken.io", true */ 'k', 'r', 'a', 'k', 'e', 'n', '.', 'i', 'o', '\0',
   /* "kralik.xyz", true */ 'k', 'r', 'a', 'l', 'i', 'k', '.', 'x', 'y', 'z', '\0',
   /* "kramsj.uk", true */ 'k', 'r', 'a', 'm', 's', 'j', '.', 'u', 'k', '\0',
   /* "krang.org.uk", true */ 'k', 'r', 'a', 'n', 'g', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "krasota.ru", false */ 'k', 'r', 'a', 's', 'o', 't', 'a', '.', 'r', 'u', '\0',
   /* "krasovsky.me", true */ 'k', 'r', 'a', 's', 'o', 'v', 's', 'k', 'y', '.', 'm', 'e', '\0',
   /* "kravelindo-adventure.com", true */ 'k', 'r', 'a', 'v', 'e', 'l', 'i', 'n', 'd', 'o', '-', 'a', 'd', 'v', 'e', 'n', 't', 'u', 'r', 'e', '.', 'c', 'o', 'm', '\0',
+  /* "kraynik.com", true */ 'k', 'r', 'a', 'y', 'n', 'i', 'k', '.', 'c', 'o', 'm', '\0',
   /* "krayx.com", true */ 'k', 'r', 'a', 'y', 'x', '.', 'c', 'o', 'm', '\0',
   /* "kream.io", true */ 'k', 'r', 'e', 'a', 'm', '.', 'i', 'o', '\0',
   /* "kreationnext.com", true */ 'k', 'r', 'e', 'a', 't', 'i', 'o', 'n', 'n', 'e', 'x', 't', '.', 'c', 'o', 'm', '\0',
   /* "kreativstrecke.de", true */ 'k', 'r', 'e', 'a', 't', 'i', 'v', 's', 't', 'r', 'e', 'c', 'k', 'e', '.', 'd', 'e', '\0',
   /* "kreavis.com", true */ 'k', 'r', 'e', 'a', 'v', 'i', 's', '.', 'c', 'o', 'm', '\0',
   /* "kreb.io", true */ 'k', 'r', 'e', 'b', '.', 'i', 'o', '\0',
   /* "kredietpaspoort.nl", true */ 'k', 'r', 'e', 'd', 'i', 'e', 't', 'p', 'a', 's', 'p', 'o', 'o', 'r', 't', '.', 'n', 'l', '\0',
   /* "kredite24.de", true */ 'k', 'r', 'e', 'd', 'i', 't', 'e', '2', '4', '.', 'd', 'e', '\0',
@@ -7116,17 +7123,16 @@ static const char kSTSHostTable[] = {
   /* "leadingsalons.com", true */ 'l', 'e', 'a', 'd', 'i', 'n', 'g', 's', 'a', 'l', 'o', 'n', 's', '.', 'c', 'o', 'm', '\0',
   /* "leakedminecraft.net", true */ 'l', 'e', 'a', 'k', 'e', 'd', 'm', 'i', 'n', 'e', 'c', 'r', 'a', 'f', 't', '.', 'n', 'e', 't', '\0',
   /* "leakforums.net", true */ 'l', 'e', 'a', 'k', 'f', 'o', 'r', 'u', 'm', 's', '.', 'n', 'e', 't', '\0',
   /* "leakreporter.net", true */ 'l', 'e', 'a', 'k', 'r', 'e', 'p', 'o', 'r', 't', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "leaks.directory", true */ 'l', 'e', 'a', 'k', 's', '.', 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\0',
   /* "leanclub.org", true */ 'l', 'e', 'a', 'n', 'c', 'l', 'u', 'b', '.', 'o', 'r', 'g', '\0',
   /* "leandre.cn", true */ 'l', 'e', 'a', 'n', 'd', 'r', 'e', '.', 'c', 'n', '\0',
   /* "leanplando.com", true */ 'l', 'e', 'a', 'n', 'p', 'l', 'a', 'n', 'd', 'o', '.', 'c', 'o', 'm', '\0',
-  /* "learnedovo.com", true */ 'l', 'e', 'a', 'r', 'n', 'e', 'd', 'o', 'v', 'o', '.', 'c', 'o', 'm', '\0',
   /* "learnflakes.net", true */ 'l', 'e', 'a', 'r', 'n', 'f', 'l', 'a', 'k', 'e', 's', '.', 'n', 'e', 't', '\0',
   /* "learntube.cz", true */ 'l', 'e', 'a', 'r', 'n', 't', 'u', 'b', 'e', '.', 'c', 'z', '\0',
   /* "leatherfurnitureexpo.com", true */ 'l', 'e', 'a', 't', 'h', 'e', 'r', 'f', 'u', 'r', 'n', 'i', 't', 'u', 'r', 'e', 'e', 'x', 'p', 'o', '.', 'c', 'o', 'm', '\0',
   /* "leaversmith.com", true */ 'l', 'e', 'a', 'v', 'e', 'r', 's', 'm', 'i', 't', 'h', '.', 'c', 'o', 'm', '\0',
   /* "lebanesearmy.gov.lb", true */ 'l', 'e', 'b', 'a', 'n', 'e', 's', 'e', 'a', 'r', 'm', 'y', '.', 'g', 'o', 'v', '.', 'l', 'b', '\0',
   /* "lebarmy.gov.lb", true */ 'l', 'e', 'b', 'a', 'r', 'm', 'y', '.', 'g', 'o', 'v', '.', 'l', 'b', '\0',
   /* "lebihan.pl", true */ 'l', 'e', 'b', 'i', 'h', 'a', 'n', '.', 'p', 'l', '\0',
   /* "leblanc.io", true */ 'l', 'e', 'b', 'l', 'a', 'n', 'c', '.', 'i', 'o', '\0',
@@ -7223,16 +7229,17 @@ static const char kSTSHostTable[] = {
   /* "libraryextension.com", true */ 'l', 'i', 'b', 'r', 'a', 'r', 'y', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "libraryfreedomproject.org", false */ 'l', 'i', 'b', 'r', 'a', 'r', 'y', 'f', 'r', 'e', 'e', 'd', 'o', 'm', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'o', 'r', 'g', '\0',
   /* "libreboot.org", true */ 'l', 'i', 'b', 'r', 'e', 'b', 'o', 'o', 't', '.', 'o', 'r', 'g', '\0',
   /* "libreduca.com", true */ 'l', 'i', 'b', 'r', 'e', 'd', 'u', 'c', 'a', '.', 'c', 'o', 'm', '\0',
   /* "librelamp.com", true */ 'l', 'i', 'b', 'r', 'e', 'l', 'a', 'm', 'p', '.', 'c', 'o', 'm', '\0',
   /* "librends.org", true */ 'l', 'i', 'b', 'r', 'e', 'n', 'd', 's', '.', 'o', 'r', 'g', '\0',
   /* "libskia.so", true */ 'l', 'i', 'b', 's', 'k', 'i', 'a', '.', 's', 'o', '\0',
   /* "libsodium.org", true */ 'l', 'i', 'b', 's', 'o', 'd', 'i', 'u', 'm', '.', 'o', 'r', 'g', '\0',
+  /* "liceserv.com", true */ 'l', 'i', 'c', 'e', 's', 'e', 'r', 'v', '.', 'c', 'o', 'm', '\0',
   /* "lichess.org", true */ 'l', 'i', 'c', 'h', 'e', 's', 's', '.', 'o', 'r', 'g', '\0',
   /* "lichtspot.de", true */ 'l', 'i', 'c', 'h', 't', 's', 'p', 'o', 't', '.', 'd', 'e', '\0',
   /* "liderwalut.pl", false */ 'l', 'i', 'd', 'e', 'r', 'w', 'a', 'l', 'u', 't', '.', 'p', 'l', '\0',
   /* "lidl-selection.at", true */ 'l', 'i', 'd', 'l', '-', 's', 'e', 'l', 'e', 'c', 't', 'i', 'o', 'n', '.', 'a', 't', '\0',
   /* "lidl-tour.ro", true */ 'l', 'i', 'd', 'l', '-', 't', 'o', 'u', 'r', '.', 'r', 'o', '\0',
   /* "lidong.me", true */ 'l', 'i', 'd', 'o', 'n', 'g', '.', 'm', 'e', '\0',
   /* "liduan.com", true */ 'l', 'i', 'd', 'u', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "liduan.net", true */ 'l', 'i', 'd', 'u', 'a', 'n', '.', 'n', 'e', 't', '\0',
@@ -7308,17 +7315,17 @@ static const char kSTSHostTable[] = {
   /* "lister-kirchweg.de", true */ 'l', 'i', 's', 't', 'e', 'r', '-', 'k', 'i', 'r', 'c', 'h', 'w', 'e', 'g', '.', 'd', 'e', '\0',
   /* "listminut.be", true */ 'l', 'i', 's', 't', 'm', 'i', 'n', 'u', 't', '.', 'b', 'e', '\0',
   /* "lists.fedoraproject.org", true */ 'l', 'i', 's', 't', 's', '.', 'f', 'e', 'd', 'o', 'r', 'a', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'o', 'r', 'g', '\0',
   /* "lists.mayfirst.org", false */ 'l', 'i', 's', 't', 's', '.', 'm', 'a', 'y', 'f', 'i', 'r', 's', 't', '.', 'o', 'r', 'g', '\0',
   /* "lists.stg.fedoraproject.org", true */ 'l', 'i', 's', 't', 's', '.', 's', 't', 'g', '.', 'f', 'e', 'd', 'o', 'r', 'a', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'o', 'r', 'g', '\0',
   /* "litchidova.nl", true */ 'l', 'i', 't', 'c', 'h', 'i', 'd', 'o', 'v', 'a', '.', 'n', 'l', '\0',
   /* "litevault.net", true */ 'l', 'i', 't', 'e', 'v', 'a', 'u', 'l', 't', '.', 'n', 'e', 't', '\0',
   /* "litfin.name", true */ 'l', 'i', 't', 'f', 'i', 'n', '.', 'n', 'a', 'm', 'e', '\0',
-  /* "lithesalar.se", true */ 'l', 'i', 't', 'h', 'e', 's', 'a', 'l', 'a', 'r', '.', 's', 'e', '\0',
+  /* "lithesalar.se", false */ 'l', 'i', 't', 'h', 'e', 's', 'a', 'l', 'a', 'r', '.', 's', 'e', '\0',
   /* "little.pw", true */ 'l', 'i', 't', 't', 'l', 'e', '.', 'p', 'w', '\0',
   /* "littlefreelibrary.org", true */ 'l', 'i', 't', 't', 'l', 'e', 'f', 'r', 'e', 'e', 'l', 'i', 'b', 'r', 'a', 'r', 'y', '.', 'o', 'r', 'g', '\0',
   /* "littleswitch.co.jp", true */ 'l', 'i', 't', 't', 'l', 'e', 's', 'w', 'i', 't', 'c', 'h', '.', 'c', 'o', '.', 'j', 'p', '\0',
   /* "litvideoserver.de", true */ 'l', 'i', 't', 'v', 'i', 'd', 'e', 'o', 's', 'e', 'r', 'v', 'e', 'r', '.', 'd', 'e', '\0',
   /* "litz.ca", true */ 'l', 'i', 't', 'z', '.', 'c', 'a', '\0',
   /* "litzenberger.ca", true */ 'l', 'i', 't', 'z', 'e', 'n', 'b', 'e', 'r', 'g', 'e', 'r', '.', 'c', 'a', '\0',
   /* "liuboznaiko.eu", true */ 'l', 'i', 'u', 'b', 'o', 'z', 'n', 'a', 'i', 'k', 'o', '.', 'e', 'u', '\0',
   /* "liud.im", true */ 'l', 'i', 'u', 'd', '.', 'i', 'm', '\0',
@@ -7414,16 +7421,17 @@ static const char kSTSHostTable[] = {
   /* "lolkot.ru", true */ 'l', 'o', 'l', 'k', 'o', 't', '.', 'r', 'u', '\0',
   /* "lolpatrol.de", true */ 'l', 'o', 'l', 'p', 'a', 't', 'r', 'o', 'l', '.', 'd', 'e', '\0',
   /* "lona.io", true */ 'l', 'o', 'n', 'a', '.', 'i', 'o', '\0',
   /* "lonasdigital.com", true */ 'l', 'o', 'n', 'a', 's', 'd', 'i', 'g', 'i', 't', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "london-transfers.com", true */ 'l', 'o', 'n', 'd', 'o', 'n', '-', 't', 'r', 'a', 'n', 's', 'f', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "london.dating", true */ 'l', 'o', 'n', 'd', 'o', 'n', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0',
   /* "lone-gunman.be", true */ 'l', 'o', 'n', 'e', '-', 'g', 'u', 'n', 'm', 'a', 'n', '.', 'b', 'e', '\0',
   /* "lonerwolf.com", true */ 'l', 'o', 'n', 'e', 'r', 'w', 'o', 'l', 'f', '.', 'c', 'o', 'm', '\0',
+  /* "longboarding-ulm.de", true */ 'l', 'o', 'n', 'g', 'b', 'o', 'a', 'r', 'd', 'i', 'n', 'g', '-', 'u', 'l', 'm', '.', 'd', 'e', '\0',
   /* "longhorn.id.au", true */ 'l', 'o', 'n', 'g', 'h', 'o', 'r', 'n', '.', 'i', 'd', '.', 'a', 'u', '\0',
   /* "look.co.il", true */ 'l', 'o', 'o', 'k', '.', 'c', 'o', '.', 'i', 'l', '\0',
   /* "lookasik.eu", true */ 'l', 'o', 'o', 'k', 'a', 's', 'i', 'k', '.', 'e', 'u', '\0',
   /* "lookyman.net", true */ 'l', 'o', 'o', 'k', 'y', 'm', 'a', 'n', '.', 'n', 'e', 't', '\0',
   /* "loony.info", true */ 'l', 'o', 'o', 'n', 'y', '.', 'i', 'n', 'f', 'o', '\0',
   /* "loopower.com", true */ 'l', 'o', 'o', 'p', 'o', 'w', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "loopstart.org", true */ 'l', 'o', 'o', 'p', 's', 't', 'a', 'r', 't', '.', 'o', 'r', 'g', '\0',
   /* "loothole.com", true */ 'l', 'o', 'o', 't', 'h', 'o', 'l', 'e', '.', 'c', 'o', 'm', '\0',
@@ -7499,17 +7507,16 @@ static const char kSTSHostTable[] = {
   /* "lunarift.com", true */ 'l', 'u', 'n', 'a', 'r', 'i', 'f', 't', '.', 'c', 'o', 'm', '\0',
   /* "lunarlog.com", true */ 'l', 'u', 'n', 'a', 'r', 'l', 'o', 'g', '.', 'c', 'o', 'm', '\0',
   /* "lunarrift.net", true */ 'l', 'u', 'n', 'a', 'r', 'r', 'i', 'f', 't', '.', 'n', 'e', 't', '\0',
   /* "lunarshark.com", true */ 'l', 'u', 'n', 'a', 'r', 's', 'h', 'a', 'r', 'k', '.', 'c', 'o', 'm', '\0',
   /* "lunchbunch.me", true */ 'l', 'u', 'n', 'c', 'h', 'b', 'u', 'n', 'c', 'h', '.', 'm', 'e', '\0',
   /* "luneta.nearbuysystems.com", false */ 'l', 'u', 'n', 'e', 't', 'a', '.', 'n', 'e', 'a', 'r', 'b', 'u', 'y', 's', 'y', 's', 't', 'e', 'm', 's', '.', 'c', 'o', 'm', '\0',
   /* "lungdoc.us", true */ 'l', 'u', 'n', 'g', 'd', 'o', 'c', '.', 'u', 's', '\0',
   /* "luno.io", true */ 'l', 'u', 'n', 'o', '.', 'i', 'o', '\0',
-  /* "luody.info", true */ 'l', 'u', 'o', 'd', 'y', '.', 'i', 'n', 'f', 'o', '\0',
   /* "luoe.me", true */ 'l', 'u', 'o', 'e', '.', 'm', 'e', '\0',
   /* "luoh.cc", true */ 'l', 'u', 'o', 'h', '.', 'c', 'c', '\0',
   /* "luoh.me", true */ 'l', 'u', 'o', 'h', '.', 'm', 'e', '\0',
   /* "luohua.im", true */ 'l', 'u', 'o', 'h', 'u', 'a', '.', 'i', 'm', '\0',
   /* "luom.net", true */ 'l', 'u', 'o', 'm', '.', 'n', 'e', 't', '\0',
   /* "luongvu.com", true */ 'l', 'u', 'o', 'n', 'g', 'v', 'u', '.', 'c', 'o', 'm', '\0',
   /* "luripump.se", true */ 'l', 'u', 'r', 'i', 'p', 'u', 'm', 'p', '.', 's', 'e', '\0',
   /* "lustige-zitate.com", true */ 'l', 'u', 's', 't', 'i', 'g', 'e', '-', 'z', 'i', 't', 'a', 't', 'e', '.', 'c', 'o', 'm', '\0',
@@ -7556,17 +7563,16 @@ static const char kSTSHostTable[] = {
   /* "mac1.net", true */ 'm', 'a', 'c', '1', '.', 'n', 'e', 't', '\0',
   /* "macaque.io", false */ 'm', 'a', 'c', 'a', 'q', 'u', 'e', '.', 'i', 'o', '\0',
   /* "macdj.tk", true */ 'm', 'a', 'c', 'd', 'j', '.', 't', 'k', '\0',
   /* "mach-politik.ch", true */ 'm', 'a', 'c', 'h', '-', 'p', 'o', 'l', 'i', 't', 'i', 'k', '.', 'c', 'h', '\0',
   /* "machbach.com", true */ 'm', 'a', 'c', 'h', 'b', 'a', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "machbach.net", true */ 'm', 'a', 'c', 'h', 'b', 'a', 'c', 'h', '.', 'n', 'e', 't', '\0',
   /* "machtweb.de", true */ 'm', 'a', 'c', 'h', 't', 'w', 'e', 'b', '.', 'd', 'e', '\0',
   /* "macinyasha.net", true */ 'm', 'a', 'c', 'i', 'n', 'y', 'a', 's', 'h', 'a', '.', 'n', 'e', 't', '\0',
-  /* "macker.io", true */ 'm', 'a', 'c', 'k', 'e', 'r', '.', 'i', 'o', '\0',
   /* "macleod.io", true */ 'm', 'a', 'c', 'l', 'e', 'o', 'd', '.', 'i', 'o', '\0',
   /* "macnemo.de", true */ 'm', 'a', 'c', 'n', 'e', 'm', 'o', '.', 'd', 'e', '\0',
   /* "maco.org.uk", true */ 'm', 'a', 'c', 'o', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "maddi.biz", true */ 'm', 'a', 'd', 'd', 'i', '.', 'b', 'i', 'z', '\0',
   /* "madebyshore.com", true */ 'm', 'a', 'd', 'e', 'b', 'y', 's', 'h', 'o', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "madeglobal.com", true */ 'm', 'a', 'd', 'e', 'g', 'l', 'o', 'b', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "madeitwor.se", true */ 'm', 'a', 'd', 'e', 'i', 't', 'w', 'o', 'r', '.', 's', 'e', '\0',
   /* "madin.ru", true */ 'm', 'a', 'd', 'i', 'n', '.', 'r', 'u', '\0',
@@ -7831,16 +7837,17 @@ static const char kSTSHostTable[] = {
   /* "mbsec.net", true */ 'm', 'b', 's', 'e', 'c', '.', 'n', 'e', 't', '\0',
   /* "mbweir.com", true */ 'm', 'b', 'w', 'e', 'i', 'r', '.', 'c', 'o', 'm', '\0',
   /* "mc-venture.net", false */ 'm', 'c', '-', 'v', 'e', 'n', 't', 'u', 'r', 'e', '.', 'n', 'e', 't', '\0',
   /* "mc81.com", true */ 'm', 'c', '8', '1', '.', 'c', 'o', 'm', '\0',
   /* "mcadmin.net", true */ 'm', 'c', 'a', 'd', 'm', 'i', 'n', '.', 'n', 'e', 't', '\0',
   /* "mcard.vn", true */ 'm', 'c', 'a', 'r', 'd', '.', 'v', 'n', '\0',
   /* "mcatnnlo.org", true */ 'm', 'c', 'a', 't', 'n', 'n', 'l', 'o', '.', 'o', 'r', 'g', '\0',
   /* "mcb-bank.com", true */ 'm', 'c', 'b', '-', 'b', 'a', 'n', 'k', '.', 'c', 'o', 'm', '\0',
+  /* "mccarty.io", true */ 'm', 'c', 'c', 'a', 'r', 't', 'y', '.', 'i', 'o', '\0',
   /* "mccrackon.com", true */ 'm', 'c', 'c', 'r', 'a', 'c', 'k', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "mcdonalds.be", true */ 'm', 'c', 'd', 'o', 'n', 'a', 'l', 'd', 's', '.', 'b', 'e', '\0',
   /* "mcdonalds.design", true */ 'm', 'c', 'd', 'o', 'n', 'a', 'l', 'd', 's', '.', 'd', 'e', 's', 'i', 'g', 'n', '\0',
   /* "mcdonaldwhsl.com", false */ 'm', 'c', 'd', 'o', 'n', 'a', 'l', 'd', 'w', 'h', 's', 'l', '.', 'c', 'o', 'm', '\0',
   /* "mce.eu", true */ 'm', 'c', 'e', '.', 'e', 'u', '\0',
   /* "mce.nyc", true */ 'm', 'c', 'e', '.', 'n', 'y', 'c', '\0',
   /* "mce55.eu", true */ 'm', 'c', 'e', '5', '5', '.', 'e', 'u', '\0',
   /* "mcea-hld.jp", true */ 'm', 'c', 'e', 'a', '-', 'h', 'l', 'd', '.', 'j', 'p', '\0',
@@ -7848,16 +7855,17 @@ static const char kSTSHostTable[] = {
   /* "mcgarderen.nl", true */ 'm', 'c', 'g', 'a', 'r', 'd', 'e', 'r', 'e', 'n', '.', 'n', 'l', '\0',
   /* "mchopkins.net", true */ 'm', 'c', 'h', 'o', 'p', 'k', 'i', 'n', 's', '.', 'n', 'e', 't', '\0',
   /* "mchristopher.com", true */ 'm', 'c', 'h', 'r', 'i', 's', 't', 'o', 'p', 'h', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "mckinley.school", true */ 'm', 'c', 'k', 'i', 'n', 'l', 'e', 'y', '.', 's', 'c', 'h', 'o', 'o', 'l', '\0',
   /* "mckinley1.com", true */ 'm', 'c', 'k', 'i', 'n', 'l', 'e', 'y', '1', '.', 'c', 'o', 'm', '\0',
   /* "mcl.gg", true */ 'm', 'c', 'l', '.', 'g', 'g', '\0',
   /* "mcnext.net", true */ 'm', 'c', 'n', 'e', 'x', 't', '.', 'n', 'e', 't', '\0',
   /* "mcooperlaw.com", true */ 'm', 'c', 'o', 'o', 'p', 'e', 'r', 'l', 'a', 'w', '.', 'c', 'o', 'm', '\0',
+  /* "mcpart.land", true */ 'm', 'c', 'p', 'a', 'r', 't', '.', 'l', 'a', 'n', 'd', '\0',
   /* "mcrn.jp", true */ 'm', 'c', 'r', 'n', '.', 'j', 'p', '\0',
   /* "mctherealm.net", true */ 'm', 'c', 't', 'h', 'e', 'r', 'e', 'a', 'l', 'm', '.', 'n', 'e', 't', '\0',
   /* "mcuong.tk", false */ 'm', 'c', 'u', 'o', 'n', 'g', '.', 't', 'k', '\0',
   /* "mcyukon.com", true */ 'm', 'c', 'y', 'u', 'k', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "md5file.com", true */ 'm', 'd', '5', 'f', 'i', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "md5hashing.net", true */ 'm', 'd', '5', 'h', 'a', 's', 'h', 'i', 'n', 'g', '.', 'n', 'e', 't', '\0',
   /* "mdcloudpracticesolutions.com", true */ 'm', 'd', 'c', 'l', 'o', 'u', 'd', 'p', 'r', 'a', 'c', 't', 'i', 'c', 'e', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 's', '.', 'c', 'o', 'm', '\0',
   /* "mdcloudps.com", true */ 'm', 'd', 'c', 'l', 'o', 'u', 'd', 'p', 's', '.', 'c', 'o', 'm', '\0',
@@ -8003,17 +8011,16 @@ static const char kSTSHostTable[] = {
   /* "meyeraviation.com", true */ 'm', 'e', 'y', 'e', 'r', 'a', 'v', 'i', 'a', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "meyercloud.de", true */ 'm', 'e', 'y', 'e', 'r', 'c', 'l', 'o', 'u', 'd', '.', 'd', 'e', '\0',
   /* "mfxbe.de", true */ 'm', 'f', 'x', 'b', 'e', '.', 'd', 'e', '\0',
   /* "mgdigital.fr", true */ 'm', 'g', 'd', 'i', 'g', 'i', 't', 'a', 'l', '.', 'f', 'r', '\0',
   /* "mghiorzi.com.ar", true */ 'm', 'g', 'h', 'i', 'o', 'r', 'z', 'i', '.', 'c', 'o', 'm', '.', 'a', 'r', '\0',
   /* "mh-bloemen.co.jp", true */ 'm', 'h', '-', 'b', 'l', 'o', 'e', 'm', 'e', 'n', '.', 'c', 'o', '.', 'j', 'p', '\0',
   /* "mhdsyarif.com", false */ 'm', 'h', 'd', 's', 'y', 'a', 'r', 'i', 'f', '.', 'c', 'o', 'm', '\0',
   /* "mheistermann.de", true */ 'm', 'h', 'e', 'i', 's', 't', 'e', 'r', 'm', 'a', 'n', 'n', '.', 'd', 'e', '\0',
-  /* "mhertel.com", false */ 'm', 'h', 'e', 'r', 't', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "mhx.pw", true */ 'm', 'h', 'x', '.', 'p', 'w', '\0',
   /* "miagexport.com", true */ 'm', 'i', 'a', 'g', 'e', 'x', 'p', 'o', 'r', 't', '.', 'c', 'o', 'm', '\0',
   /* "miasarafina.de", true */ 'm', 'i', 'a', 's', 'a', 'r', 'a', 'f', 'i', 'n', 'a', '.', 'd', 'e', '\0',
   /* "micbase.com", true */ 'm', 'i', 'c', 'b', 'a', 's', 'e', '.', 'c', 'o', 'm', '\0',
   /* "michael-rigart.be", true */ 'm', 'i', 'c', 'h', 'a', 'e', 'l', '-', 'r', 'i', 'g', 'a', 'r', 't', '.', 'b', 'e', '\0',
   /* "michaelcullen.name", true */ 'm', 'i', 'c', 'h', 'a', 'e', 'l', 'c', 'u', 'l', 'l', 'e', 'n', '.', 'n', 'a', 'm', 'e', '\0',
   /* "michaelleibundgut.com", true */ 'm', 'i', 'c', 'h', 'a', 'e', 'l', 'l', 'e', 'i', 'b', 'u', 'n', 'd', 'g', 'u', 't', '.', 'c', 'o', 'm', '\0',
   /* "michaelmorpurgo.com", true */ 'm', 'i', 'c', 'h', 'a', 'e', 'l', 'm', 'o', 'r', 'p', 'u', 'r', 'g', 'o', '.', 'c', 'o', 'm', '\0',
@@ -8069,16 +8076,17 @@ static const char kSTSHostTable[] = {
   /* "mikrom.cz", true */ 'm', 'i', 'k', 'r', 'o', 'm', '.', 'c', 'z', '\0',
   /* "mikroskeem.eu", true */ 'm', 'i', 'k', 'r', 'o', 's', 'k', 'e', 'e', 'm', '.', 'e', 'u', '\0',
   /* "mil0.com", true */ 'm', 'i', 'l', '0', '.', 'c', 'o', 'm', '\0',
   /* "milahendri.com", true */ 'm', 'i', 'l', 'a', 'h', 'e', 'n', 'd', 'r', 'i', '.', 'c', 'o', 'm', '\0',
   /* "milang.xyz", true */ 'm', 'i', 'l', 'a', 'n', 'g', '.', 'x', 'y', 'z', '\0',
   /* "milanpala.cz", true */ 'm', 'i', 'l', 'a', 'n', 'p', 'a', 'l', 'a', '.', 'c', 'z', '\0',
   /* "milatrans.pl", true */ 'm', 'i', 'l', 'a', 't', 'r', 'a', 'n', 's', '.', 'p', 'l', '\0',
   /* "milcoresonline.com", true */ 'm', 'i', 'l', 'c', 'o', 'r', 'e', 's', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
+  /* "millenniumweb.com", true */ 'm', 'i', 'l', 'l', 'e', 'n', 'n', 'i', 'u', 'm', 'w', 'e', 'b', '.', 'c', 'o', 'm', '\0',
   /* "millistream.com", true */ 'm', 'i', 'l', 'l', 'i', 's', 't', 'r', 'e', 'a', 'm', '.', 'c', 'o', 'm', '\0',
   /* "milonga.tips", true */ 'm', 'i', 'l', 'o', 'n', 'g', 'a', '.', 't', 'i', 'p', 's', '\0',
   /* "miluriel.de", true */ 'm', 'i', 'l', 'u', 'r', 'i', 'e', 'l', '.', 'd', 'e', '\0',
   /* "mim.properties", true */ 'm', 'i', 'm', '.', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\0',
   /* "mimeit.de", true */ 'm', 'i', 'm', 'e', 'i', 't', '.', 'd', 'e', '\0',
   /* "mimemo.io", true */ 'm', 'i', 'm', 'e', 'm', 'o', '.', 'i', 'o', '\0',
   /* "mimovrste.com", true */ 'm', 'i', 'm', 'o', 'v', 'r', 's', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "minami.xyz", true */ 'm', 'i', 'n', 'a', 'm', 'i', '.', 'x', 'y', 'z', '\0',
@@ -8162,17 +8170,16 @@ static const char kSTSHostTable[] = {
   /* "mitzpettel.com", true */ 'm', 'i', 't', 'z', 'p', 'e', 't', 't', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "miui-germany.de", true */ 'm', 'i', 'u', 'i', '-', 'g', 'e', 'r', 'm', 'a', 'n', 'y', '.', 'd', 'e', '\0',
   /* "mixposure.com", true */ 'm', 'i', 'x', 'p', 'o', 's', 'u', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "mixtape.moe", true */ 'm', 'i', 'x', 't', 'a', 'p', 'e', '.', 'm', 'o', 'e', '\0',
   /* "miyatore.com", true */ 'm', 'i', 'y', 'a', 't', 'o', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "mizque.ch", true */ 'm', 'i', 'z', 'q', 'u', 'e', '.', 'c', 'h', '\0',
   /* "mjacobson.net", true */ 'm', 'j', 'a', 'c', 'o', 'b', 's', 'o', 'n', '.', 'n', 'e', 't', '\0',
   /* "mjanja.ch", true */ 'm', 'j', 'a', 'n', 'j', 'a', '.', 'c', 'h', '\0',
-  /* "mjcaffarattilaw.com", true */ 'm', 'j', 'c', 'a', 'f', 'f', 'a', 'r', 'a', 't', 't', 'i', 'l', 'a', 'w', '.', 'c', 'o', 'm', '\0',
   /* "mjec.net", true */ 'm', 'j', 'e', 'c', '.', 'n', 'e', 't', '\0',
   /* "mkasu.org", true */ 'm', 'k', 'a', 's', 'u', '.', 'o', 'r', 'g', '\0',
   /* "mkcert.org", true */ 'm', 'k', 'c', 'e', 'r', 't', '.', 'o', 'r', 'g', '\0',
   /* "mkes.com", false */ 'm', 'k', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "mkoppmann.at", true */ 'm', 'k', 'o', 'p', 'p', 'm', 'a', 'n', 'n', '.', 'a', 't', '\0',
   /* "mkp-deutschland.de", true */ 'm', 'k', 'p', '-', 'd', 'e', 'u', 't', 's', 'c', 'h', 'l', 'a', 'n', 'd', '.', 'd', 'e', '\0',
   /* "mkpef.org", true */ 'm', 'k', 'p', 'e', 'f', '.', 'o', 'r', 'g', '\0',
   /* "mktemp.org", true */ 'm', 'k', 't', 'e', 'm', 'p', '.', 'o', 'r', 'g', '\0',
@@ -8222,16 +8229,17 @@ static const char kSTSHostTable[] = {
   /* "modelcase.co.jp", false */ 'm', 'o', 'd', 'e', 'l', 'c', 'a', 's', 'e', '.', 'c', 'o', '.', 'j', 'p', '\0',
   /* "modeldimension.com", true */ 'm', 'o', 'd', 'e', 'l', 'd', 'i', 'm', 'e', 'n', 's', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "modernapprenticeships.org", true */ 'm', 'o', 'd', 'e', 'r', 'n', 'a', 'p', 'p', 'r', 'e', 'n', 't', 'i', 'c', 'e', 's', 'h', 'i', 'p', 's', '.', 'o', 'r', 'g', '\0',
   /* "modernibytovytextil.cz", true */ 'm', 'o', 'd', 'e', 'r', 'n', 'i', 'b', 'y', 't', 'o', 'v', 'y', 't', 'e', 'x', 't', 'i', 'l', '.', 'c', 'z', '\0',
   /* "modifiedmind.com", true */ 'm', 'o', 'd', 'i', 'f', 'i', 'e', 'd', 'm', 'i', 'n', 'd', '.', 'c', 'o', 'm', '\0',
   /* "modistry.com", true */ 'm', 'o', 'd', 'i', 's', 't', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "modmountain.com", true */ 'm', 'o', 'd', 'm', 'o', 'u', 'n', 't', 'a', 'i', 'n', '.', 'c', 'o', 'm', '\0',
   /* "modx.io", true */ 'm', 'o', 'd', 'x', '.', 'i', 'o', '\0',
+  /* "modydev.club", true */ 'm', 'o', 'd', 'y', 'd', 'e', 'v', '.', 'c', 'l', 'u', 'b', '\0',
   /* "moe.pe", true */ 'm', 'o', 'e', '.', 'p', 'e', '\0',
   /* "moe4sale.in", true */ 'm', 'o', 'e', '4', 's', 'a', 'l', 'e', '.', 'i', 'n', '\0',
   /* "moefi.xyz", true */ 'm', 'o', 'e', 'f', 'i', '.', 'x', 'y', 'z', '\0',
   /* "moegirl.org", true */ 'm', 'o', 'e', 'g', 'i', 'r', 'l', '.', 'o', 'r', 'g', '\0',
   /* "moevenpick-cafe.com", true */ 'm', 'o', 'e', 'v', 'e', 'n', 'p', 'i', 'c', 'k', '-', 'c', 'a', 'f', 'e', '.', 'c', 'o', 'm', '\0',
   /* "mojaknjiznica.com", false */ 'm', 'o', 'j', 'a', 'k', 'n', 'j', 'i', 'z', 'n', 'i', 'c', 'a', '.', 'c', 'o', 'm', '\0',
   /* "mojapraca.sk", true */ 'm', 'o', 'j', 'a', 'p', 'r', 'a', 'c', 'a', '.', 's', 'k', '\0',
   /* "mojzis.com", true */ 'm', 'o', 'j', 'z', 'i', 's', '.', 'c', 'o', 'm', '\0',
@@ -8261,16 +8269,17 @@ static const char kSTSHostTable[] = {
   /* "monitman.solutions", true */ 'm', 'o', 'n', 'i', 't', 'm', 'a', 'n', '.', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 's', '\0',
   /* "monitzer.com", true */ 'm', 'o', 'n', 'i', 't', 'z', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "monix.io", true */ 'm', 'o', 'n', 'i', 'x', '.', 'i', 'o', '\0',
   /* "monkeydust.net", true */ 'm', 'o', 'n', 'k', 'e', 'y', 'd', 'u', 's', 't', '.', 'n', 'e', 't', '\0',
   /* "monnyonle.hu", true */ 'm', 'o', 'n', 'n', 'y', 'o', 'n', 'l', 'e', '.', 'h', 'u', '\0',
   /* "monobank.no", true */ 'm', 'o', 'n', 'o', 'b', 'a', 'n', 'k', '.', 'n', 'o', '\0',
   /* "monolithapps.com", true */ 'm', 'o', 'n', 'o', 'l', 'i', 't', 'h', 'a', 'p', 'p', 's', '.', 'c', 'o', 'm', '\0',
   /* "monolithinteractive.com", true */ 'm', 'o', 'n', 'o', 'l', 'i', 't', 'h', 'i', 'n', 't', 'e', 'r', 'a', 'c', 't', 'i', 'v', 'e', '.', 'c', 'o', 'm', '\0',
+  /* "monpc-pro.fr", true */ 'm', 'o', 'n', 'p', 'c', '-', 'p', 'r', 'o', '.', 'f', 'r', '\0',
   /* "montanacures.org", true */ 'm', 'o', 'n', 't', 'a', 'n', 'a', 'c', 'u', 'r', 'e', 's', '.', 'o', 'r', 'g', '\0',
   /* "montand.com", true */ 'm', 'o', 'n', 't', 'a', 'n', 'd', '.', 'c', 'o', 'm', '\0',
   /* "montazer.net", true */ 'm', 'o', 'n', 't', 'a', 'z', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "montenero.pl", true */ 'm', 'o', 'n', 't', 'e', 'n', 'e', 'r', 'o', '.', 'p', 'l', '\0',
   /* "montonicms.com", true */ 'm', 'o', 'n', 't', 'o', 'n', 'i', 'c', 'm', 's', '.', 'c', 'o', 'm', '\0',
   /* "moo.la", true */ 'm', 'o', 'o', '.', 'l', 'a', '\0',
   /* "moonagic.com", true */ 'm', 'o', 'o', 'n', 'a', 'g', 'i', 'c', '.', 'c', 'o', 'm', '\0',
   /* "moonless.net", true */ 'm', 'o', 'o', 'n', 'l', 'e', 's', 's', '.', 'n', 'e', 't', '\0',
@@ -8335,17 +8344,16 @@ static const char kSTSHostTable[] = {
   /* "mpsgarage.com.au", true */ 'm', 'p', 's', 'g', 'a', 'r', 'a', 'g', 'e', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "mr-hosting.com", true */ 'm', 'r', '-', 'h', 'o', 's', 't', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "mrdani.net", true */ 'm', 'r', 'd', 'a', 'n', 'i', '.', 'n', 'e', 't', '\0',
   /* "mrdayman.com", true */ 'm', 'r', 'd', 'a', 'y', 'm', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "mremallin.ca", true */ 'm', 'r', 'e', 'm', 'a', 'l', 'l', 'i', 'n', '.', 'c', 'a', '\0',
   /* "mrettich.org", true */ 'm', 'r', 'e', 't', 't', 'i', 'c', 'h', '.', 'o', 'r', 'g', '\0',
   /* "mrinalpurohit.in", true */ 'm', 'r', 'i', 'n', 'a', 'l', 'p', 'u', 'r', 'o', 'h', 'i', 't', '.', 'i', 'n', '\0',
   /* "mrizzio.com", true */ 'm', 'r', 'i', 'z', 'z', 'i', 'o', '.', 'c', 'o', 'm', '\0',
-  /* "ms-alternativ.de", true */ 'm', 's', '-', 'a', 'l', 't', 'e', 'r', 'n', 'a', 't', 'i', 'v', '.', 'd', 'e', '\0',
   /* "msa-aesch.ch", true */ 'm', 's', 'a', '-', 'a', 'e', 's', 'c', 'h', '.', 'c', 'h', '\0',
   /* "mscc.org", true */ 'm', 's', 'c', 'c', '.', 'o', 'r', 'g', '\0',
   /* "msebera.cz", true */ 'm', 's', 'e', 'b', 'e', 'r', 'a', '.', 'c', 'z', '\0',
   /* "msh100.uk", true */ 'm', 's', 'h', '1', '0', '0', '.', 'u', 'k', '\0',
   /* "msiegmund.com", true */ 'm', 's', 'i', 'e', 'g', 'm', 'u', 'n', 'd', '.', 'c', 'o', 'm', '\0',
   /* "msmails.de", true */ 'm', 's', 'm', 'a', 'i', 'l', 's', '.', 'd', 'e', '\0',
   /* "msno.no", true */ 'm', 's', 'n', 'o', '.', 'n', 'o', '\0',
   /* "mssys.de", true */ 'm', 's', 's', 'y', 's', '.', 'd', 'e', '\0',
@@ -8469,17 +8477,17 @@ static const char kSTSHostTable[] = {
   /* "myownconference.pl", true */ 'm', 'y', 'o', 'w', 'n', 'c', 'o', 'n', 'f', 'e', 'r', 'e', 'n', 'c', 'e', '.', 'p', 'l', '\0',
   /* "myownconference.ru", true */ 'm', 'y', 'o', 'w', 'n', 'c', 'o', 'n', 'f', 'e', 'r', 'e', 'n', 'c', 'e', '.', 'r', 'u', '\0',
   /* "myownwebinar.com", true */ 'm', 'y', 'o', 'w', 'n', 'w', 'e', 'b', 'i', 'n', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "mypaperwriter.com", true */ 'm', 'y', 'p', 'a', 'p', 'e', 'r', 'w', 'r', 'i', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "mypayoffloan.com", true */ 'm', 'y', 'p', 'a', 'y', 'o', 'f', 'f', 'l', 'o', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "mypension.ca", true */ 'm', 'y', 'p', 'e', 'n', 's', 'i', 'o', 'n', '.', 'c', 'a', '\0',
   /* "myphonebox.de", true */ 'm', 'y', 'p', 'h', 'o', 'n', 'e', 'b', 'o', 'x', '.', 'd', 'e', '\0',
   /* "mypillcard.com", true */ 'm', 'y', 'p', 'i', 'l', 'l', 'c', 'a', 'r', 'd', '.', 'c', 'o', 'm', '\0',
-  /* "myplaceonline.com", false */ 'm', 'y', 'p', 'l', 'a', 'c', 'e', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
+  /* "myplaceonline.com", true */ 'm', 'y', 'p', 'l', 'a', 'c', 'e', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "myprintcard.de", true */ 'm', 'y', 'p', 'r', 'i', 'n', 't', 'c', 'a', 'r', 'd', '.', 'd', 'e', '\0',
   /* "myptsite.com", true */ 'm', 'y', 'p', 't', 's', 'i', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "myraytech.net", false */ 'm', 'y', 'r', 'a', 'y', 't', 'e', 'c', 'h', '.', 'n', 'e', 't', '\0',
   /* "myrealestatemate.com.au", true */ 'm', 'y', 'r', 'e', 'a', 'l', 'e', 's', 't', 'a', 't', 'e', 'm', 'a', 't', 'e', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "myrepublic.co.id", true */ 'm', 'y', 'r', 'e', 'p', 'u', 'b', 'l', 'i', 'c', '.', 'c', 'o', '.', 'i', 'd', '\0',
   /* "myresearchapp.com", true */ 'm', 'y', 'r', 'e', 's', 'e', 'a', 'r', 'c', 'h', 'a', 'p', 'p', '.', 'c', 'o', 'm', '\0',
   /* "myruststats.com", true */ 'm', 'y', 'r', 'u', 's', 't', 's', 't', 'a', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "myschoolphoto.org", true */ 'm', 'y', 's', 'c', 'h', 'o', 'o', 'l', 'p', 'h', 'o', 't', 'o', '.', 'o', 'r', 'g', '\0',
@@ -8612,16 +8620,17 @@ static const char kSTSHostTable[] = {
   /* "nedim-accueil.fr", true */ 'n', 'e', 'd', 'i', 'm', '-', 'a', 'c', 'c', 'u', 'e', 'i', 'l', '.', 'f', 'r', '\0',
   /* "nedraconsult.ru", true */ 'n', 'e', 'd', 'r', 'a', 'c', 'o', 'n', 's', 'u', 'l', 't', '.', 'r', 'u', '\0',
   /* "neels.ch", true */ 'n', 'e', 'e', 'l', 's', '.', 'c', 'h', '\0',
   /* "neer.io", true */ 'n', 'e', 'e', 'r', '.', 'i', 'o', '\0',
   /* "nefertitis.cz", true */ 'n', 'e', 'f', 'e', 'r', 't', 'i', 't', 'i', 's', '.', 'c', 'z', '\0',
   /* "neftebitum-kngk.ru", true */ 'n', 'e', 'f', 't', 'e', 'b', 'i', 't', 'u', 'm', '-', 'k', 'n', 'g', 'k', '.', 'r', 'u', '\0',
   /* "neg9.org", false */ 'n', 'e', 'g', '9', '.', 'o', 'r', 'g', '\0',
   /* "neglecteddiseases.gov", true */ 'n', 'e', 'g', 'l', 'e', 'c', 't', 'e', 'd', 'd', 'i', 's', 'e', 'a', 's', 'e', 's', '.', 'g', 'o', 'v', '\0',
+  /* "neilgreen.net", true */ 'n', 'e', 'i', 'l', 'g', 'r', 'e', 'e', 'n', '.', 'n', 'e', 't', '\0',
   /* "neillans.co.uk", true */ 'n', 'e', 'i', 'l', 'l', 'a', 'n', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "neillans.com", true */ 'n', 'e', 'i', 'l', 'l', 'a', 'n', 's', '.', 'c', 'o', 'm', '\0',
   /* "neilwynne.com", false */ 'n', 'e', 'i', 'l', 'w', 'y', 'n', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "neko.li", true */ 'n', 'e', 'k', 'o', '.', 'l', 'i', '\0',
   /* "nekomimi.pl", true */ 'n', 'e', 'k', 'o', 'm', 'i', 'm', 'i', '.', 'p', 'l', '\0',
   /* "nekosc.com", true */ 'n', 'e', 'k', 'o', 's', 'c', '.', 'c', 'o', 'm', '\0',
   /* "nelhage.com", true */ 'n', 'e', 'l', 'h', 'a', 'g', 'e', '.', 'c', 'o', 'm', '\0',
   /* "nemecl.eu", true */ 'n', 'e', 'm', 'e', 'c', 'l', '.', 'e', 'u', '\0',
@@ -8639,16 +8648,17 @@ static const char kSTSHostTable[] = {
   /* "nerd42.de", true */ 'n', 'e', 'r', 'd', '4', '2', '.', 'd', 'e', '\0',
   /* "nerdjokes.de", true */ 'n', 'e', 'r', 'd', 'j', 'o', 'k', 'e', 's', '.', 'd', 'e', '\0',
   /* "nerdpol.ch", true */ 'n', 'e', 'r', 'd', 'p', 'o', 'l', '.', 'c', 'h', '\0',
   /* "nerds-gegen-stephan.de", true */ 'n', 'e', 'r', 'd', 's', '-', 'g', 'e', 'g', 'e', 'n', '-', 's', 't', 'e', 'p', 'h', 'a', 'n', '.', 'd', 'e', '\0',
   /* "nerds.company", false */ 'n', 'e', 'r', 'd', 's', '.', 'c', 'o', 'm', 'p', 'a', 'n', 'y', '\0',
   /* "nerdtime.de", true */ 'n', 'e', 'r', 'd', 't', 'i', 'm', 'e', '.', 'd', 'e', '\0',
   /* "nerdydev.net", true */ 'n', 'e', 'r', 'd', 'y', 'd', 'e', 'v', '.', 'n', 'e', 't', '\0',
   /* "nerull7.info", true */ 'n', 'e', 'r', 'u', 'l', 'l', '7', '.', 'i', 'n', 'f', 'o', '\0',
+  /* "nestedquotes.ca", true */ 'n', 'e', 's', 't', 'e', 'd', 'q', 'u', 'o', 't', 'e', 's', '.', 'c', 'a', '\0',
   /* "nestone.ru", true */ 'n', 'e', 's', 't', 'o', 'n', 'e', '.', 'r', 'u', '\0',
   /* "neswec.org.uk", true */ 'n', 'e', 's', 'w', 'e', 'c', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "net-safe.info", true */ 'n', 'e', 't', '-', 's', 'a', 'f', 'e', '.', 'i', 'n', 'f', 'o', '\0',
   /* "net2o.com", true */ 'n', 'e', 't', '2', 'o', '.', 'c', 'o', 'm', '\0',
   /* "net2o.de", true */ 'n', 'e', 't', '2', 'o', '.', 'd', 'e', '\0',
   /* "net2o.net", true */ 'n', 'e', 't', '2', 'o', '.', 'n', 'e', 't', '\0',
   /* "netba.net", true */ 'n', 'e', 't', 'b', 'a', '.', 'n', 'e', 't', '\0',
   /* "netbank.com.au", true */ 'n', 'e', 't', 'b', 'a', 'n', 'k', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
@@ -8799,45 +8809,46 @@ static const char kSTSHostTable[] = {
   /* "nikao-tech.com", true */ 'n', 'i', 'k', 'a', 'o', '-', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "nikklassen.ca", true */ 'n', 'i', 'k', 'k', 'l', 'a', 's', 's', 'e', 'n', '.', 'c', 'a', '\0',
   /* "niklaslindblad.se", true */ 'n', 'i', 'k', 'l', 'a', 's', 'l', 'i', 'n', 'd', 'b', 'l', 'a', 'd', '.', 's', 'e', '\0',
   /* "nikobradshaw.com", true */ 'n', 'i', 'k', 'o', 'b', 'r', 'a', 'd', 's', 'h', 'a', 'w', '.', 'c', 'o', 'm', '\0',
   /* "nikolasbradshaw.com", true */ 'n', 'i', 'k', 'o', 'l', 'a', 's', 'b', 'r', 'a', 'd', 's', 'h', 'a', 'w', '.', 'c', 'o', 'm', '\0',
   /* "nikolasgrottendieck.com", true */ 'n', 'i', 'k', 'o', 'l', 'a', 's', 'g', 'r', 'o', 't', 't', 'e', 'n', 'd', 'i', 'e', 'c', 'k', '.', 'c', 'o', 'm', '\0',
   /* "nil.gs", true */ 'n', 'i', 'l', '.', 'g', 's', '\0',
   /* "niloxy.com", true */ 'n', 'i', 'l', 'o', 'x', 'y', '.', 'c', 'o', 'm', '\0',
-  /* "nilrem.org", true */ 'n', 'i', 'l', 'r', 'e', 'm', '.', 'o', 'r', 'g', '\0',
   /* "nimeshjm.com", true */ 'n', 'i', 'm', 'e', 's', 'h', 'j', 'm', '.', 'c', 'o', 'm', '\0',
   /* "ninchat.com", true */ 'n', 'i', 'n', 'c', 'h', 'a', 't', '.', 'c', 'o', 'm', '\0',
   /* "nine-hells.net", false */ 'n', 'i', 'n', 'e', '-', 'h', 'e', 'l', 'l', 's', '.', 'n', 'e', 't', '\0',
   /* "ninebennink.com", true */ 'n', 'i', 'n', 'e', 'b', 'e', 'n', 'n', 'i', 'n', 'k', '.', 'c', 'o', 'm', '\0',
   /* "ninespec.com", true */ 'n', 'i', 'n', 'e', 's', 'p', 'e', 'c', '.', 'c', 'o', 'm', '\0',
   /* "ninjan.co", true */ 'n', 'i', 'n', 'j', 'a', 'n', '.', 'c', 'o', '\0',
   /* "ninthfloor.org", true */ 'n', 'i', 'n', 't', 'h', 'f', 'l', 'o', 'o', 'r', '.', 'o', 'r', 'g', '\0',
   /* "ninux.ch", false */ 'n', 'i', 'n', 'u', 'x', '.', 'c', 'h', '\0',
   /* "niouininon.eu", true */ 'n', 'i', 'o', 'u', 'i', 'n', 'i', 'n', 'o', 'n', '.', 'e', 'u', '\0',
   /* "nippon-oku.com", true */ 'n', 'i', 'p', 'p', 'o', 'n', '-', 'o', 'k', 'u', '.', 'c', 'o', 'm', '\0',
   /* "nippon.fr", true */ 'n', 'i', 'p', 'p', 'o', 'n', '.', 'f', 'r', '\0',
   /* "nirada.info", true */ 'n', 'i', 'r', 'a', 'd', 'a', '.', 'i', 'n', 'f', 'o', '\0',
   /* "nitrix.me", true */ 'n', 'i', 't', 'r', 'i', 'x', '.', 'm', 'e', '\0',
   /* "nitropur.com", true */ 'n', 'i', 't', 'r', 'o', 'p', 'u', 'r', '.', 'c', 'o', 'm', '\0',
   /* "nitropur.de", true */ 'n', 'i', 't', 'r', 'o', 'p', 'u', 'r', '.', 'd', 'e', '\0',
   /* "nivi.ca", true */ 'n', 'i', 'v', 'i', '.', 'c', 'a', '\0',
+  /* "nixmag.net", true */ 'n', 'i', 'x', 'm', 'a', 'g', '.', 'n', 'e', 't', '\0',
   /* "nkadvertising.online", true */ 'n', 'k', 'a', 'd', 'v', 'e', 'r', 't', 'i', 's', 'i', 'n', 'g', '.', 'o', 'n', 'l', 'i', 'n', 'e', '\0',
   /* "nl-ix.net", true */ 'n', 'l', '-', 'i', 'x', '.', 'n', 'e', 't', '\0',
   /* "nl.search.yahoo.com", false */ 'n', 'l', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "nlegall.fr", true */ 'n', 'l', 'e', 'g', 'a', 'l', 'l', '.', 'f', 'r', '\0',
   /* "nmd.so", true */ 'n', 'm', 'd', '.', 's', 'o', '\0',
   /* "nmsnj.com", true */ 'n', 'm', 's', 'n', 'j', '.', 'c', 'o', 'm', '\0',
   /* "nnote.net", true */ 'n', 'n', 'o', 't', 'e', '.', 'n', 'e', 't', '\0',
   /* "nnqc.nl", true */ 'n', 'n', 'q', 'c', '.', 'n', 'l', '\0',
   /* "no.search.yahoo.com", false */ 'n', 'o', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "nobly.de", true */ 'n', 'o', 'b', 'l', 'y', '.', 'd', 'e', '\0',
   /* "nocit.dk", true */ 'n', 'o', 'c', 'i', 't', '.', 'd', 'k', '\0',
   /* "noclegi-online.pl", true */ 'n', 'o', 'c', 'l', 'e', 'g', 'i', '-', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'p', 'l', '\0',
+  /* "noctinus.tk", true */ 'n', 'o', 'c', 't', 'i', 'n', 'u', 's', '.', 't', 'k', '\0',
   /* "nodari.com.ar", true */ 'n', 'o', 'd', 'a', 'r', 'i', '.', 'c', 'o', 'm', '.', 'a', 'r', '\0',
   /* "nodelia.com", true */ 'n', 'o', 'd', 'e', 'l', 'i', 'a', '.', 'c', 'o', 'm', '\0',
   /* "nodespin.com", true */ 'n', 'o', 'd', 'e', 's', 'p', 'i', 'n', '.', 'c', 'o', 'm', '\0',
   /* "nodi.at", true */ 'n', 'o', 'd', 'i', '.', 'a', 't', '\0',
   /* "noedidacticos.com", true */ 'n', 'o', 'e', 'd', 'i', 'd', 'a', 'c', 't', 'i', 'c', 'o', 's', '.', 'c', 'o', 'm', '\0',
   /* "noemax.com", true */ 'n', 'o', 'e', 'm', 'a', 'x', '.', 'c', 'o', 'm', '\0',
   /* "noez.de", true */ 'n', 'o', 'e', 'z', '.', 'd', 'e', '\0',
   /* "nohats.ca", true */ 'n', 'o', 'h', 'a', 't', 's', '.', 'c', 'a', '\0',
@@ -8900,16 +8911,17 @@ static const char kSTSHostTable[] = {
   /* "novelfeed.com", true */ 'n', 'o', 'v', 'e', 'l', 'f', 'e', 'e', 'd', '.', 'c', 'o', 'm', '\0',
   /* "novelshouse.com", true */ 'n', 'o', 'v', 'e', 'l', 's', 'h', 'o', 'u', 's', 'e', '.', 'c', 'o', 'm', '\0',
   /* "novoresume.com", true */ 'n', 'o', 'v', 'o', 'r', 'e', 's', 'u', 'm', 'e', '.', 'c', 'o', 'm', '\0',
   /* "nowhere.dk", true */ 'n', 'o', 'w', 'h', 'e', 'r', 'e', '.', 'd', 'k', '\0',
   /* "nowlas.org", true */ 'n', 'o', 'w', 'l', 'a', 's', '.', 'o', 'r', 'g', '\0',
   /* "noxlogic.nl", true */ 'n', 'o', 'x', 'l', 'o', 'g', 'i', 'c', '.', 'n', 'l', '\0',
   /* "nozoe.jp", true */ 'n', 'o', 'z', 'o', 'e', '.', 'j', 'p', '\0',
   /* "npath.de", true */ 'n', 'p', 'a', 't', 'h', '.', 'd', 'e', '\0',
+  /* "npm.li", true */ 'n', 'p', 'm', '.', 'l', 'i', '\0',
   /* "npmcdn.com", true */ 'n', 'p', 'm', 'c', 'd', 'n', '.', 'c', 'o', 'm', '\0',
   /* "npw.net", true */ 'n', 'p', 'w', '.', 'n', 'e', 't', '\0',
   /* "nq7.pl", true */ 'n', 'q', '7', '.', 'p', 'l', '\0',
   /* "nrechn.de", true */ 'n', 'r', 'e', 'c', 'h', 'n', '.', 'd', 'e', '\0',
   /* "nrizzio.me", true */ 'n', 'r', 'i', 'z', 'z', 'i', 'o', '.', 'm', 'e', '\0',
   /* "nrkn.fr", true */ 'n', 'r', 'k', 'n', '.', 'f', 'r', '\0',
   /* "nsa.lol", true */ 'n', 's', 'a', '.', 'l', 'o', 'l', '\0',
   /* "nsa.wtf", true */ 'n', 's', 'a', '.', 'w', 't', 'f', '\0',
@@ -8922,16 +8934,17 @@ static const char kSTSHostTable[] = {
   /* "nsweb.solutions", true */ 'n', 's', 'w', 'e', 'b', '.', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 's', '\0',
   /* "nsworks.com", true */ 'n', 's', 'w', 'o', 'r', 'k', 's', '.', 'c', 'o', 'm', '\0',
   /* "ntotten.com", true */ 'n', 't', 'o', 't', 't', 'e', 'n', '.', 'c', 'o', 'm', '\0',
   /* "ntppool.org", true */ 'n', 't', 'p', 'p', 'o', 'o', 'l', '.', 'o', 'r', 'g', '\0',
   /* "ntse.xyz", true */ 'n', 't', 's', 'e', '.', 'x', 'y', 'z', '\0',
   /* "nube.ninja", true */ 'n', 'u', 'b', 'e', '.', 'n', 'i', 'n', 'j', 'a', '\0',
   /* "nubella.com.au", true */ 'n', 'u', 'b', 'e', 'l', 'l', 'a', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "nubu.at", true */ 'n', 'u', 'b', 'u', '.', 'a', 't', '\0',
+  /* "nukenet.se", true */ 'n', 'u', 'k', 'e', 'n', 'e', 't', '.', 's', 'e', '\0',
   /* "nukute.com", true */ 'n', 'u', 'k', 'u', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "null-life.com", true */ 'n', 'u', 'l', 'l', '-', 'l', 'i', 'f', 'e', '.', 'c', 'o', 'm', '\0',
   /* "null-pointer.eu", true */ 'n', 'u', 'l', 'l', '-', 'p', 'o', 'i', 'n', 't', 'e', 'r', '.', 'e', 'u', '\0',
   /* "nullpro.com", true */ 'n', 'u', 'l', 'l', 'p', 'r', 'o', '.', 'c', 'o', 'm', '\0',
   /* "nullroute.com", true */ 'n', 'u', 'l', 'l', 'r', 'o', 'u', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "numatic.co.uk", true */ 'n', 'u', 'm', 'a', 't', 'i', 'c', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "number.me", false */ 'n', 'u', 'm', 'b', 'e', 'r', '.', 'm', 'e', '\0',
   /* "numberoneshoes.co.nz", true */ 'n', 'u', 'm', 'b', 'e', 'r', 'o', 'n', 'e', 's', 'h', 'o', 'e', 's', '.', 'c', 'o', '.', 'n', 'z', '\0',
@@ -9032,16 +9045,18 @@ static const char kSTSHostTable[] = {
   /* "olanderflorist.com", true */ 'o', 'l', 'a', 'n', 'd', 'e', 'r', 'f', 'l', 'o', 'r', 'i', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "olcso-vps-szerver.hu", true */ 'o', 'l', 'c', 's', 'o', '-', 'v', 'p', 's', '-', 's', 'z', 'e', 'r', 'v', 'e', 'r', '.', 'h', 'u', '\0',
   /* "oldoakflorist.com", true */ 'o', 'l', 'd', 'o', 'a', 'k', 'f', 'l', 'o', 'r', 'i', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "olegon.ru", true */ 'o', 'l', 'e', 'g', 'o', 'n', '.', 'r', 'u', '\0',
   /* "oleksii.name", true */ 'o', 'l', 'e', 'k', 's', 'i', 'i', '.', 'n', 'a', 'm', 'e', '\0',
   /* "oliveraiedelabastideblanche.fr", true */ 'o', 'l', 'i', 'v', 'e', 'r', 'a', 'i', 'e', 'd', 'e', 'l', 'a', 'b', 'a', 's', 't', 'i', 'd', 'e', 'b', 'l', 'a', 'n', 'c', 'h', 'e', '.', 'f', 'r', '\0',
   /* "oliverfaircliff.com", true */ 'o', 'l', 'i', 'v', 'e', 'r', 'f', 'a', 'i', 'r', 'c', 'l', 'i', 'f', 'f', '.', 'c', 'o', 'm', '\0',
   /* "olivierlemoal.fr", true */ 'o', 'l', 'i', 'v', 'i', 'e', 'r', 'l', 'e', 'm', 'o', 'a', 'l', '.', 'f', 'r', '\0',
+  /* "ollies.cloud", true */ 'o', 'l', 'l', 'i', 'e', 's', '.', 'c', 'l', 'o', 'u', 'd', '\0',
+  /* "olliespage.net", true */ 'o', 'l', 'l', 'i', 'e', 's', 'p', 'a', 'g', 'e', '.', 'n', 'e', 't', '\0',
   /* "ollning.com", true */ 'o', 'l', 'l', 'n', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "olmari.fi", true */ 'o', 'l', 'm', 'a', 'r', 'i', '.', 'f', 'i', '\0',
   /* "ols.io", true */ 'o', 'l', 's', '.', 'i', 'o', '\0',
   /* "olymp-arts.world", true */ 'o', 'l', 'y', 'm', 'p', '-', 'a', 'r', 't', 's', '.', 'w', 'o', 'r', 'l', 'd', '\0',
   /* "omacostudio.com", true */ 'o', 'm', 'a', 'c', 'o', 's', 't', 'u', 'd', 'i', 'o', '.', 'c', 'o', 'm', '\0',
   /* "omifind.com", true */ 'o', 'm', 'i', 'f', 'i', 'n', 'd', '.', 'c', 'o', 'm', '\0',
   /* "omitech.co.uk", true */ 'o', 'm', 'i', 't', 'e', 'c', 'h', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "omniasl.com", true */ 'o', 'm', 'n', 'i', 'a', 's', 'l', '.', 'c', 'o', 'm', '\0',
@@ -9099,17 +9114,16 @@ static const char kSTSHostTable[] = {
   /* "onsitemassageco.com", true */ 'o', 'n', 's', 'i', 't', 'e', 'm', 'a', 's', 's', 'a', 'g', 'e', 'c', 'o', '.', 'c', 'o', 'm', '\0',
   /* "onstud.com", true */ 'o', 'n', 's', 't', 'u', 'd', '.', 'c', 'o', 'm', '\0',
   /* "onthebriteside.com", true */ 'o', 'n', 't', 'h', 'e', 'b', 'r', 'i', 't', 'e', 's', 'i', 'd', 'e', '.', 'c', 'o', 'm', '\0',
   /* "ontimestamp.com", true */ 'o', 'n', 't', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', '.', 'c', 'o', 'm', '\0',
   /* "onviga.de", true */ 'o', 'n', 'v', 'i', 'g', 'a', '.', 'd', 'e', '\0',
   /* "onvori.com", true */ 'o', 'n', 'v', 'o', 'r', 'i', '.', 'c', 'o', 'm', '\0',
   /* "onvori.de", true */ 'o', 'n', 'v', 'o', 'r', 'i', '.', 'd', 'e', '\0',
   /* "onysix.net", true */ 'o', 'n', 'y', 's', 'i', 'x', '.', 'n', 'e', 't', '\0',
-  /* "onyxwall.com", true */ 'o', 'n', 'y', 'x', 'w', 'a', 'l', 'l', '.', 'c', 'o', 'm', '\0',
   /* "onyxwall.link", true */ 'o', 'n', 'y', 'x', 'w', 'a', 'l', 'l', '.', 'l', 'i', 'n', 'k', '\0',
   /* "oogami.name", true */ 'o', 'o', 'g', 'a', 'm', 'i', '.', 'n', 'a', 'm', 'e', '\0',
   /* "oogartsennet.nl", true */ 'o', 'o', 'g', 'a', 'r', 't', 's', 'e', 'n', 'n', 'e', 't', '.', 'n', 'l', '\0',
   /* "ooyo.be", true */ 'o', 'o', 'y', 'o', '.', 'b', 'e', '\0',
   /* "oparl.org", true */ 'o', 'p', 'a', 'r', 'l', '.', 'o', 'r', 'g', '\0',
   /* "opatut.de", true */ 'o', 'p', 'a', 't', 'u', 't', '.', 'd', 'e', '\0',
   /* "open-bs.com", true */ 'o', 'p', 'e', 'n', '-', 'b', 's', '.', 'c', 'o', 'm', '\0',
   /* "open-bs.ru", true */ 'o', 'p', 'e', 'n', '-', 'b', 's', '.', 'r', 'u', '\0',
@@ -9188,16 +9202,17 @@ static const char kSTSHostTable[] = {
   /* "oslinux.net", true */ 'o', 's', 'l', 'i', 'n', 'u', 'x', '.', 'n', 'e', 't', '\0',
   /* "osm.is", true */ 'o', 's', 'm', '.', 'i', 's', '\0',
   /* "osmanlitorunu.com", true */ 'o', 's', 'm', 'a', 'n', 'l', 'i', 't', 'o', 'r', 'u', 'n', 'u', '.', 'c', 'o', 'm', '\0',
   /* "osmosis.org", true */ 'o', 's', 'm', 'o', 's', 'i', 's', '.', 'o', 'r', 'g', '\0',
   /* "osquery.io", true */ 'o', 's', 'q', 'u', 'e', 'r', 'y', '.', 'i', 'o', '\0',
   /* "ostan-collections.net", true */ 'o', 's', 't', 'a', 'n', '-', 'c', 'o', 'l', 'l', 'e', 'c', 't', 'i', 'o', 'n', 's', '.', 'n', 'e', 't', '\0',
   /* "ostendorf.com", true */ 'o', 's', 't', 'e', 'n', 'd', 'o', 'r', 'f', '.', 'c', 'o', 'm', '\0',
   /* "osterkraenzchen.de", true */ 'o', 's', 't', 'e', 'r', 'k', 'r', 'a', 'e', 'n', 'z', 'c', 'h', 'e', 'n', '.', 'd', 'e', '\0',
+  /* "ostr.io", true */ 'o', 's', 't', 'r', '.', 'i', 'o', '\0',
   /* "osusume-houhou.com", true */ 'o', 's', 'u', 's', 'u', 'm', 'e', '-', 'h', 'o', 'u', 'h', 'o', 'u', '.', 'c', 'o', 'm', '\0',
   /* "oszri.hu", true */ 'o', 's', 'z', 'r', 'i', '.', 'h', 'u', '\0',
   /* "otakubox.de", true */ 'o', 't', 'a', 'k', 'u', 'b', 'o', 'x', '.', 'd', 'e', '\0',
   /* "otakurepublic.com", true */ 'o', 't', 'a', 'k', 'u', 'r', 'e', 'p', 'u', 'b', 'l', 'i', 'c', '.', 'c', 'o', 'm', '\0',
   /* "otchecker.com", true */ 'o', 't', 'c', 'h', 'e', 'c', 'k', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "oticasvisao.net.br", true */ 'o', 't', 'i', 'c', 'a', 's', 'v', 'i', 's', 'a', 'o', '.', 'n', 'e', 't', '.', 'b', 'r', '\0',
   /* "otoy.com", true */ 'o', 't', 'o', 'y', '.', 'c', 'o', 'm', '\0',
   /* "otpsmart.com.ua", true */ 'o', 't', 'p', 's', 'm', 'a', 'r', 't', '.', 'c', 'o', 'm', '.', 'u', 'a', '\0',
@@ -9228,19 +9243,19 @@ static const char kSTSHostTable[] = {
   /* "oxymc.com", true */ 'o', 'x', 'y', 'm', 'c', '.', 'c', 'o', 'm', '\0',
   /* "oxynux.xyz", true */ 'o', 'x', 'y', 'n', 'u', 'x', '.', 'x', 'y', 'z', '\0',
   /* "oyste.in", true */ 'o', 'y', 's', 't', 'e', '.', 'i', 'n', '\0',
   /* "oznamovacipovinnost.cz", true */ 'o', 'z', 'n', 'a', 'm', 'o', 'v', 'a', 'c', 'i', 'p', 'o', 'v', 'i', 'n', 'n', 'o', 's', 't', '.', 'c', 'z', '\0',
   /* "ozvolvo.org", true */ 'o', 'z', 'v', 'o', 'l', 'v', 'o', '.', 'o', 'r', 'g', '\0',
   /* "p-s-b.com", true */ 'p', '-', 's', '-', 'b', '.', 'c', 'o', 'm', '\0',
   /* "p1984.nl", false */ 'p', '1', '9', '8', '4', '.', 'n', 'l', '\0',
   /* "p1c.pw", true */ 'p', '1', 'c', '.', 'p', 'w', '\0',
+  /* "p3in.com", true */ 'p', '3', 'i', 'n', '.', 'c', 'o', 'm', '\0',
   /* "pa-w.de", true */ 'p', 'a', '-', 'w', '.', 'd', 'e', '\0',
   /* "pace.car", true */ 'p', 'a', 'c', 'e', '.', 'c', 'a', 'r', '\0',
-  /* "pacelink.de", true */ 'p', 'a', 'c', 'e', 'l', 'i', 'n', 'k', '.', 'd', 'e', '\0',
   /* "packagist.org", false */ 'p', 'a', 'c', 'k', 'a', 'g', 'i', 's', 't', '.', 'o', 'r', 'g', '\0',
   /* "packaware.com", true */ 'p', 'a', 'c', 'k', 'a', 'w', 'a', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "packer.io", true */ 'p', 'a', 'c', 'k', 'e', 'r', '.', 'i', 'o', '\0',
   /* "pacoda.de", true */ 'p', 'a', 'c', 'o', 'd', 'a', '.', 'd', 'e', '\0',
   /* "pactf.com", true */ 'p', 'a', 'c', 't', 'f', '.', 'c', 'o', 'm', '\0',
   /* "pagefulloflies.io", true */ 'p', 'a', 'g', 'e', 'f', 'u', 'l', 'l', 'o', 'f', 'l', 'i', 'e', 's', '.', 'i', 'o', '\0',
   /* "pagewizz.com", false */ 'p', 'a', 'g', 'e', 'w', 'i', 'z', 'z', '.', 'c', 'o', 'm', '\0',
   /* "paginapolitica.ro", true */ 'p', 'a', 'g', 'i', 'n', 'a', 'p', 'o', 'l', 'i', 't', 'i', 'c', 'a', '.', 'r', 'o', '\0',
@@ -9282,17 +9297,17 @@ static const char kSTSHostTable[] = {
   /* "paper-republic.org", true */ 'p', 'a', 'p', 'e', 'r', '-', 'r', 'e', 'p', 'u', 'b', 'l', 'i', 'c', '.', 'o', 'r', 'g', '\0',
   /* "papercrunch.io", true */ 'p', 'a', 'p', 'e', 'r', 'c', 'r', 'u', 'n', 'c', 'h', '.', 'i', 'o', '\0',
   /* "papermasters.com", true */ 'p', 'a', 'p', 'e', 'r', 'm', 'a', 's', 't', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "paperturn.com", true */ 'p', 'a', 'p', 'e', 'r', 't', 'u', 'r', 'n', '.', 'c', 'o', 'm', '\0',
   /* "paperwork.co.za", true */ 'p', 'a', 'p', 'e', 'r', 'w', 'o', 'r', 'k', '.', 'c', 'o', '.', 'z', 'a', '\0',
   /* "paraborsa.net", true */ 'p', 'a', 'r', 'a', 'b', 'o', 'r', 's', 'a', '.', 'n', 'e', 't', '\0',
   /* "paradiselost.com", true */ 'p', 'a', 'r', 'a', 'd', 'i', 's', 'e', 'l', 'o', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "paradoxdesigns.org", true */ 'p', 'a', 'r', 'a', 'd', 'o', 'x', 'd', 'e', 's', 'i', 'g', 'n', 's', '.', 'o', 'r', 'g', '\0',
-  /* "paragon.com.sg", true */ 'p', 'a', 'r', 'a', 'g', 'o', 'n', '.', 'c', 'o', 'm', '.', 's', 'g', '\0',
+  /* "paragon.com.sg", false */ 'p', 'a', 'r', 'a', 'g', 'o', 'n', '.', 'c', 'o', 'm', '.', 's', 'g', '\0',
   /* "paragonie.com", false */ 'p', 'a', 'r', 'a', 'g', 'o', 'n', 'i', 'e', '.', 'c', 'o', 'm', '\0',
   /* "paragreen.net", true */ 'p', 'a', 'r', 'a', 'g', 'r', 'e', 'e', 'n', '.', 'n', 'e', 't', '\0',
   /* "paranoxer.hu", true */ 'p', 'a', 'r', 'a', 'n', 'o', 'x', 'e', 'r', '.', 'h', 'u', '\0',
   /* "parasitologyclub.org", true */ 'p', 'a', 'r', 'a', 's', 'i', 't', 'o', 'l', 'o', 'g', 'y', 'c', 'l', 'u', 'b', '.', 'o', 'r', 'g', '\0',
   /* "paratlan.hu", true */ 'p', 'a', 'r', 'a', 't', 'l', 'a', 'n', '.', 'h', 'u', '\0',
   /* "parckwart.de", true */ 'p', 'a', 'r', 'c', 'k', 'w', 'a', 'r', 't', '.', 'd', 'e', '\0',
   /* "parcon.it", true */ 'p', 'a', 'r', 'c', 'o', 'n', '.', 'i', 't', '\0',
   /* "parentinterview.com", true */ 'p', 'a', 'r', 'e', 'n', 't', 'i', 'n', 't', 'e', 'r', 'v', 'i', 'e', 'w', '.', 'c', 'o', 'm', '\0',
@@ -9411,17 +9426,16 @@ static const char kSTSHostTable[] = {
   /* "pdevio.com", true */ 'p', 'd', 'e', 'v', 'i', 'o', '.', 'c', 'o', 'm', '\0',
   /* "pdf.yt", true */ 'p', 'd', 'f', '.', 'y', 't', '\0',
   /* "pe-bank.co.jp", true */ 'p', 'e', '-', 'b', 'a', 'n', 'k', '.', 'c', 'o', '.', 'j', 'p', '\0',
   /* "pe-kyousai.jp", true */ 'p', 'e', '-', 'k', 'y', 'o', 'u', 's', 'a', 'i', '.', 'j', 'p', '\0',
   /* "pe.search.yahoo.com", false */ 'p', 'e', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "peaceandwool.com", true */ 'p', 'e', 'a', 'c', 'e', 'a', 'n', 'd', 'w', 'o', 'o', 'l', '.', 'c', 'o', 'm', '\0',
   /* "peakapp.nl", true */ 'p', 'e', 'a', 'k', 'a', 'p', 'p', '.', 'n', 'l', '\0',
   /* "pear2pear.de", true */ 'p', 'e', 'a', 'r', '2', 'p', 'e', 'a', 'r', '.', 'd', 'e', '\0',
-  /* "pebbles.net.in", true */ 'p', 'e', 'b', 'b', 'l', 'e', 's', '.', 'n', 'e', 't', '.', 'i', 'n', '\0',
   /* "pedicureduiven.nl", true */ 'p', 'e', 'd', 'i', 'c', 'u', 'r', 'e', 'd', 'u', 'i', 'v', 'e', 'n', '.', 'n', 'l', '\0',
   /* "pedrosluiter.nl", true */ 'p', 'e', 'd', 'r', 'o', 's', 'l', 'u', 'i', 't', 'e', 'r', '.', 'n', 'l', '\0',
   /* "pedroventura.com", true */ 'p', 'e', 'd', 'r', 'o', 'v', 'e', 'n', 't', 'u', 'r', 'a', '.', 'c', 'o', 'm', '\0',
   /* "peekier.com", true */ 'p', 'e', 'e', 'k', 'i', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "peercraft.com", true */ 'p', 'e', 'e', 'r', 'c', 'r', 'a', 'f', 't', '.', 'c', 'o', 'm', '\0',
   /* "peerherrmann.de", true */ 'p', 'e', 'e', 'r', 'h', 'e', 'r', 'r', 'm', 'a', 'n', 'n', '.', 'd', 'e', '\0',
   /* "peername.com", true */ 'p', 'e', 'e', 'r', 'n', 'a', 'm', 'e', '.', 'c', 'o', 'm', '\0',
   /* "peervpn.net", true */ 'p', 'e', 'e', 'r', 'v', 'p', 'n', '.', 'n', 'e', 't', '\0',
@@ -9509,17 +9523,16 @@ static const char kSTSHostTable[] = {
   /* "pgpmail.cc", true */ 'p', 'g', 'p', 'm', 'a', 'i', 'l', '.', 'c', 'c', '\0',
   /* "pgregg.com", false */ 'p', 'g', 'r', 'e', 'g', 'g', '.', 'c', 'o', 'm', '\0',
   /* "pgtb.be", true */ 'p', 'g', 't', 'b', '.', 'b', 'e', '\0',
   /* "ph.search.yahoo.com", false */ 'p', 'h', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "phalconist.com", true */ 'p', 'h', 'a', 'l', 'c', 'o', 'n', 'i', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "phantasie.cc", true */ 'p', 'h', 'a', 'n', 't', 'a', 's', 'i', 'e', '.', 'c', 'c', '\0',
   /* "phantastikon.de", true */ 'p', 'h', 'a', 'n', 't', 'a', 's', 't', 'i', 'k', 'o', 'n', '.', 'd', 'e', '\0',
   /* "pharmaboard.de", true */ 'p', 'h', 'a', 'r', 'm', 'a', 'b', 'o', 'a', 'r', 'd', '.', 'd', 'e', '\0',
-  /* "pharmgkb.org", true */ 'p', 'h', 'a', 'r', 'm', 'g', 'k', 'b', '.', 'o', 'r', 'g', '\0',
   /* "pharynks.com", true */ 'p', 'h', 'a', 'r', 'y', 'n', 'k', 's', '.', 'c', 'o', 'm', '\0',
   /* "phcnetworks.net", true */ 'p', 'h', 'c', 'n', 'e', 't', 'w', 'o', 'r', 'k', 's', '.', 'n', 'e', 't', '\0',
   /* "phenomeno-porto.com", true */ 'p', 'h', 'e', 'n', 'o', 'm', 'e', 'n', 'o', '-', 'p', 'o', 'r', 't', 'o', '.', 'c', 'o', 'm', '\0',
   /* "phenomeno.nl", true */ 'p', 'h', 'e', 'n', 'o', 'm', 'e', 'n', 'o', '.', 'n', 'l', '\0',
   /* "phenomenoporto.com", true */ 'p', 'h', 'e', 'n', 'o', 'm', 'e', 'n', 'o', 'p', 'o', 'r', 't', 'o', '.', 'c', 'o', 'm', '\0',
   /* "phenomenoporto.nl", true */ 'p', 'h', 'e', 'n', 'o', 'm', 'e', 'n', 'o', 'p', 'o', 'r', 't', 'o', '.', 'n', 'l', '\0',
   /* "phget.com", true */ 'p', 'h', 'g', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "phi-works.com", true */ 'p', 'h', 'i', '-', 'w', 'o', 'r', 'k', 's', '.', 'c', 'o', 'm', '\0',
@@ -9636,17 +9649,16 @@ static const char kSTSHostTable[] = {
   /* "pisupp.ly", true */ 'p', 'i', 's', 'u', 'p', 'p', '.', 'l', 'y', '\0',
   /* "pitchup.com", true */ 'p', 'i', 't', 'c', 'h', 'u', 'p', '.', 'c', 'o', 'm', '\0',
   /* "pitfire.io", false */ 'p', 'i', 't', 'f', 'i', 'r', 'e', '.', 'i', 'o', '\0',
   /* "pitonarms.com", true */ 'p', 'i', 't', 'o', 'n', 'a', 'r', 'm', 's', '.', 'c', 'o', 'm', '\0',
   /* "pittaya.com", true */ 'p', 'i', 't', 't', 'a', 'y', 'a', '.', 'c', 'o', 'm', '\0',
   /* "pixel.facebook.com", false */ 'p', 'i', 'x', 'e', 'l', '.', 'f', 'a', 'c', 'e', 'b', 'o', 'o', 'k', '.', 'c', 'o', 'm', '\0',
   /* "pixel.google.com", true */ 'p', 'i', 'x', 'e', 'l', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "pixelbash.de", true */ 'p', 'i', 'x', 'e', 'l', 'b', 'a', 's', 'h', '.', 'd', 'e', '\0',
-  /* "pixelminers.net", true */ 'p', 'i', 'x', 'e', 'l', 'm', 'i', 'n', 'e', 'r', 's', '.', 'n', 'e', 't', '\0',
   /* "pixi.chat", true */ 'p', 'i', 'x', 'i', '.', 'c', 'h', 'a', 't', '\0',
   /* "pixipics.com", false */ 'p', 'i', 'x', 'i', 'p', 'i', 'c', 's', '.', 'c', 'o', 'm', '\0',
   /* "pixiv.moe", false */ 'p', 'i', 'x', 'i', 'v', '.', 'm', 'o', 'e', '\0',
   /* "piyabute.com", true */ 'p', 'i', 'y', 'a', 'b', 'u', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "pizala.de", true */ 'p', 'i', 'z', 'a', 'l', 'a', '.', 'd', 'e', '\0',
   /* "pjili.com", true */ 'p', 'j', 'i', 'l', 'i', '.', 'c', 'o', 'm', '\0',
   /* "pjuu.com", false */ 'p', 'j', 'u', 'u', '.', 'c', 'o', 'm', '\0',
   /* "pkgt.de", false */ 'p', 'k', 'g', 't', '.', 'd', 'e', '\0',
@@ -9708,17 +9720,16 @@ static const char kSTSHostTable[] = {
   /* "pnut.io", false */ 'p', 'n', 'u', 't', '.', 'i', 'o', '\0',
   /* "pocketfullofapps.com", true */ 'p', 'o', 'c', 'k', 'e', 't', 'f', 'u', 'l', 'l', 'o', 'f', 'a', 'p', 'p', 's', '.', 'c', 'o', 'm', '\0',
   /* "pocketsix.com", true */ 'p', 'o', 'c', 'k', 'e', 't', 's', 'i', 'x', '.', 'c', 'o', 'm', '\0',
   /* "pocloud.homelinux.net", true */ 'p', 'o', 'c', 'l', 'o', 'u', 'd', '.', 'h', 'o', 'm', 'e', 'l', 'i', 'n', 'u', 'x', '.', 'n', 'e', 't', '\0',
   /* "podemos.info", true */ 'p', 'o', 'd', 'e', 'm', 'o', 's', '.', 'i', 'n', 'f', 'o', '\0',
   /* "podshrink.de", true */ 'p', 'o', 'd', 's', 'h', 'r', 'i', 'n', 'k', '.', 'd', 'e', '\0',
   /* "poed.com.au", true */ 'p', 'o', 'e', 'd', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "poedgirl.com", true */ 'p', 'o', 'e', 'd', 'g', 'i', 'r', 'l', '.', 'c', 'o', 'm', '\0',
-  /* "poinsot.info", true */ 'p', 'o', 'i', 'n', 's', 'o', 't', '.', 'i', 'n', 'f', 'o', '\0',
   /* "pointaction.com", true */ 'p', 'o', 'i', 'n', 't', 'a', 'c', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "pointagri.com", true */ 'p', 'o', 'i', 'n', 't', 'a', 'g', 'r', 'i', '.', 'c', 'o', 'm', '\0',
   /* "pointiswunderland.de", true */ 'p', 'o', 'i', 'n', 't', 'i', 's', 'w', 'u', 'n', 'd', 'e', 'r', 'l', 'a', 'n', 'd', '.', 'd', 'e', '\0',
   /* "pointpro.de", true */ 'p', 'o', 'i', 'n', 't', 'p', 'r', 'o', '.', 'd', 'e', '\0',
   /* "points4unitedway.com", true */ 'p', 'o', 'i', 'n', 't', 's', '4', 'u', 'n', 'i', 't', 'e', 'd', 'w', 'a', 'y', '.', 'c', 'o', 'm', '\0',
   /* "pointsixtyfive.com", true */ 'p', 'o', 'i', 'n', 't', 's', 'i', 'x', 't', 'y', 'f', 'i', 'v', 'e', '.', 'c', 'o', 'm', '\0',
   /* "poitiers-ttacc-86.eu.org", true */ 'p', 'o', 'i', 't', 'i', 'e', 'r', 's', '-', 't', 't', 'a', 'c', 'c', '-', '8', '6', '.', 'e', 'u', '.', 'o', 'r', 'g', '\0',
   /* "pokeduel.me", true */ 'p', 'o', 'k', 'e', 'd', 'u', 'e', 'l', '.', 'm', 'e', '\0',
@@ -9914,17 +9925,18 @@ static const char kSTSHostTable[] = {
   /* "proslimdiets.com", true */ 'p', 'r', 'o', 's', 'l', 'i', 'm', 'd', 'i', 'e', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "prospanek.cz", true */ 'p', 'r', 'o', 's', 'p', 'a', 'n', 'e', 'k', '.', 'c', 'z', '\0',
   /* "prospo.co", true */ 'p', 'r', 'o', 's', 'p', 'o', '.', 'c', 'o', '\0',
   /* "prot.ch", true */ 'p', 'r', 'o', 't', '.', 'c', 'h', '\0',
   /* "protecciondelconsumidor.gov", true */ 'p', 'r', 'o', 't', 'e', 'c', 'c', 'i', 'o', 'n', 'd', 'e', 'l', 'c', 'o', 'n', 's', 'u', 'm', 'i', 'd', 'o', 'r', '.', 'g', 'o', 'v', '\0',
   /* "proteus-tech.com", true */ 'p', 'r', 'o', 't', 'e', 'u', 's', '-', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "protonmail.ch", true */ 'p', 'r', 'o', 't', 'o', 'n', 'm', 'a', 'i', 'l', '.', 'c', 'h', '\0',
   /* "protonmail.com", true */ 'p', 'r', 'o', 't', 'o', 'n', 'm', 'a', 'i', 'l', '.', 'c', 'o', 'm', '\0',
-  /* "protoxin.net", true */ 'p', 'r', 'o', 't', 'o', 'x', 'i', 'n', '.', 'n', 'e', 't', '\0',
+  /* "protoxin.net", false */ 'p', 'r', 'o', 't', 'o', 'x', 'i', 'n', '.', 'n', 'e', 't', '\0',
+  /* "protoyou.de", true */ 'p', 'r', 'o', 't', 'o', 'y', 'o', 'u', '.', 'd', 'e', '\0',
   /* "proust.ch", true */ 'p', 'r', 'o', 'u', 's', 't', '.', 'c', 'h', '\0',
   /* "proust.media", true */ 'p', 'r', 'o', 'u', 's', 't', '.', 'm', 'e', 'd', 'i', 'a', '\0',
   /* "proustmedia.de", true */ 'p', 'r', 'o', 'u', 's', 't', 'm', 'e', 'd', 'i', 'a', '.', 'd', 'e', '\0',
   /* "proweser.de", true */ 'p', 'r', 'o', 'w', 'e', 's', 'e', 'r', '.', 'd', 'e', '\0',
   /* "prowise.com", true */ 'p', 'r', 'o', 'w', 'i', 's', 'e', '.', 'c', 'o', 'm', '\0',
   /* "proxybay.co", true */ 'p', 'r', 'o', 'x', 'y', 'b', 'a', 'y', '.', 'c', 'o', '\0',
   /* "proxybay.la", true */ 'p', 'r', 'o', 'x', 'y', 'b', 'a', 'y', '.', 'l', 'a', '\0',
   /* "proxybay.one", true */ 'p', 'r', 'o', 'x', 'y', 'b', 'a', 'y', '.', 'o', 'n', 'e', '\0',
@@ -10080,30 +10092,30 @@ static const char kSTSHostTable[] = {
   /* "quantoras.com", true */ 'q', 'u', 'a', 'n', 't', 'o', 'r', 'a', 's', '.', 'c', 'o', 'm', '\0',
   /* "quantum-cloud.xyz", true */ 'q', 'u', 'a', 'n', 't', 'u', 'm', '-', 'c', 'l', 'o', 'u', 'd', '.', 'x', 'y', 'z', '\0',
   /* "quantumfurball.net", true */ 'q', 'u', 'a', 'n', 't', 'u', 'm', 'f', 'u', 'r', 'b', 'a', 'l', 'l', '.', 'n', 'e', 't', '\0',
   /* "qubyte.codes", true */ 'q', 'u', 'b', 'y', 't', 'e', '.', 'c', 'o', 'd', 'e', 's', '\0',
   /* "quchao.com", true */ 'q', 'u', 'c', 'h', 'a', 'o', '.', 'c', 'o', 'm', '\0',
   /* "quebecmailbox.com", true */ 'q', 'u', 'e', 'b', 'e', 'c', 'm', 'a', 'i', 'l', 'b', 'o', 'x', '.', 'c', 'o', 'm', '\0',
   /* "queercinema.ch", true */ 'q', 'u', 'e', 'e', 'r', 'c', 'i', 'n', 'e', 'm', 'a', '.', 'c', 'h', '\0',
   /* "queminventou.com.br", true */ 'q', 'u', 'e', 'm', 'i', 'n', 'v', 'e', 'n', 't', 'o', 'u', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
+  /* "quemmeliga.com", true */ 'q', 'u', 'e', 'm', 'm', 'e', 'l', 'i', 'g', 'a', '.', 'c', 'o', 'm', '\0',
   /* "quera.ir", true */ 'q', 'u', 'e', 'r', 'a', '.', 'i', 'r', '\0',
   /* "quickboysvrouwen2.nl", true */ 'q', 'u', 'i', 'c', 'k', 'b', 'o', 'y', 's', 'v', 'r', 'o', 'u', 'w', 'e', 'n', '2', '.', 'n', 'l', '\0',
   /* "quickpayservice.com", true */ 'q', 'u', 'i', 'c', 'k', 'p', 'a', 'y', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "quietapple.org", true */ 'q', 'u', 'i', 'e', 't', 'a', 'p', 'p', 'l', 'e', '.', 'o', 'r', 'g', '\0',
   /* "quikchange.net", true */ 'q', 'u', 'i', 'k', 'c', 'h', 'a', 'n', 'g', 'e', '.', 'n', 'e', 't', '\0',
   /* "quikpay.com.au", true */ 'q', 'u', 'i', 'k', 'p', 'a', 'y', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "quinnlabs.com", true */ 'q', 'u', 'i', 'n', 'n', 'l', 'a', 'b', 's', '.', 'c', 'o', 'm', '\0',
   /* "quintessa.org", true */ 'q', 'u', 'i', 'n', 't', 'e', 's', 's', 'a', '.', 'o', 'r', 'g', '\0',
   /* "quire.io", true */ 'q', 'u', 'i', 'r', 'e', '.', 'i', 'o', '\0',
   /* "quirino.ch", true */ 'q', 'u', 'i', 'r', 'i', 'n', 'o', '.', 'c', 'h', '\0',
   /* "quizogames.com", true */ 'q', 'u', 'i', 'z', 'o', 'g', 'a', 'm', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "qul.link", true */ 'q', 'u', 'l', '.', 'l', 'i', 'n', 'k', '\0',
   /* "quli.nl", true */ 'q', 'u', 'l', 'i', '.', 'n', 'l', '\0',
-  /* "quotehex.com", true */ 'q', 'u', 'o', 't', 'e', 'h', 'e', 'x', '.', 'c', 'o', 'm', '\0',
   /* "quotemaster.co.za", true */ 'q', 'u', 'o', 't', 'e', 'm', 'a', 's', 't', 'e', 'r', '.', 'c', 'o', '.', 'z', 'a', '\0',
   /* "quotev.com", true */ 'q', 'u', 'o', 't', 'e', 'v', '.', 'c', 'o', 'm', '\0',
   /* "quppa.net", true */ 'q', 'u', 'p', 'p', 'a', '.', 'n', 'e', 't', '\0',
   /* "quuz.org", true */ 'q', 'u', 'u', 'z', '.', 'o', 'r', 'g', '\0',
   /* "qvitoo.com", true */ 'q', 'v', 'i', 't', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "qwant.com", true */ 'q', 'w', 'a', 'n', 't', '.', 'c', 'o', 'm', '\0',
   /* "qwant.fr", true */ 'q', 'w', 'a', 'n', 't', '.', 'f', 'r', '\0',
   /* "qwikdash.com", true */ 'q', 'w', 'i', 'k', 'd', 'a', 's', 'h', '.', 'c', 'o', 'm', '\0',
@@ -10252,17 +10264,16 @@ static const char kSTSHostTable[] = {
   /* "redburn.com", true */ 'r', 'e', 'd', 'b', 'u', 'r', 'n', '.', 'c', 'o', 'm', '\0',
   /* "redd.it", true */ 'r', 'e', 'd', 'd', '.', 'i', 't', '\0',
   /* "reddingsbrigade-zwolle.nl", true */ 'r', 'e', 'd', 'd', 'i', 'n', 'g', 's', 'b', 'r', 'i', 'g', 'a', 'd', 'e', '-', 'z', 'w', 'o', 'l', 'l', 'e', '.', 'n', 'l', '\0',
   /* "reddit2kindle.com", true */ 'r', 'e', 'd', 'd', 'i', 't', '2', 'k', 'i', 'n', 'd', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "rede-reim.de", true */ 'r', 'e', 'd', 'e', '-', 'r', 'e', 'i', 'm', '.', 'd', 'e', '\0',
   /* "redigest.it", true */ 'r', 'e', 'd', 'i', 'g', 'e', 's', 't', '.', 'i', 't', '\0',
   /* "redirect.fedoraproject.org", true */ 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '.', 'f', 'e', 'd', 'o', 'r', 'a', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'o', 'r', 'g', '\0',
   /* "redirect.stg.fedoraproject.org", true */ 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '.', 's', 't', 'g', '.', 'f', 'e', 'd', 'o', 'r', 'a', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'o', 'r', 'g', '\0',
-  /* "redirectman.com", true */ 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'm', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "rediske.me", true */ 'r', 'e', 'd', 'i', 's', 'k', 'e', '.', 'm', 'e', '\0',
   /* "redit.com", true */ 'r', 'e', 'd', 'i', 't', '.', 'c', 'o', 'm', '\0',
   /* "redletter.link", true */ 'r', 'e', 'd', 'l', 'e', 't', 't', 'e', 'r', '.', 'l', 'i', 'n', 'k', '\0',
   /* "redlink.de", true */ 'r', 'e', 'd', 'l', 'i', 'n', 'k', '.', 'd', 'e', '\0',
   /* "rednsx.org", true */ 'r', 'e', 'd', 'n', 's', 'x', '.', 'o', 'r', 'g', '\0',
   /* "redports.org", false */ 'r', 'e', 'd', 'p', 'o', 'r', 't', 's', '.', 'o', 'r', 'g', '\0',
   /* "redra.ws", true */ 'r', 'e', 'd', 'r', 'a', '.', 'w', 's', '\0',
   /* "redshield.co", true */ 'r', 'e', 'd', 's', 'h', 'i', 'e', 'l', 'd', '.', 'c', 'o', '\0',
@@ -10327,17 +10338,16 @@ static const char kSTSHostTable[] = {
   /* "renderloop.com", true */ 'r', 'e', 'n', 'd', 'e', 'r', 'l', 'o', 'o', 'p', '.', 'c', 'o', 'm', '\0',
   /* "rene-schwarz.com", true */ 'r', 'e', 'n', 'e', '-', 's', 'c', 'h', 'w', 'a', 'r', 'z', '.', 'c', 'o', 'm', '\0',
   /* "rene-stolp.de", true */ 'r', 'e', 'n', 'e', '-', 's', 't', 'o', 'l', 'p', '.', 'd', 'e', '\0',
   /* "renemayrhofer.com", true */ 'r', 'e', 'n', 'e', 'm', 'a', 'y', 'r', 'h', 'o', 'f', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "renemoser.net", true */ 'r', 'e', 'n', 'e', 'm', 'o', 's', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "renewablefreedom.org", true */ 'r', 'e', 'n', 'e', 'w', 'a', 'b', 'l', 'e', 'f', 'r', 'e', 'e', 'd', 'o', 'm', '.', 'o', 'r', 'g', '\0',
   /* "renideo.fr", true */ 'r', 'e', 'n', 'i', 'd', 'e', 'o', '.', 'f', 'r', '\0',
   /* "renkenlaw.com", true */ 'r', 'e', 'n', 'k', 'e', 'n', 'l', 'a', 'w', '.', 'c', 'o', 'm', '\0',
-  /* "renkhosting.com", true */ 'r', 'e', 'n', 'k', 'h', 'o', 's', 't', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "renrenche.com", false */ 'r', 'e', 'n', 'r', 'e', 'n', 'c', 'h', 'e', '.', 'c', 'o', 'm', '\0',
   /* "rentacarcluj.xyz", true */ 'r', 'e', 'n', 't', 'a', 'c', 'a', 'r', 'c', 'l', 'u', 'j', '.', 'x', 'y', 'z', '\0',
   /* "rentasweb.gob.ar", true */ 'r', 'e', 'n', 't', 'a', 's', 'w', 'e', 'b', '.', 'g', 'o', 'b', '.', 'a', 'r', '\0',
   /* "rentbrowser.com", true */ 'r', 'e', 'n', 't', 'b', 'r', 'o', 'w', 's', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "rentbrowsertrain.me", true */ 'r', 'e', 'n', 't', 'b', 'r', 'o', 'w', 's', 'e', 'r', 't', 'r', 'a', 'i', 'n', '.', 'm', 'e', '\0',
   /* "rentinsingapore.com.sg", true */ 'r', 'e', 'n', 't', 'i', 'n', 's', 'i', 'n', 'g', 'a', 'p', 'o', 'r', 'e', '.', 'c', 'o', 'm', '.', 's', 'g', '\0',
   /* "renuo.ch", true */ 'r', 'e', 'n', 'u', 'o', '.', 'c', 'h', '\0',
   /* "reox.at", false */ 'r', 'e', 'o', 'x', '.', 'a', 't', '\0',
@@ -10475,17 +10485,16 @@ static const char kSTSHostTable[] = {
   /* "robinhoodbingo.com", true */ 'r', 'o', 'b', 'i', 'n', 'h', 'o', 'o', 'd', 'b', 'i', 'n', 'g', 'o', '.', 'c', 'o', 'm', '\0',
   /* "robinsonyu.com", true */ 'r', 'o', 'b', 'i', 'n', 's', 'o', 'n', 'y', 'u', '.', 'c', 'o', 'm', '\0',
   /* "robinwinslow.uk", true */ 'r', 'o', 'b', 'i', 'n', 'w', 'i', 'n', 's', 'l', 'o', 'w', '.', 'u', 'k', '\0',
   /* "robjager-fotografie.nl", true */ 'r', 'o', 'b', 'j', 'a', 'g', 'e', 'r', '-', 'f', 'o', 't', 'o', 'g', 'r', 'a', 'f', 'i', 'e', '.', 'n', 'l', '\0',
   /* "robodeidentidad.gov", true */ 'r', 'o', 'b', 'o', 'd', 'e', 'i', 'd', 'e', 'n', 't', 'i', 'd', 'a', 'd', '.', 'g', 'o', 'v', '\0',
   /* "robohash.org", true */ 'r', 'o', 'b', 'o', 'h', 'a', 's', 'h', '.', 'o', 'r', 'g', '\0',
   /* "robspc.repair", true */ 'r', 'o', 'b', 's', 'p', 'c', '.', 'r', 'e', 'p', 'a', 'i', 'r', '\0',
   /* "robteix.com", true */ 'r', 'o', 'b', 't', 'e', 'i', 'x', '.', 'c', 'o', 'm', '\0',
-  /* "robtex.com", true */ 'r', 'o', 'b', 't', 'e', 'x', '.', 'c', 'o', 'm', '\0',
   /* "robud.info", true */ 'r', 'o', 'b', 'u', 'd', '.', 'i', 'n', 'f', 'o', '\0',
   /* "rockcanyonbank.com", true */ 'r', 'o', 'c', 'k', 'c', 'a', 'n', 'y', 'o', 'n', 'b', 'a', 'n', 'k', '.', 'c', 'o', 'm', '\0',
   /* "rocketr.net", true */ 'r', 'o', 'c', 'k', 'e', 't', 'r', '.', 'n', 'e', 't', '\0',
   /* "rockeyscrivo.com", true */ 'r', 'o', 'c', 'k', 'e', 'y', 's', 'c', 'r', 'i', 'v', 'o', '.', 'c', 'o', 'm', '\0',
   /* "rockstarloan.com", true */ 'r', 'o', 'c', 'k', 's', 't', 'a', 'r', 'l', 'o', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "rocssti.net", true */ 'r', 'o', 'c', 's', 's', 't', 'i', '.', 'n', 'e', 't', '\0',
   /* "rodehutskors.net", true */ 'r', 'o', 'd', 'e', 'h', 'u', 't', 's', 'k', 'o', 'r', 's', '.', 'n', 'e', 't', '\0',
   /* "rodolfo.gs", true */ 'r', 'o', 'd', 'o', 'l', 'f', 'o', '.', 'g', 's', '\0',
@@ -10499,17 +10508,16 @@ static const char kSTSHostTable[] = {
   /* "rogerbastien.com", true */ 'r', 'o', 'g', 'e', 'r', 'b', 'a', 's', 't', 'i', 'e', 'n', '.', 'c', 'o', 'm', '\0',
   /* "rogue-e.xyz", true */ 'r', 'o', 'g', 'u', 'e', '-', 'e', '.', 'x', 'y', 'z', '\0',
   /* "roguelikecenter.fr", true */ 'r', 'o', 'g', 'u', 'e', 'l', 'i', 'k', 'e', 'c', 'e', 'n', 't', 'e', 'r', '.', 'f', 'r', '\0',
   /* "roguesignal.net", true */ 'r', 'o', 'g', 'u', 'e', 's', 'i', 'g', 'n', 'a', 'l', '.', 'n', 'e', 't', '\0',
   /* "roguetechhub.org", true */ 'r', 'o', 'g', 'u', 'e', 't', 'e', 'c', 'h', 'h', 'u', 'b', '.', 'o', 'r', 'g', '\0',
   /* "rohedaten.de", true */ 'r', 'o', 'h', 'e', 'd', 'a', 't', 'e', 'n', '.', 'd', 'e', '\0',
   /* "rohitagr.com", true */ 'r', 'o', 'h', 'i', 't', 'a', 'g', 'r', '.', 'c', 'o', 'm', '\0',
   /* "rohlik.cz", true */ 'r', 'o', 'h', 'l', 'i', 'k', '.', 'c', 'z', '\0',
-  /* "rointe.online", true */ 'r', 'o', 'i', 'n', 't', 'e', '.', 'o', 'n', 'l', 'i', 'n', 'e', '\0',
   /* "rokki.ch", true */ 'r', 'o', 'k', 'k', 'i', '.', 'c', 'h', '\0',
   /* "rokort.dk", true */ 'r', 'o', 'k', 'o', 'r', 't', '.', 'd', 'k', '\0',
   /* "rokudenashi.de", true */ 'r', 'o', 'k', 'u', 'd', 'e', 'n', 'a', 's', 'h', 'i', '.', 'd', 'e', '\0',
   /* "roland.io", true */ 'r', 'o', 'l', 'a', 'n', 'd', '.', 'i', 'o', '\0',
   /* "rolandreed.cn", true */ 'r', 'o', 'l', 'a', 'n', 'd', 'r', 'e', 'e', 'd', '.', 'c', 'n', '\0',
   /* "rolandszabo.com", true */ 'r', 'o', 'l', 'a', 'n', 'd', 's', 'z', 'a', 'b', 'o', '.', 'c', 'o', 'm', '\0',
   /* "rolemaster.net", true */ 'r', 'o', 'l', 'e', 'm', 'a', 's', 't', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "rolodato.com", true */ 'r', 'o', 'l', 'o', 'd', 'a', 't', 'o', '.', 'c', 'o', 'm', '\0',
@@ -10705,16 +10713,17 @@ static const char kSTSHostTable[] = {
   /* "saml-gateway.org", true */ 's', 'a', 'm', 'l', '-', 'g', 'a', 't', 'e', 'w', 'a', 'y', '.', 'o', 'r', 'g', '\0',
   /* "sampcup.com", true */ 's', 'a', 'm', 'p', 'c', 'u', 'p', '.', 'c', 'o', 'm', '\0',
   /* "samuelkeeley.com", true */ 's', 'a', 'm', 'u', 'e', 'l', 'k', 'e', 'e', 'l', 'e', 'y', '.', 'c', 'o', 'm', '\0',
   /* "samwilberforce.com", true */ 's', 'a', 'm', 'w', 'i', 'l', 'b', 'e', 'r', 'f', 'o', 'r', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "samwu.tw", false */ 's', 'a', 'm', 'w', 'u', '.', 't', 'w', '\0',
   /* "sanandreasstories.com", true */ 's', 'a', 'n', 'a', 'n', 'd', 'r', 'e', 'a', 's', 's', 't', 'o', 'r', 'i', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "sanasalud.org", true */ 's', 'a', 'n', 'a', 's', 'a', 'l', 'u', 'd', '.', 'o', 'r', 'g', '\0',
   /* "sanasport.cz", true */ 's', 'a', 'n', 'a', 's', 'p', 'o', 'r', 't', '.', 'c', 'z', '\0',
+  /* "sanatfilan.com", false */ 's', 'a', 'n', 'a', 't', 'f', 'i', 'l', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "sanchez.adv.br", true */ 's', 'a', 'n', 'c', 'h', 'e', 'z', '.', 'a', 'd', 'v', '.', 'b', 'r', '\0',
   /* "sandalj.com", true */ 's', 'a', 'n', 'd', 'a', 'l', 'j', '.', 'c', 'o', 'm', '\0',
   /* "sandbagexpress.com", true */ 's', 'a', 'n', 'd', 'b', 'a', 'g', 'e', 'x', 'p', 'r', 'e', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "sandbox.mydigipass.com", false */ 's', 'a', 'n', 'd', 'b', 'o', 'x', '.', 'm', 'y', 'd', 'i', 'g', 'i', 'p', 'a', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "sanderdorigo.nl", true */ 's', 'a', 'n', 'd', 'e', 'r', 'd', 'o', 'r', 'i', 'g', 'o', '.', 'n', 'l', '\0',
   /* "sanderknape.com", true */ 's', 'a', 'n', 'd', 'e', 'r', 'k', 'n', 'a', 'p', 'e', '.', 'c', 'o', 'm', '\0',
   /* "sandervankasteel.nl", false */ 's', 'a', 'n', 'd', 'e', 'r', 'v', 'a', 'n', 'k', 'a', 's', 't', 'e', 'e', 'l', '.', 'n', 'l', '\0',
   /* "sandobygg.se", true */ 's', 'a', 'n', 'd', 'o', 'b', 'y', 'g', 'g', '.', 's', 'e', '\0',
@@ -10767,16 +10776,17 @@ static const char kSTSHostTable[] = {
   /* "saumon.xyz", true */ 's', 'a', 'u', 'm', 'o', 'n', '.', 'x', 'y', 'z', '\0',
   /* "saunas.fr", true */ 's', 'a', 'u', 'n', 'a', 's', '.', 'f', 'r', '\0',
   /* "sauvagebridge.nl", true */ 's', 'a', 'u', 'v', 'a', 'g', 'e', 'b', 'r', 'i', 'd', 'g', 'e', '.', 'n', 'l', '\0',
   /* "savannahtasteexperience.com", true */ 's', 'a', 'v', 'a', 'n', 'n', 'a', 'h', 't', 'a', 's', 't', 'e', 'e', 'x', 'p', 'e', 'r', 'i', 'e', 'n', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "savekorea.net", true */ 's', 'a', 'v', 'e', 'k', 'o', 'r', 'e', 'a', '.', 'n', 'e', 't', '\0',
   /* "savenet.org", true */ 's', 'a', 'v', 'e', 'n', 'e', 't', '.', 'o', 'r', 'g', '\0',
   /* "savetheinternet.eu", true */ 's', 'a', 'v', 'e', 't', 'h', 'e', 'i', 'n', 't', 'e', 'r', 'n', 'e', 't', '.', 'e', 'u', '\0',
   /* "savic.com", true */ 's', 'a', 'v', 'i', 'c', '.', 'c', 'o', 'm', '\0',
+  /* "savingrecipe.com", true */ 's', 'a', 'v', 'i', 'n', 'g', 'r', 'e', 'c', 'i', 'p', 'e', '.', 'c', 'o', 'm', '\0',
   /* "savingsstoreonline.ca", true */ 's', 'a', 'v', 'i', 'n', 'g', 's', 's', 't', 'o', 'r', 'e', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'c', 'a', '\0',
   /* "savvysuit.com", true */ 's', 'a', 'v', 'v', 'y', 's', 'u', 'i', 't', '.', 'c', 'o', 'm', '\0',
   /* "savvytime.com", true */ 's', 'a', 'v', 'v', 'y', 't', 'i', 'm', 'e', '.', 'c', 'o', 'm', '\0',
   /* "say-hanabi.com", true */ 's', 'a', 'y', '-', 'h', 'a', 'n', 'a', 'b', 'i', '.', 'c', 'o', 'm', '\0',
   /* "sayprepay.com", true */ 's', 'a', 'y', 'p', 'r', 'e', 'p', 'a', 'y', '.', 'c', 'o', 'm', '\0',
   /* "sazima.ru", true */ 's', 'a', 'z', 'i', 'm', 'a', '.', 'r', 'u', '\0',
   /* "sazuz.cz", true */ 's', 'a', 'z', 'u', 'z', '.', 'c', 'z', '\0',
   /* "sb.im", true */ 's', 'b', '.', 'i', 'm', '\0',
@@ -10872,20 +10882,20 @@ static const char kSTSHostTable[] = {
   /* "scottstorey.co.uk", true */ 's', 'c', 'o', 't', 't', 's', 't', 'o', 'r', 'e', 'y', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "scourt.info", true */ 's', 'c', 'o', 'u', 'r', 't', '.', 'i', 'n', 'f', 'o', '\0',
   /* "scourt.org.ua", true */ 's', 'c', 'o', 'u', 'r', 't', '.', 'o', 'r', 'g', '.', 'u', 'a', '\0',
   /* "scoutdb.ch", true */ 's', 'c', 'o', 'u', 't', 'd', 'b', '.', 'c', 'h', '\0',
   /* "scp-trens.notaires.fr", true */ 's', 'c', 'p', '-', 't', 'r', 'e', 'n', 's', '.', 'n', 'o', 't', 'a', 'i', 'r', 'e', 's', '.', 'f', 'r', '\0',
   /* "scramble.io", true */ 's', 'c', 'r', 'a', 'm', 'b', 'l', 'e', '.', 'i', 'o', '\0',
   /* "scrap.tf", true */ 's', 'c', 'r', 'a', 'p', '.', 't', 'f', '\0',
   /* "scrayos.net", true */ 's', 'c', 'r', 'a', 'y', 'o', 's', '.', 'n', 'e', 't', '\0',
-  /* "screenlight.tv", true */ 's', 'c', 'r', 'e', 'e', 'n', 'l', 'i', 'g', 'h', 't', '.', 't', 'v', '\0',
   /* "screensaversplanet.com", true */ 's', 'c', 'r', 'e', 'e', 'n', 's', 'a', 'v', 'e', 'r', 's', 'p', 'l', 'a', 'n', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "scrion.com", true */ 's', 'c', 'r', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "script.google.com", true */ 's', 'c', 'r', 'i', 'p', 't', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
+  /* "scriptjunkie.us", true */ 's', 'c', 'r', 'i', 'p', 't', 'j', 'u', 'n', 'k', 'i', 'e', '.', 'u', 's', '\0',
   /* "scrollstory.com", true */ 's', 'c', 'r', 'o', 'l', 'l', 's', 't', 'o', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "scrumstack.co.uk", true */ 's', 'c', 'r', 'u', 'm', 's', 't', 'a', 'c', 'k', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "scs-simulatoren.de", true */ 's', 'c', 's', '-', 's', 'i', 'm', 'u', 'l', 'a', 't', 'o', 'r', 'e', 'n', '.', 'd', 'e', '\0',
   /* "sculpture.support", true */ 's', 'c', 'u', 'l', 'p', 't', 'u', 'r', 'e', '.', 's', 'u', 'p', 'p', 'o', 'r', 't', '\0',
   /* "sd.af", true */ 's', 'd', '.', 'a', 'f', '\0',
   /* "sdcardrecovery.de", true */ 's', 'd', 'c', 'a', 'r', 'd', 'r', 'e', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'd', 'e', '\0',
   /* "se.search.yahoo.com", false */ 's', 'e', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "sea-godzilla.com", true */ 's', 'e', 'a', '-', 'g', 'o', 'd', 'z', 'i', 'l', 'l', 'a', '.', 'c', 'o', 'm', '\0',
@@ -11059,16 +11069,17 @@ static const char kSTSHostTable[] = {
   /* "sexy-store.nl", true */ 's', 'e', 'x', 'y', '-', 's', 't', 'o', 'r', 'e', '.', 'n', 'l', '\0',
   /* "seyfarth.de", true */ 's', 'e', 'y', 'f', 'a', 'r', 't', 'h', '.', 'd', 'e', '\0',
   /* "seyr.it", true */ 's', 'e', 'y', 'r', '.', 'i', 't', '\0',
   /* "seyr.me", true */ 's', 'e', 'y', 'r', '.', 'm', 'e', '\0',
   /* "sfsltd.com", true */ 's', 'f', 's', 'l', 't', 'd', '.', 'c', 'o', 'm', '\0',
   /* "sftool.gov", true */ 's', 'f', 't', 'o', 'o', 'l', '.', 'g', 'o', 'v', '\0',
   /* "sg.search.yahoo.com", false */ 's', 'g', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "sgcaccounts.co.uk", true */ 's', 'g', 'c', 'a', 'c', 'c', 'o', 'u', 'n', 't', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
+  /* "sgtcodfish.com", true */ 's', 'g', 't', 'c', 'o', 'd', 'f', 'i', 's', 'h', '.', 'c', 'o', 'm', '\0',
   /* "sh-network.de", false */ 's', 'h', '-', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'd', 'e', '\0',
   /* "shaaaaaaaaaaaaa.com", true */ 's', 'h', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', '.', 'c', 'o', 'm', '\0',
   /* "shadex.net", true */ 's', 'h', 'a', 'd', 'e', 'x', '.', 'n', 'e', 't', '\0',
   /* "shadowguardian507-irl.tk", true */ 's', 'h', 'a', 'd', 'o', 'w', 'g', 'u', 'a', 'r', 'd', 'i', 'a', 'n', '5', '0', '7', '-', 'i', 'r', 'l', '.', 't', 'k', '\0',
   /* "shadowkitsune.net", true */ 's', 'h', 'a', 'd', 'o', 'w', 'k', 'i', 't', 's', 'u', 'n', 'e', '.', 'n', 'e', 't', '\0',
   /* "shadowplus.net", true */ 's', 'h', 'a', 'd', 'o', 'w', 'p', 'l', 'u', 's', '.', 'n', 'e', 't', '\0',
   /* "shadowrocket.net", true */ 's', 'h', 'a', 'd', 'o', 'w', 'r', 'o', 'c', 'k', 'e', 't', '.', 'n', 'e', 't', '\0',
   /* "shadowsocks.com", true */ 's', 'h', 'a', 'd', 'o', 'w', 's', 'o', 'c', 'k', 's', '.', 'c', 'o', 'm', '\0',
@@ -11097,16 +11108,17 @@ static const char kSTSHostTable[] = {
   /* "shasso.com", true */ 's', 'h', 'a', 's', 's', 'o', '.', 'c', 'o', 'm', '\0',
   /* "shatorin.com", true */ 's', 'h', 'a', 't', 'o', 'r', 'i', 'n', '.', 'c', 'o', 'm', '\0',
   /* "shaundanielz.com", true */ 's', 'h', 'a', 'u', 'n', 'd', 'a', 'n', 'i', 'e', 'l', 'z', '.', 'c', 'o', 'm', '\0',
   /* "shav.it", true */ 's', 'h', 'a', 'v', '.', 'i', 't', '\0',
   /* "shawcentral.ca", true */ 's', 'h', 'a', 'w', 'c', 'e', 'n', 't', 'r', 'a', 'l', '.', 'c', 'a', '\0',
   /* "shazbots.org", true */ 's', 'h', 'a', 'z', 'b', 'o', 't', 's', '.', 'o', 'r', 'g', '\0',
   /* "shazzlemd.com", true */ 's', 'h', 'a', 'z', 'z', 'l', 'e', 'm', 'd', '.', 'c', 'o', 'm', '\0',
   /* "shazzlepro.com", true */ 's', 'h', 'a', 'z', 'z', 'l', 'e', 'p', 'r', 'o', '.', 'c', 'o', 'm', '\0',
+  /* "sheilasdrivingschool.com", true */ 's', 'h', 'e', 'i', 'l', 'a', 's', 'd', 'r', 'i', 'v', 'i', 'n', 'g', 's', 'c', 'h', 'o', 'o', 'l', '.', 'c', 'o', 'm', '\0',
   /* "shelfordsandstaplefordscouts.org.uk", true */ 's', 'h', 'e', 'l', 'f', 'o', 'r', 'd', 's', 'a', 'n', 'd', 's', 't', 'a', 'p', 'l', 'e', 'f', 'o', 'r', 'd', 's', 'c', 'o', 'u', 't', 's', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "shellfire.de", true */ 's', 'h', 'e', 'l', 'l', 'f', 'i', 'r', 'e', '.', 'd', 'e', '\0',
   /* "shellj.me", true */ 's', 'h', 'e', 'l', 'l', 'j', '.', 'm', 'e', '\0',
   /* "shellvatore.us", true */ 's', 'h', 'e', 'l', 'l', 'v', 'a', 't', 'o', 'r', 'e', '.', 'u', 's', '\0',
   /* "shemissed.me", true */ 's', 'h', 'e', 'm', 'i', 's', 's', 'e', 'd', '.', 'm', 'e', '\0',
   /* "shenghaiautoparts.com", true */ 's', 'h', 'e', 'n', 'g', 'h', 'a', 'i', 'a', 'u', 't', 'o', 'p', 'a', 'r', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "shentengtu.idv.tw", true */ 's', 'h', 'e', 'n', 't', 'e', 'n', 'g', 't', 'u', '.', 'i', 'd', 'v', '.', 't', 'w', '\0',
   /* "shenyuqi.com", true */ 's', 'h', 'e', 'n', 'y', 'u', 'q', 'i', '.', 'c', 'o', 'm', '\0',
@@ -11137,17 +11149,16 @@ static const char kSTSHostTable[] = {
   /* "shorebreaksecurity.com", true */ 's', 'h', 'o', 'r', 'e', 'b', 'r', 'e', 'a', 'k', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "shortdiary.me", true */ 's', 'h', 'o', 'r', 't', 'd', 'i', 'a', 'r', 'y', '.', 'm', 'e', '\0',
   /* "shortpath.com", true */ 's', 'h', 'o', 'r', 't', 'p', 'a', 't', 'h', '.', 'c', 'o', 'm', '\0',
   /* "shotbow.net", true */ 's', 'h', 'o', 't', 'b', 'o', 'w', '.', 'n', 'e', 't', '\0',
   /* "showsonar.com", true */ 's', 'h', 'o', 'w', 's', 'o', 'n', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "shrike.me", false */ 's', 'h', 'r', 'i', 'k', 'e', '.', 'm', 'e', '\0',
   /* "shrinkhub.com", true */ 's', 'h', 'r', 'i', 'n', 'k', 'h', 'u', 'b', '.', 'c', 'o', 'm', '\0',
   /* "shrub.ca", true */ 's', 'h', 'r', 'u', 'b', '.', 'c', 'a', '\0',
-  /* "shtorku.com", true */ 's', 'h', 't', 'o', 'r', 'k', 'u', '.', 'c', 'o', 'm', '\0',
   /* "shu-kin.net", true */ 's', 'h', 'u', '-', 'k', 'i', 'n', '.', 'n', 'e', 't', '\0',
   /* "shulan.moe", true */ 's', 'h', 'u', 'l', 'a', 'n', '.', 'm', 'o', 'e', '\0',
   /* "shuro.de", true */ 's', 'h', 'u', 'r', 'o', '.', 'd', 'e', '\0',
   /* "shux.pro", true */ 's', 'h', 'u', 'x', '.', 'p', 'r', 'o', '\0',
   /* "shyrydan.es", true */ 's', 'h', 'y', 'r', 'y', 'd', 'a', 'n', '.', 'e', 's', '\0',
   /* "si-benelux.nl", true */ 's', 'i', '-', 'b', 'e', 'n', 'e', 'l', 'u', 'x', '.', 'n', 'l', '\0',
   /* "si.to", true */ 's', 'i', '.', 't', 'o', '\0',
   /* "siamojo.com", true */ 's', 'i', 'a', 'm', 'o', 'j', 'o', '.', 'c', 'o', 'm', '\0',
@@ -11157,16 +11168,17 @@ static const char kSTSHostTable[] = {
   /* "sicken.eu", true */ 's', 'i', 'c', 'k', 'e', 'n', '.', 'e', 'u', '\0',
   /* "sickfile.com", true */ 's', 'i', 'c', 'k', 'f', 'i', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "siconnect.us", true */ 's', 'i', 'c', 'o', 'n', 'n', 'e', 'c', 't', '.', 'u', 's', '\0',
   /* "sidepodcast.com", true */ 's', 'i', 'd', 'e', 'p', 'o', 'd', 'c', 'a', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "sidepodcastdaily.com", true */ 's', 'i', 'd', 'e', 'p', 'o', 'd', 'c', 'a', 's', 't', 'd', 'a', 'i', 'l', 'y', '.', 'c', 'o', 'm', '\0',
   /* "sideshowbarker.net", true */ 's', 'i', 'd', 'e', 's', 'h', 'o', 'w', 'b', 'a', 'r', 'k', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "sidium.de", true */ 's', 'i', 'd', 'i', 'u', 'm', '.', 'd', 'e', '\0',
   /* "sidnicio.us", true */ 's', 'i', 'd', 'n', 'i', 'c', 'i', 'o', '.', 'u', 's', '\0',
+  /* "siebens.net", true */ 's', 'i', 'e', 'b', 'e', 'n', 's', '.', 'n', 'e', 't', '\0',
   /* "siebeve.be", true */ 's', 'i', 'e', 'b', 'e', 'v', 'e', '.', 'b', 'e', '\0',
   /* "sieh.es", false */ 's', 'i', 'e', 'h', '.', 'e', 's', '\0',
   /* "siewert-kau.de", true */ 's', 'i', 'e', 'w', 'e', 'r', 't', '-', 'k', 'a', 'u', '.', 'd', 'e', '\0',
   /* "sift-tool.org", true */ 's', 'i', 'f', 't', '-', 't', 'o', 'o', 'l', '.', 'o', 'r', 'g', '\0',
   /* "sig6.org", true */ 's', 'i', 'g', '6', '.', 'o', 'r', 'g', '\0',
   /* "sigabrt.org", true */ 's', 'i', 'g', 'a', 'b', 'r', 't', '.', 'o', 'r', 'g', '\0',
   /* "sightcure.jp", true */ 's', 'i', 'g', 'h', 't', 'c', 'u', 'r', 'e', '.', 'j', 'p', '\0',
   /* "sighup.nz", true */ 's', 'i', 'g', 'h', 'u', 'p', '.', 'n', 'z', '\0',
@@ -11314,17 +11326,16 @@ static const char kSTSHostTable[] = {
   /* "skyline.tw", true */ 's', 'k', 'y', 'l', 'i', 'n', 'e', '.', 't', 'w', '\0',
   /* "skyminds.net", true */ 's', 'k', 'y', 'm', 'i', 'n', 'd', 's', '.', 'n', 'e', 't', '\0',
   /* "skyveo.ml", true */ 's', 'k', 'y', 'v', 'e', 'o', '.', 'm', 'l', '\0',
   /* "skyway.capital", true */ 's', 'k', 'y', 'w', 'a', 'y', '.', 'c', 'a', 'p', 'i', 't', 'a', 'l', '\0',
   /* "sl1pkn07.wtf", true */ 's', 'l', '1', 'p', 'k', 'n', '0', '7', '.', 'w', 't', 'f', '\0',
   /* "slack-files.com", true */ 's', 'l', 'a', 'c', 'k', '-', 'f', 'i', 'l', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "slack.com", true */ 's', 'l', 'a', 'c', 'k', '.', 'c', 'o', 'm', '\0',
   /* "sladic.si", false */ 's', 'l', 'a', 'd', 'i', 'c', '.', 's', 'i', '\0',
-  /* "slainvet.net", true */ 's', 'l', 'a', 'i', 'n', 'v', 'e', 't', '.', 'n', 'e', 't', '\0',
   /* "slamdjapan.com", true */ 's', 'l', 'a', 'm', 'd', 'j', 'a', 'p', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "slamix.nl", true */ 's', 'l', 'a', 'm', 'i', 'x', '.', 'n', 'l', '\0',
   /* "slangbellor.com", true */ 's', 'l', 'a', 'n', 'g', 'b', 'e', 'l', 'l', 'o', 'r', '.', 'c', 'o', 'm', '\0',
   /* "slapen17.nl", true */ 's', 'l', 'a', 'p', 'e', 'n', '1', '7', '.', 'n', 'l', '\0',
   /* "slaps.be", true */ 's', 'l', 'a', 'p', 's', '.', 'b', 'e', '\0',
   /* "slashdesign.it", true */ 's', 'l', 'a', 's', 'h', 'd', 'e', 's', 'i', 'g', 'n', '.', 'i', 't', '\0',
   /* "slauber.de", true */ 's', 'l', 'a', 'u', 'b', 'e', 'r', '.', 'd', 'e', '\0',
   /* "slaughterhouse.fr", true */ 's', 'l', 'a', 'u', 'g', 'h', 't', 'e', 'r', 'h', 'o', 'u', 's', 'e', '.', 'f', 'r', '\0',
@@ -11507,17 +11518,16 @@ static const char kSTSHostTable[] = {
   /* "sona-gaming.com", true */ 's', 'o', 'n', 'a', '-', 'g', 'a', 'm', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "sonafe.info", true */ 's', 'o', 'n', 'a', 'f', 'e', '.', 'i', 'n', 'f', 'o', '\0',
   /* "sonarqube.com", true */ 's', 'o', 'n', 'a', 'r', 'q', 'u', 'b', 'e', '.', 'c', 'o', 'm', '\0',
   /* "sondergaard.de", true */ 's', 'o', 'n', 'd', 'e', 'r', 'g', 'a', 'a', 'r', 'd', '.', 'd', 'e', '\0',
   /* "sonerezh.bzh", true */ 's', 'o', 'n', 'e', 'r', 'e', 'z', 'h', '.', 'b', 'z', 'h', '\0',
   /* "sonja-daniels.com", true */ 's', 'o', 'n', 'j', 'a', '-', 'd', 'a', 'n', 'i', 'e', 'l', 's', '.', 'c', 'o', 'm', '\0',
   /* "sonyunlock.nu", true */ 's', 'o', 'n', 'y', 'u', 'n', 'l', 'o', 'c', 'k', '.', 'n', 'u', '\0',
   /* "soobi.org", true */ 's', 'o', 'o', 'b', 'i', '.', 'o', 'r', 'g', '\0',
-  /* "soondy.com", false */ 's', 'o', 'o', 'n', 'd', 'y', '.', 'c', 'o', 'm', '\0',
   /* "soph.us", true */ 's', 'o', 'p', 'h', '.', 'u', 's', '\0',
   /* "sopheos.com", false */ 's', 'o', 'p', 'h', 'e', 'o', 's', '.', 'c', 'o', 'm', '\0',
   /* "sophiakligys.com", true */ 's', 'o', 'p', 'h', 'i', 'a', 'k', 'l', 'i', 'g', 'y', 's', '.', 'c', 'o', 'm', '\0',
   /* "soply.com", true */ 's', 'o', 'p', 'l', 'y', '.', 'c', 'o', 'm', '\0',
   /* "soporte.cc", true */ 's', 'o', 'p', 'o', 'r', 't', 'e', '.', 'c', 'c', '\0',
   /* "sor.so", true */ 's', 'o', 'r', '.', 's', 'o', '\0',
   /* "sorcix.com", true */ 's', 'o', 'r', 'c', 'i', 'x', '.', 'c', 'o', 'm', '\0',
   /* "sorenstudios.com", true */ 's', 'o', 'r', 'e', 'n', 's', 't', 'u', 'd', 'i', 'o', 's', '.', 'c', 'o', 'm', '\0',
@@ -11561,28 +11571,26 @@ static const char kSTSHostTable[] = {
   /* "spacecafe.org", true */ 's', 'p', 'a', 'c', 'e', 'c', 'a', 'f', 'e', '.', 'o', 'r', 'g', '\0',
   /* "spacedust.xyz", true */ 's', 'p', 'a', 'c', 'e', 'd', 'u', 's', 't', '.', 'x', 'y', 'z', '\0',
   /* "spacefish.biz", true */ 's', 'p', 'a', 'c', 'e', 'f', 'i', 's', 'h', '.', 'b', 'i', 'z', '\0',
   /* "spacehost.de", false */ 's', 'p', 'a', 'c', 'e', 'h', 'o', 's', 't', '.', 'd', 'e', '\0',
   /* "spacelabs.io", true */ 's', 'p', 'a', 'c', 'e', 'l', 'a', 'b', 's', '.', 'i', 'o', '\0',
   /* "spaggel.nl", true */ 's', 'p', 'a', 'g', 'g', 'e', 'l', '.', 'n', 'l', '\0',
   /* "spamloco.net", true */ 's', 'p', 'a', 'm', 'l', 'o', 'c', 'o', '.', 'n', 'e', 't', '\0',
   /* "spamwc.de", true */ 's', 'p', 'a', 'm', 'w', 'c', '.', 'd', 'e', '\0',
-  /* "sparelib.com", true */ 's', 'p', 'a', 'r', 'e', 'l', 'i', 'b', '.', 'c', 'o', 'm', '\0',
   /* "sparkbase.cn", true */ 's', 'p', 'a', 'r', 'k', 'b', 'a', 's', 'e', '.', 'c', 'n', '\0',
   /* "sparkforautism.org", true */ 's', 'p', 'a', 'r', 'k', 'f', 'o', 'r', 'a', 'u', 't', 'i', 's', 'm', '.', 'o', 'r', 'g', '\0',
   /* "sparklebastard.com", true */ 's', 'p', 'a', 'r', 'k', 'l', 'e', 'b', 'a', 's', 't', 'a', 'r', 'd', '.', 'c', 'o', 'm', '\0',
   /* "spartaconsulting.fi", true */ 's', 'p', 'a', 'r', 't', 'a', 'c', 'o', 'n', 's', 'u', 'l', 't', 'i', 'n', 'g', '.', 'f', 'i', '\0',
   /* "spawn.cz", true */ 's', 'p', 'a', 'w', 'n', '.', 'c', 'z', '\0',
   /* "spaysy.com", true */ 's', 'p', 'a', 'y', 's', 'y', '.', 'c', 'o', 'm', '\0',
   /* "spdf.net", true */ 's', 'p', 'd', 'f', '.', 'n', 'e', 't', '\0',
   /* "spectrosoftware.de", true */ 's', 'p', 'e', 'c', 't', 'r', 'o', 's', 'o', 'f', 't', 'w', 'a', 'r', 'e', '.', 'd', 'e', '\0',
   /* "spedplus.com.br", false */ 's', 'p', 'e', 'd', 'p', 'l', 'u', 's', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "speeddate.it", false */ 's', 'p', 'e', 'e', 'd', 'd', 'a', 't', 'e', '.', 'i', 't', '\0',
-  /* "speeds.vip", true */ 's', 'p', 'e', 'e', 'd', 's', '.', 'v', 'i', 'p', '\0',
   /* "speedy.lt", true */ 's', 'p', 'e', 'e', 'd', 'y', '.', 'l', 't', '\0',
   /* "speedyprep.com", true */ 's', 'p', 'e', 'e', 'd', 'y', 'p', 'r', 'e', 'p', '.', 'c', 'o', 'm', '\0',
   /* "speich.net", true */ 's', 'p', 'e', 'i', 'c', 'h', '.', 'n', 'e', 't', '\0',
   /* "spenglerei-shop.de", true */ 's', 'p', 'e', 'n', 'g', 'l', 'e', 'r', 'e', 'i', '-', 's', 'h', 'o', 'p', '.', 'd', 'e', '\0',
   /* "sperohub.com", true */ 's', 'p', 'e', 'r', 'o', 'h', 'u', 'b', '.', 'c', 'o', 'm', '\0',
   /* "sperohub.lt", true */ 's', 'p', 'e', 'r', 'o', 'h', 'u', 'b', '.', 'l', 't', '\0',
   /* "sperrstun.de", true */ 's', 'p', 'e', 'r', 'r', 's', 't', 'u', 'n', '.', 'd', 'e', '\0',
   /* "sphereblur.com", true */ 's', 'p', 'h', 'e', 'r', 'e', 'b', 'l', 'u', 'r', '.', 'c', 'o', 'm', '\0',
@@ -11594,16 +11602,17 @@ static const char kSTSHostTable[] = {
   /* "spielcasinos.com", true */ 's', 'p', 'i', 'e', 'l', 'c', 'a', 's', 'i', 'n', 'o', 's', '.', 'c', 'o', 'm', '\0',
   /* "spiet.nl", true */ 's', 'p', 'i', 'e', 't', '.', 'n', 'l', '\0',
   /* "spillmaker.no", true */ 's', 'p', 'i', 'l', 'l', 'm', 'a', 'k', 'e', 'r', '.', 'n', 'o', '\0',
   /* "spinalien.net", true */ 's', 'p', 'i', 'n', 'a', 'l', 'i', 'e', 'n', '.', 'n', 'e', 't', '\0',
   /* "spins.fedoraproject.org", true */ 's', 'p', 'i', 'n', 's', '.', 'f', 'e', 'd', 'o', 'r', 'a', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'o', 'r', 'g', '\0',
   /* "spirit-dev.net", true */ 's', 'p', 'i', 'r', 'i', 't', '-', 'd', 'e', 'v', '.', 'n', 'e', 't', '\0',
   /* "spiritbionic.ro", true */ 's', 'p', 'i', 'r', 'i', 't', 'b', 'i', 'o', 'n', 'i', 'c', '.', 'r', 'o', '\0',
   /* "spisbilligt.dk", true */ 's', 'p', 'i', 's', 'b', 'i', 'l', 'l', 'i', 'g', 't', '.', 'd', 'k', '\0',
+  /* "spitefultowel.com", true */ 's', 'p', 'i', 't', 'e', 'f', 'u', 'l', 't', 'o', 'w', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "spititout.it", true */ 's', 'p', 'i', 't', 'i', 't', 'o', 'u', 't', '.', 'i', 't', '\0',
   /* "spittersberger.recipes", true */ 's', 'p', 'i', 't', 't', 'e', 'r', 's', 'b', 'e', 'r', 'g', 'e', 'r', '.', 'r', 'e', 'c', 'i', 'p', 'e', 's', '\0',
   /* "splikity.com", true */ 's', 'p', 'l', 'i', 'k', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "split.is", true */ 's', 'p', 'l', 'i', 't', '.', 'i', 's', '\0',
   /* "splitdna.com", true */ 's', 'p', 'l', 'i', 't', 'd', 'n', 'a', '.', 'c', 'o', 'm', '\0',
   /* "splitreflection.com", true */ 's', 'p', 'l', 'i', 't', 'r', 'e', 'f', 'l', 'e', 'c', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "splunk.net", true */ 's', 'p', 'l', 'u', 'n', 'k', '.', 'n', 'e', 't', '\0',
   /* "spodelime.com", true */ 's', 'p', 'o', 'd', 'e', 'l', 'i', 'm', 'e', '.', 'c', 'o', 'm', '\0',
@@ -11614,17 +11623,17 @@ static const char kSTSHostTable[] = {
   /* "spookbook.net", true */ 's', 'p', 'o', 'o', 'k', 'b', 'o', 'o', 'k', '.', 'n', 'e', 't', '\0',
   /* "sport-potreby.cz", true */ 's', 'p', 'o', 'r', 't', '-', 'p', 'o', 't', 'r', 'e', 'b', 'y', '.', 'c', 'z', '\0',
   /* "sport-potreby.sk", true */ 's', 'p', 'o', 'r', 't', '-', 'p', 'o', 't', 'r', 'e', 'b', 'y', '.', 's', 'k', '\0',
   /* "sportflash.info", true */ 's', 'p', 'o', 'r', 't', 'f', 'l', 'a', 's', 'h', '.', 'i', 'n', 'f', 'o', '\0',
   /* "sporthit.ru", true */ 's', 'p', 'o', 'r', 't', 'h', 'i', 't', '.', 'r', 'u', '\0',
   /* "sportifik.com", true */ 's', 'p', 'o', 'r', 't', 'i', 'f', 'i', 'k', '.', 'c', 'o', 'm', '\0',
   /* "sportsmanadvisor.com", true */ 's', 'p', 'o', 'r', 't', 's', 'm', 'a', 'n', 'a', 'd', 'v', 'i', 's', 'o', 'r', '.', 'c', 'o', 'm', '\0',
   /* "sportstraineradvisor.com", true */ 's', 'p', 'o', 'r', 't', 's', 't', 'r', 'a', 'i', 'n', 'e', 'r', 'a', 'd', 'v', 'i', 's', 'o', 'r', '.', 'c', 'o', 'm', '\0',
-  /* "sporttrampen.de", true */ 's', 'p', 'o', 'r', 't', 't', 'r', 'a', 'm', 'p', 'e', 'n', '.', 'd', 'e', '\0',
+  /* "sporttrampen.de", false */ 's', 'p', 'o', 'r', 't', 't', 'r', 'a', 'm', 'p', 'e', 'n', '.', 'd', 'e', '\0',
   /* "spotifyripper.tk", true */ 's', 'p', 'o', 't', 'i', 'f', 'y', 'r', 'i', 'p', 'p', 'e', 'r', '.', 't', 'k', '\0',
   /* "spotlightsrule.com", true */ 's', 'p', 'o', 't', 'l', 'i', 'g', 'h', 't', 's', 'r', 'u', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "spotupload.com", true */ 's', 'p', 'o', 't', 'u', 'p', 'l', 'o', 'a', 'd', '.', 'c', 'o', 'm', '\0',
   /* "spr.id.au", true */ 's', 'p', 'r', '.', 'i', 'd', '.', 'a', 'u', '\0',
   /* "spreadsheets.google.com", true */ 's', 'p', 'r', 'e', 'a', 'd', 's', 'h', 'e', 'e', 't', 's', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "spree.co.za", true */ 's', 'p', 'r', 'e', 'e', '.', 'c', 'o', '.', 'z', 'a', '\0',
   /* "spricknet.de", true */ 's', 'p', 'r', 'i', 'c', 'k', 'n', 'e', 't', '.', 'd', 'e', '\0',
   /* "sprigings.com", true */ 's', 'p', 'r', 'i', 'g', 'i', 'n', 'g', 's', '.', 'c', 'o', 'm', '\0',
@@ -11722,20 +11731,22 @@ static const char kSTSHostTable[] = {
   /* "stargazer.de", true */ 's', 't', 'a', 'r', 'g', 'a', 'z', 'e', 'r', '.', 'd', 'e', '\0',
   /* "stari.co", true */ 's', 't', 'a', 'r', 'i', '.', 'c', 'o', '\0',
   /* "starina.ru", true */ 's', 't', 'a', 'r', 'i', 'n', 'a', '.', 'r', 'u', '\0',
   /* "starkbim.com", true */ 's', 't', 'a', 'r', 'k', 'b', 'i', 'm', '.', 'c', 'o', 'm', '\0',
   /* "starmusic.ga", false */ 's', 't', 'a', 'r', 'm', 'u', 's', 'i', 'c', '.', 'g', 'a', '\0',
   /* "starpeak.org", true */ 's', 't', 'a', 'r', 'p', 'e', 'a', 'k', '.', 'o', 'r', 'g', '\0',
   /* "starplatinum.jp", true */ 's', 't', 'a', 'r', 'p', 'l', 'a', 't', 'i', 'n', 'u', 'm', '.', 'j', 'p', '\0',
   /* "starquake.nl", true */ 's', 't', 'a', 'r', 'q', 'u', 'a', 'k', 'e', '.', 'n', 'l', '\0',
+  /* "starsam80.net", true */ 's', 't', 'a', 'r', 's', 'a', 'm', '8', '0', '.', 'n', 'e', 't', '\0',
   /* "starstreak.net", false */ 's', 't', 'a', 'r', 's', 't', 'r', 'e', 'a', 'k', '.', 'n', 'e', 't', '\0',
   /* "startpage.com", true */ 's', 't', 'a', 'r', 't', 'p', 'a', 'g', 'e', '.', 'c', 'o', 'm', '\0',
   /* "startpage.info", true */ 's', 't', 'a', 'r', 't', 'p', 'a', 'g', 'e', '.', 'i', 'n', 'f', 'o', '\0',
   /* "startrek.in", true */ 's', 't', 'a', 'r', 't', 'r', 'e', 'k', '.', 'i', 'n', '\0',
+  /* "starttraffic.com", true */ 's', 't', 'a', 'r', 't', 't', 'r', 'a', 'f', 'f', 'i', 'c', '.', 'c', 'o', 'm', '\0',
   /* "starttraffic.uk", true */ 's', 't', 'a', 'r', 't', 't', 'r', 'a', 'f', 'f', 'i', 'c', '.', 'u', 'k', '\0',
   /* "startuponcloud.com", true */ 's', 't', 'a', 'r', 't', 'u', 'p', 'o', 'n', 'c', 'l', 'o', 'u', 'd', '.', 'c', 'o', 'm', '\0',
   /* "startupsort.com", true */ 's', 't', 'a', 'r', 't', 'u', 'p', 's', 'o', 'r', 't', '.', 'c', 'o', 'm', '\0',
   /* "startupum.ru", true */ 's', 't', 'a', 'r', 't', 'u', 'p', 'u', 'm', '.', 'r', 'u', '\0',
   /* "starwatches.eu", true */ 's', 't', 'a', 'r', 'w', 'a', 't', 'c', 'h', 'e', 's', '.', 'e', 'u', '\0',
   /* "stash.ai", true */ 's', 't', 'a', 's', 'h', '.', 'a', 'i', '\0',
   /* "stassi.ch", true */ 's', 't', 'a', 's', 's', 'i', '.', 'c', 'h', '\0',
   /* "stat.ink", true */ 's', 't', 'a', 't', '.', 'i', 'n', 'k', '\0',
@@ -11900,16 +11911,17 @@ static const char kSTSHostTable[] = {
   /* "sufix.cz", true */ 's', 'u', 'f', 'i', 'x', '.', 'c', 'z', '\0',
   /* "suitocracy.com", true */ 's', 'u', 'i', 't', 'o', 'c', 'r', 'a', 'c', 'y', '.', 'c', 'o', 'm', '\0',
   /* "suki.moe", true */ 's', 'u', 'k', 'i', '.', 'm', 'o', 'e', '\0',
   /* "sulek.eu", true */ 's', 'u', 'l', 'e', 'k', '.', 'e', 'u', '\0',
   /* "summitbankofkc.com", true */ 's', 'u', 'm', 'm', 'i', 't', 'b', 'a', 'n', 'k', 'o', 'f', 'k', 'c', '.', 'c', 'o', 'm', '\0',
   /* "sunbritetv.com", true */ 's', 'u', 'n', 'b', 'r', 'i', 't', 'e', 't', 'v', '.', 'c', 'o', 'm', '\0',
   /* "sundayfundayjapan.com", true */ 's', 'u', 'n', 'd', 'a', 'y', 'f', 'u', 'n', 'd', 'a', 'y', 'j', 'a', 'p', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "suneilpatel.com", true */ 's', 'u', 'n', 'e', 'i', 'l', 'p', 'a', 't', 'e', 'l', '.', 'c', 'o', 'm', '\0',
+  /* "sunflyer.cn", false */ 's', 'u', 'n', 'f', 'l', 'y', 'e', 'r', '.', 'c', 'n', '\0',
   /* "sunjaydhama.com", true */ 's', 'u', 'n', 'j', 'a', 'y', 'd', 'h', 'a', 'm', 'a', '.', 'c', 'o', 'm', '\0',
   /* "sunsetwx.com", true */ 's', 'u', 'n', 's', 'e', 't', 'w', 'x', '.', 'c', 'o', 'm', '\0',
   /* "sunstar.bg", true */ 's', 'u', 'n', 's', 't', 'a', 'r', '.', 'b', 'g', '\0',
   /* "sunyanzi.tk", true */ 's', 'u', 'n', 'y', 'a', 'n', 'z', 'i', '.', 't', 'k', '\0',
   /* "suos.io", true */ 's', 'u', 'o', 's', '.', 'i', 'o', '\0',
   /* "supastuds.com", true */ 's', 'u', 'p', 'a', 's', 't', 'u', 'd', 's', '.', 'c', 'o', 'm', '\0',
   /* "supcro.com", true */ 's', 'u', 'p', 'c', 'r', 'o', '.', 'c', 'o', 'm', '\0',
   /* "super-o-blog.com", true */ 's', 'u', 'p', 'e', 'r', '-', 'o', '-', 'b', 'l', 'o', 'g', '.', 'c', 'o', 'm', '\0',
@@ -12033,17 +12045,16 @@ static const char kSTSHostTable[] = {
   /* "t0ne.net", true */ 't', '0', 'n', 'e', '.', 'n', 'e', 't', '\0',
   /* "t23m-navi.jp", false */ 't', '2', '3', 'm', '-', 'n', 'a', 'v', 'i', '.', 'j', 'p', '\0',
   /* "t3rror.net", true */ 't', '3', 'r', 'r', 'o', 'r', '.', 'n', 'e', 't', '\0',
   /* "t7e.de", true */ 't', '7', 'e', '.', 'd', 'e', '\0',
   /* "ta-sports.net", true */ 't', 'a', '-', 's', 'p', 'o', 'r', 't', 's', '.', 'n', 'e', 't', '\0',
   /* "tabelfirme.ro", true */ 't', 'a', 'b', 'e', 'l', 'f', 'i', 'r', 'm', 'e', '.', 'r', 'o', '\0',
   /* "tabla-periodica.com", true */ 't', 'a', 'b', 'l', 'a', '-', 'p', 'e', 'r', 'i', 'o', 'd', 'i', 'c', 'a', '.', 'c', 'o', 'm', '\0',
   /* "tablotv.com", false */ 't', 'a', 'b', 'l', 'o', 't', 'v', '.', 'c', 'o', 'm', '\0',
-  /* "taboragroup.com", true */ 't', 'a', 'b', 'o', 'r', 'a', 'g', 'r', 'o', 'u', 'p', '.', 'c', 'o', 'm', '\0',
   /* "taborsky.cz", true */ 't', 'a', 'b', 'o', 'r', 's', 'k', 'y', '.', 'c', 'z', '\0',
   /* "tacticalsquare.com", true */ 't', 'a', 'c', 't', 'i', 'c', 'a', 'l', 's', 'q', 'u', 'a', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "tadcastercircuit.org.uk", true */ 't', 'a', 'd', 'c', 'a', 's', 't', 'e', 'r', 'c', 'i', 'r', 'c', 'u', 'i', 't', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "tadu.de", true */ 't', 'a', 'd', 'u', '.', 'd', 'e', '\0',
   /* "taglioepiega.com", true */ 't', 'a', 'g', 'l', 'i', 'o', 'e', 'p', 'i', 'e', 'g', 'a', '.', 'c', 'o', 'm', '\0',
   /* "taglioepiega.eu", true */ 't', 'a', 'g', 'l', 'i', 'o', 'e', 'p', 'i', 'e', 'g', 'a', '.', 'e', 'u', '\0',
   /* "taglioepiega.it", true */ 't', 'a', 'g', 'l', 'i', 'o', 'e', 'p', 'i', 'e', 'g', 'a', '.', 'i', 't', '\0',
   /* "tahf.net", true */ 't', 'a', 'h', 'f', '.', 'n', 'e', 't', '\0',
@@ -12077,17 +12088,16 @@ static const char kSTSHostTable[] = {
   /* "taniesianie.pl", true */ 't', 'a', 'n', 'i', 'e', 's', 'i', 'a', 'n', 'i', 'e', '.', 'p', 'l', '\0',
   /* "tankski.co.uk", true */ 't', 'a', 'n', 'k', 's', 'k', 'i', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "tannenhof-moelln.de", true */ 't', 'a', 'n', 'n', 'e', 'n', 'h', 'o', 'f', '-', 'm', 'o', 'e', 'l', 'l', 'n', '.', 'd', 'e', '\0',
   /* "tannerfilip.org", true */ 't', 'a', 'n', 'n', 'e', 'r', 'f', 'i', 'l', 'i', 'p', '.', 'o', 'r', 'g', '\0',
   /* "tantalos.nl", true */ 't', 'a', 'n', 't', 'a', 'l', 'o', 's', '.', 'n', 'l', '\0',
   /* "tante-bugil.net", false */ 't', 'a', 'n', 't', 'e', '-', 'b', 'u', 'g', 'i', 'l', '.', 'n', 'e', 't', '\0',
   /* "tantotiempo.de", true */ 't', 'a', 'n', 't', 'o', 't', 'i', 'e', 'm', 'p', 'o', '.', 'd', 'e', '\0',
   /* "tanze-jetzt.de", true */ 't', 'a', 'n', 'z', 'e', '-', 'j', 'e', 't', 'z', 't', '.', 'd', 'e', '\0',
-  /* "tappublisher.com", true */ 't', 'a', 'p', 'p', 'u', 'b', 'l', 'i', 's', 'h', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "taquilla.com", true */ 't', 'a', 'q', 'u', 'i', 'l', 'l', 'a', '.', 'c', 'o', 'm', '\0',
   /* "taranis.re", true */ 't', 'a', 'r', 'a', 'n', 'i', 's', '.', 'r', 'e', '\0',
   /* "tarsan.cz", true */ 't', 'a', 'r', 's', 'a', 'n', '.', 'c', 'z', '\0',
   /* "tartaneagle.org.uk", false */ 't', 'a', 'r', 't', 'a', 'n', 'e', 'a', 'g', 'l', 'e', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "tas2580.net", false */ 't', 'a', 's', '2', '5', '8', '0', '.', 'n', 'e', 't', '\0',
   /* "taskforce512.de", true */ 't', 'a', 's', 'k', 'f', 'o', 'r', 'c', 'e', '5', '1', '2', '.', 'd', 'e', '\0',
   /* "taskotron.fedoraproject.org", true */ 't', 'a', 's', 'k', 'o', 't', 'r', 'o', 'n', '.', 'f', 'e', 'd', 'o', 'r', 'a', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'o', 'r', 'g', '\0',
   /* "taskotron.stg.fedoraproject.org", true */ 't', 'a', 's', 'k', 'o', 't', 'r', 'o', 'n', '.', 's', 't', 'g', '.', 'f', 'e', 'd', 'o', 'r', 'a', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'o', 'r', 'g', '\0',
@@ -12109,17 +12119,16 @@ static const char kSTSHostTable[] = {
   /* "tbarter.com", false */ 't', 'b', 'a', 'r', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "tbitc.ch", true */ 't', 'b', 'i', 't', 'c', '.', 'c', 'h', '\0',
   /* "tbrss.com", true */ 't', 'b', 'r', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "tbspace.de", true */ 't', 'b', 's', 'p', 'a', 'c', 'e', '.', 'd', 'e', '\0',
   /* "tbuchloh.de", true */ 't', 'b', 'u', 'c', 'h', 'l', 'o', 'h', '.', 'd', 'e', '\0',
   /* "tc-bonito.de", true */ 't', 'c', '-', 'b', 'o', 'n', 'i', 't', 'o', '.', 'd', 'e', '\0',
   /* "tcgrepublic.com", true */ 't', 'c', 'g', 'r', 'e', 'p', 'u', 'b', 'l', 'i', 'c', '.', 'c', 'o', 'm', '\0',
   /* "tchebb.me", true */ 't', 'c', 'h', 'e', 'b', 'b', '.', 'm', 'e', '\0',
-  /* "tcp.expert", true */ 't', 'c', 'p', '.', 'e', 'x', 'p', 'e', 'r', 't', '\0',
   /* "tcptun.com", true */ 't', 'c', 'p', 't', 'u', 'n', '.', 'c', 'o', 'm', '\0',
   /* "tdelmas.eu", true */ 't', 'd', 'e', 'l', 'm', 'a', 's', '.', 'e', 'u', '\0',
   /* "tdelmas.ovh", true */ 't', 'd', 'e', 'l', 'm', 'a', 's', '.', 'o', 'v', 'h', '\0',
   /* "tdrs.info", true */ 't', 'd', 'r', 's', '.', 'i', 'n', 'f', 'o', '\0',
   /* "tdude.co", true */ 't', 'd', 'u', 'd', 'e', '.', 'c', 'o', '\0',
   /* "teabagdesign.co.uk", true */ 't', 'e', 'a', 'b', 'a', 'g', 'd', 'e', 's', 'i', 'g', 'n', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "teachercreatedmaterials.com", true */ 't', 'e', 'a', 'c', 'h', 'e', 'r', 'c', 'r', 'e', 'a', 't', 'e', 'd', 'm', 'a', 't', 'e', 'r', 'i', 'a', 'l', 's', '.', 'c', 'o', 'm', '\0',
   /* "teachpeople.org", true */ 't', 'e', 'a', 'c', 'h', 'p', 'e', 'o', 'p', 'l', 'e', '.', 'o', 'r', 'g', '\0',
@@ -12294,17 +12303,16 @@ static const char kSTSHostTable[] = {
   /* "thedark1337.com", true */ 't', 'h', 'e', 'd', 'a', 'r', 'k', '1', '3', '3', '7', '.', 'c', 'o', 'm', '\0',
   /* "thedarkartsandcrafts.com", true */ 't', 'h', 'e', 'd', 'a', 'r', 'k', 'a', 'r', 't', 's', 'a', 'n', 'd', 'c', 'r', 'a', 'f', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "thedevrycommonsbrasil.com", true */ 't', 'h', 'e', 'd', 'e', 'v', 'r', 'y', 'c', 'o', 'm', 'm', 'o', 'n', 's', 'b', 'r', 'a', 's', 'i', 'l', '.', 'c', 'o', 'm', '\0',
   /* "thedisc.nl", true */ 't', 'h', 'e', 'd', 'i', 's', 'c', '.', 'n', 'l', '\0',
   /* "thedocumentrefinery.com", true */ 't', 'h', 'e', 'd', 'o', 'c', 'u', 'm', 'e', 'n', 't', 'r', 'e', 'f', 'i', 'n', 'e', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "thedreamtravelgroup.co.uk", true */ 't', 'h', 'e', 'd', 'r', 'e', 'a', 'm', 't', 'r', 'a', 'v', 'e', 'l', 'g', 'r', 'o', 'u', 'p', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "thedutchmarketers.com", true */ 't', 'h', 'e', 'd', 'u', 't', 'c', 'h', 'm', 'a', 'r', 'k', 'e', 't', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "theescapistswiki.com", true */ 't', 'h', 'e', 'e', 's', 'c', 'a', 'p', 'i', 's', 't', 's', 'w', 'i', 'k', 'i', '.', 'c', 'o', 'm', '\0',
-  /* "theeyeopener.com", true */ 't', 'h', 'e', 'e', 'y', 'e', 'o', 'p', 'e', 'n', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "thefarbeyond.com", true */ 't', 'h', 'e', 'f', 'a', 'r', 'b', 'e', 'y', 'o', 'n', 'd', '.', 'c', 'o', 'm', '\0',
   /* "theflowerbasketonline.com", true */ 't', 'h', 'e', 'f', 'l', 'o', 'w', 'e', 'r', 'b', 'a', 's', 'k', 'e', 't', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "theflyingbear.net", true */ 't', 'h', 'e', 'f', 'l', 'y', 'i', 'n', 'g', 'b', 'e', 'a', 'r', '.', 'n', 'e', 't', '\0',
   /* "thefox.co", true */ 't', 'h', 'e', 'f', 'o', 'x', '.', 'c', 'o', '\0',
   /* "thefreebirds.in", true */ 't', 'h', 'e', 'f', 'r', 'e', 'e', 'b', 'i', 'r', 'd', 's', '.', 'i', 'n', '\0',
   /* "thefrozenfire.com", false */ 't', 'h', 'e', 'f', 'r', 'o', 'z', 'e', 'n', 'f', 'i', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "thegcccoin.com", true */ 't', 'h', 'e', 'g', 'c', 'c', 'c', 'o', 'i', 'n', '.', 'c', 'o', 'm', '\0',
   /* "thego2swatking.com", false */ 't', 'h', 'e', 'g', 'o', '2', 's', 'w', 'a', 't', 'k', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
@@ -12397,17 +12405,16 @@ static const char kSTSHostTable[] = {
   /* "thinkcash.nl", true */ 't', 'h', 'i', 'n', 'k', 'c', 'a', 's', 'h', '.', 'n', 'l', '\0',
   /* "thinkcoding.org", true */ 't', 'h', 'i', 'n', 'k', 'c', 'o', 'd', 'i', 'n', 'g', '.', 'o', 'r', 'g', '\0',
   /* "thinkdo.jp", true */ 't', 'h', 'i', 'n', 'k', 'd', 'o', '.', 'j', 'p', '\0',
   /* "thinkindifferent.net", true */ 't', 'h', 'i', 'n', 'k', 'i', 'n', 'd', 'i', 'f', 'f', 'e', 'r', 'e', 'n', 't', '.', 'n', 'e', 't', '\0',
   /* "thinklikeanentrepreneur.com", true */ 't', 'h', 'i', 'n', 'k', 'l', 'i', 'k', 'e', 'a', 'n', 'e', 'n', 't', 'r', 'e', 'p', 'r', 'e', 'n', 'e', 'u', 'r', '.', 'c', 'o', 'm', '\0',
   /* "thinkrealty.com", true */ 't', 'h', 'i', 'n', 'k', 'r', 'e', 'a', 'l', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "thinktux.net", true */ 't', 'h', 'i', 'n', 'k', 't', 'u', 'x', '.', 'n', 'e', 't', '\0',
   /* "thisbrownman.com", true */ 't', 'h', 'i', 's', 'b', 'r', 'o', 'w', 'n', 'm', 'a', 'n', '.', 'c', 'o', 'm', '\0',
-  /* "thisisacompletetest.ga", true */ 't', 'h', 'i', 's', 'i', 's', 'a', 'c', 'o', 'm', 'p', 'l', 'e', 't', 'e', 't', 'e', 's', 't', '.', 'g', 'a', '\0',
   /* "thisisforager.com", true */ 't', 'h', 'i', 's', 'i', 's', 'f', 'o', 'r', 'a', 'g', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "thisishugo.com", false */ 't', 'h', 'i', 's', 'i', 's', 'h', 'u', 'g', 'o', '.', 'c', 'o', 'm', '\0',
   /* "thisserver.dontexist.net", true */ 't', 'h', 'i', 's', 's', 'e', 'r', 'v', 'e', 'r', '.', 'd', 'o', 'n', 't', 'e', 'x', 'i', 's', 't', '.', 'n', 'e', 't', '\0',
   /* "thkb.net", true */ 't', 'h', 'k', 'b', '.', 'n', 'e', 't', '\0',
   /* "thole.org", true */ 't', 'h', 'o', 'l', 'e', '.', 'o', 'r', 'g', '\0',
   /* "thom4s.info", true */ 't', 'h', 'o', 'm', '4', 's', '.', 'i', 'n', 'f', 'o', '\0',
   /* "thomas-grobelny.de", true */ 't', 'h', 'o', 'm', 'a', 's', '-', 'g', 'r', 'o', 'b', 'e', 'l', 'n', 'y', '.', 'd', 'e', '\0',
   /* "thomasbreads.com", true */ 't', 'h', 'o', 'm', 'a', 's', 'b', 'r', 'e', 'a', 'd', 's', '.', 'c', 'o', 'm', '\0',
@@ -12512,29 +12519,29 @@ static const char kSTSHostTable[] = {
   /* "tkat.ch", true */ 't', 'k', 'a', 't', '.', 'c', 'h', '\0',
   /* "tkn.tokyo", true */ 't', 'k', 'n', '.', 't', 'o', 'k', 'y', 'o', '\0',
   /* "tlach.cz", true */ 't', 'l', 'a', 'c', 'h', '.', 'c', 'z', '\0',
   /* "tlo.link", true */ 't', 'l', 'o', '.', 'l', 'i', 'n', 'k', '\0',
   /* "tlo.xyz", true */ 't', 'l', 'o', '.', 'x', 'y', 'z', '\0',
   /* "tls.builders", true */ 't', 'l', 's', '.', 'b', 'u', 'i', 'l', 'd', 'e', 'r', 's', '\0',
   /* "tls.care", true */ 't', 'l', 's', '.', 'c', 'a', 'r', 'e', '\0',
   /* "tls1914.org", true */ 't', 'l', 's', '1', '9', '1', '4', '.', 'o', 'r', 'g', '\0',
-  /* "tmaward.net", true */ 't', 'm', 'a', 'w', 'a', 'r', 'd', '.', 'n', 'e', 't', '\0',
   /* "tmf.ru", true */ 't', 'm', 'f', '.', 'r', 'u', '\0',
   /* "tmi-products.eu", true */ 't', 'm', 'i', '-', 'p', 'r', 'o', 'd', 'u', 'c', 't', 's', '.', 'e', 'u', '\0',
   /* "tmi-produkter.se", true */ 't', 'm', 'i', '-', 'p', 'r', 'o', 'd', 'u', 'k', 't', 'e', 'r', '.', 's', 'e', '\0',
   /* "tmm.cx", true */ 't', 'm', 'm', '.', 'c', 'x', '\0',
   /* "tmpraider.net", true */ 't', 'm', 'p', 'r', 'a', 'i', 'd', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "tmpsantos.com.br", true */ 't', 'm', 'p', 's', 'a', 'n', 't', 'o', 's', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "tmtopup.com", true */ 't', 'm', 't', 'o', 'p', 'u', 'p', '.', 'c', 'o', 'm', '\0',
   /* "tnes.dk", true */ 't', 'n', 'e', 's', '.', 'd', 'k', '\0',
   /* "tno.io", true */ 't', 'n', 'o', '.', 'i', 'o', '\0',
   /* "tny.link", true */ 't', 'n', 'y', '.', 'l', 'i', 'n', 'k', '\0',
   /* "toast.al", true */ 't', 'o', 'a', 's', 't', '.', 'a', 'l', '\0',
   /* "tobi-mayer.de", true */ 't', 'o', 'b', 'i', '-', 'm', 'a', 'y', 'e', 'r', '.', 'd', 'e', '\0',
+  /* "tobias-bielefeld.de", true */ 't', 'o', 'b', 'i', 'a', 's', '-', 'b', 'i', 'e', 'l', 'e', 'f', 'e', 'l', 'd', '.', 'd', 'e', '\0',
   /* "tobias-kluge.de", true */ 't', 'o', 'b', 'i', 'a', 's', '-', 'k', 'l', 'u', 'g', 'e', '.', 'd', 'e', '\0',
   /* "tobias-picha.de", true */ 't', 'o', 'b', 'i', 'a', 's', '-', 'p', 'i', 'c', 'h', 'a', '.', 'd', 'e', '\0',
   /* "tobias-weidhase.de", true */ 't', 'o', 'b', 'i', 'a', 's', '-', 'w', 'e', 'i', 'd', 'h', 'a', 's', 'e', '.', 'd', 'e', '\0',
   /* "tobiasconradi.com", true */ 't', 'o', 'b', 'i', 'a', 's', 'c', 'o', 'n', 'r', 'a', 'd', 'i', '.', 'c', 'o', 'm', '\0',
   /* "tobiassachs.de", true */ 't', 'o', 'b', 'i', 'a', 's', 's', 'a', 'c', 'h', 's', '.', 'd', 'e', '\0',
   /* "tobiassattler.com", true */ 't', 'o', 'b', 'i', 'a', 's', 's', 'a', 't', 't', 'l', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "tocaro.im", true */ 't', 'o', 'c', 'a', 'r', 'o', '.', 'i', 'm', '\0',
   /* "toccoig.com", true */ 't', 'o', 'c', 'c', 'o', 'i', 'g', '.', 'c', 'o', 'm', '\0',
@@ -12543,17 +12550,16 @@ static const char kSTSHostTable[] = {
   /* "todoescine.com", true */ 't', 'o', 'd', 'o', 'e', 's', 'c', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "todoist.com", true */ 't', 'o', 'd', 'o', 'i', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "tofu.im", true */ 't', 'o', 'f', 'u', '.', 'i', 'm', '\0',
   /* "togelonlinecommunity.com", false */ 't', 'o', 'g', 'e', 'l', 'o', 'n', 'l', 'i', 'n', 'e', 'c', 'o', 'm', 'm', 'u', 'n', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "tokage.me", true */ 't', 'o', 'k', 'a', 'g', 'e', '.', 'm', 'e', '\0',
   /* "tokaido-kun.jp", true */ 't', 'o', 'k', 'a', 'i', 'd', 'o', '-', 'k', 'u', 'n', '.', 'j', 'p', '\0',
   /* "tokaido.com", true */ 't', 'o', 'k', 'a', 'i', 'd', 'o', '.', 'c', 'o', 'm', '\0',
   /* "tokenloan.com", true */ 't', 'o', 'k', 'e', 'n', 'l', 'o', 'a', 'n', '.', 'c', 'o', 'm', '\0',
-  /* "tokke.dk", true */ 't', 'o', 'k', 'k', 'e', '.', 'd', 'k', '\0',
   /* "tokoone.com", false */ 't', 'o', 'k', 'o', 'o', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "tokotamz.net", true */ 't', 'o', 'k', 'o', 't', 'a', 'm', 'z', '.', 'n', 'e', 't', '\0',
   /* "tokotimbangandigitalmurah.web.id", true */ 't', 'o', 'k', 'o', 't', 'i', 'm', 'b', 'a', 'n', 'g', 'a', 'n', 'd', 'i', 'g', 'i', 't', 'a', 'l', 'm', 'u', 'r', 'a', 'h', '.', 'w', 'e', 'b', '.', 'i', 'd', '\0',
   /* "tokototech.com", true */ 't', 'o', 'k', 'o', 't', 'o', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "tokyo-powerstation.com", true */ 't', 'o', 'k', 'y', 'o', '-', 'p', 'o', 'w', 'e', 'r', 's', 't', 'a', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "tokyo.dating", true */ 't', 'o', 'k', 'y', 'o', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0',
   /* "tolboe.com", true */ 't', 'o', 'l', 'b', 'o', 'e', '.', 'c', 'o', 'm', '\0',
   /* "toleressea.fr", true */ 't', 'o', 'l', 'e', 'r', 'e', 's', 's', 'e', 'a', '.', 'f', 'r', '\0',
@@ -12579,17 +12585,16 @@ static const char kSTSHostTable[] = {
   /* "tomrei.com", true */ 't', 'o', 'm', 'r', 'e', 'i', '.', 'c', 'o', 'm', '\0',
   /* "tomrichards.net", true */ 't', 'o', 'm', 'r', 'i', 'c', 'h', 'a', 'r', 'd', 's', '.', 'n', 'e', 't', '\0',
   /* "tomssl.com", true */ 't', 'o', 'm', 's', 's', 'l', '.', 'c', 'o', 'm', '\0',
   /* "tomudding.nl", true */ 't', 'o', 'm', 'u', 'd', 'd', 'i', 'n', 'g', '.', 'n', 'l', '\0',
   /* "tomvote.com", true */ 't', 'o', 'm', 'v', 'o', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "tomwiggers.nl", false */ 't', 'o', 'm', 'w', 'i', 'g', 'g', 'e', 'r', 's', '.', 'n', 'l', '\0',
   /* "tomwilson.io", true */ 't', 'o', 'm', 'w', 'i', 'l', 's', 'o', 'n', '.', 'i', 'o', '\0',
   /* "tonabor.ru", true */ 't', 'o', 'n', 'a', 'b', 'o', 'r', '.', 'r', 'u', '\0',
-  /* "tonage.de", true */ 't', 'o', 'n', 'a', 'g', 'e', '.', 'd', 'e', '\0',
   /* "toncusters.nl", true */ 't', 'o', 'n', 'c', 'u', 's', 't', 'e', 'r', 's', '.', 'n', 'l', '\0',
   /* "tonegidoarchief.nl", true */ 't', 'o', 'n', 'e', 'g', 'i', 'd', 'o', 'a', 'r', 'c', 'h', 'i', 'e', 'f', '.', 'n', 'l', '\0',
   /* "toner24.at", true */ 't', 'o', 'n', 'e', 'r', '2', '4', '.', 'a', 't', '\0',
   /* "toner24.co.uk", true */ 't', 'o', 'n', 'e', 'r', '2', '4', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "toner24.es", true */ 't', 'o', 'n', 'e', 'r', '2', '4', '.', 'e', 's', '\0',
   /* "toner24.fr", true */ 't', 'o', 'n', 'e', 'r', '2', '4', '.', 'f', 'r', '\0',
   /* "toner24.it", true */ 't', 'o', 'n', 'e', 'r', '2', '4', '.', 'i', 't', '\0',
   /* "toner24.nl", true */ 't', 'o', 'n', 'e', 'r', '2', '4', '.', 'n', 'l', '\0',
@@ -12679,16 +12684,17 @@ static const char kSTSHostTable[] = {
   /* "trabbel.org", true */ 't', 'r', 'a', 'b', 'b', 'e', 'l', '.', 'o', 'r', 'g', '\0',
   /* "tracetracker.com", true */ 't', 'r', 'a', 'c', 'e', 't', 'r', 'a', 'c', 'k', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "tracetracker.no", true */ 't', 'r', 'a', 'c', 'e', 't', 'r', 'a', 'c', 'k', 'e', 'r', '.', 'n', 'o', '\0',
   /* "trackchair.com", true */ 't', 'r', 'a', 'c', 'k', 'c', 'h', 'a', 'i', 'r', '.', 'c', 'o', 'm', '\0',
   /* "trackmeet.io", true */ 't', 'r', 'a', 'c', 'k', 'm', 'e', 'e', 't', '.', 'i', 'o', '\0',
   /* "trade-smart.ru", true */ 't', 'r', 'a', 'd', 'e', '-', 's', 'm', 'a', 'r', 't', '.', 'r', 'u', '\0',
   /* "trade.gov.uk", true */ 't', 'r', 'a', 'd', 'e', '.', 'g', 'o', 'v', '.', 'u', 'k', '\0',
   /* "tradedesk.co.za", true */ 't', 'r', 'a', 'd', 'e', 'd', 'e', 's', 'k', '.', 'c', 'o', '.', 'z', 'a', '\0',
+  /* "tradeinvent.co.uk", true */ 't', 'r', 'a', 'd', 'e', 'i', 'n', 'v', 'e', 'n', 't', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "trademan.ky", true */ 't', 'r', 'a', 'd', 'e', 'm', 'a', 'n', '.', 'k', 'y', '\0',
   /* "tradinews.com", true */ 't', 'r', 'a', 'd', 'i', 'n', 'e', 'w', 's', '.', 'c', 'o', 'm', '\0',
   /* "tradinews.fr", true */ 't', 'r', 'a', 'd', 'i', 'n', 'e', 'w', 's', '.', 'f', 'r', '\0',
   /* "tradiz.org", true */ 't', 'r', 'a', 'd', 'i', 'z', '.', 'o', 'r', 'g', '\0',
   /* "trafficquality.org", true */ 't', 'r', 'a', 'f', 'f', 'i', 'c', 'q', 'u', 'a', 'l', 'i', 't', 'y', '.', 'o', 'r', 'g', '\0',
   /* "traffixdevices.com", true */ 't', 'r', 'a', 'f', 'f', 'i', 'x', 'd', 'e', 'v', 'i', 'c', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "tragmi.ch", true */ 't', 'r', 'a', 'g', 'm', 'i', '.', 'c', 'h', '\0',
   /* "trainex.org", true */ 't', 'r', 'a', 'i', 'n', 'e', 'x', '.', 'o', 'r', 'g', '\0',
@@ -12759,17 +12765,16 @@ static const char kSTSHostTable[] = {
   /* "triop.se", true */ 't', 'r', 'i', 'o', 'p', '.', 's', 'e', '\0',
   /* "trior.net", true */ 't', 'r', 'i', 'o', 'r', '.', 'n', 'e', 't', '\0',
   /* "tripcombi.com", true */ 't', 'r', 'i', 'p', 'c', 'o', 'm', 'b', 'i', '.', 'c', 'o', 'm', '\0',
   /* "triple-mmm.de", true */ 't', 'r', 'i', 'p', 'l', 'e', '-', 'm', 'm', 'm', '.', 'd', 'e', '\0',
   /* "tripseats.com", true */ 't', 'r', 'i', 'p', 's', 'e', 'a', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "trkpuls.tk", true */ 't', 'r', 'k', 'p', 'u', 'l', 's', '.', 't', 'k', '\0',
   /* "troi.de", true */ 't', 'r', 'o', 'i', '.', 'd', 'e', '\0',
   /* "troianet.com.br", true */ 't', 'r', 'o', 'i', 'a', 'n', 'e', 't', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
-  /* "trollme.me", true */ 't', 'r', 'o', 'l', 'l', 'm', 'e', '.', 'm', 'e', '\0',
   /* "trollscave.xyz", true */ 't', 'r', 'o', 'l', 'l', 's', 'c', 'a', 'v', 'e', '.', 'x', 'y', 'z', '\0',
   /* "trommelwirbel.com", true */ 't', 'r', 'o', 'm', 'm', 'e', 'l', 'w', 'i', 'r', 'b', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "tronatic-studio.com", true */ 't', 'r', 'o', 'n', 'a', 't', 'i', 'c', '-', 's', 't', 'u', 'd', 'i', 'o', '.', 'c', 'o', 'm', '\0',
   /* "trondelan.no", true */ 't', 'r', 'o', 'n', 'd', 'e', 'l', 'a', 'n', '.', 'n', 'o', '\0',
   /* "trophee-discount.com", true */ 't', 'r', 'o', 'p', 'h', 'e', 'e', '-', 'd', 'i', 's', 'c', 'o', 'u', 'n', 't', '.', 'c', 'o', 'm', '\0',
   /* "trotec.com", true */ 't', 'r', 'o', 't', 'e', 'c', '.', 'c', 'o', 'm', '\0',
   /* "truckersmp.com", true */ 't', 'r', 'u', 'c', 'k', 'e', 'r', 's', 'm', 'p', '.', 'c', 'o', 'm', '\0',
   /* "truckerswereld.nl", false */ 't', 'r', 'u', 'c', 'k', 'e', 'r', 's', 'w', 'e', 'r', 'e', 'l', 'd', '.', 'n', 'l', '\0',
@@ -12782,17 +12787,16 @@ static const char kSTSHostTable[] = {
   /* "truestaradvisors.com", true */ 't', 'r', 'u', 'e', 's', 't', 'a', 'r', 'a', 'd', 'v', 'i', 's', 'o', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "trueteaching.com", true */ 't', 'r', 'u', 'e', 't', 'e', 'a', 'c', 'h', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "trufflemonkey.co.uk", true */ 't', 'r', 'u', 'f', 'f', 'l', 'e', 'm', 'o', 'n', 'k', 'e', 'y', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "trunkjunk.co", true */ 't', 'r', 'u', 'n', 'k', 'j', 'u', 'n', 'k', '.', 'c', 'o', '\0',
   /* "truserve.org", true */ 't', 'r', 'u', 's', 'e', 'r', 'v', 'e', '.', 'o', 'r', 'g', '\0',
   /* "trustcase.com", true */ 't', 'r', 'u', 's', 't', 'c', 'a', 's', 'e', '.', 'c', 'o', 'm', '\0',
   /* "trustedinnovators.com", true */ 't', 'r', 'u', 's', 't', 'e', 'd', 'i', 'n', 'n', 'o', 'v', 'a', 't', 'o', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "trusteecar.com", true */ 't', 'r', 'u', 's', 't', 'e', 'e', 'c', 'a', 'r', '.', 'c', 'o', 'm', '\0',
-  /* "truthmessages.pw", true */ 't', 'r', 'u', 't', 'h', 'm', 'e', 's', 's', 'a', 'g', 'e', 's', '.', 'p', 'w', '\0',
   /* "trw-reseller.com", true */ 't', 'r', 'w', '-', 'r', 'e', 's', 'e', 'l', 'l', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "tryfabulousdiet.com", true */ 't', 'r', 'y', 'f', 'a', 'b', 'u', 'l', 'o', 'u', 's', 'd', 'i', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "tryfabulousskincream.com", true */ 't', 'r', 'y', 'f', 'a', 'b', 'u', 'l', 'o', 'u', 's', 's', 'k', 'i', 'n', 'c', 'r', 'e', 'a', 'm', '.', 'c', 'o', 'm', '\0',
   /* "tryfabulousskinserum.com", true */ 't', 'r', 'y', 'f', 'a', 'b', 'u', 'l', 'o', 'u', 's', 's', 'k', 'i', 'n', 's', 'e', 'r', 'u', 'm', '.', 'c', 'o', 'm', '\0',
   /* "trynowrinkleseyeserum.com", true */ 't', 'r', 'y', 'n', 'o', 'w', 'r', 'i', 'n', 'k', 'l', 'e', 's', 'e', 'y', 'e', 's', 'e', 'r', 'u', 'm', '.', 'c', 'o', 'm', '\0',
   /* "tryoneday.co", true */ 't', 'r', 'y', 'o', 'n', 'e', 'd', 'a', 'y', '.', 'c', 'o', '\0',
   /* "trywesayyes.com", true */ 't', 'r', 'y', 'w', 'e', 's', 'a', 'y', 'y', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "trzepak.pl", true */ 't', 'r', 'z', 'e', 'p', 'a', 'k', '.', 'p', 'l', '\0',
@@ -12882,17 +12886,16 @@ static const char kSTSHostTable[] = {
   /* "typingrevolution.com", true */ 't', 'y', 'p', 'i', 'n', 'g', 'r', 'e', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "typo3.com", true */ 't', 'y', 'p', 'o', '3', '.', 'c', 'o', 'm', '\0',
   /* "tysye.ca", true */ 't', 'y', 's', 'y', 'e', '.', 'c', 'a', '\0',
   /* "tzwe.com", true */ 't', 'z', 'w', 'e', '.', 'c', 'o', 'm', '\0',
   /* "u03.fr", true */ 'u', '0', '3', '.', 'f', 'r', '\0',
   /* "u5b.de", true */ 'u', '5', 'b', '.', 'd', 'e', '\0',
   /* "uadp.pw", true */ 'u', 'a', 'd', 'p', '.', 'p', 'w', '\0',
   /* "uae-company-service.com", true */ 'u', 'a', 'e', '-', 'c', 'o', 'm', 'p', 'a', 'n', 'y', '-', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'c', 'o', 'm', '\0',
-  /* "uangteman.com", true */ 'u', 'a', 'n', 'g', 't', 'e', 'm', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "uasmi.com", true */ 'u', 'a', 's', 'm', 'i', '.', 'c', 'o', 'm', '\0',
   /* "uat-activesg.com", true */ 'u', 'a', 't', '-', 'a', 'c', 't', 'i', 'v', 'e', 's', 'g', '.', 'c', 'o', 'm', '\0',
   /* "ub3rk1tten.com", false */ 'u', 'b', '3', 'r', 'k', '1', 't', 't', 'e', 'n', '.', 'c', 'o', 'm', '\0',
   /* "ubanquity.com", true */ 'u', 'b', 'a', 'n', 'q', 'u', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "uber.com.au", true */ 'u', 'b', 'e', 'r', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "uberboxen.net", true */ 'u', 'b', 'e', 'r', 'b', 'o', 'x', 'e', 'n', '.', 'n', 'e', 't', '\0',
   /* "uberfunction.com", true */ 'u', 'b', 'e', 'r', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "ubertt.org", true */ 'u', 'b', 'e', 'r', 't', 't', '.', 'o', 'r', 'g', '\0',
@@ -13008,20 +13011,20 @@ static const char kSTSHostTable[] = {
   /* "unseen.is", true */ 'u', 'n', 's', 'e', 'e', 'n', '.', 'i', 's', '\0',
   /* "unseen.tw", true */ 'u', 'n', 's', 'e', 'e', 'n', '.', 't', 'w', '\0',
   /* "unser-gartenforum.de", true */ 'u', 'n', 's', 'e', 'r', '-', 'g', 'a', 'r', 't', 'e', 'n', 'f', 'o', 'r', 'u', 'm', '.', 'd', 'e', '\0',
   /* "unsupervised.ca", true */ 'u', 'n', 's', 'u', 'p', 'e', 'r', 'v', 'i', 's', 'e', 'd', '.', 'c', 'a', '\0',
   /* "unsuspicious.click", true */ 'u', 'n', 's', 'u', 's', 'p', 'i', 'c', 'i', 'o', 'u', 's', '.', 'c', 'l', 'i', 'c', 'k', '\0',
   /* "unsystem.net", true */ 'u', 'n', 's', 'y', 's', 't', 'e', 'm', '.', 'n', 'e', 't', '\0',
   /* "unterfrankenclan.de", true */ 'u', 'n', 't', 'e', 'r', 'f', 'r', 'a', 'n', 'k', 'e', 'n', 'c', 'l', 'a', 'n', '.', 'd', 'e', '\0',
   /* "untoldstory.eu", true */ 'u', 'n', 't', 'o', 'l', 'd', 's', 't', 'o', 'r', 'y', '.', 'e', 'u', '\0',
-  /* "unun.fi", true */ 'u', 'n', 'u', 'n', '.', 'f', 'i', '\0',
   /* "unveiledgnosis.com", true */ 'u', 'n', 'v', 'e', 'i', 'l', 'e', 'd', 'g', 'n', 'o', 's', 'i', 's', '.', 'c', 'o', 'm', '\0',
   /* "unxicdellum.cat", true */ 'u', 'n', 'x', 'i', 'c', 'd', 'e', 'l', 'l', 'u', 'm', '.', 'c', 'a', 't', '\0',
   /* "unyq.me", false */ 'u', 'n', 'y', 'q', '.', 'm', 'e', '\0',
+  /* "up1.ca", true */ 'u', 'p', '1', '.', 'c', 'a', '\0',
   /* "upandclear.org", true */ 'u', 'p', 'a', 'n', 'd', 'c', 'l', 'e', 'a', 'r', '.', 'o', 'r', 'g', '\0',
   /* "upay.ru", true */ 'u', 'p', 'a', 'y', '.', 'r', 'u', '\0',
   /* "upboard.jp", true */ 'u', 'p', 'b', 'o', 'a', 'r', 'd', '.', 'j', 'p', '\0',
   /* "upgauged.com", true */ 'u', 'p', 'g', 'a', 'u', 'g', 'e', 'd', '.', 'c', 'o', 'm', '\0',
   /* "upitnik.rs", true */ 'u', 'p', 'i', 't', 'n', 'i', 'k', '.', 'r', 's', '\0',
   /* "uplinklabs.net", true */ 'u', 'p', 'l', 'i', 'n', 'k', 'l', 'a', 'b', 's', '.', 'n', 'e', 't', '\0',
   /* "upload.facebook.com", false */ 'u', 'p', 'l', 'o', 'a', 'd', '.', 'f', 'a', 'c', 'e', 'b', 'o', 'o', 'k', '.', 'c', 'o', 'm', '\0',
   /* "uploadbeta.com", true */ 'u', 'p', 'l', 'o', 'a', 'd', 'b', 'e', 't', 'a', '.', 'c', 'o', 'm', '\0',
@@ -13099,16 +13102,17 @@ static const char kSTSHostTable[] = {
   /* "validator.nu", true */ 'v', 'a', 'l', 'i', 'd', 'a', 't', 'o', 'r', '.', 'n', 'u', '\0',
   /* "validbrands.com", true */ 'v', 'a', 'l', 'i', 'd', 'b', 'r', 'a', 'n', 'd', 's', '.', 'c', 'o', 'm', '\0',
   /* "valitron.se", true */ 'v', 'a', 'l', 'i', 't', 'r', 'o', 'n', '.', 's', 'e', '\0',
   /* "valkohattu.fi", true */ 'v', 'a', 'l', 'k', 'o', 'h', 'a', 't', 't', 'u', '.', 'f', 'i', '\0',
   /* "valmagus.com", false */ 'v', 'a', 'l', 'm', 'a', 'g', 'u', 's', '.', 'c', 'o', 'm', '\0',
   /* "valokuva-albumi.fi", true */ 'v', 'a', 'l', 'o', 'k', 'u', 'v', 'a', '-', 'a', 'l', 'b', 'u', 'm', 'i', '.', 'f', 'i', '\0',
   /* "valopv.be", true */ 'v', 'a', 'l', 'o', 'p', 'v', '.', 'b', 'e', '\0',
   /* "valordolarblue.com.ar", true */ 'v', 'a', 'l', 'o', 'r', 'd', 'o', 'l', 'a', 'r', 'b', 'l', 'u', 'e', '.', 'c', 'o', 'm', '.', 'a', 'r', '\0',
+  /* "valshamar.is", true */ 'v', 'a', 'l', 's', 'h', 'a', 'm', 'a', 'r', '.', 'i', 's', '\0',
   /* "valsk.is", true */ 'v', 'a', 'l', 's', 'k', '.', 'i', 's', '\0',
   /* "valskis.lt", true */ 'v', 'a', 'l', 's', 'k', 'i', 's', '.', 'l', 't', '\0',
   /* "valtoaho.com", true */ 'v', 'a', 'l', 't', 'o', 'a', 'h', 'o', '.', 'c', 'o', 'm', '\0',
   /* "vampirism.eu", true */ 'v', 'a', 'm', 'p', 'i', 'r', 'i', 's', 'm', '.', 'e', 'u', '\0',
   /* "van11y.net", true */ 'v', 'a', 'n', '1', '1', 'y', '.', 'n', 'e', 't', '\0',
   /* "vandalfsen.me", true */ 'v', 'a', 'n', 'd', 'a', 'l', 'f', 's', 'e', 'n', '.', 'm', 'e', '\0',
   /* "vande-walle.eu", true */ 'v', 'a', 'n', 'd', 'e', '-', 'w', 'a', 'l', 'l', 'e', '.', 'e', 'u', '\0',
   /* "vanderziel.org", true */ 'v', 'a', 'n', 'd', 'e', 'r', 'z', 'i', 'e', 'l', '.', 'o', 'r', 'g', '\0',
@@ -13146,17 +13150,16 @@ static const char kSTSHostTable[] = {
   /* "vd42.net", true */ 'v', 'd', '4', '2', '.', 'n', 'e', 't', '\0',
   /* "vdbongard.com", true */ 'v', 'd', 'b', 'o', 'n', 'g', 'a', 'r', 'd', '.', 'c', 'o', 'm', '\0',
   /* "vdcomp.cz", true */ 'v', 'd', 'c', 'o', 'm', 'p', '.', 'c', 'z', '\0',
   /* "vdemuzere.be", true */ 'v', 'd', 'e', 'm', 'u', 'z', 'e', 'r', 'e', '.', 'b', 'e', '\0',
   /* "vdhco.be", true */ 'v', 'd', 'h', 'c', 'o', '.', 'b', 'e', '\0',
   /* "vdownloader.com", true */ 'v', 'd', 'o', 'w', 'n', 'l', 'o', 'a', 'd', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "vdrpro.com", true */ 'v', 'd', 'r', 'p', 'r', 'o', '.', 'c', 'o', 'm', '\0',
   /* "ve.search.yahoo.com", false */ 'v', 'e', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
-  /* "veblr.com", true */ 'v', 'e', 'b', 'l', 'r', '.', 'c', 'o', 'm', '\0',
   /* "vecozo.nl", true */ 'v', 'e', 'c', 'o', 'z', 'o', '.', 'n', 'l', '\0',
   /* "vedatkamer.com", true */ 'v', 'e', 'd', 'a', 't', 'k', 'a', 'm', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "veg-leiden.nl", true */ 'v', 'e', 'g', '-', 'l', 'e', 'i', 'd', 'e', 'n', '.', 'n', 'l', '\0',
   /* "vegalitarian.org", true */ 'v', 'e', 'g', 'a', 'l', 'i', 't', 'a', 'r', 'i', 'a', 'n', '.', 'o', 'r', 'g', '\0',
   /* "veggiesbourg.fr", true */ 'v', 'e', 'g', 'g', 'i', 'e', 's', 'b', 'o', 'u', 'r', 'g', '.', 'f', 'r', '\0',
   /* "vehent.org", true */ 'v', 'e', 'h', 'e', 'n', 't', '.', 'o', 'r', 'g', '\0',
   /* "vehicleenquiry.service.gov.uk", true */ 'v', 'e', 'h', 'i', 'c', 'l', 'e', 'e', 'n', 'q', 'u', 'i', 'r', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'g', 'o', 'v', '.', 'u', 'k', '\0',
   /* "vehicletax.service.gov.uk", true */ 'v', 'e', 'h', 'i', 'c', 'l', 'e', 't', 'a', 'x', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'g', 'o', 'v', '.', 'u', 'k', '\0',
@@ -13170,17 +13173,16 @@ static const char kSTSHostTable[] = {
   /* "veramagazine.jp", true */ 'v', 'e', 'r', 'a', 'm', 'a', 'g', 'a', 'z', 'i', 'n', 'e', '.', 'j', 'p', '\0',
   /* "verdeandco.co.uk", true */ 'v', 'e', 'r', 'd', 'e', 'a', 'n', 'd', 'c', 'o', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "verdict.gg", true */ 'v', 'e', 'r', 'd', 'i', 'c', 't', '.', 'g', 'g', '\0',
   /* "verein-kiekin.de", true */ 'v', 'e', 'r', 'e', 'i', 'n', '-', 'k', 'i', 'e', 'k', 'i', 'n', '.', 'd', 'e', '\0',
   /* "vereinscheck.de", true */ 'v', 'e', 'r', 'e', 'i', 'n', 's', 'c', 'h', 'e', 'c', 'k', '.', 'd', 'e', '\0',
   /* "verfassungsklage.at", true */ 'v', 'e', 'r', 'f', 'a', 's', 's', 'u', 'n', 'g', 's', 'k', 'l', 'a', 'g', 'e', '.', 'a', 't', '\0',
   /* "verifiedinvesting.com", true */ 'v', 'e', 'r', 'i', 'f', 'i', 'e', 'd', 'i', 'n', 'v', 'e', 's', 't', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "verifyos.com", true */ 'v', 'e', 'r', 'i', 'f', 'y', 'o', 's', '.', 'c', 'o', 'm', '\0',
-  /* "veriny.tf", true */ 'v', 'e', 'r', 'i', 'n', 'y', '.', 't', 'f', '\0',
   /* "verizonguidelines.com", true */ 'v', 'e', 'r', 'i', 'z', 'o', 'n', 'g', 'u', 'i', 'd', 'e', 'l', 'i', 'n', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "verliefde-jongens.nl", true */ 'v', 'e', 'r', 'l', 'i', 'e', 'f', 'd', 'e', '-', 'j', 'o', 'n', 'g', 'e', 'n', 's', '.', 'n', 'l', '\0',
   /* "veronique-schmitz.de", true */ 'v', 'e', 'r', 'o', 'n', 'i', 'q', 'u', 'e', '-', 's', 'c', 'h', 'm', 'i', 't', 'z', '.', 'd', 'e', '\0',
   /* "versbeton.nl", true */ 'v', 'e', 'r', 's', 'b', 'e', 't', 'o', 'n', '.', 'n', 'l', '\0',
   /* "versicherungskontor.net", true */ 'v', 'e', 'r', 's', 'i', 'c', 'h', 'e', 'r', 'u', 'n', 'g', 's', 'k', 'o', 'n', 't', 'o', 'r', '.', 'n', 'e', 't', '\0',
   /* "verspai.de", true */ 'v', 'e', 'r', 's', 'p', 'a', 'i', '.', 'd', 'e', '\0',
   /* "vertner.net", true */ 'v', 'e', 'r', 't', 'n', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "veryapt.com", true */ 'v', 'e', 'r', 'y', 'a', 'p', 't', '.', 'c', 'o', 'm', '\0',
@@ -13394,30 +13396,29 @@ static const char kSTSHostTable[] = {
   /* "warekon.com", true */ 'w', 'a', 'r', 'e', 'k', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "warekon.dk", true */ 'w', 'a', 'r', 'e', 'k', 'o', 'n', '.', 'd', 'k', '\0',
   /* "warhaggis.com", true */ 'w', 'a', 'r', 'h', 'a', 'g', 'g', 'i', 's', '.', 'c', 'o', 'm', '\0',
   /* "warlions.info", true */ 'w', 'a', 'r', 'l', 'i', 'o', 'n', 's', '.', 'i', 'n', 'f', 'o', '\0',
   /* "warmestwishes.ca", true */ 'w', 'a', 'r', 'm', 'e', 's', 't', 'w', 'i', 's', 'h', 'e', 's', '.', 'c', 'a', '\0',
   /* "warmservers.com", true */ 'w', 'a', 'r', 'm', 's', 'e', 'r', 'v', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "warr.ath.cx", true */ 'w', 'a', 'r', 'r', '.', 'a', 't', 'h', '.', 'c', 'x', '\0',
   /* "warrencreative.com", false */ 'w', 'a', 'r', 'r', 'e', 'n', 'c', 'r', 'e', 'a', 't', 'i', 'v', 'e', '.', 'c', 'o', 'm', '\0',
+  /* "warsh.moe", true */ 'w', 'a', 'r', 's', 'h', '.', 'm', 'o', 'e', '\0',
   /* "wartorngalaxy.com", true */ 'w', 'a', 'r', 't', 'o', 'r', 'n', 'g', 'a', 'l', 'a', 'x', 'y', '.', 'c', 'o', 'm', '\0',
   /* "waschpark-hantschel.de", true */ 'w', 'a', 's', 'c', 'h', 'p', 'a', 'r', 'k', '-', 'h', 'a', 'n', 't', 's', 'c', 'h', 'e', 'l', '.', 'd', 'e', '\0',
   /* "wasema.com", true */ 'w', 'a', 's', 'e', 'm', 'a', '.', 'c', 'o', 'm', '\0',
   /* "washingtonviews.com", true */ 'w', 'a', 's', 'h', 'i', 'n', 'g', 't', 'o', 'n', 'v', 'i', 'e', 'w', 's', '.', 'c', 'o', 'm', '\0',
   /* "wasserspucker.de", true */ 'w', 'a', 's', 's', 'e', 'r', 's', 'p', 'u', 'c', 'k', 'e', 'r', '.', 'd', 'e', '\0',
-  /* "wassim.is", true */ 'w', 'a', 's', 's', 'i', 'm', '.', 'i', 's', '\0',
   /* "watchface.watch", true */ 'w', 'a', 't', 'c', 'h', 'f', 'a', 'c', 'e', '.', 'w', 'a', 't', 'c', 'h', '\0',
   /* "watchinventory.com", true */ 'w', 'a', 't', 'c', 'h', 'i', 'n', 'v', 'e', 'n', 't', 'o', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "watchstyle.com", true */ 'w', 'a', 't', 'c', 'h', 's', 't', 'y', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "watchweasel.com", true */ 'w', 'a', 't', 'c', 'h', 'w', 'e', 'a', 's', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "waterfedpole.com", true */ 'w', 'a', 't', 'e', 'r', 'f', 'e', 'd', 'p', 'o', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "waterforlife.net.au", true */ 'w', 'a', 't', 'e', 'r', 'f', 'o', 'r', 'l', 'i', 'f', 'e', '.', 'n', 'e', 't', '.', 'a', 'u', '\0',
   /* "watersb.org", true */ 'w', 'a', 't', 'e', 'r', 's', 'b', '.', 'o', 'r', 'g', '\0',
-  /* "watertrails.io", true */ 'w', 'a', 't', 'e', 'r', 't', 'r', 'a', 'i', 'l', 's', '.', 'i', 'o', '\0',
   /* "wavesboardshop.com", true */ 'w', 'a', 'v', 'e', 's', 'b', 'o', 'a', 'r', 'd', 's', 'h', 'o', 'p', '.', 'c', 'o', 'm', '\0',
   /* "wawak.pl", true */ 'w', 'a', 'w', 'a', 'k', '.', 'p', 'l', '\0',
   /* "waylaydesign.com", true */ 'w', 'a', 'y', 'l', 'a', 'y', 'd', 'e', 's', 'i', 'g', 'n', '.', 'c', 'o', 'm', '\0',
   /* "wayne.cloud", true */ 'w', 'a', 'y', 'n', 'e', '.', 'c', 'l', 'o', 'u', 'd', '\0',
   /* "wayohoo.com", true */ 'w', 'a', 'y', 'o', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "wayohoo.net", true */ 'w', 'a', 'y', 'o', 'h', 'o', 'o', '.', 'n', 'e', 't', '\0',
   /* "waze.com", true */ 'w', 'a', 'z', 'e', '.', 'c', 'o', 'm', '\0',
   /* "wbg-vs.de", true */ 'w', 'b', 'g', '-', 'v', 's', '.', 'd', 'e', '\0',
@@ -13915,17 +13916,16 @@ static const char kSTSHostTable[] = {
   /* "xho.me", true */ 'x', 'h', 'o', '.', 'm', 'e', '\0',
   /* "xia100.xyz", true */ 'x', 'i', 'a', '1', '0', '0', '.', 'x', 'y', 'z', '\0',
   /* "xiamuzi.com", true */ 'x', 'i', 'a', 'm', 'u', 'z', 'i', '.', 'c', 'o', 'm', '\0',
   /* "xiangweiqing.co.uk", true */ 'x', 'i', 'a', 'n', 'g', 'w', 'e', 'i', 'q', 'i', 'n', 'g', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "xiaofengsky.com", true */ 'x', 'i', 'a', 'o', 'f', 'e', 'n', 'g', 's', 'k', 'y', '.', 'c', 'o', 'm', '\0',
   /* "xiaoguo.net", true */ 'x', 'i', 'a', 'o', 'g', 'u', 'o', '.', 'n', 'e', 't', '\0',
   /* "xiaolan.me", true */ 'x', 'i', 'a', 'o', 'l', 'a', 'n', '.', 'm', 'e', '\0',
   /* "xiaolvmu.com", true */ 'x', 'i', 'a', 'o', 'l', 'v', 'm', 'u', '.', 'c', 'o', 'm', '\0',
-  /* "xichtsbuch.de", true */ 'x', 'i', 'c', 'h', 't', 's', 'b', 'u', 'c', 'h', '.', 'd', 'e', '\0',
   /* "xichuangke.com", true */ 'x', 'i', 'c', 'h', 'u', 'a', 'n', 'g', 'k', 'e', '.', 'c', 'o', 'm', '\0',
   /* "xicreative.net", true */ 'x', 'i', 'c', 'r', 'e', 'a', 't', 'i', 'v', 'e', '.', 'n', 'e', 't', '\0',
   /* "xight.org", true */ 'x', 'i', 'g', 'h', 't', '.', 'o', 'r', 'g', '\0',
   /* "xilef.org", true */ 'x', 'i', 'l', 'e', 'f', '.', 'o', 'r', 'g', '\0',
   /* "xilkoi.net", true */ 'x', 'i', 'l', 'k', 'o', 'i', '.', 'n', 'e', 't', '\0',
   /* "ximage.me", false */ 'x', 'i', 'm', 'a', 'g', 'e', '.', 'm', 'e', '\0',
   /* "xinbiji.cn", true */ 'x', 'i', 'n', 'b', 'i', 'j', 'i', '.', 'c', 'n', '\0',
   /* "xivpn.com", true */ 'x', 'i', 'v', 'p', 'n', '.', 'c', 'o', 'm', '\0',
@@ -14016,17 +14016,16 @@ static const char kSTSHostTable[] = {
   /* "yal.sh", true */ 'y', 'a', 'l', '.', 's', 'h', '\0',
   /* "yalook.com", true */ 'y', 'a', 'l', 'o', 'o', 'k', '.', 'c', 'o', 'm', '\0',
   /* "yamadaya.tv", true */ 'y', 'a', 'm', 'a', 'd', 'a', 'y', 'a', '.', 't', 'v', '\0',
   /* "yameveo.com", false */ 'y', 'a', 'm', 'e', 'v', 'e', 'o', '.', 'c', 'o', 'm', '\0',
   /* "yanaduday.com", true */ 'y', 'a', 'n', 'a', 'd', 'u', 'd', 'a', 'y', '.', 'c', 'o', 'm', '\0',
   /* "yanovich.net", true */ 'y', 'a', 'n', 'o', 'v', 'i', 'c', 'h', '.', 'n', 'e', 't', '\0',
   /* "yantrasthal.com", true */ 'y', 'a', 'n', 't', 'r', 'a', 's', 't', 'h', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "yanwh.xyz", true */ 'y', 'a', 'n', 'w', 'h', '.', 'x', 'y', 'z', '\0',
-  /* "yaoidreams.com", true */ 'y', 'a', 'o', 'i', 'd', 'r', 'e', 'a', 'm', 's', '.', 'c', 'o', 'm', '\0',
   /* "yapbreak.fr", true */ 'y', 'a', 'p', 'b', 'r', 'e', 'a', 'k', '.', 'f', 'r', '\0',
   /* "yarcom.ru", false */ 'y', 'a', 'r', 'c', 'o', 'm', '.', 'r', 'u', '\0',
   /* "yarogneva.ru", true */ 'y', 'a', 'r', 'o', 'g', 'n', 'e', 'v', 'a', '.', 'r', 'u', '\0',
   /* "yatesun.com", true */ 'y', 'a', 't', 'e', 's', 'u', 'n', '.', 'c', 'o', 'm', '\0',
   /* "yaup.tk", true */ 'y', 'a', 'u', 'p', '.', 't', 'k', '\0',
   /* "yawen.tw", true */ 'y', 'a', 'w', 'e', 'n', '.', 't', 'w', '\0',
   /* "yawnbox.com", true */ 'y', 'a', 'w', 'n', 'b', 'o', 'x', '.', 'c', 'o', 'm', '\0',
   /* "yaxim.org", true */ 'y', 'a', 'x', 'i', 'm', '.', 'o', 'r', 'g', '\0',
@@ -14427,14127 +14426,14126 @@ static const nsSTSPreload kSTSPreloadLis
   { 1655, true },
   { 1669, true },
   { 1685, true },
   { 1699, true },
   { 1714, true },
   { 1728, true },
   { 1736, true },
   { 1743, true },
-  { 1750, true },
-  { 1762, true },
-  { 1773, true },
-  { 1786, true },
-  { 1795, true },
-  { 1807, true },
-  { 1818, true },
-  { 1831, true },
-  { 1846, true },
-  { 1854, false },
-  { 1863, false },
-  { 1876, true },
-  { 1884, true },
-  { 1896, true },
-  { 1908, true },
-  { 1923, true },
-  { 1942, true },
-  { 1949, false },
-  { 1968, true },
-  { 1978, true },
-  { 1984, true },
-  { 1993, true },
-  { 2006, false },
-  { 2013, true },
-  { 2025, true },
-  { 2034, true },
-  { 2047, true },
-  { 2057, true },
-  { 2065, false },
-  { 2072, true },
-  { 2083, true },
-  { 2095, true },
-  { 2103, true },
+  { 1755, true },
+  { 1766, true },
+  { 1779, true },
+  { 1788, true },
+  { 1800, true },
+  { 1811, true },
+  { 1824, true },
+  { 1839, true },
+  { 1847, false },
+  { 1856, false },
+  { 1869, true },
+  { 1877, true },
+  { 1889, true },
+  { 1901, true },
+  { 1916, true },
+  { 1935, true },
+  { 1942, false },
+  { 1961, true },
+  { 1971, true },
+  { 1977, true },
+  { 1986, true },
+  { 1999, false },
+  { 2006, true },
+  { 2018, true },
+  { 2027, true },
+  { 2040, true },
+  { 2050, true },
+  { 2058, false },
+  { 2065, true },
+  { 2076, true },
+  { 2088, true },
+  { 2096, true },
+  { 2109, true },
   { 2116, true },
-  { 2123, true },
-  { 2132, true },
-  { 2144, true },
-  { 2153, true },
-  { 2174, true },
-  { 2198, true },
-  { 2213, true },
-  { 2224, true },
-  { 2230, true },
-  { 2243, true },
-  { 2255, true },
-  { 2267, true },
-  { 2277, true },
+  { 2125, true },
+  { 2137, true },
+  { 2146, true },
+  { 2167, true },
+  { 2191, true },
+  { 2206, true },
+  { 2217, true },
+  { 2223, true },
+  { 2236, true },
+  { 2248, true },
+  { 2260, true },
+  { 2270, true },
+  { 2287, true },
   { 2294, true },
-  { 2301, true },
-  { 2310, true },
-  { 2331, true },
-  { 2344, false },
-  { 2357, true },
-  { 2367, true },
-  { 2420, true },
-  { 2432, true },
-  { 2441, true },
-  { 2450, true },
-  { 2460, true },
-  { 2470, true },
-  { 2481, true },
-  { 2489, true },
-  { 2501, true },
-  { 2511, true },
-  { 2530, true },
-  { 2541, true },
-  { 2552, true },
-  { 2561, true },
-  { 2574, true },
-  { 2594, true },
-  { 2609, true },
-  { 2624, true },
-  { 2632, true },
-  { 2642, true },
-  { 2659, true },
-  { 2674, true },
-  { 2684, true },
-  { 2691, false },
-  { 2702, true },
-  { 2717, true },
-  { 2736, true },
-  { 2746, true },
-  { 2757, true },
-  { 2775, true },
-  { 2786, true },
-  { 2800, true },
-  { 2812, true },
-  { 2834, true },
-  { 2850, true },
-  { 2861, false },
-  { 2877, false },
-  { 2889, true },
-  { 2902, true },
-  { 2915, true },
-  { 2932, true },
-  { 2957, false },
-  { 2965, true },
-  { 2989, true },
-  { 3008, true },
-  { 3021, true },
-  { 3033, true },
-  { 3044, true },
-  { 3068, true },
-  { 3081, true },
-  { 3090, true },
-  { 3107, true },
-  { 3119, true },
-  { 3138, true },
-  { 3161, true },
-  { 3175, true },
-  { 3191, true },
-  { 3204, true },
-  { 3221, true },
-  { 3241, true },
-  { 3256, true },
-  { 3277, true },
-  { 3297, true },
-  { 3309, true },
-  { 3320, true },
-  { 3339, false },
-  { 3346, true },
-  { 3358, true },
-  { 3379, true },
-  { 3391, true },
-  { 3408, true },
-  { 3421, true },
-  { 3437, true },
-  { 3449, true },
-  { 3462, false },
-  { 3471, true },
-  { 3481, true },
-  { 3496, true },
-  { 3513, true },
-  { 3527, true },
-  { 3543, true },
-  { 3554, true },
-  { 3566, true },
-  { 3587, false },
-  { 3597, true },
-  { 3612, true },
-  { 3626, true },
-  { 3647, false },
-  { 3660, true },
-  { 3669, true },
-  { 3683, true },
-  { 3695, true },
-  { 3710, true },
-  { 3723, true },
-  { 3735, true },
-  { 3747, true },
-  { 3759, true },
-  { 3771, true },
-  { 3783, true },
+  { 2303, true },
+  { 2324, true },
+  { 2337, false },
+  { 2350, true },
+  { 2360, true },
+  { 2413, true },
+  { 2425, true },
+  { 2434, true },
+  { 2443, true },
+  { 2453, true },
+  { 2463, true },
+  { 2474, true },
+  { 2482, true },
+  { 2494, true },
+  { 2504, true },
+  { 2523, true },
+  { 2534, true },
+  { 2545, true },
+  { 2554, true },
+  { 2567, true },
+  { 2587, true },
+  { 2602, true },
+  { 2617, true },
+  { 2625, true },
+  { 2635, true },
+  { 2652, true },
+  { 2667, true },
+  { 2677, true },
+  { 2684, false },
+  { 2695, true },
+  { 2710, true },
+  { 2725, true },
+  { 2744, true },
+  { 2754, true },
+  { 2765, true },
+  { 2783, true },
+  { 2794, true },
+  { 2808, true },
+  { 2820, true },
+  { 2842, true },
+  { 2858, true },
+  { 2869, false },
+  { 2885, false },
+  { 2897, true },
+  { 2910, true },
+  { 2923, true },
+  { 2940, true },
+  { 2965, false },
+  { 2973, true },
+  { 2997, true },
+  { 3016, true },
+  { 3029, true },
+  { 3041, true },
+  { 3052, true },
+  { 3076, true },
+  { 3089, true },
+  { 3098, true },
+  { 3115, true },
+  { 3127, true },
+  { 3146, true },
+  { 3169, true },
+  { 3183, true },
+  { 3199, true },
+  { 3212, true },
+  { 3229, true },
+  { 3249, true },
+  { 3264, true },
+  { 3285, true },
+  { 3305, true },
+  { 3317, true },
+  { 3328, true },
+  { 3347, false },
+  { 3354, true },
+  { 3366, true },
+  { 3387, true },
+  { 3399, true },
+  { 3416, true },
+  { 3429, true },
+  { 3445, true },
+  { 3457, true },
+  { 3470, false },
+  { 3479, true },
+  { 3489, true },
+  { 3504, true },
+  { 3521, true },
+  { 3535, true },
+  { 3551, true },
+  { 3562, true },
+  { 3574, true },
+  { 3595, false },
+  { 3605, true },
+  { 3620, true },
+  { 3634, true },
+  { 3655, false },
+  { 3668, true },
+  { 3677, true },
+  { 3691, true },
+  { 3703, true },
+  { 3718, true },
+  { 3731, true },
+  { 3743, true },
+  { 3755, true },
+  { 3767, true },
+  { 3779, true },
   { 3791, true },
-  { 3802, true },
-  { 3816, true },
-  { 3832, true },
-  { 3845, true },
-  { 3862, true },
-  { 3877, true },
-  { 3892, true },
-  { 3910, true },
-  { 3919, true },
-  { 3932, true },
-  { 3953, true },
-  { 3962, true },
-  { 3972, true },
-  { 3997, true },
-  { 4008, true },
-  { 4027, true },
-  { 4039, true },
-  { 4058, true },
-  { 4077, true },
-  { 4096, true },
-  { 4108, true },
-  { 4123, true },
-  { 4134, true },
-  { 4147, true },
-  { 4159, true },
-  { 4172, true },
-  { 4186, true },
-  { 4197, true },
-  { 4206, true },
-  { 4220, true },
-  { 4232, true },
-  { 4259, true },
-  { 4285, true },
-  { 4298, true },
-  { 4309, true },
-  { 4333, true },
-  { 4350, true },
-  { 4378, true },
-  { 4394, true },
-  { 4403, true },
-  { 4413, true },
-  { 4427, true },
-  { 4446, true },
-  { 4456, true },
-  { 4470, true },
-  { 4478, false },
-  { 4499, true },
-  { 4517, true },
+  { 3799, true },
+  { 3810, true },
+  { 3824, true },
+  { 3840, true },
+  { 3853, true },
+  { 3870, true },
+  { 3885, true },
+  { 3900, true },
+  { 3918, true },
+  { 3927, true },
+  { 3940, true },
+  { 3961, true },
+  { 3970, true },
+  { 3980, true },
+  { 4005, true },
+  { 4016, true },
+  { 4035, true },
+  { 4047, true },
+  { 4066, true },
+  { 4085, true },
+  { 4104, true },
+  { 4116, true },
+  { 4131, true },
+  { 4142, true },
+  { 4155, true },
+  { 4167, true },
+  { 4180, true },
+  { 4194, true },
+  { 4205, true },
+  { 4214, true },
+  { 4228, true },
+  { 4240, true },
+  { 4267, true },
+  { 4293, true },
+  { 4306, true },
+  { 4317, true },
+  { 4341, true },
+  { 4358, true },
+  { 4386, true },
+  { 4402, true },
+  { 4411, true },
+  { 4421, true },
+  { 4435, true },
+  { 4454, true },
+  { 4464, true },
+  { 4478, true },
+  { 4486, false },
+  { 4507, true },
   { 4525, true },
-  { 4534, true },
-  { 4553, true },
-  { 4567, true },
-  { 4586, true },
-  { 4599, true },
-  { 4610, true },
-  { 4630, true },
-  { 4648, true },
-  { 4666, false },
-  { 4685, true },
-  { 4699, true },
-  { 4720, true },
-  { 4736, true },
-  { 4746, true },
-  { 4759, true },
-  { 4772, true },
-  { 4786, true },
-  { 4800, true },
-  { 4810, true },
-  { 4820, true },
-  { 4830, true },
-  { 4840, true },
-  { 4850, true },
-  { 4860, true },
-  { 4877, true },
-  { 4887, false },
-  { 4895, true },
-  { 4906, true },
-  { 4917, true },
-  { 4928, true },
-  { 4937, true },
-  { 4957, true },
-  { 4968, true },
-  { 4985, true },
-  { 5009, true },
-  { 5023, true },
-  { 5042, true },
-  { 5054, true },
-  { 5070, true },
-  { 5081, true },
-  { 5095, true },
-  { 5111, true },
+  { 4533, true },
+  { 4542, true },
+  { 4561, true },
+  { 4575, true },
+  { 4594, true },
+  { 4607, true },
+  { 4618, true },
+  { 4638, true },
+  { 4656, true },
+  { 4674, false },
+  { 4693, true },
+  { 4707, true },
+  { 4728, true },
+  { 4744, true },
+  { 4754, true },
+  { 4767, true },
+  { 4780, true },
+  { 4794, true },
+  { 4808, true },
+  { 4818, true },
+  { 4828, true },
+  { 4838, true },
+  { 4848, true },
+  { 4858, true },
+  { 4868, true },
+  { 4885, true },
+  { 4895, false },
+  { 4903, true },
+  { 4914, true },
+  { 4925, true },
+  { 4936, true },
+  { 4945, true },
+  { 4965, true },
+  { 4976, true },
+  { 4993, true },
+  { 5017, true },
+  { 5031, true },
+  { 5050, true },
+  { 5062, true },
+  { 5078, true },
+  { 5089, true },
+  { 5103, true },
   { 5119, true },
-  { 5136, true },
-  { 5148, true },
-  { 5165, true },
-  { 5173, false },
-  { 5189, true },
+  { 5127, true },
+  { 5144, true },
+  { 5156, true },
+  { 5173, true },
+  { 5181, false },
   { 5197, true },
-  { 5211, true },
-  { 5223, false },
-  { 5236, true },
-  { 5248, true },
-  { 5260, true },
-  { 5274, true },
-  { 5286, true },
-  { 5296, true },
+  { 5205, true },
+  { 5219, true },
+  { 5231, false },
+  { 5244, true },
+  { 5256, true },
+  { 5268, true },
+  { 5282, true },
+  { 5294, true },
   { 5304, true },
-  { 5314, true },
-  { 5328, true },
-  { 5341, true },
-  { 5353, true },
-  { 5372, true },
-  { 5391, true },
-  { 5407, true },
-  { 5440, true },
-  { 5450, true },
-  { 5464, true },
-  { 5471, true },
-  { 5488, true },
-  { 5497, true },
-  { 5504, true },
-  { 5518, true },
+  { 5312, true },
+  { 5322, true },
+  { 5336, true },
+  { 5349, true },
+  { 5361, true },
+  { 5380, true },
+  { 5399, true },
+  { 5415, true },
+  { 5448, true },
+  { 5458, true },
+  { 5472, true },
+  { 5479, true },
+  { 5496, true },
+  { 5505, true },
+  { 5512, true },
   { 5526, true },
-  { 5537, true },
-  { 5552, true },
-  { 5567, true },
-  { 5584, true },
-  { 5594, true },
-  { 5605, true },
-  { 5620, true },
-  { 5631, true },
-  { 5643, true },
-  { 5654, true },
-  { 5674, true },
-  { 5685, true },
-  { 5696, true },
-  { 5707, true },
-  { 5720, true },
-  { 5738, true },
-  { 5750, true },
-  { 5759, true },
-  { 5773, true },
-  { 5784, true },
-  { 5801, true },
-  { 5812, true },
-  { 5821, false },
-  { 5847, true },
-  { 5858, true },
-  { 5868, false },
-  { 5885, true },
-  { 5895, true },
-  { 5909, true },
-  { 5921, true },
-  { 5930, true },
-  { 5947, true },
-  { 5954, true },
-  { 5978, true },
-  { 5994, true },
-  { 6014, true },
-  { 6039, true },
-  { 6064, true },
-  { 6089, true },
-  { 6101, true },
-  { 6110, true },
-  { 6137, true },
-  { 6150, false },
-  { 6159, true },
-  { 6175, true },
-  { 6191, true },
-  { 6203, true },
-  { 6217, true },
-  { 6237, true },
-  { 6252, true },
-  { 6273, true },
-  { 6285, true },
-  { 6295, true },
-  { 6307, true },
-  { 6319, true },
-  { 6328, true },
-  { 6340, true },
-  { 6359, true },
-  { 6372, true },
-  { 6383, true },
-  { 6392, true },
-  { 6406, true },
-  { 6420, true },
-  { 6436, true },
-  { 6452, true },
-  { 6472, true },
-  { 6493, true },
-  { 6507, true },
-  { 6520, true },
-  { 6530, true },
-  { 6545, true },
-  { 6555, true },
-  { 6570, true },
-  { 6588, true },
-  { 6602, true },
-  { 6614, true },
-  { 6629, true },
-  { 6643, true },
-  { 6658, true },
-  { 6668, true },
-  { 6682, true },
-  { 6699, true },
-  { 6714, true },
-  { 6728, true },
-  { 6742, true },
-  { 6758, true },
-  { 6770, true },
-  { 6782, true },
-  { 6797, true },
-  { 6811, true },
-  { 6833, true },
-  { 6845, true },
-  { 6866, true },
-  { 6878, true },
-  { 6891, true },
-  { 6903, true },
-  { 6916, true },
-  { 6931, true },
-  { 6942, true },
-  { 6958, true },
-  { 6969, true },
-  { 6981, true },
-  { 6994, true },
-  { 7014, true },
-  { 7027, true },
-  { 7045, true },
-  { 7062, true },
-  { 7086, true },
-  { 7105, true },
-  { 7116, true },
-  { 7130, true },
-  { 7146, true },
-  { 7165, true },
-  { 7178, true },
-  { 7199, true },
-  { 7219, true },
-  { 7239, true },
-  { 7252, false },
-  { 7265, true },
-  { 7277, true },
-  { 7287, true },
-  { 7300, true },
-  { 7314, true },
-  { 7330, true },
-  { 7344, true },
-  { 7360, true },
-  { 7372, true },
-  { 7386, true },
-  { 7399, true },
-  { 7413, true },
+  { 5534, true },
+  { 5545, true },
+  { 5560, true },
+  { 5575, true },
+  { 5592, true },
+  { 5602, true },
+  { 5613, true },
+  { 5628, true },
+  { 5639, true },
+  { 5651, true },
+  { 5662, true },
+  { 5682, true },
+  { 5693, true },
+  { 5704, true },
+  { 5715, true },
+  { 5728, true },
+  { 5746, true },
+  { 5758, true },
+  { 5767, true },
+  { 5781, true },
+  { 5792, true },
+  { 5809, true },
+  { 5820, true },
+  { 5829, false },
+  { 5855, true },
+  { 5866, true },
+  { 5876, false },
+  { 5893, true },
+  { 5903, true },
+  { 5917, true },
+  { 5929, true },
+  { 5938, true },
+  { 5955, true },
+  { 5962, true },
+  { 5986, true },
+  { 6002, true },
+  { 6022, true },
+  { 6047, true },
+  { 6072, true },
+  { 6097, true },
+  { 6109, true },
+  { 6118, true },
+  { 6145, true },
+  { 6158, false },
+  { 6167, true },
+  { 6183, true },
+  { 6199, true },
+  { 6211, true },
+  { 6225, true },
+  { 6245, true },
+  { 6260, true },
+  { 6281, true },
+  { 6293, true },
+  { 6303, true },
+  { 6315, true },
+  { 6327, true },
+  { 6336, true },
+  { 6348, true },
+  { 6367, true },
+  { 6380, true },
+  { 6391, true },
+  { 6400, true },
+  { 6414, true },
+  { 6428, true },
+  { 6444, true },
+  { 6460, true },
+  { 6480, true },
+  { 6501, true },
+  { 6515, true },
+  { 6528, true },
+  { 6538, true },
+  { 6553, true },
+  { 6563, true },
+  { 6578, true },
+  { 6596, true },
+  { 6610, true },
+  { 6622, true },
+  { 6637, true },
+  { 6651, true },
+  { 6666, true },
+  { 6676, true },
+  { 6690, true },
+  { 6707, true },
+  { 6722, true },
+  { 6736, true },
+  { 6750, true },
+  { 6766, true },
+  { 6778, true },
+  { 6790, true },
+  { 6805, true },
+  { 6819, true },
+  { 6841, true },
+  { 6853, true },
+  { 6874, true },
+  { 6886, true },
+  { 6899, true },
+  { 6911, true },
+  { 6924, true },
+  { 6939, true },
+  { 6950, true },
+  { 6966, true },
+  { 6977, true },
+  { 6989, true },
+  { 7002, true },
+  { 7022, true },
+  { 7035, true },
+  { 7053, true },
+  { 7070, true },
+  { 7094, true },
+  { 7113, true },
+  { 7124, true },
+  { 7138, true },
+  { 7154, true },
+  { 7173, true },
+  { 7186, true },
+  { 7207, true },
+  { 7227, true },
+  { 7247, true },
+  { 7260, false },
+  { 7273, true },
+  { 7285, true },
+  { 7295, true },
+  { 7308, true },
+  { 7322, true },
+  { 7338, true },
+  { 7352, true },
+  { 7368, true },
+  { 7380, true },
+  { 7394, true },
+  { 7407, true },
   { 7421, true },
-  { 7434, true },
-  { 7449, true },
-  { 7468, true },
-  { 7480, true },
-  { 7494, true },
-  { 7508, true },
-  { 7520, true },
-  { 7535, true },
-  { 7546, true },
-  { 7557, true },
-  { 7571, true },
-  { 7583, true },
+  { 7429, true },
+  { 7442, true },
+  { 7457, true },
+  { 7476, true },
+  { 7488, true },
+  { 7502, true },
+  { 7516, true },
+  { 7528, true },
+  { 7543, true },
+  { 7554, true },
+  { 7565, true },
+  { 7579, true },
   { 7591, true },
-  { 7602, true },
+  { 7599, true },
   { 7610, true },
   { 7618, true },
   { 7626, true },
   { 7634, true },
-  { 7647, true },
-  { 7654, true },
-  { 7664, true },
-  { 7677, true },
-  { 7689, true },
-  { 7702, true },
-  { 7722, true },
-  { 7734, true },
-  { 7745, true },
-  { 7763, true },
-  { 7776, true },
-  { 7785, true },
-  { 7797, true },
-  { 7811, true },
-  { 7824, true },
-  { 7835, true },
-  { 7845, true },
-  { 7856, true },
-  { 7866, true },
-  { 7877, true },
-  { 7886, true },
-  { 7895, true },
-  { 7911, true },
-  { 7927, true },
-  { 7955, true },
-  { 7974, true },
-  { 7989, true },
-  { 8009, true },
-  { 8021, true },
-  { 8033, true },
-  { 8044, true },
-  { 8055, true },
-  { 8070, true },
-  { 8090, true },
-  { 8108, true },
-  { 8118, false },
-  { 8129, true },
-  { 8139, true },
-  { 8156, true },
-  { 8167, true },
-  { 8176, true },
-  { 8187, true },
-  { 8206, true },
-  { 8217, true },
-  { 8235, true },
-  { 8261, true },
-  { 8283, true },
-  { 8297, true },
-  { 8312, true },
-  { 8326, true },
-  { 8340, true },
-  { 8355, true },
-  { 8376, true },
-  { 8386, true },
-  { 8397, true },
-  { 8418, true },
-  { 8436, true },
-  { 8449, true },
+  { 7642, true },
+  { 7655, true },
+  { 7662, true },
+  { 7672, true },
+  { 7685, true },
+  { 7697, true },
+  { 7710, true },
+  { 7730, true },
+  { 7742, true },
+  { 7753, true },
+  { 7771, true },
+  { 7784, true },
+  { 7793, true },
+  { 7805, true },
+  { 7819, true },
+  { 7832, true },
+  { 7843, true },
+  { 7853, true },
+  { 7864, true },
+  { 7874, true },
+  { 7885, true },
+  { 7894, true },
+  { 7903, true },
+  { 7919, true },
+  { 7935, true },
+  { 7963, true },
+  { 7982, true },
+  { 7997, true },
+  { 8017, true },
+  { 8029, true },
+  { 8041, true },
+  { 8052, true },
+  { 8063, true },
+  { 8078, true },
+  { 8098, true },
+  { 8116, true },
+  { 8126, false },
+  { 8137, true },
+  { 8147, true },
+  { 8164, true },
+  { 8175, true },
+  { 8184, true },
+  { 8195, true },
+  { 8214, true },
+  { 8225, true },
+  { 8243, true },
+  { 8269, true },
+  { 8291, true },
+  { 8305, true },
+  { 8320, true },
+  { 8334, true },
+  { 8348, true },
+  { 8363, true },
+  { 8384, true },
+  { 8394, true },
+  { 8405, true },
+  { 8426, true },
+  { 8444, true },
   { 8457, true },
-  { 8470, true },
-  { 8484, true },
-  { 8500, true },
-  { 8518, true },
-  { 8540, true },
-  { 8555, true },
-  { 8572, true },
-  { 8594, true },
-  { 8609, true },
-  { 8626, true },
-  { 8642, true },
-  { 8658, true },
-  { 8675, true },
-  { 8694, true },
-  { 8709, true },
-  { 8728, true },
-  { 8745, true },
-  { 8762, true },
-  { 8774, true },
-  { 8792, true },
-  { 8809, true },
-  { 8824, true },
-  { 8838, true },
-  { 8855, true },
-  { 8873, true },
-  { 8888, true },
-  { 8900, true },
-  { 8913, true },
+  { 8465, true },
+  { 8478, true },
+  { 8492, true },
+  { 8508, true },
+  { 8526, true },
+  { 8548, true },
+  { 8563, true },
+  { 8580, true },
+  { 8602, true },
+  { 8617, true },
+  { 8634, true },
+  { 8650, true },
+  { 8666, true },
+  { 8683, true },
+  { 8698, true },
+  { 8717, true },
+  { 8734, true },
+  { 8751, true },
+  { 8763, true },
+  { 8781, true },
+  { 8798, true },
+  { 8813, true },
+  { 8827, true },
+  { 8844, true },
+  { 8862, true },
+  { 8877, true },
+  { 8889, true },
+  { 8902, true },
+  { 8922, true },
   { 8933, true },
   { 8944, true },
   { 8955, true },
   { 8966, true },
   { 8977, true },
   { 8988, true },
-  { 8999, true },
-  { 9011, true },
-  { 9024, true },
+  { 9000, true },
+  { 9013, true },
+  { 9032, true },
   { 9043, true },
-  { 9054, true },
-  { 9067, true },
-  { 9081, false },
-  { 9094, false },
-  { 9103, true },
-  { 9120, true },
+  { 9056, true },
+  { 9070, false },
+  { 9083, false },
+  { 9092, true },
+  { 9109, true },
+  { 9129, true },
   { 9140, true },
-  { 9151, true },
-  { 9169, true },
-  { 9201, true },
-  { 9228, true },
-  { 9238, true },
-  { 9256, true },
-  { 9271, true },
-  { 9283, true },
-  { 9295, true },
-  { 9315, true },
-  { 9334, true },
-  { 9354, true },
-  { 9377, true },
-  { 9401, true },
+  { 9158, true },
+  { 9190, true },
+  { 9217, true },
+  { 9227, true },
+  { 9245, true },
+  { 9260, true },
+  { 9272, true },
+  { 9284, true },
+  { 9304, true },
+  { 9323, true },
+  { 9343, true },
+  { 9366, true },
+  { 9390, true },
+  { 9402, true },
   { 9413, true },
-  { 9424, true },
-  { 9436, true },
-  { 9448, true },
-  { 9464, true },
-  { 9481, true },
-  { 9500, true },
+  { 9425, true },
+  { 9437, true },
+  { 9453, true },
+  { 9470, true },
+  { 9489, true },
+  { 9503, true },
   { 9514, true },
   { 9525, true },
-  { 9536, true },
-  { 9549, true },
-  { 9561, false },
-  { 9585, true },
-  { 9601, true },
-  { 9617, true },
-  { 9629, true },
-  { 9645, true },
-  { 9662, true },
+  { 9538, true },
+  { 9550, false },
+  { 9574, true },
+  { 9590, true },
+  { 9606, true },
+  { 9618, true },
+  { 9634, true },
+  { 9651, true },
+  { 9665, true },
   { 9676, true },
-  { 9687, true },
-  { 9705, true },
-  { 9721, true },
-  { 9742, true },
-  { 9756, true },
-  { 9771, true },
-  { 9781, true },
-  { 9798, true },
-  { 9811, true },
-  { 9824, true },
+  { 9694, true },
+  { 9710, true },
+  { 9731, true },
+  { 9745, true },
+  { 9760, true },
+  { 9770, true },
+  { 9787, true },
+  { 9800, true },
+  { 9813, true },
+  { 9829, true },
   { 9840, true },
-  { 9851, true },
+  { 9852, true },
   { 9863, true },
-  { 9874, true },
-  { 9881, true },
-  { 9889, true },
-  { 9902, true },
-  { 9912, true },
-  { 9926, false },
-  { 9940, true },
-  { 9956, true },
-  { 9986, true },
-  { 10009, true },
-  { 10028, true },
-  { 10041, false },
-  { 10060, true },
-  { 10076, true },
-  { 10092, false },
-  { 10107, false },
-  { 10120, true },
-  { 10136, true },
-  { 10148, true },
-  { 10167, true },
-  { 10186, true },
-  { 10201, true },
-  { 10222, true },
-  { 10235, true },
-  { 10245, true },
-  { 10256, true },
-  { 10267, true },
-  { 10281, true },
-  { 10297, true },
-  { 10314, false },
-  { 10331, true },
-  { 10344, true },
-  { 10370, true },
-  { 10383, true },
-  { 10397, true },
-  { 10416, true },
-  { 10437, true },
-  { 10449, true },
-  { 10463, true },
-  { 10487, true },
-  { 10500, true },
-  { 10513, true },
-  { 10527, true },
-  { 10538, true },
-  { 10547, true },
-  { 10560, true },
-  { 10573, true },
-  { 10585, false },
-  { 10603, true },
-  { 10626, true },
-  { 10653, true },
-  { 10672, true },
-  { 10684, true },
-  { 10704, true },
-  { 10715, true },
-  { 10727, true },
-  { 10741, true },
-  { 10749, true },
-  { 10766, true },
-  { 10779, true },
-  { 10791, true },
-  { 10809, true },
-  { 10832, false },
-  { 10848, true },
-  { 10854, true },
-  { 10866, true },
-  { 10877, true },
-  { 10894, true },
-  { 10913, true },
-  { 10925, true },
-  { 10954, true },
-  { 10970, true },
-  { 10983, true },
-  { 10997, true },
-  { 11013, true },
-  { 11026, true },
-  { 11037, true },
-  { 11046, true },
-  { 11058, true },
-  { 11074, true },
-  { 11088, true },
-  { 11104, true },
-  { 11118, true },
-  { 11132, true },
-  { 11152, true },
-  { 11164, true },
-  { 11180, true },
-  { 11194, false },
-  { 11207, true },
-  { 11222, true },
-  { 11236, true },
-  { 11245, true },
-  { 11257, true },
-  { 11275, true },
-  { 11290, true },
-  { 11303, true },
-  { 11313, true },
-  { 11327, true },
-  { 11353, true },
-  { 11363, true },
-  { 11377, true },
-  { 11391, true },
-  { 11409, true },
-  { 11427, false },
-  { 11443, true },
-  { 11453, true },
-  { 11464, true },
-  { 11480, true },
-  { 11488, true },
-  { 11496, true },
-  { 11507, true },
-  { 11517, true },
-  { 11532, true },
-  { 11551, true },
-  { 11564, true },
-  { 11579, true },
-  { 11597, false },
-  { 11612, true },
-  { 11632, true },
-  { 11643, true },
-  { 11655, true },
-  { 11675, false },
-  { 11689, true },
-  { 11702, true },
-  { 11720, true },
-  { 11734, true },
-  { 11747, true },
-  { 11759, true },
-  { 11773, true },
-  { 11787, true },
-  { 11799, true },
-  { 11810, true },
-  { 11821, true },
-  { 11834, true },
-  { 11849, true },
-  { 11860, true },
-  { 11871, true },
-  { 11882, true },
-  { 11892, true },
-  { 11913, true },
+  { 9870, true },
+  { 9878, true },
+  { 9891, true },
+  { 9901, true },
+  { 9915, false },
+  { 9929, true },
+  { 9945, true },
+  { 9975, true },
+  { 9998, true },
+  { 10011, true },
+  { 10030, true },
+  { 10043, false },
+  { 10062, true },
+  { 10078, true },
+  { 10094, false },
+  { 10109, false },
+  { 10122, true },
+  { 10138, true },
+  { 10150, true },
+  { 10169, true },
+  { 10188, true },
+  { 10203, true },
+  { 10224, true },
+  { 10237, true },
+  { 10247, true },
+  { 10258, true },
+  { 10269, true },
+  { 10283, true },
+  { 10299, true },
+  { 10316, false },
+  { 10333, true },
+  { 10346, true },
+  { 10372, true },
+  { 10385, true },
+  { 10399, true },
+  { 10418, true },
+  { 10439, true },
+  { 10451, true },
+  { 10465, true },
+  { 10489, true },
+  { 10502, true },
+  { 10515, true },
+  { 10529, true },
+  { 10540, true },
+  { 10549, true },
+  { 10562, true },
+  { 10575, true },
+  { 10587, false },
+  { 10605, true },
+  { 10628, true },
+  { 10655, true },
+  { 10674, true },
+  { 10686, true },
+  { 10706, true },
+  { 10717, true },
+  { 10729, true },
+  { 10743, true },
+  { 10751,