Merge m-c to autoland a=merge
authorWes Kocher <wkocher@mozilla.com>
Fri, 17 Feb 2017 13:50:13 -0800
changeset 372692 3f975da9fe342bb87f168fdd3c83dffc5a9ed4b9
parent 372691 abee64d2e5ef553c6df7265b240040a129dd3d99 (current diff)
parent 372650 d11c29c1db3a1bc96ad5792ebf8a89b2fbadcf85 (diff)
child 372693 f965e6ecfcb363d6b9a681647b80d2780d05c86a
push id10863
push userjlorenzo@mozilla.com
push dateMon, 06 Mar 2017 23:02:23 +0000
treeherdermozilla-aurora@0931190cd725 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone54.0a1
Merge m-c to autoland a=merge MozReview-Commit-ID: 7m1sarjIoLM
testing/web-platform/meta/FileAPI/blob/Blob-close.html.ini
testing/web-platform/meta/IndexedDB/open-request-queue.html.ini
testing/web-platform/meta/XMLHttpRequest/setrequestheader-bogus-value.htm.ini
testing/web-platform/meta/dom/events/ProgressEvent.html.ini
testing/web-platform/meta/eventsource/interfaces.html.ini
testing/web-platform/meta/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html.ini
testing/web-platform/meta/html/semantics/forms/the-input-element/time-2.html.ini
testing/web-platform/meta/html/semantics/forms/the-input-element/week.html.ini
testing/web-platform/meta/html/semantics/scripting-1/the-template-element/template-element/template-as-a-descendant.html.ini
testing/web-platform/meta/html/syntax/parsing/html5lib_innerHTML_foreign-fragment.html.ini
testing/web-platform/meta/html/syntax/parsing/html5lib_template.html.ini
testing/web-platform/meta/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_autocomplete.html.ini
testing/web-platform/meta/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_list.html.ini
testing/web-platform/meta/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_valueasdate.html.ini
testing/web-platform/meta/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_valueasnumber.html.ini
testing/web-platform/meta/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/select_length.html.ini
testing/web-platform/meta/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/select_selectedindex.html.ini
testing/web-platform/meta/old-tests/submission/Infraware/Forms/contents/Forms/keygen_labels.html.ini
testing/web-platform/meta/old-tests/submission/Opera/script_scheduling/096.html.ini
testing/web-platform/meta/old-tests/submission/Opera/script_scheduling/098.html.ini
testing/web-platform/meta/old-tests/submission/Opera/script_scheduling/128.html.ini
testing/web-platform/meta/preload/download_resources.html.ini
testing/web-platform/meta/preload/dynamic_adding_preload.html.ini
testing/web-platform/meta/preload/fetch_destination.https.html.ini
testing/web-platform/meta/preload/link_header_preload.html.ini
testing/web-platform/meta/preload/onerror_event.html.ini
testing/web-platform/meta/preload/onload_event.html.ini
testing/web-platform/meta/preload/preload_with_type.html.ini
testing/web-platform/meta/preload/single_download_preload.html.ini
testing/web-platform/meta/presentation-api/controlling-ua/getAvailability_mixedcontent.https.html.ini
testing/web-platform/meta/presentation-api/controlling-ua/getAvailability_sandboxing_error.html.ini
testing/web-platform/meta/presentation-api/controlling-ua/reconnectToPresentation_mixedcontent.https.html.ini
testing/web-platform/meta/presentation-api/controlling-ua/reconnectToPresentation_sandboxing_error.html.ini
testing/web-platform/meta/selection/addRange.html.ini
testing/web-platform/meta/selection/collapse.html.ini
testing/web-platform/meta/selection/extend.html.ini
testing/web-platform/meta/streams/byte-length-queuing-strategy.https.html.ini
testing/web-platform/meta/streams/count-queuing-strategy.https.html.ini
testing/web-platform/meta/streams/readable-streams/bad-strategies.https.html.ini
testing/web-platform/meta/streams/readable-streams/bad-underlying-sources.https.html.ini
testing/web-platform/meta/streams/readable-streams/brand-checks.https.html.ini
testing/web-platform/meta/streams/readable-streams/cancel.https.html.ini
testing/web-platform/meta/streams/readable-streams/count-queuing-strategy-integration.https.html.ini
testing/web-platform/meta/streams/readable-streams/garbage-collection.https.html.ini
testing/web-platform/meta/streams/readable-streams/general.https.html.ini
testing/web-platform/meta/streams/readable-streams/pipe-through.https.html.ini
testing/web-platform/meta/streams/readable-streams/readable-stream-reader.https.html.ini
testing/web-platform/meta/streams/readable-streams/tee.https.html.ini
testing/web-platform/meta/streams/readable-streams/templated.https.html.ini
testing/web-platform/meta/vr/idlharness.html.ini
testing/web-platform/tests/FileAPI/blob/Blob-close.html
testing/web-platform/tests/docs/configuration.md
testing/web-platform/tests/docs/css-metadata.md
testing/web-platform/tests/docs/css-naming.md
testing/web-platform/tests/docs/css-user-styles.md
testing/web-platform/tests/docs/github-101.md
testing/web-platform/tests/docs/lint-tool.md
testing/web-platform/tests/docs/manual-test.md
testing/web-platform/tests/docs/reftests.md
testing/web-platform/tests/docs/review-checklist.md
testing/web-platform/tests/docs/review-process.md
testing/web-platform/tests/docs/running_tests.md
testing/web-platform/tests/docs/submission-process.md
testing/web-platform/tests/docs/test-format-guidelines.md
testing/web-platform/tests/docs/test-style-guidelines.md
testing/web-platform/tests/docs/test-templates.md
testing/web-platform/tests/dom/events/ProgressEvent.html
testing/web-platform/tests/fullscreen/api/blank.html
testing/web-platform/tests/html/browsers/browsing-the-web/history-traversal/MANIFEST
testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/MANIFEST
testing/web-platform/tests/html/browsers/browsing-the-web/scroll-to-fragid/MANIFEST
testing/web-platform/tests/html/browsers/browsing-the-web/unloading-documents/MANIFEST
testing/web-platform/tests/html/browsers/browsing-the-web/unloading-documents/prompt/MANIFEST
testing/web-platform/tests/html/browsers/browsing-the-web/unloading-documents/unload/MANIFEST
testing/web-platform/tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html
testing/web-platform/tests/html/browsers/windows/browsing-context-names/MANIFEST
testing/web-platform/tests/html/browsers/windows/nested-browsing-contexts/MANIFEST
testing/web-platform/tests/html/rendering/bindings/the-button-element-0/.gitkeep
testing/web-platform/tests/html/rendering/bindings/the-keygen-element-0/.gitkeep
testing/web-platform/tests/html/semantics/forms/the-keygen-element/.gitkeep
testing/web-platform/tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner-ref.html
testing/web-platform/tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner.html
testing/web-platform/tests/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_autocomplete.html
testing/web-platform/tests/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_list.html
testing/web-platform/tests/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_valueasdate.html
testing/web-platform/tests/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_valueasnumber.html
testing/web-platform/tests/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/select_length.html
testing/web-platform/tests/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/select_selectedindex.html
testing/web-platform/tests/old-tests/submission/Infraware/Forms/contents/Forms/keygen_checkvalidity.html
testing/web-platform/tests/old-tests/submission/Infraware/Forms/contents/Forms/keygen_labels.html
testing/web-platform/tests/old-tests/submission/Opera/script_scheduling/098.html
testing/web-platform/tests/preload/avoid_delaying_onload_link_preload.html
testing/web-platform/tests/preload/delaying_onload_link_preload_after_discovery.html
testing/web-platform/tests/preload/download_resources.html
testing/web-platform/tests/preload/dynamic_adding_preload.html
testing/web-platform/tests/preload/fetch_destination.https.html
testing/web-platform/tests/preload/link_header_preload.html
testing/web-platform/tests/preload/link_header_preload.html.headers
testing/web-platform/tests/preload/link_header_preload_delay_onload.html
testing/web-platform/tests/preload/link_header_preload_delay_onload.html.headers
testing/web-platform/tests/preload/onerror_event.html
testing/web-platform/tests/preload/onload_event.html
testing/web-platform/tests/preload/preload_with_type.html
testing/web-platform/tests/preload/single_download_late_used_preload.html
testing/web-platform/tests/preload/single_download_preload.html
testing/web-platform/tests/presentation-api/controlling-ua/getAvailability_mixedcontent.https.html
testing/web-platform/tests/presentation-api/controlling-ua/getAvailability_sandboxing_error.html
testing/web-platform/tests/presentation-api/controlling-ua/reconnectToPresentation_mixedcontent.https.html
testing/web-platform/tests/presentation-api/controlling-ua/reconnectToPresentation_sandboxing_error.html
testing/web-platform/tests/presentation-api/controlling-ua/startNewPresentation_mixedcontent-manual.https.html
testing/web-platform/tests/presentation-api/controlling-ua/startNewPresentation_mixedcontent_multiple-manual.https.html
testing/web-platform/tests/presentation-api/controlling-ua/startNewPresentation_sandboxing_error-manual.html
testing/web-platform/tests/selection/addRange.html
testing/web-platform/tests/selection/collapse.html
testing/web-platform/tests/selection/extend.html
testing/web-platform/tests/streams/byte-length-queuing-strategy.https.html
testing/web-platform/tests/streams/count-queuing-strategy.https.html
testing/web-platform/tests/streams/readable-streams/bad-strategies.https.html
testing/web-platform/tests/streams/readable-streams/bad-underlying-sources.https.html
testing/web-platform/tests/streams/readable-streams/brand-checks.https.html
testing/web-platform/tests/streams/readable-streams/cancel.https.html
testing/web-platform/tests/streams/readable-streams/count-queuing-strategy-integration.https.html
testing/web-platform/tests/streams/readable-streams/garbage-collection.https.html
testing/web-platform/tests/streams/readable-streams/general.https.html
testing/web-platform/tests/streams/readable-streams/pipe-through.https.html
testing/web-platform/tests/streams/readable-streams/readable-stream-reader.https.html
testing/web-platform/tests/streams/readable-streams/tee.https.html
testing/web-platform/tests/streams/readable-streams/templated.https.html
testing/web-platform/tests/streams/resources/test-initializer.js
testing/web-platform/tests/vr/idlharness.html
testing/web-platform/tests/websockets/Close-0.htm
testing/web-platform/tests/websockets/Close-NaN.htm
testing/web-platform/tests/websockets/Close-clamp.htm
testing/web-platform/tests/websockets/Close-null.htm
testing/web-platform/tests/websockets/Close-string.htm
testing/web-platform/tests/websockets/Secure-Close-0.htm
testing/web-platform/tests/websockets/Secure-Close-NaN.htm
testing/web-platform/tests/websockets/Secure-Close-null.htm
testing/web-platform/tests/websockets/Secure-Close-string.htm
--- a/accessible/atk/AccessibleWrap.cpp
+++ b/accessible/atk/AccessibleWrap.cpp
@@ -8,16 +8,17 @@
 
 #include "Accessible-inl.h"
 #include "ApplicationAccessibleWrap.h"
 #include "InterfaceInitFuncs.h"
 #include "nsAccUtils.h"
 #include "mozilla/a11y/PDocAccessible.h"
 #include "OuterDocAccessible.h"
 #include "ProxyAccessible.h"
+#include "DocAccessibleParent.h"
 #include "RootAccessible.h"
 #include "TableAccessible.h"
 #include "TableCellAccessible.h"
 #include "nsMai.h"
 #include "nsMaiHyperlink.h"
 #include "nsString.h"
 #include "nsStateMap.h"
 #include "mozilla/a11y/Platform.h"
--- a/accessible/generic/OuterDocAccessible.cpp
+++ b/accessible/generic/OuterDocAccessible.cpp
@@ -25,16 +25,22 @@ using namespace mozilla::a11y;
 ////////////////////////////////////////////////////////////////////////////////
 
 OuterDocAccessible::
   OuterDocAccessible(nsIContent* aContent, DocAccessible* aDoc) :
   AccessibleWrap(aContent, aDoc)
 {
   mType = eOuterDocType;
 
+#ifdef XP_WIN
+  if (DocAccessibleParent* remoteDoc = RemoteChildDoc()) {
+    remoteDoc->SendParentCOMProxy();
+  }
+#endif
+
   // Request document accessible for the content document to make sure it's
   // created. It will appended to outerdoc accessible children asynchronously.
   nsIDocument* outerDoc = mContent->GetUncomposedDoc();
   if (outerDoc) {
     nsIDocument* innerDoc = outerDoc->GetSubDocumentFor(mContent);
     if (innerDoc)
       GetAccService()->GetDocAccessible(innerDoc);
   }
@@ -202,17 +208,17 @@ OuterDocAccessible::GetChildAt(uint32_t 
   if (!remoteChild) {
     return nullptr;
   }
   return WrapperFor(remoteChild);
 }
 
 #endif // defined(XP_WIN)
 
-ProxyAccessible*
+DocAccessibleParent*
 OuterDocAccessible::RemoteChildDoc() const
 {
   dom::TabParent* tab = dom::TabParent::GetFrom(GetContent());
   if (!tab)
     return nullptr;
 
   return tab->GetTopLevelDocAccessible();
 }
--- a/accessible/generic/OuterDocAccessible.h
+++ b/accessible/generic/OuterDocAccessible.h
@@ -5,17 +5,17 @@
 
 #ifndef MOZILLA_A11Y_OUTERDOCACCESSIBLE_H_
 #define MOZILLA_A11Y_OUTERDOCACCESSIBLE_H_
 
 #include "AccessibleWrap.h"
 
 namespace mozilla {
 namespace a11y {
-class ProxyAccessible;
+class DocAccessibleParent;
 
 /**
  * Used for <browser>, <frame>, <iframe>, <page> or editor> elements.
  * 
  * In these variable names, "outer" relates to the OuterDocAccessible as
  * opposed to the DocAccessibleWrap which is "inner". The outer node is
  * a something like tags listed above, whereas the inner node corresponds to
  * the inner document root.
@@ -23,17 +23,17 @@ class ProxyAccessible;
 
 class OuterDocAccessible final : public AccessibleWrap
 {
 public:
   OuterDocAccessible(nsIContent* aContent, DocAccessible* aDoc);
 
   NS_DECL_ISUPPORTS_INHERITED
 
-  ProxyAccessible* RemoteChildDoc() const;
+  DocAccessibleParent* RemoteChildDoc() const;
 
   // Accessible
   virtual void Shutdown() override;
   virtual mozilla::a11y::role NativeRole() override;
   virtual Accessible* ChildAtPoint(int32_t aX, int32_t aY,
                                    EWhichChildAtPoint aWhichChild) override;
 
   virtual bool InsertChildAt(uint32_t aIdx, Accessible* aChild) override;
--- a/accessible/ipc/DocAccessibleParent.cpp
+++ b/accessible/ipc/DocAccessibleParent.cpp
@@ -24,17 +24,17 @@ namespace a11y {
 
 mozilla::ipc::IPCResult
 DocAccessibleParent::RecvShowEvent(const ShowEventData& aData,
                                    const bool& aFromUser)
 {
   if (mShutdown)
     return IPC_OK();
 
-  MOZ_DIAGNOSTIC_ASSERT(CheckDocTree());
+  MOZ_ASSERT(CheckDocTree());
 
   if (aData.NewTree().IsEmpty()) {
     NS_ERROR("no children being added");
     return IPC_FAIL_NO_REASON(this);
   }
 
   ProxyAccessible* parent = GetAccessible(aData.ID());
 
@@ -70,17 +70,17 @@ DocAccessibleParent::RecvShowEvent(const
 
 #ifdef DEBUG
   for (uint32_t i = 0; i < consumed; i++) {
     uint64_t id = aData.NewTree()[i].ID();
     MOZ_ASSERT(mAccessibles.GetEntry(id));
   }
 #endif
 
-  MOZ_DIAGNOSTIC_ASSERT(CheckDocTree());
+  MOZ_ASSERT(CheckDocTree());
 
   ProxyAccessible* target = parent->ChildAt(newChildIdx);
   ProxyShowHideEvent(target, parent, true, aFromUser);
 
   if (!nsCoreUtils::AccEventObserversExist()) {
     return IPC_OK();
   }
 
@@ -189,17 +189,17 @@ DocAccessibleParent::RecvHideEvent(const
     nsIDOMNode* node = nullptr;
     event = new xpcAccHideEvent(type, xpcAcc, doc, node, aFromUser, xpcParent,
                                 xpcNext, xpcPrev);
   }
 
   parent->RemoveChild(root);
   root->Shutdown();
 
-  MOZ_DIAGNOSTIC_ASSERT(CheckDocTree());
+  MOZ_ASSERT(CheckDocTree());
 
   if (event) {
     nsCoreUtils::DispatchAccEvent(Move(event));
   }
 
   return IPC_OK();
 }
 
@@ -386,23 +386,23 @@ mozilla::ipc::IPCResult
 DocAccessibleParent::RecvBindChildDoc(PDocAccessibleParent* aChildDoc, const uint64_t& aID)
 {
   // One document should never directly be the child of another.
   // We should always have at least an outer doc accessible in between.
   MOZ_ASSERT(aID);
   if (!aID)
     return IPC_FAIL(this, "ID is 0!");
 
-  MOZ_DIAGNOSTIC_ASSERT(CheckDocTree());
+  MOZ_ASSERT(CheckDocTree());
 
   auto childDoc = static_cast<DocAccessibleParent*>(aChildDoc);
   childDoc->Unbind();
   ipc::IPCResult result = AddChildDoc(childDoc, aID, false);
   MOZ_ASSERT(result);
-  MOZ_DIAGNOSTIC_ASSERT(CheckDocTree());
+  MOZ_ASSERT(CheckDocTree());
   if (!result) {
     return result;
   }
   return IPC_OK();
 }
 
 ipc::IPCResult
 DocAccessibleParent::AddChildDoc(DocAccessibleParent* aChildDoc,
@@ -524,78 +524,92 @@ DocAccessibleParent::GetXPCAccessible(Pr
 {
   xpcAccessibleDocument* doc = GetAccService()->GetXPCDocument(this);
   MOZ_ASSERT(doc);
 
   return doc->GetXPCAccessible(aProxy);
 }
 
 #if defined(XP_WIN)
+void
+DocAccessibleParent::MaybeInitWindowEmulation()
+{
+  if (!nsWinUtils::IsWindowEmulationStarted()) {
+    return;
+  }
+
+  // XXX get the bounds from the tabParent instead of poking at accessibles
+  // which might not exist yet.
+  Accessible* outerDoc = OuterDocOfRemoteBrowser();
+  if (!outerDoc) {
+    return;
+  }
+
+  RootAccessible* rootDocument = outerDoc->RootAccessible();
+  MOZ_ASSERT(rootDocument);
+
+  bool isActive = true;
+  nsIntRect rect(CW_USEDEFAULT, CW_USEDEFAULT, 0, 0);
+  if (Compatibility::IsDolphin()) {
+    rect = Bounds();
+    nsIntRect rootRect = rootDocument->Bounds();
+    rect.x = rootRect.x - rect.x;
+    rect.y -= rootRect.y;
+
+    auto tab = static_cast<dom::TabParent*>(Manager());
+    tab->GetDocShellIsActive(&isActive);
+  }
+
+  IAccessibleHolder hWndAccHolder;
+  HWND parentWnd = reinterpret_cast<HWND>(rootDocument->GetNativeWindow());
+  HWND hWnd = nsWinUtils::CreateNativeWindow(kClassNameTabContent,
+                                             parentWnd, rect.x, rect.y,
+                                             rect.width, rect.height,
+                                             isActive);
+  if (hWnd) {
+    // Attach accessible document to the emulated native window
+    ::SetPropW(hWnd, kPropNameDocAccParent, (HANDLE)this);
+    SetEmulatedWindowHandle(hWnd);
+    IAccessible* rawHWNDAcc = nullptr;
+    if (SUCCEEDED(::AccessibleObjectFromWindow(hWnd, OBJID_WINDOW,
+                                               IID_IAccessible,
+                                               (void**)&rawHWNDAcc))) {
+      hWndAccHolder.Set(IAccessibleHolder::COMPtrType(rawHWNDAcc));
+    }
+  }
+
+  Unused << SendEmulatedWindow(reinterpret_cast<uintptr_t>(mEmulatedWindowHandle),
+                               hWndAccHolder);
+}
+
 /**
  * @param aCOMProxy COM Proxy to the document in the content process.
  */
 void
-DocAccessibleParent::SetCOMProxy(const RefPtr<IAccessible>& aCOMProxy)
+DocAccessibleParent::SendParentCOMProxy()
 {
-  SetCOMInterface(aCOMProxy);
-
   // Make sure that we're not racing with a tab shutdown
   auto tab = static_cast<dom::TabParent*>(Manager());
   MOZ_ASSERT(tab);
   if (tab->IsDestroyed()) {
     return;
   }
 
   Accessible* outerDoc = OuterDocOfRemoteBrowser();
+  if (!outerDoc) {
+    return;
+  }
 
   IAccessible* rawNative = nullptr;
-  if (outerDoc) {
-    outerDoc->GetNativeInterface((void**) &rawNative);
-    MOZ_ASSERT(rawNative);
-  }
+  outerDoc->GetNativeInterface((void**) &rawNative);
+  MOZ_ASSERT(rawNative);
 
   IAccessibleHolder::COMPtrType ptr(rawNative);
   IAccessibleHolder holder(Move(ptr));
-
-  IAccessibleHolder hWndAccHolder;
-  if (nsWinUtils::IsWindowEmulationStarted()) {
-    RootAccessible* rootDocument = outerDoc->RootAccessible();
-    MOZ_ASSERT(rootDocument);
-
-    bool isActive = true;
-    nsIntRect rect(CW_USEDEFAULT, CW_USEDEFAULT, 0, 0);
-    if (Compatibility::IsDolphin()) {
-      rect = Bounds();
-      nsIntRect rootRect = rootDocument->Bounds();
-      rect.x = rootRect.x - rect.x;
-      rect.y -= rootRect.y;
-      tab->GetDocShellIsActive(&isActive);
-    }
-
-    HWND parentWnd = reinterpret_cast<HWND>(rootDocument->GetNativeWindow());
-    HWND hWnd = nsWinUtils::CreateNativeWindow(kClassNameTabContent,
-                                               parentWnd, rect.x, rect.y,
-                                               rect.width, rect.height,
-                                               isActive);
-    if (hWnd) {
-      // Attach accessible document to the emulated native window
-      ::SetPropW(hWnd, kPropNameDocAccParent, (HANDLE)this);
-      SetEmulatedWindowHandle(hWnd);
-      IAccessible* rawHWNDAcc = nullptr;
-      if (SUCCEEDED(::AccessibleObjectFromWindow(hWnd, OBJID_WINDOW,
-                                                 IID_IAccessible,
-                                                 (void**)&rawHWNDAcc))) {
-        hWndAccHolder.Set(IAccessibleHolder::COMPtrType(rawHWNDAcc));
-      }
-    }
-  }
-
-  Unused << SendEmulatedWindow(reinterpret_cast<uintptr_t>(mEmulatedWindowHandle),
-                               hWndAccHolder);
-  Unused << SendParentCOMProxy(holder);
+  Unused << PDocAccessibleParent::SendParentCOMProxy(holder);
 }
 
 void
 DocAccessibleParent::SetEmulatedWindowHandle(HWND aWindowHandle)
 {
   if (!aWindowHandle && mEmulatedWindowHandle && IsTopLevel()) {
     ::DestroyWindow(mEmulatedWindowHandle);
   }
--- a/accessible/ipc/DocAccessibleParent.h
+++ b/accessible/ipc/DocAccessibleParent.h
@@ -103,17 +103,17 @@ public:
 
     SetParent(nullptr);
   }
 
   virtual mozilla::ipc::IPCResult RecvShutdown() override;
   void Destroy();
   virtual void ActorDestroy(ActorDestroyReason aWhy) override
   {
-    MOZ_DIAGNOSTIC_ASSERT(CheckDocTree());
+    MOZ_ASSERT(CheckDocTree());
     if (!mShutdown)
       Destroy();
   }
 
   /*
    * Return the main processes representation of the parent document (if any)
    * of the document this object represents.
    */
@@ -167,17 +167,18 @@ public:
 
   size_t ChildDocCount() const { return mChildDocs.Length(); }
   const DocAccessibleParent* ChildDocAt(size_t aIdx) const
   { return const_cast<DocAccessibleParent*>(this)->ChildDocAt(aIdx); }
   DocAccessibleParent* ChildDocAt(size_t aIdx)
     { return LiveDocs().Get(mChildDocs[aIdx]); }
 
 #if defined(XP_WIN)
-  void SetCOMProxy(const RefPtr<IAccessible>& aCOMProxy);
+  void MaybeInitWindowEmulation();
+  void SendParentCOMProxy();
 
   virtual mozilla::ipc::IPCResult RecvGetWindowedPluginIAccessible(
       const WindowsHandle& aHwnd, IAccessibleHolder* aPluginCOMProxy) override;
 
   /**
    * Set emulated native window handle for a document.
    * @param aWindowHandle emulated native window handle
    */
--- a/accessible/ipc/win/ProxyAccessible.h
+++ b/accessible/ipc/win/ProxyAccessible.h
@@ -34,25 +34,24 @@ public:
   ~ProxyAccessible()
   {
     MOZ_COUNT_DTOR(ProxyAccessible);
   }
 
 #include "mozilla/a11y/ProxyAccessibleShared.h"
 
   bool GetCOMInterface(void** aOutAccessible) const;
+  void SetCOMInterface(const RefPtr<IAccessible>& aIAccessible)
+  { mCOMProxy = aIAccessible; }
 
 protected:
   explicit ProxyAccessible(DocAccessibleParent* aThisAsDoc)
     : ProxyAccessibleBase(aThisAsDoc)
   { MOZ_COUNT_CTOR(ProxyAccessible); }
 
-  void SetCOMInterface(const RefPtr<IAccessible>& aIAccessible)
-  { mCOMProxy = aIAccessible; }
-
 private:
   RefPtr<IAccessible> mCOMProxy;
 };
 
 }
 }
 
 #endif
--- a/accessible/mac/mozAccessible.mm
+++ b/accessible/mac/mozAccessible.mm
@@ -8,16 +8,17 @@
 #import "MacUtils.h"
 #import "mozView.h"
 
 #include "Accessible-inl.h"
 #include "nsAccUtils.h"
 #include "nsIAccessibleRelation.h"
 #include "nsIAccessibleEditableText.h"
 #include "nsIPersistentProperties2.h"
+#include "DocAccessibleParent.h"
 #include "Relation.h"
 #include "Role.h"
 #include "RootAccessible.h"
 #include "TableAccessible.h"
 #include "TableCellAccessible.h"
 #include "mozilla/a11y/PDocAccessible.h"
 #include "OuterDocAccessible.h"
 
--- a/accessible/windows/msaa/ServiceProvider.cpp
+++ b/accessible/windows/msaa/ServiceProvider.cpp
@@ -2,17 +2,16 @@
 /* vim: set ts=8 sts=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/. */
 
 #include "ServiceProvider.h"
 
 #include "ApplicationAccessibleWrap.h"
-#include "Compatibility.h"
 #include "DocAccessible.h"
 #include "nsAccUtils.h"
 #include "nsCoreUtils.h"
 #include "Relation.h"
 #include "uiaRawElmProvider.h"
 
 #include "mozilla/Preferences.h"
 #include "nsIDocShell.h"
@@ -67,18 +66,20 @@ ServiceProvider::QueryService(REFGUID aG
       return E_NOINTERFACE;
 
     *aInstancePtr = static_cast<IAccessible*>(tabDoc);
     (reinterpret_cast<IUnknown*>(*aInstancePtr))->AddRef();
     return S_OK;
   }
 
   // Can get to IAccessibleApplication from any node via QS
+  // Note: in case of JAWS we want to check if aIID is
+  // IID_IAccessibleApplication.
   if (aGuidService == IID_IAccessibleApplication ||
-      (Compatibility::IsJAWS() && aIID == IID_IAccessibleApplication)) {
+      aIID == IID_IAccessibleApplication) {
     ApplicationAccessibleWrap* applicationAcc =
       static_cast<ApplicationAccessibleWrap*>(ApplicationAcc());
     if (!applicationAcc)
       return E_NOINTERFACE;
 
     return applicationAcc->QueryInterface(aIID, aInstancePtr);
   }
 
--- a/browser/app/blocklist.xml
+++ b/browser/app/blocklist.xml
@@ -2264,16 +2264,26 @@
       <match exp="(NPSWF32\.dll)|(Flash\ Player\.plugin)" name="filename"/>
       <infoURL>https://get.adobe.com/flashplayer/</infoURL>
       <versionRange maxVersion="10.3.183.18.999" minVersion="10.3" severity="0" vulnerabilitystatus="1">
         <targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
           <versionRange maxVersion="17.0.*" minVersion="17.0.4"/>
         </targetApplication>
       </versionRange>
     </pluginItem>
+    <pluginItem blockID="3f136e56-4c93-4619-8c0d-d86258c1065d">
+      <match exp="(nppdf32\.dll)|(AdobePDFViewerNPAPI\.plugin)" name="filename"/>
+      <infoURL>https://get.adobe.com/reader/</infoURL>
+      <versionRange maxVersion="15.006.30244" minVersion="15.006" severity="1" vulnerabilitystatus="1"/>
+    </pluginItem>
+    <pluginItem blockID="43b45ad8-a373-42c1-89c6-64e2746885e5">
+      <match exp="(nppdf32\.dll)|(AdobePDFViewerNPAPI\.plugin)" name="filename"/>
+      <infoURL>https://get.adobe.com/reader/</infoURL>
+      <versionRange maxVersion="15.020.20042" minVersion="15.020" severity="1" vulnerabilitystatus="1"/>
+    </pluginItem>
     <pluginItem blockID="p366">
       <match exp="Scorch\.plugin" name="filename"/>
       <versionRange maxVersion="6.2.0" minVersion="6.2.0" severity="1"/>
     </pluginItem>
     <pluginItem blockID="p936" os="Linux">
       <match exp="libflashplayer\.so" name="filename"/>
       <infoURL>https://get.adobe.com/flashplayer/</infoURL>
       <versionRange maxVersion="11.2.202.480" minVersion="11.2.202.468" severity="0" vulnerabilitystatus="1"/>
@@ -2344,16 +2354,21 @@
       <match exp="Java\(TM\) Platform SE 7 U(1[6-9]|2[0-4])(\s[^\d\._U]|$)" name="name"/>
       <match exp="npjp2\.dll" name="filename"/>
       <versionRange severity="0" vulnerabilitystatus="1">
         <targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
           <versionRange maxVersion="*" minVersion="17.0"/>
         </targetApplication>
       </versionRange>
     </pluginItem>
+    <pluginItem blockID="59c31ade-88d6-4b22-8601-5316f82e3977">
+      <match exp="(nppdf32\.dll)|(AdobePDFViewerNPAPI\.plugin)" name="filename"/>
+      <infoURL>https://get.adobe.com/reader/</infoURL>
+      <versionRange maxVersion="11.0.18" minVersion="11.0" severity="1" vulnerabilitystatus="1"/>
+    </pluginItem>
     <pluginItem blockID="p1004">
       <match exp="Unity Web Player\.plugin" name="filename"/>
       <match exp="^($|Unity Web Player version 5.0(\.([0-2]|3f1))?[^0-9.])" name="description"/>
       <versionRange severity="0" vulnerabilitystatus="1"/>
     </pluginItem>
     <pluginItem blockID="p459">
       <match exp="JavaAppletPlugin\.plugin" name="filename"/>
       <versionRange maxVersion="Java 7 Update 44" minVersion="Java 7 Update 25" severity="0" vulnerabilitystatus="1">
@@ -2804,17 +2819,17 @@
     </pluginItem>
     <pluginItem blockID="p574">
       <match exp="NPDjVu\.plugin" name="filename"/>
       <versionRange maxVersion="6.1.1" minVersion="0" severity="0" vulnerabilitystatus="1"/>
     </pluginItem>
     <pluginItem blockID="p28">
       <match exp="NPFFAddOn.dll" name="filename"/>
     </pluginItem>
-    <pluginItem blockID="p1421">
+    <pluginItem blockID="p1421" os="Linux">
       <match exp="libflashplayer\.so" name="filename"/>
       <infoURL>https://get.adobe.com/flashplayer/</infoURL>
       <versionRange maxVersion="23.0.0.207" minVersion="11.2.202.643" severity="0" vulnerabilitystatus="1"/>
     </pluginItem>
     <pluginItem blockID="p302">
       <match exp="Java\(TM\) Plug-in 1\.6\.0_(39|40|41)([^\d\._]|$)" name="name"/>
       <match exp="libnpjp2\.so" name="filename"/>
       <versionRange severity="0" vulnerabilitystatus="1">
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -1699,19 +1699,18 @@
               }
               if (!isRemote && aBrowser.contentWindow.opener != aOptions.opener) {
                 throw new Error("Cannot change opener on an already non-remote browser!");
               }
             }
 
             // Abort if we're not going to change anything
             let currentRemoteType = aBrowser.getAttribute("remoteType");
-            if (isRemote == aShouldBeRemote && !aOptions.newFrameloader && !aOptions.freshProcess &&
-                (!isRemote || currentRemoteType == aOptions.remoteType) &&
-                !aBrowser.frameLoader.isFreshProcess) {
+            if (isRemote == aShouldBeRemote && !aOptions.newFrameloader &&
+                (!isRemote || currentRemoteType == aOptions.remoteType)) {
               return false;
             }
 
             let tab = this.getTabForBrowser(aBrowser);
             let evt = document.createEvent("Events");
             evt.initEvent("BeforeTabRemotenessChange", true, false);
             tab.dispatchEvent(evt);
 
@@ -1760,28 +1759,18 @@
             }
 
             if (aOptions.opener) {
               // Set the opener window on the browser, such that when the frame
               // loader is created the opener is set correctly.
               aBrowser.presetOpenerWindow(aOptions.opener);
             }
 
-            // Set the freshProcess attribute so that the frameloader knows to
-            // create a new process
-            if (aOptions.freshProcess) {
-              aBrowser.setAttribute("freshProcess", "true");
-            }
-
             parent.appendChild(aBrowser);
 
-            // Remove the freshProcess attribute if we set it, as we don't
-            // want it to apply for the next time the frameloader is created
-            aBrowser.removeAttribute("freshProcess");
-
             aBrowser.userTypedValue = oldUserTypedValue;
             if (hadStartedLoad) {
               aBrowser.urlbarChangeTracker.startedLoad();
             }
 
             aBrowser.droppedLinkHandler = droppedLinkHandler;
 
             // Switching a browser's remoteness will create a new frameLoader.
@@ -1845,25 +1834,33 @@
         <parameter name="aOptions"/>
         <body>
           <![CDATA[
             aOptions = aOptions || {};
 
             if (!gMultiProcessBrowser)
               return this.updateBrowserRemoteness(aBrowser, false);
 
+            // If we're in a LargeAllocation process, we prefer switching back
+            // into a normal content process, as that way we can clean up the
+            // L-A process.
+            let preferredRemoteType = aBrowser.remoteType;
+            if (aBrowser.remoteType == E10SUtils.LARGE_ALLOCATION_REMOTE_TYPE) {
+              preferredRemoteType = E10SUtils.DEFAULT_REMOTE_TYPE;
+            }
+            aOptions.remoteType =
+              E10SUtils.getRemoteTypeForURI(aURL,
+                                            gMultiProcessBrowser,
+                                            preferredRemoteType,
+                                            aOptions.freshProcess);
+
             // If this URL can't load in the current browser then flip it to the
             // correct type.
-            let currentRemoteType = aBrowser.remoteType;
-            aOptions.remoteType =
-              E10SUtils.getRemoteTypeForURI(aURL, gMultiProcessBrowser,
-                                            currentRemoteType);
-            if (currentRemoteType != aOptions.remoteType ||
-                aOptions.freshProcess || aOptions.newFrameloader ||
-                aBrowser.frameLoader.isFreshProcess) {
+            if (aBrowser.remoteType != aOptions.remoteType ||
+                aOptions.newFrameloader) {
               let remote = aOptions.remoteType != E10SUtils.NOT_REMOTE;
               return this.updateBrowserRemoteness(aBrowser, remote, aOptions);
             }
 
             return false;
           ]]>
         </body>
       </method>
--- a/browser/modules/E10SUtils.jsm
+++ b/browser/modules/E10SUtils.jsm
@@ -34,42 +34,51 @@ function getAboutModule(aURL) {
 }
 
 const NOT_REMOTE = null;
 
 // These must match any similar ones in ContentParent.h.
 const WEB_REMOTE_TYPE = "web";
 const FILE_REMOTE_TYPE = "file";
 const EXTENSION_REMOTE_TYPE = "extension";
+
+// This must start with the WEB_REMOTE_TYPE above.
+const LARGE_ALLOCATION_REMOTE_TYPE = "webLargeAllocation";
 const DEFAULT_REMOTE_TYPE = WEB_REMOTE_TYPE;
 
 function validatedWebRemoteType(aPreferredRemoteType) {
   return aPreferredRemoteType && aPreferredRemoteType.startsWith(WEB_REMOTE_TYPE)
          ? aPreferredRemoteType : WEB_REMOTE_TYPE;
 }
 
 this.E10SUtils = {
   DEFAULT_REMOTE_TYPE,
   NOT_REMOTE,
   WEB_REMOTE_TYPE,
   FILE_REMOTE_TYPE,
   EXTENSION_REMOTE_TYPE,
+  LARGE_ALLOCATION_REMOTE_TYPE,
 
   canLoadURIInProcess(aURL, aProcess) {
     let remoteType = aProcess == Ci.nsIXULRuntime.PROCESS_TYPE_CONTENT
                      ? DEFAULT_REMOTE_TYPE : NOT_REMOTE;
     return remoteType == this.getRemoteTypeForURI(aURL, true, remoteType);
   },
 
   getRemoteTypeForURI(aURL, aMultiProcess,
-                      aPreferredRemoteType = DEFAULT_REMOTE_TYPE) {
+                      aPreferredRemoteType = DEFAULT_REMOTE_TYPE,
+                      aLargeAllocation = false) {
     if (!aMultiProcess) {
       return NOT_REMOTE;
     }
 
+    if (aLargeAllocation) {
+      return LARGE_ALLOCATION_REMOTE_TYPE;
+    }
+
     // loadURI in browser.xml treats null as about:blank
     if (!aURL) {
       aURL = "about:blank";
     }
 
     let uri;
     try {
       uri = Services.io.newURI(aURL);
@@ -174,17 +183,17 @@ this.E10SUtils = {
   shouldLoadURI(aDocShell, aURI, aReferrer) {
     // Inner frames should always load in the current process
     if (aDocShell.QueryInterface(Ci.nsIDocShellTreeItem).sameTypeParent)
       return true;
 
     // If we are in a Large-Allocation process, and it wouldn't be content visible
     // to change processes, we want to load into a new process so that we can throw
     // this one out.
-    if (aDocShell.inLargeAllocProcess &&
+    if (Services.appinfo.remoteType == LARGE_ALLOCATION_REMOTE_TYPE &&
         !aDocShell.awaitingLargeAlloc &&
         aDocShell.isOnlyToplevelInTabGroup) {
       return false;
     }
 
     // If the URI can be loaded in the current process then continue
     return this.shouldLoadURIInThisProcess(aURI);
   },
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -14906,16 +14906,8 @@ nsDocShell::GetAwaitingLargeAlloc(bool* 
   nsCOMPtr<nsITabChild> tabChild = GetTabChild();
   if (!tabChild) {
     *aResult = false;
     return NS_OK;
   }
   *aResult = static_cast<TabChild*>(tabChild.get())->IsAwaitingLargeAlloc();
   return NS_OK;
 }
-
-NS_IMETHODIMP
-nsDocShell::GetInLargeAllocProcess(bool* aResult)
-{
-  MOZ_ASSERT(aResult);
-  *aResult = TabChild::InLargeAllocProcess();
-  return NS_OK;
-}
--- a/docshell/base/nsIDocShell.idl
+++ b/docshell/base/nsIDocShell.idl
@@ -1122,19 +1122,13 @@ interface nsIDocShell : nsIDocShellTreeI
    * referring to this window exists.
    *
    * If this value is `false`, it would be web content visible for a load
    * occuring in this docshell to be performed within a different docshell.
    */
   [infallible] readonly attribute boolean isOnlyToplevelInTabGroup;
 
   /**
-   * Returns `true` if this docshell is loaded within a Large-Allocation
-   * process.
-   */
-  [infallible] readonly attribute boolean inLargeAllocProcess;
-
-  /**
    * Returns `true` if this docshell was created due to a Large-Allocation
    * header, and has not seen the initiating load yet.
    */
   [infallible] readonly attribute boolean awaitingLargeAlloc;
 };
--- a/dom/base/nsContentUtils.cpp
+++ b/dom/base/nsContentUtils.cpp
@@ -9783,18 +9783,19 @@ nsContentUtils::AttemptLargeAllocationLo
   if (NS_WARN_IF(!requestMethod.LowerCaseEqualsLiteral("get"))) {
     outer->SetLargeAllocStatus(LargeAllocStatus::NON_GET);
     return false;
   }
 
   TabChild* tabChild = TabChild::GetFrom(outer->AsOuter());
   NS_ENSURE_TRUE(tabChild, false);
 
-  if (tabChild->TakeAwaitingLargeAlloc())  {
+  if (tabChild->IsAwaitingLargeAlloc())  {
     NS_WARNING("In a Large-Allocation TabChild, ignoring Large-Allocation header!");
+    tabChild->StopAwaitingLargeAlloc();
     outer->SetLargeAllocStatus(LargeAllocStatus::SUCCESS);
     return false;
   }
 
   // On Win32 systems, we want to behave differently, so set the isWin32 bool to
   // be true iff we are on win32.
 #if defined(XP_WIN) && defined(_X86_)
   const bool isWin32 = true;
--- a/dom/base/nsDocument.cpp
+++ b/dom/base/nsDocument.cpp
@@ -12552,18 +12552,18 @@ nsDocument::ReportUseCounters(UseCounter
     if (IsTopLevelContentDocument()) {
       Telemetry::Accumulate(Telemetry::TOP_LEVEL_CONTENT_DOCUMENTS_DESTROYED, 1);
     }
 
     for (int32_t c = 0;
          c < eUseCounter_Count; ++c) {
       UseCounter uc = static_cast<UseCounter>(c);
 
-      Telemetry::ID id =
-        static_cast<Telemetry::ID>(Telemetry::HistogramFirstUseCounter + uc * 2);
+      Telemetry::HistogramID id =
+        static_cast<Telemetry::HistogramID>(Telemetry::HistogramFirstUseCounter + uc * 2);
       bool value = GetUseCounter(uc);
 
       if (value) {
         if (sDebugUseCounters) {
           const char* name = Telemetry::GetHistogramName(id);
           if (name) {
             printf("  %s", name);
           } else {
@@ -12571,18 +12571,18 @@ nsDocument::ReportUseCounters(UseCounter
           }
           printf(": %d\n", value);
         }
 
         Telemetry::Accumulate(id, 1);
       }
 
       if (IsTopLevelContentDocument()) {
-        id = static_cast<Telemetry::ID>(Telemetry::HistogramFirstUseCounter +
-                                        uc * 2 + 1);
+        id = static_cast<Telemetry::HistogramID>(Telemetry::HistogramFirstUseCounter +
+                                                 uc * 2 + 1);
         value = GetUseCounter(uc) || GetChildDocumentUseCounter(uc);
 
         if (value) {
           if (sDebugUseCounters) {
             const char* name = Telemetry::GetHistogramName(id);
             if (name) {
               printf("  %s", name);
             } else {
--- a/dom/base/nsFrameLoader.cpp
+++ b/dom/base/nsFrameLoader.cpp
@@ -169,27 +169,20 @@ nsFrameLoader::nsFrameLoader(Element* aO
   , mHideCalled(false)
   , mNetworkCreated(aNetworkCreated)
   , mRemoteBrowserShown(false)
   , mRemoteFrame(false)
   , mClipSubdocument(true)
   , mClampScrollPosition(true)
   , mObservingOwnerContent(false)
   , mVisible(true)
-  , mFreshProcess(false)
 {
   mRemoteFrame = ShouldUseRemoteProcess();
   MOZ_ASSERT(!mRemoteFrame || !aOpener,
              "Cannot pass aOpener for a remote frame!");
-
-  // Check if we are supposed to load into a fresh process
-  mFreshProcess = mOwnerContent->AttrValueIs(kNameSpaceID_None,
-                                             nsGkAtoms::freshProcess,
-                                             nsGkAtoms::_true,
-                                             eCaseMatters);
 }
 
 nsFrameLoader::~nsFrameLoader()
 {
   if (mMessageManager) {
     mMessageManager->Disconnect();
   }
   MOZ_RELEASE_ASSERT(mDestroyCalled);
@@ -1343,25 +1336,16 @@ nsFrameLoader::SwapWithOtherRemoteLoader
   if (!ourShell || !otherShell) {
     return NS_ERROR_NOT_IMPLEMENTED;
   }
 
   if (!mRemoteBrowser || !aOther->mRemoteBrowser) {
     return NS_ERROR_NOT_IMPLEMENTED;
   }
 
-  // Remote types must match to swap loaders.
-  const nsAString& currentRemoteType =
-    mRemoteBrowser->Manager()->AsContentParent()->GetRemoteType();
-  const nsAString& newRemoteType =
-    aOther->mRemoteBrowser->Manager()->AsContentParent()->GetRemoteType();
-  if (!currentRemoteType.Equals(newRemoteType)) {
-    return NS_ERROR_NOT_IMPLEMENTED;
-  }
-
   if (mRemoteBrowser->IsIsolatedMozBrowserElement() !=
       aOther->mRemoteBrowser->IsIsolatedMozBrowserElement()) {
     return NS_ERROR_NOT_IMPLEMENTED;
   }
 
   // When we swap docShells, maybe we have to deal with a new page created just
   // for this operation. In this case, the browser code should already have set
   // the correct userContextId attribute value in the owning XULElement, but our
@@ -1501,16 +1485,30 @@ nsFrameLoader::SwapWithOtherRemoteLoader
     return rv;
   }
   MutableTabContext otherContext;
   rv = aOther->GetNewTabContext(&otherContext);
   if (NS_WARN_IF(NS_FAILED(rv))) {
     return rv;
   }
 
+  // Swap the remoteType property as the frameloaders are being swapped
+  nsAutoString ourRemoteType;
+  if (!ourContent->GetAttr(kNameSpaceID_None, nsGkAtoms::RemoteType,
+                           ourRemoteType)) {
+    ourRemoteType.AssignLiteral(DEFAULT_REMOTE_TYPE);
+  }
+  nsAutoString otherRemoteType;
+  if (!otherContent->GetAttr(kNameSpaceID_None, nsGkAtoms::RemoteType,
+                             otherRemoteType)) {
+    otherRemoteType.AssignLiteral(DEFAULT_REMOTE_TYPE);
+  }
+  ourContent->SetAttr(kNameSpaceID_None, nsGkAtoms::RemoteType, otherRemoteType, false);
+  otherContent->SetAttr(kNameSpaceID_None, nsGkAtoms::RemoteType, ourRemoteType, false);
+
   Unused << mRemoteBrowser->SendSwappedWithOtherRemoteLoader(
     ourContext.AsIPCTabContext());
   Unused << aOther->mRemoteBrowser->SendSwappedWithOtherRemoteLoader(
     otherContext.AsIPCTabContext());
   return NS_OK;
 }
 
 class MOZ_RAII AutoResetInFrameSwap final
@@ -2933,18 +2931,17 @@ nsFrameLoader::TryRemoteBrowser()
   PROFILER_LABEL("nsFrameLoader", "CreateRemoteBrowser",
     js::ProfileEntry::Category::OTHER);
 
   MutableTabContext context;
   nsresult rv = GetNewTabContext(&context);
   NS_ENSURE_SUCCESS(rv, false);
 
   nsCOMPtr<Element> ownerElement = mOwnerContent;
-  mRemoteBrowser = ContentParent::CreateBrowser(context, ownerElement, openerContentParent,
-                                                mFreshProcess);
+  mRemoteBrowser = ContentParent::CreateBrowser(context, ownerElement, openerContentParent);
   if (!mRemoteBrowser) {
     return false;
   }
   // Now that mRemoteBrowser is set, we can initialize the RenderFrameParent
   mRemoteBrowser->InitRenderFrame();
 
   MaybeUpdatePrimaryTabParent(eTabParentChanged);
 
@@ -3671,21 +3668,14 @@ nsFrameLoader::PopulateUserContextIdFrom
 
 NS_IMETHODIMP
 nsFrameLoader::GetIsDead(bool* aIsDead)
 {
   *aIsDead = mDestroyCalled;
   return NS_OK;
 }
 
-NS_IMETHODIMP
-nsFrameLoader::GetIsFreshProcess(bool* aIsFreshProcess)
-{
-  *aIsFreshProcess = mFreshProcess;
-  return NS_OK;
-}
-
 nsIMessageSender*
 nsFrameLoader::GetProcessMessageManager() const
 {
   return mRemoteBrowser ? mRemoteBrowser->Manager()->GetMessageManager()
                         : nullptr;
 };
--- a/dom/base/nsIFrameLoader.idl
+++ b/dom/base/nsIFrameLoader.idl
@@ -263,22 +263,16 @@ interface nsIFrameLoader : nsISupports
    * across root docshells.
    */
   readonly attribute nsIGroupedSHistory groupedSHistory;
 
   /**
    * Is `true` if the frameloader is dead (destroy has been called on it)
    */
   [infallible] readonly attribute boolean isDead;
-
-  /**
-   * Is `true` if the <xul:browser> which created this frameloader had the
-   * freshProcess attribute set when it was created.
-   */
-  [infallible] readonly attribute boolean isFreshProcess;
 };
 
 %{C++
 class nsFrameLoader;
 %}
 
 native alreadyAddRefed_nsFrameLoader(already_AddRefed<nsFrameLoader>);
 
--- a/dom/file/ipc/Blob.cpp
+++ b/dom/file/ipc/Blob.cpp
@@ -23,16 +23,17 @@
 #include "mozilla/dom/nsIContentParent.h"
 #include "mozilla/dom/nsIContentChild.h"
 #include "mozilla/dom/PBlobStreamChild.h"
 #include "mozilla/dom/PBlobStreamParent.h"
 #include "mozilla/dom/indexedDB/FileSnapshot.h"
 #include "mozilla/dom/IndexedDatabaseManager.h"
 #include "mozilla/ipc/InputStreamUtils.h"
 #include "mozilla/ipc/IPCStreamUtils.h"
+#include "mozilla/ipc/BackgroundChild.h"
 #include "mozilla/ipc/PBackgroundChild.h"
 #include "mozilla/ipc/PBackgroundParent.h"
 #include "mozilla/ipc/PFileDescriptorSetParent.h"
 #include "MultipartBlobImpl.h"
 #include "nsDataHashtable.h"
 #include "nsHashKeys.h"
 #include "nsID.h"
 #include "nsIFileStreams.h"
@@ -46,20 +47,16 @@
 #include "nsServiceManagerUtils.h"
 #include "nsStringStream.h"
 #include "nsThreadUtils.h"
 #include "nsXULAppAPI.h"
 #include "StreamBlobImpl.h"
 #include "WorkerPrivate.h"
 #include "WorkerRunnable.h"
 
-#ifdef DEBUG
-#include "BackgroundChild.h" // BackgroundChild::GetForCurrentThread().
-#endif
-
 #ifdef OS_POSIX
 #include "chrome/common/file_descriptor_set_posix.h"
 #endif
 
 #define DISABLE_ASSERTS_FOR_FUZZING 0
 
 #if DISABLE_ASSERTS_FOR_FUZZING
 #define ASSERT_UNLESS_FUZZING(...) do { } while (0)
@@ -2600,16 +2597,28 @@ CreateStreamHelper::GetStream(nsIInputSt
   MOZ_ASSERT(!mDone);
 
   RefPtr<RemoteBlobImpl> baseRemoteBlobImpl =
     mRemoteBlobImpl->BaseRemoteBlobImpl();
   MOZ_ASSERT(baseRemoteBlobImpl);
 
   if (EventTargetIsOnCurrentThread(baseRemoteBlobImpl->GetActorEventTarget())) {
     RunInternal(baseRemoteBlobImpl, false);
+  } else if (PBackgroundChild* manager = mozilla::ipc::BackgroundChild::GetForCurrentThread()) {
+    BlobChild* blobChild = BlobChild::GetOrCreate(manager, baseRemoteBlobImpl);
+    MOZ_ASSERT(blobChild);
+
+    RefPtr<BlobImpl> blobImpl = blobChild->GetBlobImpl();
+    MOZ_ASSERT(blobImpl);
+
+    ErrorResult rv;
+    blobImpl->GetInternalStream(aInputStream, rv);
+    mRemoteBlobImpl = nullptr;
+    mDone = true;
+    return rv.StealNSResult();
   } else {
     nsresult rv = baseRemoteBlobImpl->DispatchToTarget(this);
     if (NS_WARN_IF(NS_FAILED(rv))) {
       return rv;
     }
 
     DebugOnly<bool> warned = false;
 
--- a/dom/ipc/ContentParent.cpp
+++ b/dom/ipc/ContentParent.cpp
@@ -667,50 +667,43 @@ ContentParent::RandomSelect(const nsTArr
   } while (currIdx != startIdx);
 
   return nullptr;
 }
 
 /*static*/ already_AddRefed<ContentParent>
 ContentParent::GetNewOrUsedBrowserProcess(const nsAString& aRemoteType,
                                           ProcessPriority aPriority,
-                                          ContentParent* aOpener,
-                                          bool aLargeAllocationProcess,
-                                          bool* aNew)
-{
-  if (aNew) {
-    *aNew = false;
-  }
-  // Decide which pool of content parents we are going to be pulling from based
-  // on the aRemoteType and aLargeAllocationProcess flag.
-  nsAutoString contentProcessType(aLargeAllocationProcess
-                                  ? NS_LITERAL_STRING(LARGE_ALLOCATION_REMOTE_TYPE)
-                                  : aRemoteType);
-
-  nsTArray<ContentParent*>& contentParents = GetOrCreatePool(contentProcessType);
-
-  uint32_t maxContentParents = GetMaxProcessCount(contentProcessType);
+                                          ContentParent* aOpener)
+{
+  nsTArray<ContentParent*>& contentParents = GetOrCreatePool(aRemoteType);
+
+  uint32_t maxContentParents = GetMaxProcessCount(aRemoteType);
 
   RefPtr<ContentParent> p;
-  if (contentParents.Length() >= uint32_t(maxContentParents) &&
-      (p = RandomSelect(contentParents, aOpener, maxContentParents))) {
-    return p.forget();
+  if (contentParents.Length() >= maxContentParents) {
+    // We never want to re-use Large-Allocation processes.
+    if (aRemoteType.EqualsLiteral(LARGE_ALLOCATION_REMOTE_TYPE)) {
+      return GetNewOrUsedBrowserProcess(NS_LITERAL_STRING(DEFAULT_REMOTE_TYPE),
+                                        aPriority,
+                                        aOpener);
+    }
+
+    if ((p = RandomSelect(contentParents, aOpener, maxContentParents))) {
+      return p.forget();
+    }
   }
 
   // Try to take the preallocated process only for the default process type.
-  if (contentProcessType.Equals(NS_LITERAL_STRING(DEFAULT_REMOTE_TYPE)) &&
+  if (aRemoteType.Equals(NS_LITERAL_STRING(DEFAULT_REMOTE_TYPE)) &&
       (p = PreallocatedProcessManager::Take())) {
     // For pre-allocated process we have not set the opener yet.
     p->mOpener = aOpener;
   } else {
-    p = new ContentParent(aOpener, contentProcessType);
-
-    if (aNew) {
-      *aNew = true;
-    }
+    p = new ContentParent(aOpener, aRemoteType);
 
     if (!p->LaunchSubprocess(aPriority)) {
       return nullptr;
     }
 
     p->Init();
   }
 
@@ -976,18 +969,17 @@ ContentParent::RecvFindPlugins(const uin
 {
   *aRv = mozilla::plugins::FindPluginsForContent(aPluginEpoch, aPlugins, aNewPluginEpoch);
   return IPC_OK();
 }
 
 /*static*/ TabParent*
 ContentParent::CreateBrowser(const TabContext& aContext,
                              Element* aFrameElement,
-                             ContentParent* aOpenerContentParent,
-                             bool aFreshProcess)
+                             ContentParent* aOpenerContentParent)
 {
   PROFILER_LABEL_FUNC(js::ProfileEntry::Category::OTHER);
 
   if (!sCanLaunchSubprocesses) {
     return nullptr;
   }
 
   if (TabParent* parent = TabParent::GetNextTabParent()) {
@@ -1000,35 +992,33 @@ ContentParent::CreateBrowser(const TabCo
   TabId tabId;
 
   nsIDocShell* docShell = GetOpenerDocShellHelper(aFrameElement);
   TabId openerTabId;
   if (docShell) {
     openerTabId = TabParent::GetTabIdFrom(docShell);
   }
 
-  bool newProcess = false;
+  nsAutoString remoteType;
+  if (!aFrameElement->GetAttr(kNameSpaceID_None, nsGkAtoms::RemoteType,
+                              remoteType)) {
+    remoteType.AssignLiteral(DEFAULT_REMOTE_TYPE);
+  }
+
   RefPtr<nsIContentParent> constructorSender;
   if (isInContentProcess) {
     MOZ_ASSERT(aContext.IsMozBrowserElement());
     constructorSender = CreateContentBridgeParent(aContext, initialPriority,
                                                   openerTabId, &tabId);
   } else {
     if (aOpenerContentParent) {
       constructorSender = aOpenerContentParent;
     } else {
-      nsAutoString remoteType;
-      if (!aFrameElement->GetAttr(kNameSpaceID_None, nsGkAtoms::RemoteType,
-                                  remoteType)) {
-        remoteType.AssignLiteral(DEFAULT_REMOTE_TYPE);
-      }
-
       constructorSender =
-        GetNewOrUsedBrowserProcess(remoteType, initialPriority, nullptr,
-                                   aFreshProcess, &newProcess);
+        GetNewOrUsedBrowserProcess(remoteType, initialPriority, nullptr);
       if (!constructorSender) {
         return nullptr;
       }
     }
     tabId = AllocateTabId(openerTabId,
                           aContext.AsIPCTabContext(),
                           constructorSender->ChildID());
   }
@@ -1065,21 +1055,20 @@ ContentParent::CreateBrowser(const TabCo
     constructorSender->SendPBrowserConstructor(
       // DeallocPBrowserParent() releases this ref.
       tp.forget().take(), tabId,
       aContext.AsIPCTabContext(),
       chromeFlags,
       constructorSender->ChildID(),
       constructorSender->IsForBrowser());
 
-    if (aFreshProcess) {
+    if (remoteType.EqualsLiteral(LARGE_ALLOCATION_REMOTE_TYPE)) {
       // Tell the TabChild object that it was created due to a Large-Allocation
-      // request, and whether or not that Large-Allocation request succeeded at
-      // creating a new content process.
-      Unused << browser->SendSetIsLargeAllocation(true, newProcess);
+      // request.
+      Unused << browser->SendAwaitLargeAlloc();
     }
 
     if (browser) {
       RefPtr<TabParent> constructedTabParent = TabParent::GetFrom(browser);
       constructedTabParent->SetOwnerElement(aFrameElement);
       return constructedTabParent;
     }
   }
--- a/dom/ipc/ContentParent.h
+++ b/dom/ipc/ContentParent.h
@@ -168,30 +168,27 @@ public:
    * 1. browser iframe
    * 2. remote xul <browser>
    * 3. normal iframe
    */
   static already_AddRefed<ContentParent>
   GetNewOrUsedBrowserProcess(const nsAString& aRemoteType = NS_LITERAL_STRING(NO_REMOTE_TYPE),
                              hal::ProcessPriority aPriority =
                              hal::ProcessPriority::PROCESS_PRIORITY_FOREGROUND,
-                             ContentParent* aOpener = nullptr,
-                             bool aLargeAllocationProcess = false,
-                             bool* anew = nullptr);
+                             ContentParent* aOpener = nullptr);
 
   /**
    * Get or create a content process for the given TabContext.  aFrameElement
    * should be the frame/iframe element with which this process will
    * associated.
    */
   static TabParent*
   CreateBrowser(const TabContext& aContext,
                 Element* aFrameElement,
-                ContentParent* aOpenerContentParent,
-                bool aFreshProcess = false);
+                ContentParent* aOpenerContentParent);
 
   static void GetAll(nsTArray<ContentParent*>& aArray);
 
   static void GetAllEvenIfDead(nsTArray<ContentParent*>& aArray);
 
   const nsAString& GetRemoteType() const;
 
   enum CPIteratorPolicy {
--- a/dom/ipc/PBrowser.ipdl
+++ b/dom/ipc/PBrowser.ipdl
@@ -891,20 +891,20 @@ child:
 
     /**
      * Notify that the session history asssociates to this PBrowser has become
      * an inactive history in the grouped session history.
      */
     async NotifyPartialSHistoryDeactive();
 
     /**
-     * Tell the child that it is a fresh process created for a Large-Allocation
-     * load.
+     * Tell the TabChild that it should expect a Large-Allocation load to occur.
+     * Loads which occur until this flag is cleared will not leave the process.
      */
-    async SetIsLargeAllocation(bool aIsLA, bool aNewProcess);
+    async AwaitLargeAlloc();
 
 /*
  * FIXME: write protocol!
 
 state LIVE:
     send LoadURL goto LIVE;
 //etc.
     send Destroy goto DYING;
--- a/dom/ipc/TabChild.cpp
+++ b/dom/ipc/TabChild.cpp
@@ -153,17 +153,16 @@ NS_IMPL_ISUPPORTS(TabChildSHistoryListen
                   nsISHistoryListener,
                   nsIPartialSHistoryListener,
                   nsISupportsWeakReference)
 
 static const char BEFORE_FIRST_PAINT[] = "before-first-paint";
 
 typedef nsDataHashtable<nsUint64HashKey, TabChild*> TabChildMap;
 static TabChildMap* sTabChildren;
-bool TabChild::sInLargeAllocProcess = false;
 
 TabChildBase::TabChildBase()
   : mTabChildGlobal(nullptr)
 {
   mozilla::HoldJSObjects(this);
 }
 
 TabChildBase::~TabChildBase()
@@ -3116,31 +3115,30 @@ TabChild::RecvThemeChanged(nsTArray<Look
     if (presContext) {
       presContext->ThemeChanged();
     }
   }
   return IPC_OK();
 }
 
 mozilla::ipc::IPCResult
-TabChild::RecvSetIsLargeAllocation(const bool& aIsLA, const bool& aNewProcess)
+TabChild::RecvAwaitLargeAlloc()
 {
-  mAwaitingLA = aIsLA;
-  sInLargeAllocProcess = aIsLA && aNewProcess;
+  mAwaitingLA = true;
   return IPC_OK();
 }
 
 bool
 TabChild::IsAwaitingLargeAlloc()
 {
   return mAwaitingLA;
 }
 
 bool
-TabChild::TakeAwaitingLargeAlloc()
+TabChild::StopAwaitingLargeAlloc()
 {
   bool awaiting = mAwaitingLA;
   mAwaitingLA = false;
   return awaiting;
 }
 
 mozilla::plugins::PPluginWidgetChild*
 TabChild::AllocPPluginWidgetChild()
--- a/dom/ipc/TabChild.h
+++ b/dom/ipc/TabChild.h
@@ -659,27 +659,19 @@ public:
   void ForcePaint(uint64_t aLayerObserverEpoch);
 
 #if defined(XP_WIN) && defined(ACCESSIBILITY)
   uintptr_t GetNativeWindowHandle() const { return mNativeWindowHandle; }
 #endif
 
   // These methods return `true` if this TabChild is currently awaiting a
   // Large-Allocation header.
-  bool TakeAwaitingLargeAlloc();
+  bool StopAwaitingLargeAlloc();
   bool IsAwaitingLargeAlloc();
 
-  // Returns `true` if this this process was created to load a docshell in a
-  // "Fresh Process". This value is initialized to `false`, and is set to `true`
-  // in RecvSetFreshProcess.
-  static bool InLargeAllocProcess()
-  {
-    return sInLargeAllocProcess;
-  }
-
   already_AddRefed<nsISHistory> GetRelatedSHistory();
 
   mozilla::dom::TabGroup* TabGroup();
 
 protected:
   virtual ~TabChild();
 
   virtual PRenderFrameChild* AllocPRenderFrameChild() override;
@@ -711,18 +703,17 @@ protected:
 
   virtual mozilla::ipc::IPCResult RecvNotifyAttachGroupedSHistory(const uint32_t& aOffset) override;
 
   virtual mozilla::ipc::IPCResult RecvNotifyPartialSHistoryActive(const uint32_t& aGlobalLength,
                                                                   const uint32_t& aTargetLocalIndex) override;
 
   virtual mozilla::ipc::IPCResult RecvNotifyPartialSHistoryDeactive() override;
 
-  virtual mozilla::ipc::IPCResult RecvSetIsLargeAllocation(const bool& aIsLA,
-                                                           const bool& aNewProcess) override;
+  virtual mozilla::ipc::IPCResult RecvAwaitLargeAlloc() override;
 
 private:
   void HandleDoubleTap(const CSSPoint& aPoint, const Modifiers& aModifiers,
                        const ScrollableLayerGuid& aGuid);
 
   // Notify others that our TabContext has been updated.
   //
   // You should call this after calling TabContext::SetTabContext().  We also
@@ -824,17 +815,15 @@ private:
   // The most recently seen layer observer epoch in RecvSetDocShellIsActive.
   uint64_t mLayerObserverEpoch;
 
 #if defined(XP_WIN) && defined(ACCESSIBILITY)
   // The handle associated with the native window that contains this tab
   uintptr_t mNativeWindowHandle;
 #endif // defined(XP_WIN)
 
-  static bool sInLargeAllocProcess;
-
   DISALLOW_EVIL_CONSTRUCTORS(TabChild);
 };
 
 } // namespace dom
 } // namespace mozilla
 
 #endif // mozilla_dom_TabChild_h
--- a/dom/ipc/TabParent.cpp
+++ b/dom/ipc/TabParent.cpp
@@ -960,17 +960,19 @@ TabParent::RecvPDocAccessibleConstructor
     }
 
     doc->SetTopLevel();
     a11y::DocManager::RemoteDocAdded(doc);
 #ifdef XP_WIN
     a11y::WrapperFor(doc)->SetID(aMsaaID);
     MOZ_ASSERT(!aDocCOMProxy.IsNull());
     RefPtr<IAccessible> proxy(aDocCOMProxy.Get());
-    doc->SetCOMProxy(proxy);
+    doc->SetCOMInterface(proxy);
+    doc->MaybeInitWindowEmulation();
+    doc->SendParentCOMProxy();
 #endif
   }
 #endif
   return IPC_OK();
 }
 
 a11y::DocAccessibleParent*
 TabParent::GetTopLevelDocAccessible() const
--- a/dom/media/Benchmark.cpp
+++ b/dom/media/Benchmark.cpp
@@ -68,17 +68,17 @@ VP9Benchmark::IsVP9DecodeFast()
           if (contentChild) {
             contentChild->SendNotifyBenchmarkResult(NS_LITERAL_STRING("VP9"),
                                                     aDecodeFps);
           }
         } else {
           Preferences::SetUint(sBenchmarkFpsPref, aDecodeFps);
           Preferences::SetUint(sBenchmarkFpsVersionCheck, sBenchmarkVersionID);
         }
-        Telemetry::Accumulate(Telemetry::ID::VIDEO_VP9_BENCHMARK_FPS, aDecodeFps);
+        Telemetry::Accumulate(Telemetry::HistogramID::VIDEO_VP9_BENCHMARK_FPS, aDecodeFps);
       },
       []() { });
   }
 
   if (!hasPref) {
     return false;
   }
 
--- a/dom/media/MediaDecoder.cpp
+++ b/dom/media/MediaDecoder.cpp
@@ -871,17 +871,17 @@ MediaDecoder::EnsureTelemetryReported()
     codecs.AppendElement(mInfo->mVideo.GetAsVideoInfo()->mMimeType);
   }
   if (codecs.IsEmpty()) {
     codecs.AppendElement(nsPrintfCString(
       "resource; %s", mResource->GetContentType().OriginalString().Data()));
   }
   for (const nsCString& codec : codecs) {
     DECODER_LOG("Telemetry MEDIA_CODEC_USED= '%s'", codec.get());
-    Telemetry::Accumulate(Telemetry::ID::MEDIA_CODEC_USED, codec);
+    Telemetry::Accumulate(Telemetry::HistogramID::MEDIA_CODEC_USED, codec);
   }
 
   mTelemetryReported = true;
 }
 
 const char*
 MediaDecoder::PlayStateStr()
 {
--- a/dom/media/eme/DetailedPromise.cpp
+++ b/dom/media/eme/DetailedPromise.cpp
@@ -17,18 +17,18 @@ DetailedPromise::DetailedPromise(nsIGlob
   , mName(aName)
   , mResponded(false)
   , mStartTime(TimeStamp::Now())
 {
 }
 
 DetailedPromise::DetailedPromise(nsIGlobalObject* aGlobal,
                                  const nsACString& aName,
-                                 Telemetry::ID aSuccessLatencyProbe,
-                                 Telemetry::ID aFailureLatencyProbe)
+                                 Telemetry::HistogramID aSuccessLatencyProbe,
+                                 Telemetry::HistogramID aFailureLatencyProbe)
   : DetailedPromise(aGlobal, aName)
 {
   mSuccessLatencyProbe.Construct(aSuccessLatencyProbe);
   mFailureLatencyProbe.Construct(aFailureLatencyProbe);
 }
 
 DetailedPromise::~DetailedPromise()
 {
@@ -70,18 +70,18 @@ DetailedPromise::Create(nsIGlobalObject*
   promise->CreateWrapper(nullptr, aRv);
   return aRv.Failed() ? nullptr : promise.forget();
 }
 
 /* static */ already_AddRefed<DetailedPromise>
 DetailedPromise::Create(nsIGlobalObject* aGlobal,
                         ErrorResult& aRv,
                         const nsACString& aName,
-                        Telemetry::ID aSuccessLatencyProbe,
-                        Telemetry::ID aFailureLatencyProbe)
+                        Telemetry::HistogramID aSuccessLatencyProbe,
+                        Telemetry::HistogramID aFailureLatencyProbe)
 {
   RefPtr<DetailedPromise> promise = new DetailedPromise(aGlobal, aName, aSuccessLatencyProbe, aFailureLatencyProbe);
   promise->CreateWrapper(nullptr, aRv);
   return aRv.Failed() ? nullptr : promise.forget();
 }
 
 void
 DetailedPromise::MaybeReportTelemetry(Status aStatus)
@@ -91,15 +91,15 @@ DetailedPromise::MaybeReportTelemetry(St
   }
   mResponded = true;
   if (!mSuccessLatencyProbe.WasPassed() || !mFailureLatencyProbe.WasPassed()) {
     return;
   }
   uint32_t latency = (TimeStamp::Now() - mStartTime).ToMilliseconds();
   EME_LOG("%s %s latency %ums reported via telemetry", mName.get(),
           ((aStatus == Succeeded) ? "succcess" : "failure"), latency);
-  Telemetry::ID tid = (aStatus == Succeeded) ? mSuccessLatencyProbe.Value()
-                                             : mFailureLatencyProbe.Value();
+  Telemetry::HistogramID tid = (aStatus == Succeeded) ? mSuccessLatencyProbe.Value()
+                                                      : mFailureLatencyProbe.Value();
   Telemetry::Accumulate(tid, latency);
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/dom/media/eme/DetailedPromise.h
+++ b/dom/media/eme/DetailedPromise.h
@@ -25,18 +25,18 @@ public:
   static already_AddRefed<DetailedPromise>
   Create(nsIGlobalObject* aGlobal,
          ErrorResult& aRv,
          const nsACString& aName);
 
   static already_AddRefed<DetailedPromise>
   Create(nsIGlobalObject* aGlobal, ErrorResult& aRv,
          const nsACString& aName,
-         Telemetry::ID aSuccessLatencyProbe,
-         Telemetry::ID aFailureLatencyProbe);
+         Telemetry::HistogramID aSuccessLatencyProbe,
+         Telemetry::HistogramID aFailureLatencyProbe);
 
   template <typename T>
   void MaybeResolve(const T& aArg)
   {
     EME_LOG("%s promise resolved", mName.get());
     MaybeReportTelemetry(Succeeded);
     Promise::MaybeResolve<T>(aArg);
   }
@@ -48,26 +48,26 @@ public:
   void MaybeReject(ErrorResult&, const nsACString& aReason);
 
 private:
   explicit DetailedPromise(nsIGlobalObject* aGlobal,
                            const nsACString& aName);
 
   explicit DetailedPromise(nsIGlobalObject* aGlobal,
                            const nsACString& aName,
-                           Telemetry::ID aSuccessLatencyProbe,
-                           Telemetry::ID aFailureLatencyProbe);
+                           Telemetry::HistogramID aSuccessLatencyProbe,
+                           Telemetry::HistogramID aFailureLatencyProbe);
   virtual ~DetailedPromise();
 
   enum Status { Succeeded, Failed };
   void MaybeReportTelemetry(Status aStatus);
 
   nsCString mName;
   bool mResponded;
   TimeStamp mStartTime;
-  Optional<Telemetry::ID> mSuccessLatencyProbe;
-  Optional<Telemetry::ID> mFailureLatencyProbe;
+  Optional<Telemetry::HistogramID> mSuccessLatencyProbe;
+  Optional<Telemetry::HistogramID> mFailureLatencyProbe;
 };
 
 } // namespace dom
 } // namespace mozilla
 
 #endif // __DetailedPromise_h__
--- a/dom/media/ogg/OggDemuxer.cpp
+++ b/dom/media/ogg/OggDemuxer.cpp
@@ -125,17 +125,17 @@ OggDemuxer::~OggDemuxer()
   Reset(TrackInfo::kAudioTrack);
   Reset(TrackInfo::kVideoTrack);
   if (HasAudio() || HasVideo()) {
     // If we were able to initialize our decoders, report whether we encountered
     // a chained stream or not.
     bool isChained = mIsChained;
     nsCOMPtr<nsIRunnable> task = NS_NewRunnableFunction([=]() -> void {
       OGG_DEBUG("Reporting telemetry MEDIA_OGG_LOADED_IS_CHAINED=%d", isChained);
-      Telemetry::Accumulate(Telemetry::ID::MEDIA_OGG_LOADED_IS_CHAINED, isChained);
+      Telemetry::Accumulate(Telemetry::HistogramID::MEDIA_OGG_LOADED_IS_CHAINED, isChained);
     });
     // Non-DocGroup version of AbstractThread::MainThread is fine for Telemetry.
     AbstractThread::MainThread()->Dispatch(task.forget());
   }
 }
 
 void
 OggDemuxer::SetChainingEvents(TimedMetadataEventProducer* aMetadataEvent,
--- a/dom/media/platforms/wmf/WMFAudioMFTManager.cpp
+++ b/dom/media/platforms/wmf/WMFAudioMFTManager.cpp
@@ -246,17 +246,17 @@ WMFAudioMFTManager::Output(int64_t aStre
   }
 
   NS_ENSURE_TRUE(SUCCEEDED(hr), hr);
 
   if (!sample) {
     LOG("Audio MFTDecoder returned success but null output.");
     nsCOMPtr<nsIRunnable> task = NS_NewRunnableFunction([]() -> void {
       LOG("Reporting telemetry AUDIO_MFT_OUTPUT_NULL_SAMPLES");
-      Telemetry::Accumulate(Telemetry::ID::AUDIO_MFT_OUTPUT_NULL_SAMPLES, 1);
+      Telemetry::Accumulate(Telemetry::HistogramID::AUDIO_MFT_OUTPUT_NULL_SAMPLES, 1);
     });
     // Non-DocGroup version of AbstractThread::MainThread is fine for Telemetry.
     AbstractThread::MainThread()->Dispatch(task.forget());
     return E_FAIL;
   }
 
   RefPtr<IMFMediaBuffer> buffer;
   hr = sample->ConvertToContiguousBuffer(getter_AddRefs(buffer));
--- a/dom/media/platforms/wmf/WMFVideoMFTManager.cpp
+++ b/dom/media/platforms/wmf/WMFVideoMFTManager.cpp
@@ -126,17 +126,17 @@ WMFVideoMFTManager::~WMFVideoMFTManager(
       : mGotExcessiveNullOutput
         ? 2
         : mGotValidOutputAfterNullOutput ? 3 : 4;
 
   nsCOMPtr<nsIRunnable> task = NS_NewRunnableFunction([=]() -> void {
     LOG(nsPrintfCString("Reporting telemetry VIDEO_MFT_OUTPUT_NULL_SAMPLES=%d",
                         telemetry)
         .get());
-    Telemetry::Accumulate(Telemetry::ID::VIDEO_MFT_OUTPUT_NULL_SAMPLES,
+    Telemetry::Accumulate(Telemetry::HistogramID::VIDEO_MFT_OUTPUT_NULL_SAMPLES,
                           telemetry);
   });
   // Non-DocGroup version of AbstractThread::MainThread is fine for Telemetry.
   AbstractThread::MainThread()->Dispatch(task.forget());
 }
 
 const GUID&
 WMFVideoMFTManager::GetMFTGUID()
--- a/dom/media/webaudio/MediaBufferDecoder.cpp
+++ b/dom/media/webaudio/MediaBufferDecoder.cpp
@@ -284,17 +284,17 @@ MediaDecodeTask::OnMetadataRead(Metadata
                             mContainerType.Type().AsString().Data());
   }
 
   nsCOMPtr<nsIRunnable> task = NS_NewRunnableFunction([codec]() -> void {
     MOZ_ASSERT(!codec.IsEmpty());
     MOZ_LOG(gMediaDecoderLog,
             LogLevel::Debug,
             ("Telemetry (WebAudio) MEDIA_CODEC_USED= '%s'", codec.get()));
-    Telemetry::Accumulate(Telemetry::ID::MEDIA_CODEC_USED, codec);
+    Telemetry::Accumulate(Telemetry::HistogramID::MEDIA_CODEC_USED, codec);
   });
   // Non-DocGroup version of AbstractThread::MainThread is fine for Telemetry.
   AbstractThread::MainThread()->Dispatch(task.forget());
 
   RequestSample();
 }
 
 void
@@ -635,9 +635,8 @@ WebAudioDecodeJob::SizeOfExcludingThis(M
 
 size_t
 WebAudioDecodeJob::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const
 {
   return aMallocSizeOf(this) + SizeOfExcludingThis(aMallocSizeOf);
 }
 
 } // namespace mozilla
-
--- a/dom/storage/StorageCache.cpp
+++ b/dom/storage/StorageCache.cpp
@@ -314,34 +314,34 @@ StorageCache::KeepAlive()
 namespace {
 
 // The AutoTimer provided by telemetry headers is only using static,
 // i.e. compile time known ID, but here we know the ID only at run time.
 // Hence a new class.
 class TelemetryAutoTimer
 {
 public:
-  explicit TelemetryAutoTimer(Telemetry::ID aId)
+  explicit TelemetryAutoTimer(Telemetry::HistogramID aId)
     : id(aId), start(TimeStamp::Now())
   {}
 
   ~TelemetryAutoTimer()
   {
     Telemetry::AccumulateDelta_impl<Telemetry::Millisecond>::compute(id, start);
   }
 
 private:
-  Telemetry::ID id;
+  Telemetry::HistogramID id;
   const TimeStamp start;
 };
 
 } // namespace
 
 void
-StorageCache::WaitForPreload(Telemetry::ID aTelemetryID)
+StorageCache::WaitForPreload(Telemetry::HistogramID aTelemetryID)
 {
   if (!mPersistent) {
     return;
   }
 
   bool loaded = mLoaded;
 
   // Telemetry of rates of pending preloads
--- a/dom/storage/StorageCache.h
+++ b/dom/storage/StorageCache.h
@@ -167,17 +167,17 @@ private:
 #ifdef DOM_STORAGE_TESTS
   static const uint32_t kTestReload    = 1 << 15;
 #endif
 
   void UnloadItems(uint32_t aUnloadFlags);
 
 private:
   // Synchronously blocks until the cache is fully loaded from the database
-  void WaitForPreload(mozilla::Telemetry::ID aTelemetryID);
+  void WaitForPreload(mozilla::Telemetry::HistogramID aTelemetryID);
 
   // Helper to get one of the 3 data sets (regular, private, session)
   Data& DataSet(const Storage* aStorage);
 
   // Whether the storage change is about to persist
   bool Persist(const Storage* aStorage) const;
 
   // Changes the quota usage on the given data set if it fits the quota.
--- a/dom/tests/browser/helper_largeAllocation.js
+++ b/dom/tests/browser/helper_largeAllocation.js
@@ -43,22 +43,17 @@ function getPID(aBrowser) {
     const appinfo = Components.classes["@mozilla.org/xre/app-info;1"]
             .getService(Components.interfaces.nsIXULRuntime);
     return appinfo.processID;
   });
 }
 
 function getInLAProc(aBrowser) {
   return ContentTask.spawn(aBrowser, null, () => {
-    try {
-      return docShell.inLargeAllocProcess;
-    } catch (e) {
-      // This must be a non-remote browser, which means it is not fresh
-      return false;
-    }
+    return Services.appinfo.remoteType == "webLargeAllocation";
   });
 }
 
 function* largeAllocSuccessTests() {
   // I'm terrible and put this set of tests into a single file, so I need a longer timeout
   requestLongerTimeout(2);
 
   // Check if we are on win32
@@ -345,18 +340,56 @@ function* largeAllocSuccessTests() {
     stopExpectNoProcess();
 
     yield ContentTask.spawn(aBrowser, null, () => {
       ok(this.__newWindow, "The window should have been stored");
       this.__newWindow.close();
     });
   });
 
+  // Try dragging the tab into a new window when not at the maximum number of
+  // Large-Allocation processes.
   yield BrowserTestUtils.withNewTab("about:blank", function*(aBrowser) {
     info("Starting test 7");
+
+    let pid1 = yield getPID(aBrowser);
+    is(false, yield getInLAProc(aBrowser));
+
+    let ready = Promise.all([expectProcessCreated(),
+                             BrowserTestUtils.browserLoaded(aBrowser)]);
+    yield ContentTask.spawn(aBrowser, TEST_URI, TEST_URI => {
+      content.document.location = TEST_URI;
+    });
+
+    yield ready;
+
+    let pid2 = yield getPID(aBrowser);
+
+    isnot(pid1, pid2, "PIDs 1 and 2 should not match");
+    is(true, yield getInLAProc(aBrowser));
+
+    let newWindow = yield BrowserTestUtils.openNewBrowserWindow();
+
+    newWindow.gBrowser.adoptTab(gBrowser.getTabForBrowser(aBrowser), 0);
+    let newTab = newWindow.gBrowser.tabs[0];
+
+    is(newTab.linkedBrowser.currentURI.spec, TEST_URI);
+    is(newTab.linkedBrowser.remoteType, "webLargeAllocation");
+    let pid3 = yield getPID(newTab.linkedBrowser);
+
+    is(pid2, pid3, "PIDs 2 and 3 should match");
+    is(true, yield getInLAProc(newTab.linkedBrowser));
+
+    yield BrowserTestUtils.closeWindow(newWindow);
+  });
+
+  // Try opening a new Large-Allocation document when at the max number of large
+  // allocation processes.
+  yield BrowserTestUtils.withNewTab("about:blank", function*(aBrowser) {
+    info("Starting test 8");
     yield SpecialPowers.pushPrefEnv({
       set: [
         ["dom.ipc.processCount.webLargeAllocation", 1]
       ],
     });
 
     // Loading the first Large-Allocation tab should succeed as normal
     let pid1 = yield getPID(aBrowser);
@@ -394,17 +427,17 @@ function* largeAllocSuccessTests() {
   // XXX: Important - reset the process count, as it was set to 1 by the
   // previous test.
   yield SpecialPowers.pushPrefEnv({
     set: [["dom.ipc.processCount.webLargeAllocation", 20]],
   });
 
   // view-source tabs should not be considered to be in a large-allocation process.
   yield BrowserTestUtils.withNewTab("about:blank", function*(aBrowser) {
-    info("Starting test 8");
+    info("Starting test 9");
     let pid1 = yield getPID(aBrowser);
     is(false, yield getInLAProc(aBrowser));
 
     // Fail the test if we create a process
     let stopExpectNoProcess = expectNoProcess();
 
     yield ContentTask.spawn(aBrowser, null, () => {
       content.document.location = "view-source:http://example.com";
@@ -414,16 +447,60 @@ function* largeAllocSuccessTests() {
 
     let pid2 = yield getPID(aBrowser);
 
     is(pid1, pid2, "The PID should not have changed");
     is(false, yield getInLAProc(aBrowser));
 
     stopExpectNoProcess();
   });
+
+  // Try dragging tab into new window when at the max number of large allocation
+  // processes.
+  yield BrowserTestUtils.withNewTab("about:blank", function*(aBrowser) {
+    info("Starting test 10");
+    yield SpecialPowers.pushPrefEnv({
+      set: [
+        ["dom.ipc.processCount.webLargeAllocation", 1]
+      ],
+    });
+
+    let pid1 = yield getPID(aBrowser);
+    is(false, yield getInLAProc(aBrowser));
+
+    let ready = Promise.all([expectProcessCreated(),
+                             BrowserTestUtils.browserLoaded(aBrowser)]);
+    yield ContentTask.spawn(aBrowser, TEST_URI, TEST_URI => {
+      content.document.location = TEST_URI;
+    });
+
+    yield ready;
+
+    let pid2 = yield getPID(aBrowser);
+
+    isnot(pid1, pid2, "PIDs 1 and 2 should not match");
+    is(true, yield getInLAProc(aBrowser));
+
+    let newWindow = yield BrowserTestUtils.openNewBrowserWindow();
+
+    newWindow.gBrowser.adoptTab(gBrowser.getTabForBrowser(aBrowser), 0);
+    let newTab = newWindow.gBrowser.tabs[0];
+
+    is(newTab.linkedBrowser.currentURI.spec, TEST_URI);
+    is(newTab.linkedBrowser.remoteType, "webLargeAllocation");
+    let pid3 = yield getPID(newTab.linkedBrowser);
+
+    is(pid2, pid3, "PIDs 2 and 3 should match");
+    is(true, yield getInLAProc(newTab.linkedBrowser));
+
+    yield BrowserTestUtils.closeWindow(newWindow);
+  });
+
+  // XXX: Make sure to reset dom.ipc.processCount.webLargeAllocation if adding a
+  // test after the above test.
 }
 
 function* largeAllocFailTests() {
   yield BrowserTestUtils.withNewTab("http://example.com", function*(aBrowser) {
     info("Starting test 1");
     let pid1 = yield getPID(aBrowser);
     is(false, yield getInLAProc(aBrowser));
 
--- a/dom/tests/mochitest/general/mochitest.ini
+++ b/dom/tests/mochitest/general/mochitest.ini
@@ -69,16 +69,17 @@ skip-if = (toolkit == 'android') # Disab
 subsuite = clipboard
 [test_bug1012662_noeditor.html]
 subsuite = clipboard
 skip-if = (toolkit == 'android') # Disabled on Android, see bug 1230231
 [test_bug1161721.html]
 [test_bug1170911.html]
 subsuite = clipboard
 [test_bug1208217.html]
+[test_bug1313753.html]
 [test_clientRects.html]
 [test_clipboard_disallowed.html]
 [test_clipboard_events.html]
 subsuite = clipboard
 [test_consoleAPI.html]
 [test_contentViewer_overrideDPPX.html]
 [test_DOMMatrix.html]
 [test_domWindowUtils.html]
new file mode 100644
--- /dev/null
+++ b/dom/tests/mochitest/general/test_bug1313753.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Test for bug 1313753</title>
+<script type="application/javascript"
+        src="/tests/SimpleTest/SimpleTest.js"></script>
+<div id="log"></div>
+<script>
+function runTest() {
+    // Change visible region of |closure| element.
+    document.getElementById("target").classList.add("rotate");
+    window.setTimeout(function() {
+	var target = document.getElementById("target");
+	var bounds = target.getBoundingClientRect();
+	var x = bounds.x + bounds.width / 2;
+	var y = bounds.y + bounds.height / 2;
+	is(document.elementFromPoint(x, y).id, target.id,
+	  "it should be |target| element if visible regions of closure is correct");
+	SimpleTest.finish();
+    }, 0);
+}
+
+SimpleTest.waitForExplicitFinish();
+SimpleTest.waitForFocus(runTest);
+</script>
+
+<style>
+.panel {
+    transform: rotateX(-150deg);
+    backface-visibility: hidden;
+    transform-origin: 0px 0px;
+    position: absolute;
+    display: block;
+    width: 100px;
+    height: 100px;
+    background-color: green;
+}
+#closure .rotate {
+    transform: rotateX(0deg);
+}
+#closure {
+    perspective: 100px;
+    width: 200px;
+    z-index: 1;
+}
+#outer {
+    height: 400px;
+    width: 200px;
+}
+</style>
+<div id="outer">
+  <div id="closure">
+    <div style="transform-style: preserve-3d;">
+	<div style="transform-style: preserve-3d; background-color: blue;">
+	  <ul>
+	    <li><div id="target" class="panel"></div>
+	    </li>
+	  </ul>
+	</div>
+    </div>
+  </div>
+</div>
--- a/gfx/layers/composite/CompositableHost.cpp
+++ b/gfx/layers/composite/CompositableHost.cpp
@@ -132,19 +132,24 @@ CompositableHost::Create(const TextureIn
   case CompositableType::IMAGE:
     if (gfxVars::UseWebRender()) {
       result = new WebRenderImageHost(aTextureInfo);
     } else {
       result = new ImageHost(aTextureInfo);
     }
     break;
   case CompositableType::CONTENT_SINGLE:
-    result = new ContentHostSingleBuffered(aTextureInfo);
+    if (gfxVars::UseWebRender()) {
+      result = new WebRenderImageHost(aTextureInfo);
+    } else {
+      result = new ContentHostSingleBuffered(aTextureInfo);
+    }
     break;
   case CompositableType::CONTENT_DOUBLE:
+    MOZ_ASSERT(!gfxVars::UseWebRender());
     result = new ContentHostDoubleBuffered(aTextureInfo);
     break;
   default:
     NS_ERROR("Unknown CompositableType");
   }
   return result.forget();
 }
 
--- a/gfx/layers/wr/WebRenderBridgeParent.cpp
+++ b/gfx/layers/wr/WebRenderBridgeParent.cpp
@@ -323,16 +323,20 @@ WebRenderBridgeParent::ProcessWebrenderC
 
         wr::ImageKey key;
         auto slice = Range<uint8_t>(map.mData, validRect.height * map.mStride);
         key = mApi->AddImageBuffer(validRect.Size(), map.mStride, SurfaceFormat::B8G8R8A8, slice);
 
         builder.PushImage(op.bounds(), op.clip(), op.mask().ptrOr(nullptr), op.filter(), key);
         keysToDelete.push_back(key);
         dSurf->Unmap();
+        // XXX workaround for releasing Readlock. See Bug 1339625
+        if(host->GetType() == CompositableType::CONTENT_SINGLE) {
+          host->CleanupResources();
+        }
         break;
       }
       case WebRenderCommand::TOpDPPushIframe: {
         const OpDPPushIframe& op = cmd.get_OpDPPushIframe();
         builder.PushIFrame(op.bounds(), op.clip(), op.pipelineId());
         break;
       }
       case WebRenderCommand::TCompositableOperation: {
--- a/gfx/layers/wr/WebRenderImageHost.cpp
+++ b/gfx/layers/wr/WebRenderImageHost.cpp
@@ -61,18 +61,28 @@ WebRenderImageHost::UseTextureHost(const
     img.mTextureHost->Updated();
   }
 
   mImages.SwapElements(newImages);
   newImages.Clear();
 }
 
 void
+WebRenderImageHost::UseComponentAlphaTextures(TextureHost* aTextureOnBlack,
+                                              TextureHost* aTextureOnWhite)
+{
+  MOZ_ASSERT_UNREACHABLE("unexpected to be called");
+}
+
+void
 WebRenderImageHost::CleanupResources()
 {
+  nsTArray<TimedImage> newImages;
+  mImages.SwapElements(newImages);
+  newImages.Clear();
 }
 
 void
 WebRenderImageHost::RemoveTextureHost(TextureHost* aTexture)
 {
   CompositableHost::RemoveTextureHost(aTexture);
 
   for (int32_t i = mImages.Length() - 1; i >= 0; --i) {
--- a/gfx/layers/wr/WebRenderImageHost.h
+++ b/gfx/layers/wr/WebRenderImageHost.h
@@ -29,17 +29,18 @@ public:
                          float aOpacity,
                          const gfx::Matrix4x4& aTransform,
                          const gfx::SamplingFilter aSamplingFilter,
                          const gfx::IntRect& aClipRect,
                          const nsIntRegion* aVisibleRegion = nullptr,
                          const Maybe<gfx::Polygon>& aGeometry = Nothing()) override;
 
   virtual void UseTextureHost(const nsTArray<TimedTexture>& aTextures) override;
-
+  virtual void UseComponentAlphaTextures(TextureHost* aTextureOnBlack,
+                                         TextureHost* aTextureOnWhite) override;
   virtual void RemoveTextureHost(TextureHost* aTexture) override;
 
   virtual TextureHost* GetAsTextureHost(gfx::IntRect* aPictureRect = nullptr) override;
 
   virtual void Attach(Layer* aLayer,
                       Compositor* aCompositor,
                       AttachFlags aFlags = NO_FLAGS) override;
 
--- a/gfx/layers/wr/WebRenderPaintedLayer.cpp
+++ b/gfx/layers/wr/WebRenderPaintedLayer.cpp
@@ -13,21 +13,23 @@
 #include "gfxUtils.h"
 
 namespace mozilla {
 namespace layers {
 
 using namespace mozilla::gfx;
 
 void
-WebRenderPaintedLayer::PaintThebes()
+WebRenderPaintedLayer::PaintThebes(nsTArray<ReadbackProcessor::Update>* aReadbackUpdates)
 {
   PROFILER_LABEL("WebRenderPaintedLayer", "PaintThebes",
     js::ProfileEntry::Category::GRAPHICS);
 
+  mContentClient->BeginPaint();
+
   uint32_t flags = RotatedContentBuffer::PAINT_CAN_DRAW_ROTATED;
 
   PaintState state =
     mContentClient->BeginPaintBuffer(this, flags);
   mValidRegion.Sub(mValidRegion, state.mRegionToInvalidate);
 
   if (!state.mRegionToDraw.IsEmpty() && !Manager()->GetPaintedLayerCallback()) {
     return;
@@ -61,16 +63,19 @@ WebRenderPaintedLayer::PaintThebes()
                                               state.mClip,
                                               state.mRegionToInvalidate,
                                               Manager()->GetPaintedLayerCallbackData());
 
     ctx = nullptr;
     mContentClient->ReturnDrawTargetToBuffer(target);
     didUpdate = true;
   }
+
+  mContentClient->EndPaint(aReadbackUpdates);
+
   if (didUpdate) {
     Mutated();
 
     ContentClientRemote* contentClientRemote = static_cast<ContentClientRemote*>(mContentClient.get());
 
     // Hold(this) ensures this layer is kept alive through the current transaction
     // The ContentClient assumes this layer is kept alive (e.g., in CreateBuffer),
     // so deleting this Hold for whatever reason will break things.
@@ -95,20 +100,17 @@ WebRenderPaintedLayer::RenderLayerWithRe
   }
 
   nsTArray<ReadbackProcessor::Update> readbackUpdates;
   nsIntRegion readbackRegion;
   if (aReadback && UsedForReadback()) {
     aReadback->GetPaintedLayerUpdates(this, &readbackUpdates);
   }
 
-  IntPoint origin(mVisibleRegion.GetBounds().x, mVisibleRegion.GetBounds().y);
-  mContentClient->BeginPaint();
-  PaintThebes();
-  mContentClient->EndPaint(&readbackUpdates);
+  PaintThebes(&readbackUpdates);
 }
 
 void
 WebRenderPaintedLayer::RenderLayer()
 {
   RenderLayerWithReadback(nullptr);
 
   if (!mExternalImageId) {
--- a/gfx/layers/wr/WebRenderPaintedLayer.h
+++ b/gfx/layers/wr/WebRenderPaintedLayer.h
@@ -47,17 +47,17 @@ public:
   virtual void InvalidateRegion(const nsIntRegion& aRegion) override
   {
     mInvalidRegion.Add(aRegion);
     mValidRegion.Sub(mValidRegion, mInvalidRegion.GetRegion());
   }
 
   Layer* GetLayer() override { return this; }
   void RenderLayer() override;
-  void PaintThebes();
+  void PaintThebes(nsTArray<ReadbackProcessor::Update>* aReadbackUpdates);
   void RenderLayerWithReadback(ReadbackProcessor *aReadback);
   RefPtr<ContentClient> mContentClient;
 };
 
 } // namespace layers
 } // namespace mozilla
 
 #endif // GFX_WEBRENDERPAINTEDLAYER_H
--- a/image/Decoder.h
+++ b/image/Decoder.h
@@ -18,17 +18,17 @@
 #include "Orientation.h"
 #include "SourceBuffer.h"
 #include "StreamingLexer.h"
 #include "SurfaceFlags.h"
 
 namespace mozilla {
 
 namespace Telemetry {
-  enum ID : uint32_t;
+  enum HistogramID : uint32_t;
 } // namespace Telemetry
 
 namespace image {
 
 struct DecoderFinalStatus final
 {
   DecoderFinalStatus(bool aWasMetadataDecode,
                      bool aFinished,
@@ -51,17 +51,17 @@ struct DecoderFinalStatus final
 
   /// True if this decoder encountered the kind of error that should be reported
   /// to the console.
   const bool mShouldReportError : 1;
 };
 
 struct DecoderTelemetry final
 {
-  DecoderTelemetry(const Maybe<Telemetry::ID>& aSpeedHistogram,
+  DecoderTelemetry(const Maybe<Telemetry::HistogramID>& aSpeedHistogram,
                    size_t aBytesDecoded,
                    uint32_t aChunkCount,
                    TimeDuration aDecodeTime)
     : mSpeedHistogram(aSpeedHistogram)
     , mBytesDecoded(aBytesDecoded)
     , mChunkCount(aChunkCount)
     , mDecodeTime(aDecodeTime)
   { }
@@ -72,17 +72,17 @@ struct DecoderTelemetry final
     return mBytesDecoded / (1024 * mDecodeTime.ToSeconds());
   }
 
   /// @return our decoder's decode time, in microseconds.
   int32_t DecodeTimeMicros() { return mDecodeTime.ToMicroseconds(); }
 
   /// The per-image-format telemetry ID for recording our decoder's speed, or
   /// Nothing() if we don't record speed telemetry for this kind of decoder.
-  const Maybe<Telemetry::ID> mSpeedHistogram;
+  const Maybe<Telemetry::HistogramID> mSpeedHistogram;
 
   /// The number of bytes of input our decoder processed.
   const size_t mBytesDecoded;
 
   /// The number of chunks our decoder's input was divided into.
   const uint32_t mChunkCount;
 
   /// The amount of time our decoder spent inside DoDecode().
@@ -398,17 +398,17 @@ protected:
   virtual nsresult FinishInternal();
   virtual nsresult FinishWithErrorInternal();
 
   /**
    * @return the per-image-format telemetry ID for recording this decoder's
    * speed, or Nothing() if we don't record speed telemetry for this kind of
    * decoder.
    */
-  virtual Maybe<Telemetry::ID> SpeedHistogram() const { return Nothing(); }
+  virtual Maybe<Telemetry::HistogramID> SpeedHistogram() const { return Nothing(); }
 
 
   /*
    * Progress notifications.
    */
 
   // Called by decoders when they determine the size of the image. Informs
   // the image of its size and sends notifications.
--- a/image/decoders/nsGIFDecoder2.cpp
+++ b/image/decoders/nsGIFDecoder2.cpp
@@ -1078,16 +1078,16 @@ nsGIFDecoder2::SkipSubBlocks(const char*
   }
 
   // Skip to the next sub-block length value.
   return Transition::ToUnbuffered(State::FINISHED_SKIPPING_DATA,
                                   State::SKIP_DATA_THEN_SKIP_SUB_BLOCKS,
                                   nextSubBlockLength);
 }
 
-Maybe<Telemetry::ID>
+Maybe<Telemetry::HistogramID>
 nsGIFDecoder2::SpeedHistogram() const
 {
   return Some(Telemetry::IMAGE_DECODE_SPEED_GIF);
 }
 
 } // namespace image
 } // namespace mozilla
--- a/image/decoders/nsGIFDecoder2.h
+++ b/image/decoders/nsGIFDecoder2.h
@@ -24,17 +24,17 @@ class nsGIFDecoder2 : public Decoder
 public:
   ~nsGIFDecoder2();
 
 protected:
   LexerResult DoDecode(SourceBufferIterator& aIterator,
                        IResumable* aOnResume) override;
   nsresult FinishInternal() override;
 
-  Maybe<Telemetry::ID> SpeedHistogram() const override;
+  Maybe<Telemetry::HistogramID> SpeedHistogram() const override;
 
 private:
   friend class DecoderFactory;
 
   // Decoders should only be instantiated via DecoderFactory.
   explicit nsGIFDecoder2(RasterImage* aImage);
 
   /// Called when we begin decoding the image.
--- a/image/decoders/nsJPEGDecoder.cpp
+++ b/image/decoders/nsJPEGDecoder.cpp
@@ -117,17 +117,17 @@ nsJPEGDecoder::~nsJPEGDecoder()
     qcms_profile_release(mInProfile);
   }
 
   MOZ_LOG(sJPEGDecoderAccountingLog, LogLevel::Debug,
          ("nsJPEGDecoder::~nsJPEGDecoder: Destroying JPEG decoder %p",
           this));
 }
 
-Maybe<Telemetry::ID>
+Maybe<Telemetry::HistogramID>
 nsJPEGDecoder::SpeedHistogram() const
 {
   return Some(Telemetry::IMAGE_DECODE_SPEED_JPEG);
 }
 
 nsresult
 nsJPEGDecoder::InitInternal()
 {
--- a/image/decoders/nsJPEGDecoder.h
+++ b/image/decoders/nsJPEGDecoder.h
@@ -55,17 +55,17 @@ public:
   void NotifyDone();
 
 protected:
   nsresult InitInternal() override;
   LexerResult DoDecode(SourceBufferIterator& aIterator,
                        IResumable* aOnResume) override;
   nsresult FinishInternal() override;
 
-  Maybe<Telemetry::ID> SpeedHistogram() const override;
+  Maybe<Telemetry::HistogramID> SpeedHistogram() const override;
 
 protected:
   Orientation ReadOrientationFromEXIF();
   void OutputScanlines(bool* suspend);
 
 private:
   friend class DecoderFactory;
 
--- a/image/decoders/nsPNGDecoder.cpp
+++ b/image/decoders/nsPNGDecoder.cpp
@@ -1049,17 +1049,17 @@ nsPNGDecoder::error_callback(png_structp
 
 
 void
 nsPNGDecoder::warning_callback(png_structp png_ptr, png_const_charp warning_msg)
 {
   MOZ_LOG(sPNGLog, LogLevel::Warning, ("libpng warning: %s\n", warning_msg));
 }
 
-Maybe<Telemetry::ID>
+Maybe<Telemetry::HistogramID>
 nsPNGDecoder::SpeedHistogram() const
 {
   return Some(Telemetry::IMAGE_DECODE_SPEED_PNG);
 }
 
 bool
 nsPNGDecoder::IsValidICO() const
 {
--- a/image/decoders/nsPNGDecoder.h
+++ b/image/decoders/nsPNGDecoder.h
@@ -25,17 +25,17 @@ public:
   /// @return true if this PNG is a valid ICO resource.
   bool IsValidICO() const;
 
 protected:
   nsresult InitInternal() override;
   LexerResult DoDecode(SourceBufferIterator& aIterator,
                        IResumable* aOnResume) override;
 
-  Maybe<Telemetry::ID> SpeedHistogram() const override;
+  Maybe<Telemetry::HistogramID> SpeedHistogram() const override;
 
 private:
   friend class DecoderFactory;
 
   // Decoders should only be instantiated via DecoderFactory.
   explicit nsPNGDecoder(RasterImage* aImage);
 
   /// The information necessary to create a frame.
--- a/js/src/builtin/TestingFunctions.cpp
+++ b/js/src/builtin/TestingFunctions.cpp
@@ -1301,16 +1301,32 @@ EnsureFlatString(JSContext* cx, unsigned
     JSFlatString* flat = args[0].toString()->ensureFlat(cx);
     if (!flat)
         return false;
 
     args.rval().setString(flat);
     return true;
 }
 
+static bool
+RepresentativeStringArray(JSContext* cx, unsigned argc, Value* vp)
+{
+    CallArgs args = CallArgsFromVp(argc, vp);
+
+    RootedObject array(cx, JS_NewArrayObject(cx, 0));
+    if (!array)
+        return false;
+
+    if (!JSString::fillWithRepresentatives(cx, array.as<ArrayObject>()))
+        return false;
+
+    args.rval().setObject(*array);
+    return true;
+}
+
 #if defined(DEBUG) || defined(JS_OOM_BREAKPOINT)
 static bool
 OOMThreadTypes(JSContext* cx, unsigned argc, Value* vp)
 {
     CallArgs args = CallArgsFromVp(argc, vp);
     args.rval().setInt32(js::oom::THREAD_TYPE_MAX);
     return true;
 }
@@ -4332,16 +4348,21 @@ static const JSFunctionSpecWithHelp Test
     JS_FN_HELP("newExternalString", NewExternalString, 1, 0,
 "newExternalString(str)",
 "  Copies str's chars and returns a new external string."),
 
     JS_FN_HELP("ensureFlatString", EnsureFlatString, 1, 0,
 "ensureFlatString(str)",
 "  Ensures str is a flat (null-terminated) string and returns it."),
 
+    JS_FN_HELP("representativeStringArray", RepresentativeStringArray, 0, 0,
+"representativeStringArray()",
+"  Returns an array of strings that represent the various internal string\n"
+"  types and character encodings."),
+
 #if defined(DEBUG) || defined(JS_OOM_BREAKPOINT)
     JS_FN_HELP("oomThreadTypes", OOMThreadTypes, 0, 0,
 "oomThreadTypes()",
 "  Get the number of thread types that can be used as an argument for\n"
 "oomAfterAllocations() and oomAtAllocation()."),
 
     JS_FN_HELP("oomAfterAllocations", OOMAfterAllocations, 2, 0,
 "oomAfterAllocations(count [,threadType])",
--- a/js/src/jit-test/tests/basic/external-strings.js
+++ b/js/src/jit-test/tests/basic/external-strings.js
@@ -10,16 +10,22 @@ assertEq(o[ext2], 4);
 
 eval(newExternalString("assertEq(1, 1)"));
 
 // Make sure ensureFlat does the right thing for external strings.
 ext = newExternalString("abc\0defg\0");
 assertEq(ensureFlatString(ext), "abc\0defg\0");
 assertEq(ensureFlatString(ext), "abc\0defg\0");
 
+for (var s of representativeStringArray())
+    assertEq(ensureFlatString(s), s);
+
+for (var s of representativeStringArray())
+    assertEq(newExternalString(s), s);
+
 function testQuote() {
     for (var data of [["abc", "abc"],
 		      ["abc\t", "abc\\t"],
 		      ["abc\t\t\0", "abc\\t\\t\\x00"],
 		      ["abc\\def", "abc\\\\def"]]) {
 	try {
 	    assertEq(newExternalString(data[0]), false);
 	} catch(e) {
--- a/js/src/vm/String.cpp
+++ b/js/src/vm/String.cpp
@@ -1435,8 +1435,179 @@ void
 JSFlatString::dumpRepresentation(FILE* fp, int indent) const
 {
     dumpRepresentationHeader(fp, indent, "JSFlatString");
     indent += 2;
 
     dumpRepresentationChars(fp, indent);
 }
 #endif
+
+static void
+FinalizeRepresentativeExternalString(Zone* zone, const JSStringFinalizer* fin, char16_t* chars);
+
+static const JSStringFinalizer RepresentativeExternalStringFinalizer =
+    { FinalizeRepresentativeExternalString };
+
+static void
+FinalizeRepresentativeExternalString(Zone* zone, const JSStringFinalizer* fin, char16_t* chars)
+{
+    // Constant chars, nothing to free.
+    MOZ_ASSERT(fin == &RepresentativeExternalStringFinalizer);
+}
+
+template <typename CheckString, typename CharT>
+static bool
+FillWithRepresentatives(JSContext* cx, HandleArrayObject array, uint32_t* index,
+                        const CharT* chars, size_t len,
+                        size_t fatInlineMaxLength,
+                        const CheckString& check)
+{
+    auto AppendString =
+        [&check](JSContext* cx, HandleArrayObject array, uint32_t* index, HandleString s)
+    {
+        MOZ_ASSERT(check(s));
+        RootedValue val(cx, StringValue(s));
+        return JS_DefineElement(cx, array, (*index)++, val, 0);
+    };
+
+    MOZ_ASSERT(len > fatInlineMaxLength);
+
+    // Normal atom.
+    RootedString atom1(cx, AtomizeChars(cx, chars, len));
+    if (!atom1 || !AppendString(cx, array, index, atom1))
+        return false;
+    MOZ_ASSERT(atom1->isAtom());
+
+    // Inline atom.
+    RootedString atom2(cx, AtomizeChars(cx, chars, 2));
+    if (!atom2 || !AppendString(cx, array, index, atom2))
+        return false;
+    MOZ_ASSERT(atom2->isAtom());
+    MOZ_ASSERT(atom2->isInline());
+
+    // Fat inline atom.
+    RootedString atom3(cx, AtomizeChars(cx, chars, fatInlineMaxLength));
+    if (!atom3 || !AppendString(cx, array, index, atom3))
+        return false;
+    MOZ_ASSERT(atom3->isAtom());
+    MOZ_ASSERT(atom3->isFatInline());
+
+    // Normal flat string.
+    RootedString flat1(cx, NewStringCopyN<CanGC>(cx, chars, len));
+    if (!flat1 || !AppendString(cx, array, index, flat1))
+        return false;
+    MOZ_ASSERT(flat1->isFlat());
+
+    // Inline string.
+    RootedString flat2(cx, NewStringCopyN<CanGC>(cx, chars, 3));
+    if (!flat2 || !AppendString(cx, array, index, flat2))
+        return false;
+    MOZ_ASSERT(flat2->isFlat());
+    MOZ_ASSERT(flat2->isInline());
+
+    // Fat inline string.
+    RootedString flat3(cx, NewStringCopyN<CanGC>(cx, chars, fatInlineMaxLength));
+    if (!flat3 || !AppendString(cx, array, index, flat3))
+        return false;
+    MOZ_ASSERT(flat3->isFlat());
+    MOZ_ASSERT(flat3->isFatInline());
+
+    // Rope.
+    RootedString rope(cx, ConcatStrings<CanGC>(cx, atom1, atom3));
+    if (!rope || !AppendString(cx, array, index, rope))
+        return false;
+    MOZ_ASSERT(rope->isRope());
+
+    // Dependent.
+    RootedString dep(cx, NewDependentString(cx, atom1, 0, len - 2));
+    if (!dep || !AppendString(cx, array, index, dep))
+        return false;
+    MOZ_ASSERT(dep->isDependent());
+
+    // Undepended.
+    RootedString undep(cx, NewDependentString(cx, atom1, 0, len - 3));
+    if (!undep || !undep->ensureFlat(cx) || !AppendString(cx, array, index, undep))
+        return false;
+    MOZ_ASSERT(undep->isUndepended());
+
+    // Extensible.
+    RootedString temp1(cx, NewStringCopyN<CanGC>(cx, chars, len));
+    if (!temp1)
+        return false;
+    RootedString extensible(cx, ConcatStrings<CanGC>(cx, temp1, atom3));
+    if (!extensible || !extensible->ensureLinear(cx))
+        return false;
+    if (!AppendString(cx, array, index, extensible))
+        return false;
+    MOZ_ASSERT(extensible->isExtensible());
+
+    // External. Note that we currently only support TwoByte external strings.
+    RootedString external1(cx), external2(cx);
+    if (IsSame<CharT, char16_t>::value) {
+        external1 = JS_NewExternalString(cx, (const char16_t*)chars, len,
+                                         &RepresentativeExternalStringFinalizer);
+        if (!external1 || !AppendString(cx, array, index, external1))
+            return false;
+        MOZ_ASSERT(external1->isExternal());
+
+        external2 = JS_NewExternalString(cx, (const char16_t*)chars, 2,
+                                         &RepresentativeExternalStringFinalizer);
+        if (!external2 || !AppendString(cx, array, index, external2))
+            return false;
+        MOZ_ASSERT(external2->isExternal());
+    }
+
+    // Assert the strings still have the types we expect after creating the
+    // other strings.
+
+    MOZ_ASSERT(atom1->isAtom());
+    MOZ_ASSERT(atom2->isAtom());
+    MOZ_ASSERT(atom3->isAtom());
+    MOZ_ASSERT(atom2->isInline());
+    MOZ_ASSERT(atom3->isFatInline());
+
+    MOZ_ASSERT(flat1->isFlat());
+    MOZ_ASSERT(flat2->isFlat());
+    MOZ_ASSERT(flat3->isFlat());
+    MOZ_ASSERT(flat2->isInline());
+    MOZ_ASSERT(flat3->isFatInline());
+
+    MOZ_ASSERT(rope->isRope());
+    MOZ_ASSERT(dep->isDependent());
+    MOZ_ASSERT(undep->isUndepended());
+    MOZ_ASSERT(extensible->isExtensible());
+    MOZ_ASSERT_IF(external1, external1->isExternal());
+    MOZ_ASSERT_IF(external2, external2->isExternal());
+    return true;
+}
+
+/* static */ bool
+JSString::fillWithRepresentatives(JSContext* cx, HandleArrayObject array)
+{
+    uint32_t index = 0;
+
+    auto CheckTwoByte = [](JSString* str) { return str->hasTwoByteChars(); };
+    auto CheckLatin1 = [](JSString* str) { return str->hasLatin1Chars(); };
+
+    // Append TwoByte strings.
+    static const char16_t twoByteChars[] = u"\u1234abc\0def\u5678ghijklmasdfa\0xyz0123456789";
+    if (!FillWithRepresentatives(cx, array, &index,
+                                 twoByteChars, mozilla::ArrayLength(twoByteChars) - 1,
+                                 JSFatInlineString::MAX_LENGTH_TWO_BYTE,
+                                 CheckTwoByte))
+    {
+        return false;
+    }
+
+    // Append Latin1 strings.
+    static const Latin1Char latin1Chars[] = "abc\0defghijklmasdfa\0xyz0123456789";
+    if (!FillWithRepresentatives(cx, array, &index,
+                                 latin1Chars, mozilla::ArrayLength(latin1Chars) - 1,
+                                 JSFatInlineString::MAX_LENGTH_LATIN1,
+                                 CheckLatin1))
+    {
+        return false;
+    }
+
+    MOZ_ASSERT(index == 22);
+    return true;
+}
--- a/js/src/vm/String.h
+++ b/js/src/vm/String.h
@@ -462,16 +462,20 @@ class JSString : public js::gc::TenuredC
     }
 
     MOZ_ALWAYS_INLINE
     JSAtom& asAtom() const {
         MOZ_ASSERT(isAtom());
         return *(JSAtom*)this;
     }
 
+    // Fills |array| with various strings that represent the different string
+    // kinds and character encodings.
+    static bool fillWithRepresentatives(JSContext* cx, js::HandleArrayObject array);
+
     /* Only called by the GC for dependent or undepended strings. */
 
     inline bool hasBase() const {
         return d.u1.flags & HAS_BASE_BIT;
     }
 
     inline JSLinearString* base() const;
 
--- a/layout/base/nsPresContext.cpp
+++ b/layout/base/nsPresContext.cpp
@@ -1655,17 +1655,17 @@ nsPresContext::RecordInteractionTime(Int
     &nsPresContext::mFirstClickTime,
     &nsPresContext::mFirstKeyTime,
     &nsPresContext::mFirstMouseMoveTime,
     &nsPresContext::mFirstScrollTime
   };
 
   // Array of histogram IDs for the different interaction types,
   // keyed by InteractionType.
-  Telemetry::ID histogramIds[] = {
+  Telemetry::HistogramID histogramIds[] = {
     Telemetry::TIME_TO_FIRST_CLICK_MS,
     Telemetry::TIME_TO_FIRST_KEY_INPUT_MS,
     Telemetry::TIME_TO_FIRST_MOUSE_MOVE_MS,
     Telemetry::TIME_TO_FIRST_SCROLL_MS
   };
 
   TimeStamp& interactionTime = this->*(
     interactionTimes[static_cast<uint32_t>(aType)]);
--- a/media/libcubeb/README_MOZILLA
+++ b/media/libcubeb/README_MOZILLA
@@ -1,8 +1,8 @@
 The source from this directory was copied from the cubeb 
 git repository using the update.sh script.  The only changes
 made were those applied by update.sh and the addition of
 Makefile.in build files for the Mozilla build system.
 
 The cubeb git repository is: git://github.com/kinetiknz/cubeb.git
 
-The git commit ID used was 21e96ac7fd456dc957cd9947a61da1366a1f862d.
+The git commit ID used was 8977c13bf0dab9a7716501ae92ca5945fe4e1dae.
--- a/media/libcubeb/gtest/test_resampler.cpp
+++ b/media/libcubeb/gtest/test_resampler.cpp
@@ -712,17 +712,18 @@ TEST(cubeb, resampler_passthrough_duplex
   seq_idx = seq(input_buffer_prebuffer, input_channels, seq_idx,
                 prebuffer_frames);
 
   long got = cubeb_resampler_fill(resampler, input_buffer_prebuffer, &prebuffer_frames,
                                   output_buffer, BUF_BASE_SIZE);
 
   output_seq_idx += BUF_BASE_SIZE;
 
-  ASSERT_EQ(prebuffer_frames, static_cast<long>(ARRAY_LENGTH(input_buffer_prebuffer) / input_params.channels));
+  // prebuffer_frames will hold the frames used by the resampler.
+  ASSERT_EQ(prebuffer_frames, BUF_BASE_SIZE);
   ASSERT_EQ(got, BUF_BASE_SIZE);
 
   for (uint32_t i = 0; i < 300; i++) {
     long int frames = BUF_BASE_SIZE;
     // Simulate that sometimes, we don't have the input callback on time
     if (i != 0 && (i % 100) == 0) {
       long zero = 0;
       got = cubeb_resampler_fill(resampler, input_buffer_normal /* unused here */,
--- a/media/libcubeb/src/cubeb_audiounit.cpp
+++ b/media/libcubeb/src/cubeb_audiounit.cpp
@@ -44,16 +44,26 @@ typedef UInt32  AudioFormatFlags;
 #define fieldOffset(type, field) ((size_t) &((type *) 0)->field)
 
 #define PRINT_ERROR_CODE(str, r) do {                           \
     LOG("System call failed: %s (rv: %d)", str, (int) r);       \
   } while(0)
 
 const char * DISPATCH_QUEUE_LABEL = "org.mozilla.cubeb";
 
+#ifdef ALOGV
+#undef ALOGV
+#endif
+#define ALOGV(msg, ...) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{LOGV(msg, ##__VA_ARGS__);})
+
+#ifdef ALOG
+#undef ALOG
+#endif
+#define ALOG(msg, ...) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{LOG(msg, ##__VA_ARGS__);})
+
 /* Testing empirically, some headsets report a minimal latency that is very
  * low, but this does not work in practice. Lie and say the minimum is 256
  * frames. */
 const uint32_t SAFE_MIN_LATENCY_FRAMES = 256;
 const uint32_t SAFE_MAX_LATENCY_FRAMES = 512;
 
 void audiounit_stream_stop_internal(cubeb_stream * stm);
 void audiounit_stream_start_internal(cubeb_stream * stm);
@@ -216,35 +226,34 @@ struct cubeb_stream {
   Float64 output_hw_rate = 0;
   /* Expected I/O thread interleave,
    * calculated from I/O hw rate. */
   int expected_output_callbacks_in_a_row = 0;
   owned_critical_section mutex;
   /* Hold the input samples in every
    * input callback iteration */
   std::unique_ptr<auto_array_wrapper> input_linear_buffer;
+  // After the resampling some input data remains stored inside
+  // the resampler. This number is used in order to calculate
+  // the number of extra silence frames in input.
+  std::atomic<uint32_t> available_input_frames{ 0 };
   /* Frames on input buffer */
   std::atomic<uint32_t> input_buffer_frames{ 0 };
   /* Frame counters */
   std::atomic<uint64_t> frames_played{ 0 };
   uint64_t frames_queued = 0;
   std::atomic<int64_t> frames_read{ 0 };
-  std::atomic<bool> shutdown{ false };
+  std::atomic<bool> shutdown{ true };
   std::atomic<bool> draining{ false };
   /* Latency requested by the user. */
   uint32_t latency_frames = 0;
   std::atomic<uint64_t> current_latency_frames{ 0 };
   uint64_t hw_latency_frames = UINT64_MAX;
   std::atomic<float> panning{ 0 };
   std::unique_ptr<cubeb_resampler, decltype(&cubeb_resampler_destroy)> resampler;
-  /* This is the number of output callback we got in a row. This is usually one,
-   * but can be two when the input and output rate are different, and more when
-   * a device has been plugged or unplugged, as there can be some time before
-   * the device is ready. */
-  std::atomic<int> output_callback_in_a_row{ 0 };
   /* This is true if a device change callback is currently running.  */
   std::atomic<bool> switching_device{ false };
   std::atomic<bool> buffer_size_change_state{ false };
 };
 
 bool has_input(cubeb_stream * stm)
 {
   return stm->input_stream_params.rate != 0;
@@ -372,26 +381,28 @@ audiounit_render_input(cubeb_stream * st
     PRINT_ERROR_CODE("AudioUnitRender", r);
     return r;
   }
 
   /* Copy input data in linear buffer. */
   stm->input_linear_buffer->push(input_buffer_list.mBuffers[0].mData,
                                  input_frames * stm->input_desc.mChannelsPerFrame);
 
-  LOGV("(%p) input:  buffers %u, size %u, channels %u, frames %d.",
+  /* Advance input frame counter. */
+  assert(input_frames > 0);
+  stm->frames_read += input_frames;
+  stm->available_input_frames += input_frames;
+
+  ALOGV("(%p) input: buffers %u, size %u, channels %u, rendered frames %d, total frames %d.",
        stm,
        (unsigned int) input_buffer_list.mNumberBuffers,
        (unsigned int) input_buffer_list.mBuffers[0].mDataByteSize,
        (unsigned int) input_buffer_list.mBuffers[0].mNumberChannels,
-       (unsigned int) input_frames);
-
-  /* Advance input frame counter. */
-  assert(input_frames > 0);
-  stm->frames_read += input_frames;
+       (unsigned int) input_frames,
+        stm->available_input_frames.load());
 
   return noErr;
 }
 
 static OSStatus
 audiounit_input_callback(void * user_ptr,
                          AudioUnitRenderActionFlags * flags,
                          AudioTimeStamp const * tstamp,
@@ -400,37 +411,27 @@ audiounit_input_callback(void * user_ptr
                          AudioBufferList * /* bufs */)
 {
   cubeb_stream * stm = static_cast<cubeb_stream *>(user_ptr);
 
   assert(stm->input_unit != NULL);
   assert(AU_IN_BUS == bus);
 
   if (stm->shutdown) {
-    LOG("(%p) input shutdown", stm);
+    ALOG("(%p) input shutdown", stm);
     return noErr;
   }
 
-  // This happens when we're finally getting a new input callback after having
-  // switched device, we can clear the input buffer now, only keeping the data
-  // we just got.
-  if (stm->output_callback_in_a_row > stm->expected_output_callbacks_in_a_row) {
-    stm->input_linear_buffer->pop(
-        stm->input_linear_buffer->length() -
-        input_frames * stm->input_stream_params.channels);
-  }
-
   OSStatus r = audiounit_render_input(stm, flags, tstamp, bus, input_frames);
   if (r != noErr) {
     return r;
   }
 
   // Full Duplex. We'll call data_callback in the AudioUnit output callback.
   if (stm->output_unit != NULL) {
-    stm->output_callback_in_a_row = 0;
     return noErr;
   }
 
   /* Input only. Call the user callback through resampler.
      Resampler will deliver input buffer in the correct rate. */
   assert(input_frames <= stm->input_linear_buffer->length() / stm->input_desc.mChannelsPerFrame);
   long total_input_frames = stm->input_linear_buffer->length() / stm->input_desc.mChannelsPerFrame;
   long outframes = cubeb_resampler_fill(stm->resampler.get(),
@@ -444,64 +445,60 @@ audiounit_input_callback(void * user_ptr
   if (outframes < 0 || (UInt32) outframes != input_frames) {
     stm->shutdown = true;
     return noErr;
   }
 
   return noErr;
 }
 
+static uint32_t
+minimum_resampling_input_frames(cubeb_stream *stm)
+{
+  return ceilf(stm->input_hw_rate / stm->output_hw_rate * stm->input_buffer_frames);
+}
+
 static bool
 is_extra_input_needed(cubeb_stream * stm)
 {
   /* If the output callback came first and this is a duplex stream, we need to
     * fill in some additional silence in the resampler.
     * Otherwise, if we had more than expected callbacks in a row, or we're currently
     * switching, we add some silence as well to compensate for the fact that
     * we're lacking some input data. */
-
-  /* If resampling is taking place after every output callback
-   * the input buffer expected to be empty.  Any frame left over
-   * from resampling is stored inside the resampler available to
-   * be used in next iteration as needed.
-   * BUT when noop_resampler is operating we have left over
-   * frames since it does not store anything internally. */
   return stm->frames_read == 0 ||
-         (stm->input_linear_buffer->length() == 0 &&
-         (stm->output_callback_in_a_row > stm->expected_output_callbacks_in_a_row ||
-         stm->switching_device));
+         stm->available_input_frames.load() < minimum_resampling_input_frames(stm);
 }
 
 static OSStatus
 audiounit_output_callback(void * user_ptr,
                           AudioUnitRenderActionFlags * /* flags */,
                           AudioTimeStamp const * tstamp,
                           UInt32 bus,
                           UInt32 output_frames,
                           AudioBufferList * outBufferList)
 {
   assert(AU_OUT_BUS == bus);
   assert(outBufferList->mNumberBuffers == 1);
 
   cubeb_stream * stm = static_cast<cubeb_stream *>(user_ptr);
 
-  stm->output_callback_in_a_row++;
-
-  LOGV("(%p) output: buffers %u, size %u, channels %u, frames %u.",
-       stm,
-       (unsigned int) outBufferList->mNumberBuffers,
-       (unsigned int) outBufferList->mBuffers[0].mDataByteSize,
-       (unsigned int) outBufferList->mBuffers[0].mNumberChannels,
-       (unsigned int) output_frames);
-
-  long input_frames = 0;
+  ALOGV("(%p) output: buffers %u, size %u, channels %u, frames %u, total input frames %d.",
+        stm,
+        (unsigned int) outBufferList->mNumberBuffers,
+        (unsigned int) outBufferList->mBuffers[0].mDataByteSize,
+        (unsigned int) outBufferList->mBuffers[0].mNumberChannels,
+        (unsigned int) output_frames,
+        stm->available_input_frames.load());
+
+  long input_frames = 0, input_frames_before_fill = 0;
   void * output_buffer = NULL, * input_buffer = NULL;
 
   if (stm->shutdown) {
-    LOG("(%p) output shutdown.", stm);
+    ALOG("(%p) output shutdown.", stm);
     audiounit_make_silent(&outBufferList->mBuffers[0]);
     return noErr;
   }
 
   stm->current_latency_frames = audiotimestamp_to_latency(tstamp, stm);
   if (stm->draining) {
     OSStatus r = AudioOutputUnitStop(stm->output_unit);
     assert(r == 0);
@@ -513,37 +510,44 @@ audiounit_output_callback(void * user_pt
     audiounit_make_silent(&outBufferList->mBuffers[0]);
     return noErr;
   }
   /* Get output buffer. */
   output_buffer = outBufferList->mBuffers[0].mData;
   /* If Full duplex get also input buffer */
   if (stm->input_unit != NULL) {
     if (is_extra_input_needed(stm)) {
-      uint32_t min_input_frames_required = ceilf(stm->input_hw_rate / stm->output_hw_rate *
-                                                                      stm->input_buffer_frames);
-      stm->input_linear_buffer->push_silence(min_input_frames_required * stm->input_desc.mChannelsPerFrame);
-      LOG("(%p) %s pushed %u frames of input silence.", stm, stm->frames_read == 0 ? "Input hasn't started," :
-          stm->switching_device ? "Device switching," : "Drop out,", min_input_frames_required);
+      uint32_t min_input_frames = minimum_resampling_input_frames(stm);
+      stm->input_linear_buffer->push_silence(min_input_frames * stm->input_desc.mChannelsPerFrame);
+      stm->available_input_frames += min_input_frames;
+
+      ALOG("(%p) %s pushed %u frames of input silence.", stm, stm->frames_read == 0 ? "Input hasn't started," :
+           stm->switching_device ? "Device switching," : "Drop out,", min_input_frames);
     }
-    // The input buffer
     input_buffer = stm->input_linear_buffer->data();
-    // Number of input frames in the buffer
+    // Number of input frames in the buffer. It will change to actually used frames
+    // inside fill
     input_frames = stm->input_linear_buffer->length() / stm->input_desc.mChannelsPerFrame;
+    // Number of input frames pushed inside resampler.
+    input_frames_before_fill = input_frames;
   }
 
   /* Call user callback through resampler. */
   long outframes = cubeb_resampler_fill(stm->resampler.get(),
                                         input_buffer,
                                         input_buffer ? &input_frames : NULL,
                                         output_buffer,
                                         output_frames);
 
   if (input_buffer) {
-    stm->input_linear_buffer->pop(input_frames * stm->input_desc.mChannelsPerFrame);
+    // Decrease counter by the number of frames used by resampler
+    stm->available_input_frames -= input_frames;
+    assert(stm->available_input_frames.load() >= 0);
+    // Pop from the buffer the frames pushed to the resampler.
+    stm->input_linear_buffer->pop(input_frames_before_fill * stm->input_desc.mChannelsPerFrame);
   }
 
   if (outframes < 0) {
     stm->shutdown = true;
     return noErr;
   }
 
   size_t outbpf = stm->output_desc.mBytesPerFrame;
@@ -709,16 +713,19 @@ audiounit_property_listener_callback(Aud
           }
           // Allow restart to choose the new default. Event register only for input.
           stm->input_device = 0;
         }
         break;
       case kAudioDevicePropertyDataSource:
         LOG("Event[%u] - mSelector == kAudioHardwarePropertyDataSource", (unsigned int) i);
         break;
+      default:
+        LOG("Event[%u] - mSelector == Unexpected Event id %d, return", (unsigned int) i, addresses[i].mSelector);
+        return noErr;
     }
   }
 
   for (UInt32 i = 0; i < address_count; i++) {
     switch(addresses[i].mSelector) {
     case kAudioHardwarePropertyDefaultOutputDevice:
     case kAudioHardwarePropertyDefaultInputDevice:
     case kAudioDevicePropertyDeviceIsAlive:
@@ -885,16 +892,26 @@ audiounit_uninstall_device_changed_callb
       return CUBEB_ERROR;
     }
 
     r = audiounit_remove_listener(stm, kAudioObjectSystemObject, kAudioHardwarePropertyDefaultInputDevice,
         kAudioObjectPropertyScopeGlobal, &audiounit_property_listener_callback);
     if (r != noErr) {
       return CUBEB_ERROR;
     }
+
+    /* Event to notify when the input is going away. */
+    AudioDeviceID dev = stm->input_device ? stm->input_device :
+                        audiounit_get_default_device_id(CUBEB_DEVICE_TYPE_INPUT);
+    r = audiounit_remove_listener(stm, dev, kAudioDevicePropertyDeviceIsAlive,
+                                  kAudioObjectPropertyScopeGlobal, &audiounit_property_listener_callback);
+    if (r != noErr) {
+      PRINT_ERROR_CODE("AudioObjectRemovePropertyListener/input/kAudioDevicePropertyDeviceIsAlive", r);
+      return CUBEB_ERROR;
+    }
   }
   return CUBEB_OK;
 }
 
 /* Get the acceptable buffer size (in frames) that this device can work with. */
 static int
 audiounit_get_acceptable_latency_range(AudioValueRange * latency_range)
 {
@@ -1296,28 +1313,18 @@ static int
 audiounit_init_input_linear_buffer(cubeb_stream * stream, uint32_t capacity)
 {
   uint32_t size = capacity * stream->input_buffer_frames * stream->input_desc.mChannelsPerFrame;
   if (stream->input_desc.mFormatFlags & kAudioFormatFlagIsSignedInteger) {
     stream->input_linear_buffer.reset(new auto_array_wrapper_impl<short>(size));
   } else {
     stream->input_linear_buffer.reset(new auto_array_wrapper_impl<float>(size));
   }
-
   assert(stream->input_linear_buffer->length() == 0);
 
-  // Pre-buffer silence if needed
-  if (capacity != 1) {
-    size_t silence_size = stream->input_buffer_frames *
-                          stream->input_desc.mChannelsPerFrame;
-    stream->input_linear_buffer->push_silence(silence_size);
-
-    assert(stream->input_linear_buffer->length() == silence_size);
-  }
-
   return CUBEB_OK;
 }
 
 static uint32_t
 audiounit_clamp_latency(cubeb_stream * stm, uint32_t latency_frames)
 {
   // For the 1st stream set anything within safe min-max
   assert(stm->context->active_streams > 0);
--- a/media/libcubeb/src/cubeb_resampler.cpp
+++ b/media/libcubeb/src/cubeb_resampler.cpp
@@ -67,16 +67,17 @@ long passthrough_resampler<T>::fill(void
                                frames_to_samples(*input_frames_count));
   }
 
   long rv = data_callback(stream, user_ptr, internal_input_buffer.data(),
                           output_buffer, output_frames);
 
   if (input_buffer) {
     internal_input_buffer.pop(nullptr, frames_to_samples(output_frames));
+    *input_frames_count = output_frames;
   }
 
   return rv;
 }
 
 template<typename T, typename InputProcessor, typename OutputProcessor>
 cubeb_resampler_speex<T, InputProcessor, OutputProcessor>
   ::cubeb_resampler_speex(InputProcessor * input_processor,
@@ -174,17 +175,17 @@ cubeb_resampler_speex<T, InputProcessor,
 
   /* The input data, after eventual resampling. This is passed to the callback. */
   T * resampled_input = nullptr;
   uint32_t resampled_frame_count = input_processor->output_for_input(*input_frames_count);
 
   /* process the input, and present exactly `output_frames_needed` in the
   * callback. */
   input_processor->input(input_buffer, *input_frames_count);
-  resampled_input = input_processor->output(resampled_frame_count);
+  resampled_input = input_processor->output(resampled_frame_count, (size_t*)input_frames_count);
 
   long got = data_callback(stream, user_ptr,
                            resampled_input, nullptr, resampled_frame_count);
 
   /* Return the number of initial input frames or part of it.
   * Since output_frames_needed == 0 in input scenario, the only
   * available number outside resampler is the initial number of frames. */
   return (*input_frames_count) * (got / resampled_frame_count);
@@ -221,17 +222,17 @@ cubeb_resampler_speex<T, InputProcessor,
   out_unprocessed =
     output_processor->input_buffer(output_frames_before_processing);
 
   if (in_buffer) {
     /* process the input, and present exactly `output_frames_needed` in the
     * callback. */
     input_processor->input(in_buffer, *input_frames_count);
     resampled_input =
-      input_processor->output(output_frames_before_processing);
+      input_processor->output(output_frames_before_processing, (size_t*)input_frames_count);
   } else {
     resampled_input = nullptr;
   }
 
   got = data_callback(stream, user_ptr,
                       resampled_input, out_unprocessed,
                       output_frames_before_processing);
 
--- a/media/libcubeb/src/cubeb_resampler_internal.h
+++ b/media/libcubeb/src/cubeb_resampler_internal.h
@@ -217,33 +217,34 @@ public:
   size_t output_for_input(uint32_t input_frames)
   {
     return (size_t)floorf((input_frames + samples_to_frames(resampling_in_buffer.length()))
                          / resampling_ratio);
   }
 
   /** Returns a buffer containing exactly `output_frame_count` resampled frames.
     * The consumer should not hold onto the pointer. */
-  T * output(size_t output_frame_count)
+  T * output(size_t output_frame_count, size_t * input_frames_used)
   {
     if (resampling_out_buffer.capacity() < frames_to_samples(output_frame_count)) {
       resampling_out_buffer.reserve(frames_to_samples(output_frame_count));
     }
 
     uint32_t in_len = samples_to_frames(resampling_in_buffer.length());
     uint32_t out_len = output_frame_count;
 
     speex_resample(resampling_in_buffer.data(), &in_len,
                    resampling_out_buffer.data(), &out_len);
 
     assert(out_len == output_frame_count);
 
     /* This shifts back any unresampled samples to the beginning of the input
        buffer. */
     resampling_in_buffer.pop(nullptr, frames_to_samples(in_len));
+    *input_frames_used = in_len;
 
     return resampling_out_buffer.data();
   }
 
   /** Get the latency of the resampler, in output frames. */
   uint32_t latency() const
   {
     /* The documentation of the resampler talks about "samples" here, but it
@@ -371,26 +372,27 @@ public:
   void input(T * buffer, uint32_t frame_count)
   {
     delay_input_buffer.push(buffer, frames_to_samples(frame_count));
   }
   /** Pop some frames from the internal buffer, into a internal output buffer.
    * @parameter frames_needed the number of frames to be returned.
    * @return a buffer containing the delayed frames. The consumer should not
    * hold onto the pointer. */
-  T * output(uint32_t frames_needed)
+  T * output(uint32_t frames_needed, size_t * input_frames_used)
   {
     if (delay_output_buffer.capacity() < frames_to_samples(frames_needed)) {
       delay_output_buffer.reserve(frames_to_samples(frames_needed));
     }
 
     delay_output_buffer.clear();
     delay_output_buffer.push(delay_input_buffer.data(),
                              frames_to_samples(frames_needed));
     delay_input_buffer.pop(nullptr, frames_to_samples(frames_needed));
+    *input_frames_used = frames_needed;
 
     return delay_output_buffer.data();
   }
   /** Get a pointer to the first writable location in the input buffer>
    * @parameter frames_needed the number of frames the user needs to write into
    * the buffer.
    * @returns a pointer to a location in the input buffer where #frames_needed
    * can be writen. */
--- a/media/webrtc/signaling/src/peerconnection/PeerConnectionCtx.cpp
+++ b/media/webrtc/signaling/src/peerconnection/PeerConnectionCtx.cpp
@@ -249,58 +249,58 @@ EverySecondTelemetryCallback_s(nsAutoPtr
       }
       // Then, look for the things we want telemetry on
       auto& array = r.mInboundRTPStreamStats.Value();
       for (decltype(array.Length()) i = 0; i < array.Length(); i++) {
         auto& s = array[i];
         bool isAudio = (s.mId.Value().Find("audio") != -1);
         if (s.mPacketsLost.WasPassed() && s.mPacketsReceived.WasPassed() &&
             (s.mPacketsLost.Value() + s.mPacketsReceived.Value()) != 0) {
-          ID id;
+          HistogramID id;
           if (s.mIsRemote) {
             id = isAudio ? WEBRTC_AUDIO_QUALITY_OUTBOUND_PACKETLOSS_RATE :
                            WEBRTC_VIDEO_QUALITY_OUTBOUND_PACKETLOSS_RATE;
           } else {
             id = isAudio ? WEBRTC_AUDIO_QUALITY_INBOUND_PACKETLOSS_RATE :
                            WEBRTC_VIDEO_QUALITY_INBOUND_PACKETLOSS_RATE;
           }
           // *1000 so we can read in 10's of a percent (permille)
           Accumulate(id,
                      (s.mPacketsLost.Value() * 1000) /
                      (s.mPacketsLost.Value() + s.mPacketsReceived.Value()));
         }
         if (s.mJitter.WasPassed()) {
-          ID id;
+          HistogramID id;
           if (s.mIsRemote) {
             id = isAudio ? WEBRTC_AUDIO_QUALITY_OUTBOUND_JITTER :
                            WEBRTC_VIDEO_QUALITY_OUTBOUND_JITTER;
           } else {
             id = isAudio ? WEBRTC_AUDIO_QUALITY_INBOUND_JITTER :
                            WEBRTC_VIDEO_QUALITY_INBOUND_JITTER;
           }
           Accumulate(id, s.mJitter.Value());
         }
         if (s.mMozRtt.WasPassed()) {
           MOZ_ASSERT(s.mIsRemote);
-          ID id = isAudio ? WEBRTC_AUDIO_QUALITY_OUTBOUND_RTT :
-                            WEBRTC_VIDEO_QUALITY_OUTBOUND_RTT;
+          HistogramID id = isAudio ? WEBRTC_AUDIO_QUALITY_OUTBOUND_RTT :
+                                     WEBRTC_VIDEO_QUALITY_OUTBOUND_RTT;
           Accumulate(id, s.mMozRtt.Value());
         }
         if (lastInboundStats && s.mBytesReceived.WasPassed()) {
           auto& laststats = *lastInboundStats;
           auto i = FindId(laststats, s.mId.Value());
           if (i != laststats.NoIndex) {
             auto& lasts = laststats[i];
             if (lasts.mBytesReceived.WasPassed()) {
               auto delta_ms = int32_t(s.mTimestamp.Value() -
                                       lasts.mTimestamp.Value());
               // In theory we're called every second, so delta *should* be in that range.
               // Small deltas could cause errors due to division
               if (delta_ms > 500 && delta_ms < 60000) {
-                ID id;
+                HistogramID id;
                 if (s.mIsRemote) {
                   id = isAudio ? WEBRTC_AUDIO_QUALITY_OUTBOUND_BANDWIDTH_KBITS :
                                  WEBRTC_VIDEO_QUALITY_OUTBOUND_BANDWIDTH_KBITS;
                 } else {
                   id = isAudio ? WEBRTC_AUDIO_QUALITY_INBOUND_BANDWIDTH_KBITS :
                                  WEBRTC_VIDEO_QUALITY_INBOUND_BANDWIDTH_KBITS;
                 }
                 Accumulate(id, ((s.mBytesReceived.Value() -
--- a/mozglue/misc/StackWalk.cpp
+++ b/mozglue/misc/StackWalk.cpp
@@ -4,16 +4,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/. */
 
 /* API for getting a stack trace of the C/C++ stack on the current thread */
 
 #include "mozilla/ArrayUtils.h"
 #include "mozilla/Assertions.h"
 #include "mozilla/IntegerPrintfMacros.h"
+#include "mozilla/ScopeExit.h"
 #include "mozilla/StackWalk.h"
 
 #include <string.h>
 
 using namespace mozilla;
 
 // The presence of this address is the stack must stop the stack walk. If
 // there is no such address, the structure will be {nullptr, true}.
@@ -332,16 +333,30 @@ WalkStackMain64(struct WalkStackData* aD
   frame64.AddrFrame.Offset = context.RsBSP;
 #endif
   frame64.AddrPC.Mode      = AddrModeFlat;
   frame64.AddrStack.Mode   = AddrModeFlat;
   frame64.AddrFrame.Mode   = AddrModeFlat;
   frame64.AddrReturn.Mode  = AddrModeFlat;
 #endif
 
+#ifdef _WIN64
+  // Workaround possible deadlock where the thread we're profiling happens to
+  // be in RtlLookupFunctionEntry (see below) or in RtlAddFunctionTable or
+  // RtlDeleteFunctionTable when starting or shutting down the JS engine.
+  // On Win64 each of these Rtl* functions will take a lock, so we need to make
+  // sure we don't deadlock when a suspended thread is holding it.
+  if (!TryAcquireStackWalkWorkaroundLock()) {
+    return;
+  }
+  auto releaseLock = mozilla::MakeScopeExit([] {
+    ReleaseStackWalkWorkaroundLock();
+  });
+#endif
+
   // Skip our own stack walking frames.
   int skip = (aData->walkCallingThread ? 3 : 0) + aData->skipFrames;
 
   // Now walk the stack.
   while (true) {
     DWORD64 addr;
     DWORD64 spaddr;
 
--- a/netwerk/base/nsSocketTransport2.cpp
+++ b/netwerk/base/nsSocketTransport2.cpp
@@ -3227,21 +3227,21 @@ nsSocketTransport::CloseSocket(PRFileDes
             Telemetry::PRCLOSE_TCP_BLOCKING_TIME_CONNECTIVITY_CHANGE,
             Telemetry::PRCLOSE_TCP_BLOCKING_TIME_LINK_CHANGE,
             Telemetry::PRCLOSE_TCP_BLOCKING_TIME_OFFLINE);
     }
 }
 
 void
 nsSocketTransport::SendPRBlockingTelemetry(PRIntervalTime aStart,
-                                           Telemetry::ID aIDNormal,
-                                           Telemetry::ID aIDShutdown,
-                                           Telemetry::ID aIDConnectivityChange,
-                                           Telemetry::ID aIDLinkChange,
-                                           Telemetry::ID aIDOffline)
+                                           Telemetry::HistogramID aIDNormal,
+                                           Telemetry::HistogramID aIDShutdown,
+                                           Telemetry::HistogramID aIDConnectivityChange,
+                                           Telemetry::HistogramID aIDLinkChange,
+                                           Telemetry::HistogramID aIDOffline)
 {
     PRIntervalTime now = PR_IntervalNow();
     if (gIOService->IsNetTearingDown()) {
         Telemetry::Accumulate(aIDShutdown,
                               PR_IntervalToMilliseconds(now - aStart));
 
     } else if (PR_IntervalToSeconds(now - gIOService->LastConnectivityChange())
                < 60) {
--- a/netwerk/base/nsSocketTransport2.h
+++ b/netwerk/base/nsSocketTransport2.h
@@ -166,21 +166,21 @@ public:
 
     // called when a socket event is handled
     void OnSocketEvent(uint32_t type, nsresult status, nsISupports *param);
 
     uint64_t ByteCountReceived() override { return mInput.ByteCount(); }
     uint64_t ByteCountSent() override { return mOutput.ByteCount(); }
     static void CloseSocket(PRFileDesc *aFd, bool aTelemetryEnabled);
     static void SendPRBlockingTelemetry(PRIntervalTime aStart,
-        Telemetry::ID aIDNormal,
-        Telemetry::ID aIDShutdown,
-        Telemetry::ID aIDConnectivityChange,
-        Telemetry::ID aIDLinkChange,
-        Telemetry::ID aIDOffline);
+        Telemetry::HistogramID aIDNormal,
+        Telemetry::HistogramID aIDShutdown,
+        Telemetry::HistogramID aIDConnectivityChange,
+        Telemetry::HistogramID aIDLinkChange,
+        Telemetry::HistogramID aIDOffline);
 protected:
 
     virtual ~nsSocketTransport();
     void     CleanupTypes();
 
 private:
 
     // event types
--- a/netwerk/cache/nsCacheService.cpp
+++ b/netwerk/cache/nsCacheService.cpp
@@ -2641,20 +2641,20 @@ nsCacheService::LockReleased()
 void
 nsCacheService::Lock()
 {
     gService->mLock.Lock();
     gService->LockAcquired();
 }
 
 void
-nsCacheService::Lock(mozilla::Telemetry::ID mainThreadLockerID)
+nsCacheService::Lock(mozilla::Telemetry::HistogramID mainThreadLockerID)
 {
-    mozilla::Telemetry::ID lockerID;
-    mozilla::Telemetry::ID generalID;
+    mozilla::Telemetry::HistogramID lockerID;
+    mozilla::Telemetry::HistogramID generalID;
 
     if (NS_IsMainThread()) {
         lockerID = mainThreadLockerID;
         generalID = mozilla::Telemetry::CACHE_SERVICE_LOCK_WAIT_MAINTHREAD_2;
     } else {
         lockerID = mozilla::Telemetry::HistogramCount;
         generalID = mozilla::Telemetry::CACHE_SERVICE_LOCK_WAIT_2;
     }
--- a/netwerk/cache/nsCacheService.h
+++ b/netwerk/cache/nsCacheService.h
@@ -250,17 +250,17 @@ private:
     friend class nsAsyncDoomEvent;
     friend class nsCacheEntryDescriptor;
 
     /**
      * Internal Methods
      */
 
     static void      Lock();
-    static void      Lock(::mozilla::Telemetry::ID mainThreadLockerID);
+    static void      Lock(::mozilla::Telemetry::HistogramID mainThreadLockerID);
     static void      Unlock();
     void             LockAcquired();
     void             LockReleased();
 
     nsresult         CreateDiskDevice();
     nsresult         CreateOfflineDevice();
     nsresult         CreateCustomOfflineDevice(nsIFile *aProfileDir,
                                                int32_t aQuota,
@@ -376,17 +376,17 @@ private:
 
 // Instantiate this class to acquire the cache service lock for a particular
 // execution scope.
 class nsCacheServiceAutoLock {
 public:
     nsCacheServiceAutoLock() {
         nsCacheService::Lock();
     }
-    explicit nsCacheServiceAutoLock(mozilla::Telemetry::ID mainThreadLockerID) {
+    explicit nsCacheServiceAutoLock(mozilla::Telemetry::HistogramID mainThreadLockerID) {
         nsCacheService::Lock(mainThreadLockerID);
     }
     ~nsCacheServiceAutoLock() {
         nsCacheService::Unlock();
     }
 };
 
 #endif // _nsCacheService_h_
--- a/netwerk/cache2/CacheIOThread.cpp
+++ b/netwerk/cache2/CacheIOThread.cpp
@@ -44,17 +44,17 @@ CacheIOTelemetry::mMinLengthToReport[Cac
 
 // static
 void CacheIOTelemetry::Report(uint32_t aLevel, CacheIOTelemetry::size_type aLength)
 {
   if (mMinLengthToReport[aLevel] > aLength) {
     return;
   }
 
-  static Telemetry::ID telemetryID[] = {
+  static Telemetry::HistogramID telemetryID[] = {
     Telemetry::HTTP_CACHE_IO_QUEUE_2_OPEN_PRIORITY,
     Telemetry::HTTP_CACHE_IO_QUEUE_2_READ_PRIORITY,
     Telemetry::HTTP_CACHE_IO_QUEUE_2_MANAGEMENT,
     Telemetry::HTTP_CACHE_IO_QUEUE_2_OPEN,
     Telemetry::HTTP_CACHE_IO_QUEUE_2_READ,
     Telemetry::HTTP_CACHE_IO_QUEUE_2_WRITE_PRIORITY,
     Telemetry::HTTP_CACHE_IO_QUEUE_2_WRITE,
     Telemetry::HTTP_CACHE_IO_QUEUE_2_INDEX,
--- a/netwerk/dns/nsHostResolver.cpp
+++ b/netwerk/dns/nsHostResolver.cpp
@@ -1478,17 +1478,17 @@ nsHostResolver::ThreadFunc(void *arg)
         {   // obtain lock to check shutdown and manage inter-module telemetry
             MutexAutoLock lock(resolver->mLock);
 
             if (!resolver->mShutdown) {
                 TimeDuration elapsed = TimeStamp::Now() - startTime;
                 uint32_t millis = static_cast<uint32_t>(elapsed.ToMilliseconds());
 
                 if (NS_SUCCEEDED(status)) {
-                    Telemetry::ID histogramID;
+                    Telemetry::HistogramID histogramID;
                     if (!rec->addr_info_gencnt) {
                         // Time for initial lookup.
                         histogramID = Telemetry::DNS_LOOKUP_TIME;
                     } else if (!getTtl) {
                         // Time for renewal; categorized by expiration strategy.
                         histogramID = Telemetry::DNS_RENEWAL_TIME;
                     } else {
                         // Time to get TTL; categorized by expiration strategy.
--- a/netwerk/protocol/http/HSTSPrimerListener.cpp
+++ b/netwerk/protocol/http/HSTSPrimerListener.cpp
@@ -14,16 +14,17 @@
 #include "nsISocketProvider.h"
 #include "nsISSLStatus.h"
 #include "nsISSLStatusProvider.h"
 #include "nsStreamUtils.h"
 #include "nsStreamListenerWrapper.h"
 #include "nsHttpChannel.h"
 #include "LoadInfo.h"
 #include "mozilla/Unused.h"
+#include "nsQueryObject.h"
 
 namespace mozilla {
 namespace net {
 
 using namespace mozilla;
 
 NS_IMPL_ISUPPORTS(HSTSPrimingListener, nsIStreamListener,
                   nsIRequestObserver, nsIInterfaceRequestor,
@@ -124,17 +125,19 @@ HSTSPrimingListener::CheckHSTSPrimingReq
   bool succeedded;
   rv = httpChannel->GetRequestSucceeded(&succeedded);
   if (NS_FAILED(rv) || !succeedded) {
     // If the request did not return a 2XX response, don't process it
     return NS_ERROR_CONTENT_BLOCKED;
   }
 
   bool synthesized = false;
-  nsHttpChannel* rawHttpChannel = static_cast<nsHttpChannel*>(httpChannel.get());
+  RefPtr<nsHttpChannel> rawHttpChannel = do_QueryObject(httpChannel);
+  NS_ENSURE_STATE(rawHttpChannel);
+
   rv = rawHttpChannel->GetResponseSynthesized(&synthesized);
   NS_ENSURE_SUCCESS(rv, rv);
   if (synthesized) {
     // Don't consider synthesized responses
     return NS_ERROR_CONTENT_BLOCKED;
   }
 
   // check to see if the HSTS cache was updated
--- a/netwerk/protocol/http/Http2Compression.h
+++ b/netwerk/protocol/http/Http2Compression.h
@@ -81,19 +81,19 @@ protected:
 
   uint32_t mMaxBuffer;
   uint32_t mMaxBufferSetting;
   bool mSetInitialMaxBufferSizeAllowed;
 
   uint32_t mPeakSize;
   uint32_t mPeakCount;
   MOZ_INIT_OUTSIDE_CTOR
-  Telemetry::ID mPeakSizeID;
+  Telemetry::HistogramID mPeakSizeID;
   MOZ_INIT_OUTSIDE_CTOR
-  Telemetry::ID mPeakCountID;
+  Telemetry::HistogramID mPeakCountID;
 
 private:
   RefPtr<HpackDynamicTableReporter> mDynamicReporter;
 };
 
 class Http2Compressor;
 
 class Http2Decompressor final : public Http2BaseCompressor
--- a/netwerk/protocol/http/HttpBaseChannel.cpp
+++ b/netwerk/protocol/http/HttpBaseChannel.cpp
@@ -2718,22 +2718,16 @@ HttpBaseChannel::SetIntegrityMetadata(co
 
 NS_IMETHODIMP
 HttpBaseChannel::GetIntegrityMetadata(nsAString& aIntegrityMetadata)
 {
   aIntegrityMetadata = mIntegrityMetadata;
   return NS_OK;
 }
 
-mozilla::net::nsHttpChannel*
-HttpBaseChannel::QueryHttpChannelImpl(void)
-{
-  return nullptr;
-}
-
 //-----------------------------------------------------------------------------
 // HttpBaseChannel::nsISupportsPriority
 //-----------------------------------------------------------------------------
 
 NS_IMETHODIMP
 HttpBaseChannel::GetPriority(int32_t *value)
 {
   *value = mPriority;
--- a/netwerk/protocol/http/HttpBaseChannel.h
+++ b/netwerk/protocol/http/HttpBaseChannel.h
@@ -247,17 +247,16 @@ public:
   NS_IMETHOD GetFetchCacheMode(uint32_t* aFetchCacheMode) override;
   NS_IMETHOD SetFetchCacheMode(uint32_t aFetchCacheMode) override;
   NS_IMETHOD GetTopWindowURI(nsIURI **aTopWindowURI) override;
   NS_IMETHOD GetProxyURI(nsIURI **proxyURI) override;
   virtual void SetCorsPreflightParameters(const nsTArray<nsCString>& unsafeHeaders) override;
   NS_IMETHOD GetConnectionInfoHashKey(nsACString& aConnectionInfoHashKey) override;
   NS_IMETHOD GetIntegrityMetadata(nsAString& aIntegrityMetadata) override;
   NS_IMETHOD SetIntegrityMetadata(const nsAString& aIntegrityMetadata) override;
-  virtual mozilla::net::nsHttpChannel * QueryHttpChannelImpl(void) override;
 
   inline void CleanRedirectCacheChainIfNecessary()
   {
       mRedirectedCachekeys = nullptr;
   }
   NS_IMETHOD HTTPUpgrade(const nsACString & aProtocolName,
                          nsIHttpUpgradeListener *aListener) override;
 
--- a/netwerk/protocol/http/HttpChannelParent.cpp
+++ b/netwerk/protocol/http/HttpChannelParent.cpp
@@ -35,16 +35,17 @@
 #include "nsQueryObject.h"
 #include "mozilla/BasePrincipal.h"
 #include "nsCORSListenerProxy.h"
 #include "nsIIPCSerializableInputStream.h"
 #include "nsIPrompt.h"
 #include "nsIWindowWatcher.h"
 #include "nsIDocument.h"
 #include "nsStringStream.h"
+#include "nsQueryObject.h"
 
 using mozilla::BasePrincipal;
 using namespace mozilla::dom;
 using namespace mozilla::ipc;
 
 namespace mozilla {
 namespace net {
 
@@ -361,23 +362,24 @@ HttpChannelParent::DoAsyncOpen(  const U
   rv = loadInfo->GetOriginAttributes(&attrs);
   if (NS_FAILED(rv)) {
     return SendFailedAsyncOpen(rv);
   }
 
   nsCOMPtr<nsIChannel> channel;
   rv = NS_NewChannelInternal(getter_AddRefs(channel), uri, loadInfo,
                              nullptr, nullptr, aLoadFlags, ios);
-
-  if (NS_FAILED(rv))
+  if (NS_FAILED(rv)) {
     return SendFailedAsyncOpen(rv);
+  }
 
-  // This cast is safe since this is AsyncOpen specific to http.  channel
-  // is ensured to be nsHttpChannel.
-  mChannel = static_cast<nsHttpChannel *>(channel.get());
+  mChannel = do_QueryObject(channel, &rv);
+  if (NS_FAILED(rv)) {
+    return SendFailedAsyncOpen(rv);
+  }
 
   // Set the channelId allocated in child to the parent instance
   mChannel->SetChannelId(aChannelId);
   mChannel->SetTopLevelContentWindowId(aContentWindowId);
 
   mChannel->SetWarningReporter(this);
   mChannel->SetTimingEnabled(true);
   if (mPBOverride != kPBOverride_Unset) {
@@ -596,21 +598,23 @@ HttpChannelParent::ConnectChannel(const 
     NS_ERROR("Could not find the http channel to connect its IPC parent");
     // This makes the channel delete itself safely.  It's the only thing
     // we can do now, since this parent channel cannot be used and there is
     // no other way to tell the child side there were something wrong.
     Delete();
     return true;
   }
 
-  // It's safe to cast here since the found parent-side real channel is ensured
-  // to be http (nsHttpChannel).  ConnectChannel called from HttpChannelParent::Init
-  // can only be called for http channels.  It's bound by ipdl.
-  mChannel = static_cast<nsHttpChannel*>(channel.get());
-  LOG(("  found channel %p, rv=%08" PRIx32, mChannel.get(), static_cast<uint32_t>(rv)));
+  LOG(("  found channel %p, rv=%08" PRIx32, channel.get(), static_cast<uint32_t>(rv)));
+  mChannel = do_QueryObject(channel);
+  if (!mChannel) {
+    LOG(("  but it's not nsHttpChannel"));
+    Delete();
+    return true;
+  }
 
   nsCOMPtr<nsINetworkInterceptController> controller;
   NS_QueryNotificationCallbacks(channel, controller);
   RefPtr<HttpChannelParentListener> parentListener = do_QueryObject(controller);
   MOZ_ASSERT(parentListener);
   parentListener->SetupInterceptionAfterRedirect(shouldIntercept);
 
   if (mPBOverride != kPBOverride_Unset) {
@@ -1097,24 +1101,17 @@ NS_IMETHODIMP
 HttpChannelParent::OnStartRequest(nsIRequest *aRequest, nsISupports *aContext)
 {
   LOG(("HttpChannelParent::OnStartRequest [this=%p, aRequest=%p]\n",
        this, aRequest));
 
   MOZ_RELEASE_ASSERT(!mDivertingFromChild,
     "Cannot call OnStartRequest if diverting is set!");
 
-  // We can't cast here since the new channel can be a redirect to a different
-  // schema.  We must query the channel implementation through a special method.
-  nsHttpChannel *chan = nullptr;
-  nsCOMPtr<nsIHttpChannelInternal> httpChannelInternal(do_QueryInterface(aRequest));
-  if (httpChannelInternal) {
-    chan = httpChannelInternal->QueryHttpChannelImpl();
-  }
-
+  RefPtr<nsHttpChannel> chan = do_QueryObject(aRequest);
   if (!chan) {
     LOG(("  aRequest is not nsHttpChannel"));
     NS_ERROR("Expecting only nsHttpChannel as aRequest in HttpChannelParent::OnStartRequest");
     return NS_ERROR_UNEXPECTED;
   }
 
   MOZ_ASSERT(mChannel == chan,
              "HttpChannelParent getting OnStartRequest from a different nsHttpChannel instance");
--- a/netwerk/protocol/http/nsHttpChannel.cpp
+++ b/netwerk/protocol/http/nsHttpChannel.cpp
@@ -6269,22 +6269,16 @@ nsHttpChannel::ForceIntercepted(uint64_t
     }
 
     MarkIntercepted();
     mResponseCouldBeSynthesized = true;
     mInterceptionID = aInterceptionID;
     return NS_OK;
 }
 
-mozilla::net::nsHttpChannel*
-nsHttpChannel::QueryHttpChannelImpl(void)
-{
-  return this;
-}
-
 //-----------------------------------------------------------------------------
 // nsHttpChannel::nsISupportsPriority
 //-----------------------------------------------------------------------------
 
 NS_IMETHODIMP
 nsHttpChannel::SetPriority(int32_t value)
 {
     int16_t newValue = clamped<int32_t>(value, INT16_MIN, INT16_MAX);
--- a/netwerk/protocol/http/nsHttpChannel.h
+++ b/netwerk/protocol/http/nsHttpChannel.h
@@ -147,17 +147,16 @@ public:
     NS_IMETHOD GetSecurityInfo(nsISupports **aSecurityInfo) override;
     NS_IMETHOD AsyncOpen(nsIStreamListener *listener, nsISupports *aContext) override;
     NS_IMETHOD AsyncOpen2(nsIStreamListener *aListener) override;
     // nsIHttpChannel
     NS_IMETHOD GetEncodedBodySize(uint64_t *aEncodedBodySize) override;
     // nsIHttpChannelInternal
     NS_IMETHOD SetupFallbackChannel(const char *aFallbackKey) override;
     NS_IMETHOD ForceIntercepted(uint64_t aInterceptionID) override;
-    virtual mozilla::net::nsHttpChannel * QueryHttpChannelImpl(void) override;
     // nsISupportsPriority
     NS_IMETHOD SetPriority(int32_t value) override;
     // nsIClassOfService
     NS_IMETHOD SetClassFlags(uint32_t inFlags) override;
     NS_IMETHOD AddClassFlags(uint32_t inFlags) override;
     NS_IMETHOD ClearClassFlags(uint32_t inFlags) override;
 
     // nsIResumableChannel
--- a/netwerk/protocol/http/nsHttpConnection.cpp
+++ b/netwerk/protocol/http/nsHttpConnection.cpp
@@ -1592,17 +1592,18 @@ nsHttpConnection::Version()
     return mUsingSpdyVersion  ? mUsingSpdyVersion : mLastHttpResponseVersion;
 }
 
 //-----------------------------------------------------------------------------
 // nsHttpConnection <private>
 //-----------------------------------------------------------------------------
 
 void
-nsHttpConnection::CloseTransaction(nsAHttpTransaction *trans, nsresult reason)
+nsHttpConnection::CloseTransaction(nsAHttpTransaction *trans, nsresult reason,
+                                   bool aIsShutdown)
 {
     LOG(("nsHttpConnection::CloseTransaction[this=%p trans=%p reason=%" PRIx32 "]\n",
          this, trans, static_cast<uint32_t>(reason)));
 
     MOZ_ASSERT((trans == mTransaction) ||
                (mTLSFilter && mTLSFilter->Transaction() == trans));
     MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread);
 
@@ -1628,17 +1629,17 @@ nsHttpConnection::CloseTransaction(nsAHt
     }
 
     {
         MutexAutoLock lock(mCallbacksLock);
         mCallbacks = nullptr;
     }
 
     if (NS_FAILED(reason) && (reason != NS_BINDING_RETARGETED)) {
-        Close(reason);
+        Close(reason, aIsShutdown);
     }
 
     // flag the connection as reused here for convenience sake.  certainly
     // it might be going away instead ;-)
     mIsReused = true;
 }
 
 nsresult
--- a/netwerk/protocol/http/nsHttpConnection.h
+++ b/netwerk/protocol/http/nsHttpConnection.h
@@ -123,17 +123,17 @@ public:
     }
 
     nsISocketTransport   *Transport()      { return mSocketTransport; }
     nsAHttpTransaction   *Transaction()    { return mTransaction; }
     nsHttpConnectionInfo *ConnectionInfo() { return mConnInfo; }
 
     // nsAHttpConnection compatible methods (non-virtual):
     nsresult OnHeadersAvailable(nsAHttpTransaction *, nsHttpRequestHead *, nsHttpResponseHead *, bool *reset);
-    void     CloseTransaction(nsAHttpTransaction *, nsresult reason);
+    void     CloseTransaction(nsAHttpTransaction *, nsresult reason, bool aIsShutdown = false);
     void     GetConnectionInfo(nsHttpConnectionInfo **ci) { NS_IF_ADDREF(*ci = mConnInfo); }
     nsresult TakeTransport(nsISocketTransport **,
                            nsIAsyncInputStream **,
                            nsIAsyncOutputStream **);
     void     GetSecurityInfo(nsISupports **);
     bool     IsPersistent() { return IsKeepAlive() && !mDontReuse; }
     bool     IsReused();
     void     SetIsReusedAfter(uint32_t afterMilliseconds);
--- a/netwerk/protocol/http/nsHttpConnectionMgr.cpp
+++ b/netwerk/protocol/http/nsHttpConnectionMgr.cpp
@@ -2144,17 +2144,20 @@ nsHttpConnectionMgr::OnMsgShutdown(int32
     for (auto iter = mCT.Iter(); !iter.Done(); iter.Next()) {
         nsAutoPtr<nsConnectionEntry>& ent = iter.Data();
 
         // Close all active connections.
         while (ent->mActiveConns.Length()) {
             RefPtr<nsHttpConnection> conn(ent->mActiveConns[0]);
             ent->mActiveConns.RemoveElementAt(0);
             DecrementActiveConnCount(conn);
-            conn->Close(NS_ERROR_ABORT, true);
+            // Since nsHttpConnection::Close doesn't break the bond with
+            // the connection's transaction, we must explicitely tell it
+            // to close its transaction and not just self.
+            conn->CloseTransaction(conn->Transaction(), NS_ERROR_ABORT, true);
         }
 
         // Close all idle connections.
         while (ent->mIdleConns.Length()) {
             RefPtr<nsHttpConnection> conn(ent->mIdleConns[0]);
 
             ent->mIdleConns.RemoveElementAt(0);
             mNumIdleConns--;
--- a/netwerk/protocol/http/nsIHttpChannelInternal.idl
+++ b/netwerk/protocol/http/nsIHttpChannelInternal.idl
@@ -4,22 +4,20 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsISupports.idl"
 
 %{C++
 #include "nsTArrayForwardDeclare.h"
 template<class T> class nsCOMArray;
 class nsCString;
-namespace mozilla { namespace net { class nsHttpChannel; } }
 %}
 [ptr] native StringArray(nsTArray<nsCString>);
 [ref] native StringArrayRef(const nsTArray<nsCString>);
 [ref] native securityMessagesArray(nsCOMArray<nsISecurityConsoleMessage>);
-[ptr] native nsHttpChannelPtr(mozilla::net::nsHttpChannel);
 
 interface nsIAsyncInputStream;
 interface nsIAsyncOutputStream;
 interface nsIPrincipal;
 interface nsIProxyInfo;
 interface nsISecurityConsoleMessage;
 interface nsISocketTransport;
 interface nsIURI;
@@ -300,15 +298,9 @@ interface nsIHttpChannelInternal : nsISu
      * Set to indicate Request.integrity.
      */
     attribute AString integrityMetadata;
 
     /**
      * The connection info's hash key. We use it to test connection separation.
      */
     readonly attribute ACString connectionInfoHashKey;
-
-    /**
-     * Returns nsHttpChannel (self) when this actually is implementing nsHttpChannel.
-     */
-    [noscript, notxpcom, nostdcall]
-    nsHttpChannelPtr queryHttpChannelImpl();
 };
--- a/netwerk/protocol/viewsource/nsViewSourceChannel.cpp
+++ b/netwerk/protocol/viewsource/nsViewSourceChannel.cpp
@@ -1010,20 +1010,14 @@ nsViewSourceChannel::GetIsMainDocumentCh
 
 NS_IMETHODIMP
 nsViewSourceChannel::SetIsMainDocumentChannel(bool aValue)
 {
     return !mHttpChannel ? NS_ERROR_NULL_POINTER :
         mHttpChannel->SetIsMainDocumentChannel(aValue);
 }
 
-// Have to manually forward since these are [notxpcom]
+// Have to manually forward SetCorsPreflightParameters since it's [notxpcom]
 void
 nsViewSourceChannel::SetCorsPreflightParameters(const nsTArray<nsCString>& aUnsafeHeaders)
 {
   mHttpChannelInternal->SetCorsPreflightParameters(aUnsafeHeaders);
 }
-
-mozilla::net::nsHttpChannel *
-nsViewSourceChannel::QueryHttpChannelImpl()
-{
-  return mHttpChannelInternal->QueryHttpChannelImpl();
-}
--- a/netwerk/test/unit/test_authentication.js
+++ b/netwerk/test/unit/test_authentication.js
@@ -17,16 +17,17 @@ XPCOMUtils.defineLazyGetter(this, "PORT"
   return httpserv.identity.primaryPort;
 });
 
 const FLAG_RETURN_FALSE   = 1 << 0;
 const FLAG_WRONG_PASSWORD = 1 << 1;
 const FLAG_BOGUS_USER = 1 << 2;
 const FLAG_PREVIOUS_FAILED = 1 << 3;
 const CROSS_ORIGIN = 1 << 4;
+const FLAG_NO_REALM = 1 << 5;
 
 const nsIAuthPrompt2 = Components.interfaces.nsIAuthPrompt2;
 const nsIAuthInformation = Components.interfaces.nsIAuthInformation;
 
 
 function AuthPrompt1(flags) {
   this.flags = flags;
 }
@@ -46,18 +47,20 @@ AuthPrompt1.prototype = {
 
   prompt: function ap1_prompt(title, text, realm, save, defaultText, result) {
     do_throw("unexpected prompt call");
   },
 
   promptUsernameAndPassword:
     function ap1_promptUP(title, text, realm, savePW, user, pw)
   {
-    // Note that the realm here isn't actually the realm. it's a pw mgr key.
-    do_check_eq(URL + " (" + this.expectedRealm + ")", realm);
+    if (this.flags & FLAG_NO_REALM) {
+      // Note that the realm here isn't actually the realm. it's a pw mgr key.
+      do_check_eq(URL + " (" + this.expectedRealm + ")", realm);
+    }
     if (!(this.flags & CROSS_ORIGIN)) {
       if (text.indexOf(this.expectedRealm) == -1) {
         do_throw("Text must indicate the realm");
       }
     } else {
       if (text.indexOf(this.expectedRealm) != -1) {
         do_throw("There should not be realm for cross origin");
       }
@@ -110,18 +113,19 @@ AuthPrompt2.prototype = {
   },
 
   promptAuth:
     function ap2_promptAuth(channel, level, authInfo)
   {
     var isNTLM = channel.URI.path.indexOf("ntlm") != -1;
     var isDigest = channel.URI.path.indexOf("digest") != -1;
 
-    if (isNTLM)
+    if (isNTLM || (this.flags & FLAG_NO_REALM)) {
       this.expectedRealm = ""; // NTLM knows no realms
+    }
 
     do_check_eq(this.expectedRealm, authInfo.realm);
 
     var expectedLevel = (isNTLM || isDigest) ?
                         nsIAuthPrompt2.LEVEL_PW_ENCRYPTED :
                         nsIAuthPrompt2.LEVEL_NONE;
     do_check_eq(expectedLevel, level);
 
@@ -297,29 +301,31 @@ function makeChan(url, loadingUrl) {
       contentPolicyType: Components.interfaces.nsIContentPolicy.TYPE_OTHER
     });
 }
 
 var tests = [test_noauth, test_returnfalse1, test_wrongpw1, test_prompt1,
              test_prompt1CrossOrigin, test_prompt2CrossOrigin,
              test_returnfalse2, test_wrongpw2, test_prompt2, test_ntlm,
              test_basicrealm, test_digest_noauth, test_digest,
-             test_digest_bogus_user, test_large_realm, test_large_domain];
+             test_digest_bogus_user, test_short_digest, test_large_realm,
+             test_large_domain];
 
 var current_test = 0;
 
 var httpserv = null;
 
 function run_test() {
   httpserv = new HttpServer();
 
   httpserv.registerPathHandler("/auth", authHandler);
   httpserv.registerPathHandler("/auth/ntlm/simple", authNtlmSimple);
   httpserv.registerPathHandler("/auth/realm", authRealm);
   httpserv.registerPathHandler("/auth/digest", authDigest);
+  httpserv.registerPathHandler("/auth/short_digest", authShortDigest);
   httpserv.registerPathHandler("/largeRealm", largeRealm);
   httpserv.registerPathHandler("/largeDomain", largeDomain);
 
   httpserv.start(-1);
 
   tests[0]();
 }
 
@@ -456,16 +462,26 @@ function test_digest_bogus_user() {
   var chan = makeChan(URL + "/auth/digest", URL);
   chan.notificationCallbacks =  new Requestor(FLAG_BOGUS_USER, 2);
   listener.expectedCode = 401; // unauthorized
   chan.asyncOpen2(listener);
 
   do_test_pending();
 }
 
+// Test header "WWW-Authenticate: Digest" - bug 1338876.
+function test_short_digest() {
+  var chan = makeChan(URL + "/auth/short_digest", URL);
+  chan.notificationCallbacks =  new Requestor(FLAG_NO_REALM, 2);
+  listener.expectedCode = 401; // OK
+  chan.asyncOpen2(listener);
+
+  do_test_pending();
+}
+
 // PATH HANDLERS
 
 // /auth
 function authHandler(metadata, response) {
   // btoa("guest:guest"), but that function is not available here
   var expectedHeader = "Basic Z3Vlc3Q6Z3Vlc3Q=";
 
   var body;
@@ -584,16 +600,23 @@ function authDigest(metadata, response) 
    response.setStatusLine(metadata.httpVersion, 401, "Unauthorized");
    response.setHeader("WWW-Authenticate", authenticate, false);
    body = "failed, no header";
  }
  
  response.bodyOutputStream.write(body, body.length);
 }
 
+function authShortDigest(metadata, response) {
+  // no header, send one
+  response.setStatusLine(metadata.httpVersion, 401, "Unauthorized");
+  response.setHeader("WWW-Authenticate", 'Digest', false);
+  body = "failed, no header";
+}
+
 function largeRealm(metadata, response) {
  // test > 32KB realm tokens
   var body;
 
   response.setStatusLine(metadata.httpVersion, 401, "Unauthorized");
   response.setHeader("WWW-Authenticate",
 		     'Digest realm="' +
 		     "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +
--- a/python/mozbuild/mozbuild/vendor_rust.py
+++ b/python/mozbuild/mozbuild/vendor_rust.py
@@ -113,16 +113,18 @@ Please commit or stash these changes bef
         )
         for (lib, crate_root) in crates_and_roots:
             path = mozpath.join(self.topsrcdir, crate_root)
             # We do an |update -p| here to regenerate the Cargo.lock file with minimal changes. See bug 1324462
             self._run_command_in_srcdir(args=[cargo, 'update', '--manifest-path', mozpath.join(path, 'Cargo.toml'), '-p', lib])
             self._run_command_in_srcdir(args=[cargo, 'vendor', '--sync', mozpath.join(path, 'Cargo.lock'), vendor_dir])
         self.repository.add_remove_files(vendor_dir)
 
+        # 100k is a reasonable upper bound on source file size.
+        FILESIZE_LIMIT = 100 * 1024
         large_files = set()
         cumulative_added_size = 0
         for f in self.repository.get_added_files():
             path = mozpath.join(self.topsrcdir, f)
             size = os.stat(path).st_size
             cumulative_added_size += size
             if size > FILESIZE_LIMIT:
                 large_files.add(f)
--- a/security/certverifier/CertVerifier.h
+++ b/security/certverifier/CertVerifier.h
@@ -63,17 +63,17 @@ enum class NetscapeStepUpPolicy : uint32
 
 class PinningTelemetryInfo
 {
 public:
   PinningTelemetryInfo() { Reset(); }
 
   // Should we accumulate pinning telemetry for the result?
   bool accumulateResult;
-  Telemetry::ID certPinningResultHistogram;
+  Telemetry::HistogramID certPinningResultHistogram;
   int32_t certPinningResultBucket;
   // Should we accumulate telemetry for the root?
   bool accumulateForRoot;
   int32_t rootBucket;
 
   void Reset() { accumulateForRoot = false; accumulateResult = false; }
 };
 
--- a/security/manager/ssl/PublicKeyPinningService.cpp
+++ b/security/manager/ssl/PublicKeyPinningService.cpp
@@ -268,17 +268,17 @@ CheckPinsForHostname(const UniqueCERTCer
   if (staticFingerprints) {
     bool enforceTestModeResult;
     rv = EvalChain(certList, staticFingerprints->pinset, nullptr,
                    enforceTestModeResult);
     if (NS_FAILED(rv)) {
       return rv;
     }
     chainHasValidPins = enforceTestModeResult;
-    Telemetry::ID histogram = staticFingerprints->mIsMoz
+    Telemetry::HistogramID histogram = staticFingerprints->mIsMoz
       ? Telemetry::CERT_PINNING_MOZ_RESULTS
       : Telemetry::CERT_PINNING_RESULTS;
     if (staticFingerprints->mTestMode) {
       histogram = staticFingerprints->mIsMoz
         ? Telemetry::CERT_PINNING_MOZ_TEST_RESULTS
         : Telemetry::CERT_PINNING_TEST_RESULTS;
       if (!enforceTestMode) {
         chainHasValidPins = true;
--- a/security/manager/ssl/RootCertificateTelemetryUtils.cpp
+++ b/security/manager/ssl/RootCertificateTelemetryUtils.cpp
@@ -72,17 +72,17 @@ RootCABinNumber(const SECItem* cert)
   // Didn't match.
   return ROOT_CERTIFICATE_UNKNOWN;
 }
 
 
 // Attempt to increment the appropriate bin in the provided Telemetry probe ID. If
 // there was a hash failure, we do nothing.
 void
-AccumulateTelemetryForRootCA(mozilla::Telemetry::ID probe, 
+AccumulateTelemetryForRootCA(mozilla::Telemetry::HistogramID probe,
   const CERTCertificate* cert)
 {
   int32_t binId = RootCABinNumber(&cert->derCert);
 
   if (binId != ROOT_CERTIFICATE_HASH_FAILURE) {
     Accumulate(probe, binId);
   }
 }
--- a/security/manager/ssl/RootCertificateTelemetryUtils.h
+++ b/security/manager/ssl/RootCertificateTelemetryUtils.h
@@ -17,14 +17,14 @@ namespace mozilla { namespace psm {
 // genRootCAHashes.js for the unknowns.
 #define ROOT_CERTIFICATE_UNKNOWN  0
 #define ROOT_CERTIFICATE_HASH_FAILURE -1
 
 int32_t
 RootCABinNumber(const SECItem* cert);
 
 void
-AccumulateTelemetryForRootCA(mozilla::Telemetry::ID probe, const CERTCertificate* cert);
+AccumulateTelemetryForRootCA(mozilla::Telemetry::HistogramID probe, const CERTCertificate* cert);
 
 } // namespace psm
 } // namespace mozilla
 
 #endif // RootCertificateTelemetryUtils_h
--- a/security/manager/ssl/SSLServerCertVerification.cpp
+++ b/security/manager/ssl/SSLServerCertVerification.cpp
@@ -239,28 +239,28 @@ LogInvalidCertError(nsNSSSocketInfo* soc
 // descriptor that is waiting for this result.
 class SSLServerCertVerificationResult : public Runnable
 {
 public:
   NS_DECL_NSIRUNNABLE
 
   SSLServerCertVerificationResult(nsNSSSocketInfo* infoObject,
                                   PRErrorCode errorCode,
-                                  Telemetry::ID telemetryID = Telemetry::HistogramCount,
+                                  Telemetry::HistogramID telemetryID = Telemetry::HistogramCount,
                                   uint32_t telemetryValue = -1,
                                   SSLErrorMessageType errorMessageType =
                                       PlainErrorMessage);
 
   void Dispatch();
 private:
   const RefPtr<nsNSSSocketInfo> mInfoObject;
 public:
   const PRErrorCode mErrorCode;
   const SSLErrorMessageType mErrorMessageType;
-  const Telemetry::ID mTelemetryID;
+  const Telemetry::HistogramID mTelemetryID;
   const uint32_t mTelemetryValue;
 };
 
 class CertErrorRunnable : public SyncRunnableBase
 {
  public:
   CertErrorRunnable(const void* fdForLogging,
                     nsIX509Cert* cert,
@@ -1498,19 +1498,19 @@ SSLServerCertVerificationJob::Run()
           ("[%p] SSLServerCertVerificationJob::Run\n", mInfoObject.get()));
 
   PRErrorCode error;
 
   nsNSSShutDownPreventionLock nssShutdownPrevention;
   if (mInfoObject->isAlreadyShutDown()) {
     error = SEC_ERROR_USER_CANCELLED;
   } else {
-    Telemetry::ID successTelemetry
+    Telemetry::HistogramID successTelemetry
       = Telemetry::SSL_SUCCESFUL_CERT_VALIDATION_TIME_MOZILLAPKIX;
-    Telemetry::ID failureTelemetry
+    Telemetry::HistogramID failureTelemetry
       = Telemetry::SSL_INITIAL_FAILED_CERT_VALIDATION_TIME_MOZILLAPKIX;
 
     // Reset the error code here so we can detect if AuthCertificate fails to
     // set the error code if/when it fails.
     PR_SetError(0, 0);
     SECStatus rv = AuthCertificate(*mCertVerifier, mInfoObject, mCert,
                                    mPeerCertChain, mStapledOCSPResponse.get(),
                                    mSCTsFromTLSExtension.get(),
@@ -1752,17 +1752,17 @@ AuthCertificateHook(void* arg, PRFileDes
   }
 
   PR_SetError(error, 0);
   return SECFailure;
 }
 
 SSLServerCertVerificationResult::SSLServerCertVerificationResult(
         nsNSSSocketInfo* infoObject, PRErrorCode errorCode,
-        Telemetry::ID telemetryID, uint32_t telemetryValue,
+        Telemetry::HistogramID telemetryID, uint32_t telemetryValue,
         SSLErrorMessageType errorMessageType)
   : mInfoObject(infoObject)
   , mErrorCode(errorCode)
   , mErrorMessageType(errorMessageType)
   , mTelemetryID(telemetryID)
   , mTelemetryValue(telemetryValue)
 {
 // We accumulate telemetry for (only) successful validations on the main thread
--- a/security/manager/ssl/StaticHPKPins.h
+++ b/security/manager/ssl/StaticHPKPins.h
@@ -1152,9 +1152,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 = 477;
 
 static const int32_t kUnknownId = -1;
 
-static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1495728091984000);
+static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1495811026488000);
--- a/security/manager/ssl/nsNSSCallbacks.cpp
+++ b/security/manager/ssl/nsNSSCallbacks.cpp
@@ -34,17 +34,17 @@
 #include "ssl.h"
 #include "sslproto.h"
 
 using namespace mozilla;
 using namespace mozilla::psm;
 
 extern LazyLogModule gPIPNSSLog;
 
-static void AccumulateCipherSuite(Telemetry::ID probe,
+static void AccumulateCipherSuite(Telemetry::HistogramID probe,
                                   const SSLChannelInfo& channelInfo);
 
 namespace {
 
 // Bits in bit mask for SSL_REASONS_FOR_NOT_FALSE_STARTING telemetry probe
 // These bits are numbered so that the least subtle issues have higher values.
 // This should make it easier for us to interpret the results.
 const uint32_t POSSIBLE_VERSION_DOWNGRADE = 4;
@@ -977,17 +977,17 @@ CanFalseStartCallback(PRFileDesc* fd, vo
     infoObject->NoteTimeUntilReady();
     MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("CanFalseStartCallback [%p] ok\n", fd));
   }
 
   return SECSuccess;
 }
 
 static void
-AccumulateNonECCKeySize(Telemetry::ID probe, uint32_t bits)
+AccumulateNonECCKeySize(Telemetry::HistogramID probe, uint32_t bits)
 {
   unsigned int value = bits <   512 ?  1 : bits ==   512 ?  2
                      : bits <   768 ?  3 : bits ==   768 ?  4
                      : bits <  1024 ?  5 : bits ==  1024 ?  6
                      : bits <  1280 ?  7 : bits ==  1280 ?  8
                      : bits <  1536 ?  9 : bits ==  1536 ? 10
                      : bits <  2048 ? 11 : bits ==  2048 ? 12
                      : bits <  3072 ? 13 : bits ==  3072 ? 14
@@ -1000,27 +1000,27 @@ AccumulateNonECCKeySize(Telemetry::ID pr
 
 // XXX: This attempts to map a bit count to an ECC named curve identifier. In
 // the vast majority of situations, we only have the Suite B curves available.
 // In that case, this mapping works fine. If we were to have more curves
 // available, the mapping would be ambiguous since there could be multiple
 // named curves for a given size (e.g. secp256k1 vs. secp256r1). We punt on
 // that for now. See also NSS bug 323674.
 static void
-AccumulateECCCurve(Telemetry::ID probe, uint32_t bits)
+AccumulateECCCurve(Telemetry::HistogramID probe, uint32_t bits)
 {
   unsigned int value = bits == 256 ? 23 // P-256
                      : bits == 384 ? 24 // P-384
                      : bits == 521 ? 25 // P-521
                      : 0; // Unknown
   Telemetry::Accumulate(probe, value);
 }
 
 static void
-AccumulateCipherSuite(Telemetry::ID probe, const SSLChannelInfo& channelInfo)
+AccumulateCipherSuite(Telemetry::HistogramID probe, const SSLChannelInfo& channelInfo)
 {
   uint32_t value;
   switch (channelInfo.cipherSuite) {
     // ECDHE key exchange
     case TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: value = 1; break;
     case TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: value = 2; break;
     case TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA: value = 3; break;
     case TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: value = 4; break;
--- a/security/manager/ssl/nsNSSIOLayer.cpp
+++ b/security/manager/ssl/nsNSSIOLayer.cpp
@@ -1103,18 +1103,18 @@ retryDueToTLSIntolerance(PRErrorCode err
     return false;
   }
 
   uint32_t reason = tlsIntoleranceTelemetryBucket(err);
   if (reason == 0) {
     return false;
   }
 
-  Telemetry::ID pre;
-  Telemetry::ID post;
+  Telemetry::HistogramID pre;
+  Telemetry::HistogramID post;
   switch (range.max) {
     case SSL_LIBRARY_VERSION_TLS_1_3:
       pre = Telemetry::SSL_TLS13_INTOLERANCE_REASON_PRE;
       post = Telemetry::SSL_TLS13_INTOLERANCE_REASON_POST;
       break;
     case SSL_LIBRARY_VERSION_TLS_1_2:
       pre = Telemetry::SSL_TLS12_INTOLERANCE_REASON_PRE;
       post = Telemetry::SSL_TLS12_INTOLERANCE_REASON_POST;
--- a/security/manager/ssl/nsSTSPreloadList.errors
+++ b/security/manager/ssl/nsSTSPreloadList.errors
@@ -45,17 +45,17 @@ 3sreporting.com: did not receive HSTS he
 3yearloans.com: max-age too low: 0
 404.sh: max-age too low: 0
 404404.info: 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
 4cclothing.com: could not connect to host
-4elements.com: did not receive HSTS header
+4elements.com: could not connect to host
 4mm.org: did not receive HSTS header
 4sqsu.eu: could not connect to host
 50millionablaze.org: did not receive HSTS header
 540.co: did not receive HSTS header
 56ct.com: could not connect to host
 60ych.net: did not receive HSTS header
 6120.eu: did not receive HSTS header
 7kovrikov.ru: did not receive HSTS header
@@ -130,16 +130,17 @@ aerialmediapro.net: could not connect to
 aes256.ru: could not connect to host
 aether.pw: could not connect to host
 aevpn.net: could not connect to host
 aficotroceni.ro: did not receive HSTS header
 afp548.tk: could not connect to host
 agalaxyfarfaraway.co.uk: could not connect to host
 agbremen.de: did not receive HSTS header
 agentseeker.ca: could not connect to host
+agonswim.com: could not connect to host
 agrimap.com: did not receive HSTS header
 agrios.de: did not receive HSTS header
 agro-id.gov.ua: could not connect to host
 agroline.by: could not connect to host
 ahabingo.com: did not receive HSTS header
 ahmedabadflowermall.com: did not receive HSTS header
 ahoynetwork.com: could not connect to host
 ahri.ovh: could not connect to host
@@ -340,16 +341,17 @@ auroratownshipfd.org: could not connect 
 ausnah.me: could not connect to host
 ausoptic.com.au: max-age too low: 2592000
 auszeit.bio: did not receive HSTS header
 auth.mail.ru: did not receive HSTS header
 authentication.io: could not connect to host
 authoritynutrition.com: did not receive HSTS header
 auto-serwis.zgorzelec.pl: did not receive HSTS header
 auto4trade.nl: could not connect to host
+autoepc.ro: did not receive HSTS header
 autojuhos.sk: could not connect to host
 autokovrik-diskont.ru: did not receive HSTS header
 autotsum.com: could not connect to host
 autumnwindsagility.com: could not connect to host
 auverbox.ovh: could not connect to host
 auxiliumincrementum.co.uk: could not connect to host
 av.de: did not receive HSTS header
 avec-ou-sans-ordonnance.fr: could not connect to host
@@ -385,17 +387,16 @@ baldwinkoo.com: could not connect to hos
 bandb.xyz: could not connect to host
 bandrcrafts.com: could not connect to host
 bannisbierblog.de: could not connect to host
 banqingdiao.com: could not connect to host
 barely.sexy: did not receive HSTS header
 bashcode.ninja: could not connect to host
 basicsolutionsus.com: did not receive HSTS header
 basilisk.io: could not connect to host
-basnieuwenhuizen.nl: could not connect to host
 bassh.net: could not connect to host
 baud.ninja: could not connect to host
 baumstark.ca: could not connect to host
 baysse.eu: could not connect to host
 bazarstupava.sk: could not connect to host
 bcbsmagentprofile.com: could not connect to host
 bccx.com: could not connect to host
 bckp.de: did not receive HSTS header
@@ -507,17 +508,19 @@ bloglikepro.com: could not connect to ho
 blubbablasen.de: could not connect to host
 blucas.org: did not receive HSTS header
 blueglobalmedia.com: max-age too low: 0
 blueimp.net: did not receive HSTS header
 blueliv.com: did not receive HSTS header
 bluescloud.xyz: could not connect to host
 bluetenmeer.com: did not receive HSTS header
 blupig.net: did not receive HSTS header
+bluserv.net: could not connect to host
 bm-trading.nl: did not receive HSTS header
+bmone.net: could not connect to host
 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]
 bnhlibrary.com: could not connect to host
 bobiji.com: did not receive HSTS header
 bodo-wolff.de: could not connect to host
 bodyblog.nl: did not receive HSTS header
 bodybuilding-legends.com: could not connect to host
 bodyweightsolution.com: could not connect to host
 boensou.com: did not receive HSTS header
@@ -525,23 +528,22 @@ bogosity.se: could not connect to host
 bohan.life: could not connect to host
 bombsquad.studio: could not connect to host
 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: could not connect to host
-bookingapp.nl: did not receive HSTS header
 bookourdjs.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]
 boomerang.com: could not connect to host
 boosterlearnpro.com: did not receive HSTS header
 bootjp.me: did not receive HSTS header
 boringsecurity.net: could not connect to host
-boris.one: did not receive HSTS header
+boris.one: could not connect to host
 borisbesemer.com: could not connect to host
 botox.bz: did not receive HSTS header
 bouwbedrijfpurmerend.nl: did not receive HSTS header
 bowlroll.net: max-age too low: 0
 boxcryptor.com: did not receive HSTS header
 br3in.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]
 braineet.com: did not receive HSTS header
 brainfork.ml: could not connect to host
@@ -571,17 +573,16 @@ bsdtips.com: could not connect to host
 bsquared.org: could not connect to host
 btcdlc.com: could not connect to host
 buchheld.at: did not receive HSTS header
 bucket.tk: could not connect to host
 budgetthostels.nl: did not receive HSTS header
 budskap.eu: could not connect to host
 bugs.chromium.org: did not receive HSTS header (error ignored - included regardless)
 bugtrack.io: did not receive HSTS header
-bugwie.com: did not receive HSTS header
 buhler.pro: did not receive HSTS header
 buildci.asia: could not connect to host
 buildsaver.co.za: did not receive HSTS header
 built.by: did not receive HSTS header
 builtritetrailerplans.com: could not connect to host
 bulletpoint.cz: did not receive HSTS header
 bulmafox.com: could not connect to host
 bumarkamoda.com: could not connect to host
@@ -595,17 +596,16 @@ businesshosting.nl: did not receive HSTS
 businessloanstoday.com: max-age too low: 0
 busold.ws: could not connect to host
 bustimes.org: could not connect to host
 butchersworkshop.com: did not receive HSTS header
 buttercoin.com: could not connect to host
 butterfieldstraining.com: did not receive HSTS header
 buybaby.eu: did not receive HSTS header
 buyfox.de: did not receive HSTS header
-bw.codes: could not connect to host
 bws16.de: did not receive HSTS header
 by4cqb.cn: could not connect to host
 bypassed.press: could not connect to host
 bypassed.today: did not receive HSTS header
 bypassed.works: did not receive HSTS header
 bypassed.world: did not receive HSTS header
 bypro.xyz: could not connect to host
 bysymphony.com: max-age too low: 0
@@ -627,30 +627,32 @@ calendarr.com: did not receive HSTS head
 calgaryconstructionjobs.com: did not receive HSTS header
 calix.com: max-age too low: 0
 call.me: did not receive HSTS header
 calltrackingreports.com: could not connect to host
 calvin.me: max-age too low: 2592000
 calvinallen.net: did not receive HSTS header
 calyxinstitute.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]
 camolist.com: could not connect to host
+campfire.co.il: could not connect to host
 canadiangamblingchoice.com: did not receive HSTS header
 cancelmyprofile.com: did not receive HSTS header
 candicontrols.com: did not receive HSTS header
 candratech.com: could not connect to host
 candylion.rocks: could not connect to host
 cannyfoxx.me: could not connect to host
 canyonshoa.com: did not receive HSTS header
 capecycles.co.za: did not receive HSTS header
 capeyorkfire.com.au: did not receive HSTS header
 captchatheprize.com: could not connect to host
 capturethepen.co.uk: could not connect to host
 car-navi.ph: did not receive HSTS header
 carano-service.de: did not receive HSTS header
 caraudio69.cz: could not connect to host
+cardloan-manual.net: could not connect to host
 cardoni.net: did not receive HSTS header
 cardstream.com: did not receive HSTS header
 cardurl.com: did not receive HSTS header
 cargobay.net: could not connect to host
 caringladies.org: could not connect to host
 carlandfaith.com: did not receive HSTS header
 carlolly.co.uk: could not connect to host
 carlosalves.info: could not connect to host
@@ -687,17 +689,16 @@ cert.se: max-age too low: 2628001
 certmgr.org: could not connect to host
 cesal.net: could not connect to host
 cesidianroot.eu: could not connect to host
 cevrimici.com: could not connect to host
 cfcproperties.com: did not receive HSTS header
 cfetengineering.com: could not connect to host
 cg.search.yahoo.com: did not receive HSTS header
 chainmonitor.com: could not connect to host
-chamathellawala.com: could not connect to host
 championsofregnum.com: did not receive HSTS header
 chandlerredding.com: did not receive HSTS header
 changelab.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]
 changetip.com: did not receive HSTS header
 chaos.fail: did not receive HSTS header
 chargejuice.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]
 charityclear.com: did not receive HSTS header
 charnleyhouse.co.uk: max-age too low: 604800
@@ -721,46 +722,45 @@ cherysunzhang.com: max-age too low: 7776
 chihiro.xyz: could not connect to host
 chijiokeindustries.co.uk: could not connect to host
 childcaresolutionscny.org: did not receive HSTS header
 chinacdn.org: could not connect to host
 chinawhale.com: did not receive HSTS header
 chirgui.eu: could not connect to host
 chloe.re: could not connect to host
 chm.vn: did not receive HSTS header
-chokladfantasi.net: could not connect to host
 chontalpa.pw: could not connect to host
 chopperforums.com: did not receive HSTS header
 chotu.net: could not connect to host
 chris-web.info: could not connect to host
 chrisandsarahinasia.com: did not receive HSTS header
 chrisfaber.com: could not connect to host
 chriskyrouac.com: could not connect to host
 christiaandruif.nl: could not connect to host
 christianbargon.de: did not receive HSTS header
 christianbro.gq: could not connect to host
 christophercolumbusfoundation.gov: could not connect to host
 christophheich.me: could not connect to host
 chrisupjohn.com: could not connect to host
-chromaryu.net: could not connect to host
 chrome-devtools-frontend.appspot.com: did not receive HSTS header (error ignored - included regardless)
 chrome.google.com: did not receive HSTS header (error ignored - included regardless)
 chromiumbugs.appspot.com: did not receive HSTS header (error ignored - included regardless)
 chromiumcodereview.appspot.com: did not receive HSTS header (error ignored - included regardless)
 chroniclesofgeorge.com: did not receive HSTS header
 chrst.ph: could not connect to host
 chua.cf: could not connect to host
 chulado.com: did not receive HSTS header
 cidr.ml: could not connect to host
 cig-dem.com: could not connect to host
 cigarblogs.net: could not connect to host
 cigi.site: could not connect to host
 cim2b.de: could not connect to host
 cimalando.eu: could not connect to host
 cinefilzonen.se: could not connect to host
+cintdirect.com: could not connect to host
 ciplanutrition.com: did not receive HSTS header
 circara.com: did not receive HSTS header
 ciscommerce.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]
 citiagent.cz: could not connect to host
 cityoflaurel.org: did not receive HSTS header
 clara-baumert.de: could not connect to host
 classicsandexotics.com: did not receive HSTS header
 classicspublishing.com: could not connect to host
@@ -842,16 +842,17 @@ comfortticket.de: did not receive HSTS h
 comfy.moe: could not connect to host
 comicspines.com: could not connect to host
 compalytics.com: could not connect to host
 comparejewelleryprices.co.uk: could not connect to host
 completeid.com: max-age too low: 86400
 completionist.audio: could not connect to host
 compraneta.com: could not connect to host
 compucorner.com.mx: could not connect to host
+computersystems.guru: did not receive HSTS header
 concord-group.co.jp: did not receive HSTS header
 condesaelectronics.com: max-age too low: 0
 confirm365.com: could not connect to host
 conformal.com: could not connect to host
 connect.ua: did not receive HSTS header
 consciousandglamorous.com: could not connect to host
 console.python.org: did not receive HSTS header
 constructionjobs.com: did not receive HSTS header
@@ -911,26 +912,24 @@ cryptobin.org: could not connect to host
 cryptojar.io: did not receive HSTS header
 cryptoki.fr: max-age too low: 7776000
 cryptolab.pro: could not connect to host
 cryptolab.tk: could not connect to host
 cryptopartyatx.org: could not connect to host
 cryptopush.com: did not receive HSTS header
 crysadm.com: max-age too low: 1
 crystalclassics.co.uk: did not receive HSTS header
-csabg.org: could not connect to host
 csapak.com: max-age too low: 0
 csawctf.poly.edu: could not connect to host
 csfs.org.uk: could not connect to host
 csgodicegame.com: did not receive HSTS header
 csgoelemental.com: could not connect to host
 csgokings.eu: could not connect to host
 csohack.tk: could not connect to host
 cspbuilder.info: could not connect to host
-csru.net: could not connect to host
 csvape.com: did not receive HSTS header
 ct-status.org: could not connect to host
 ct.search.yahoo.com: did not receive HSTS header
 cthulhuden.com: could not connect to host
 cubeserver.eu: could not connect to host
 cubewano.com: could not connect to host
 cujanovic.com: did not receive HSTS header
 cumshots-video.ru: could not connect to host
@@ -943,26 +942,26 @@ custe.rs: could not connect to host
 cuvva.insure: did not receive HSTS header
 cyanogenmod.xxx: could not connect to host
 cyberpunk.ca: 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
 cyph.com: did not receive HSTS header
 cyphertite.com: could not connect to host
-czerno.com: could not connect to host
 czlx.co: could not connect to host
 dad256.tk: could not connect to host
 dadtheimpaler.com: could not connect to host
 dah5.com: did not receive HSTS header
 dailystormerpodcasts.com: did not receive HSTS header
 daimadi.com: could not connect to host
 dakrib.net: could not connect to host
 daku.gdn: did not receive HSTS header
 dalingk.co: could not connect to host
+damedrogy.cz: could not connect to host
 damianuv-blog.cz: did not receive HSTS header
 dango.in: did not receive HSTS header
 daniel-steuer.de: could not connect to host
 danielcowie.me: could not connect to host
 danieldk.eu: did not receive HSTS header
 danieliancu.com: could not connect to host
 danielworthy.com: did not receive HSTS header
 danijobs.com: could not connect to host
@@ -1084,17 +1083,16 @@ dittvertshus.no: could not connect to ho
 diva-ey.com: could not connect to host
 dizihocasi.com: could not connect to host
 dizorg.net: could not connect to host
 dj4et.de: could not connect to host
 djz4music.com: did not receive HSTS header
 dl.google.com: did not receive HSTS header (error ignored - included regardless)
 dlc.viasinc.com: could not connect to host
 dlemper.de: did not receive HSTS header
-dlouwrink.nl: could not connect to host
 dn42.eu: could not connect to host
 dns.google.com: did not receive HSTS header (error ignored - included regardless)
 dnsknowledge.com: did not receive HSTS header
 do-do.tk: could not connect to host
 do.search.yahoo.com: did not receive HSTS header
 dobet.in: could not connect to host
 docid.io: could not connect to host
 docket.news: could not connect to host
@@ -1112,16 +1110,17 @@ dolphin-cloud.com: could not connect to 
 dolphincorp.co.uk: could not connect to host
 domaris.de: did not receive HSTS header
 dominicpratt.de: did not receive HSTS header
 dominique-mueller.de: did not receive HSTS header
 donttrustrobots.nl: could not connect to host
 donzelot.co.uk: max-age too low: 3600
 doomleika.com: could not connect to host
 dopost.it: could not connect to host
+dopply.com: 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
 dotadata.me: could not connect to host
 dovecotadmin.org: could not connect to host
 dovetailnow.com: could not connect to host
@@ -1147,17 +1146,16 @@ ds-christiansen.de: did not receive HSTS
 dshiv.io: 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
 dustri.org: did not receive HSTS header
 dutchrank.com: could not connect to host
 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
 dzndk.org: could not connect to host
 e-aut.net: did not receive HSTS header
 e-deca2.org: did not receive HSTS header
@@ -1218,30 +1216,31 @@ elenoon.ir: did not receive HSTS header
 elgacien.de: could not connect to host
 elimdengelen.com: did not receive HSTS header
 elitefishtank.com: could not connect to host
 elliotgluck.com: could not connect to host
 elnutricionista.es: did not receive HSTS header
 eloanpersonal.com: max-age too low: 0
 elpo.xyz: could not connect to host
 elsamakhin.com: could not connect to host
-elsitar.com: could not connect to host
+elsitar.com: did not receive HSTS header
 email.lookout.com: could not connect to host
 emanatepixels.com: could not connect to host
 emeldi-commerce.com: max-age too low: 0
 emilyhorsman.com: could not connect to host
 eminovic.me: could not connect to host
 emjainteractive.com: did not receive HSTS header
 emjimadhu.com: could not connect to host
 emmable.com: could not connect to host
 emnitech.com: could not connect to host
 empleosentorreon.mx: could not connect to host
 empleostampico.com: did not receive HSTS header
 enaah.de: could not connect to host
 enargia.jp: max-age too low: 0
+encode.host: did not receive HSTS header
 encode.space: did not receive HSTS header
 encoder.pw: could not connect to host
 encontrebarato.com.br: did not receive HSTS header
 encrypted.google.com: did not receive HSTS header (error ignored - included regardless)
 end.pp.ua: could not connect to host
 endlessdark.net: max-age too low: 600
 endlessdiy.ca: could not connect to host
 endlesstone.com: did not receive HSTS header
@@ -1269,16 +1268,17 @@ ephry.com: could not connect to host
 epoxate.com: could not connect to host
 eq8.net.au: could not connect to host
 equate.net.au: max-age too low: 3600
 equatetechnologies.com.au: max-age too low: 3600
 equilibre-yoga-jennifer-will.com: could not connect to host
 erawanarifnugroho.com: did not receive HSTS header
 eressea.xyz: could not connect to host
 eridanus.uk: could not connect to host
+erikhubers.nl: could not connect to host
 ernaehrungsberatung-rapperswil.ch: [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]
 ernaehrungsberatung-zurich.ch: could not connect to host
 ernesto.at: could not connect to host
 eromixx.com: did not receive HSTS header
 erotalia.es: could not connect to host
 eroticen.com: did not receive HSTS header
 erotische-aanbiedingen.nl: could not connect to host
 errlytics.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]
@@ -1464,16 +1464,17 @@ foxley-seeds.co.uk: could not connect to
 foxleyseeds.co.uk: could not connect to host
 foxtrot.pw: could not connect to host
 fr33d0m.link: could not connect to host
 francevpn.xyz: could not connect to host
 frangor.info: did not receive HSTS header
 franta.biz: did not receive HSTS header
 franta.email: did not receive HSTS header
 franzt.de: could not connect to host
+franzt.ovh: could not connect to host
 frasys.io: max-age too low: 7776000
 fredvoyage.fr: did not receive HSTS header
 freeflow.tv: could not connect to host
 freematthale.net: did not receive HSTS header
 freemedforms.com: did not receive HSTS header
 freesoftwaredriver.com: did not receive HSTS header
 freesounding.com: could not connect to host
 freesounding.ru: could not connect to host
@@ -1494,39 +1495,42 @@ frost-ci.xyz: could not connect to host
 frosty-gaming.xyz: did not receive HSTS header
 fruitusers.com: could not connect to host
 frusky.net: could not connect to host
 fspphoto.com: could not connect to host
 ftctele.com: did not receive HSTS header
 fuckbilibili.com: did not receive HSTS header
 fuckgfw233.org: could not connect to host
 fukushima-web.com: did not receive HSTS header
+fumo.se: could not connect to host
 fundacionhijosdelsol.org: could not connect to host
 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
 fusionmate.com: could not connect to host
 futbol11.com: did not receive HSTS header
 futurenda.com: could not connect to host
 futuretechnologi.es: could not connect to host
 futureyouhealth.com: did not receive HSTS header
 fx-rk.com: did not receive HSTS header
 fysiohaenraets.nl: did not receive HSTS header
 fzn.io: could not connect to host
 fzslm.me: did not receive HSTS header
+g01.in.ua: could not connect to host
 g2a.co: did not receive HSTS header
 g2g.com: did not receive HSTS header
 g4w.co: did not receive HSTS header (error ignored - included regardless)
 g5led.nl: could not connect to host
 gabber.scot: could not connect to host
 gaelleetarnaud.com: did not receive HSTS header
 gafachi.com: could not connect to host
+gaichon.com: could not connect to host
+gaite.me: could not connect to host
 gakkainavi.jp: did not receive HSTS header
-gakkainavi.net: did not receive HSTS header
 gakkainavi4.com: could not connect to host
 gakkainavi4.net: did not receive HSTS header
 galardi.org: did not receive HSTS header
 galenskap.eu: could not connect to host
 gallery44.org: did not receive HSTS header
 galoisvpn.xyz: could not connect to host
 game-files.net: did not receive HSTS header
 game.yt: could not connect to host
@@ -1641,16 +1645,17 @@ 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: did not receive HSTS header
 gogold-g.com: could not connect to host
 gold24.in: did not receive HSTS header
 goldendata.io: could not connect to host
 golocal-media.de: did not receive HSTS header
+gong8.win: did not receive HSTS header
 gonzalosanchez.mx: could not connect to host
 goodenough.nz: did not receive HSTS header
 goodwin43.ru: could not connect to host
 google: could not connect to host (error ignored - included regardless)
 googlemail.com: did not receive HSTS header (error ignored - included regardless)
 googleplex.com: did not receive HSTS header (error ignored - included regardless)
 goolok.com: could not connect to host
 gorilla-gym.site: could not connect to host
@@ -1661,21 +1666,19 @@ gottcode.org: did not receive HSTS heade
 gov.ax: could not connect to host
 govillemo.ca: did not receive HSTS header
 gozel.com.tr: did not receive HSTS header
 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
 gradienthosting.co.uk: did not receive HSTS header
-granary-demo.appspot.com: did not receive HSTS header
 grandmascookieblog.com: did not receive HSTS header
 grantedby.me: could not connect to host
 graph.no: did not receive HSTS header
-graphire.io: could not connect to host
 graphsearchengine.com: could not connect to host
 gravito.nl: did not receive HSTS header
 gravity-net.de: could not connect to host
 graycell.net: could not connect to host
 grazetech.com: could not connect to host
 grcnode.co.uk: could not connect to host
 greatnet.de: did not receive HSTS header
 greenhillantiques.co.uk: did not receive HSTS header
@@ -1739,16 +1742,17 @@ haitschi.de: could not connect to host
 haitschi.net: could not connect to host
 haitschi.org: 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: could not connect to host
 hanfu.la: could not connect to host
 hang333.pw: did not receive HSTS header
+hanimalis.fr: could not connect to host
 hansen.hn: could not connect to host
 hao2taiwan.com: max-age too low: 0
 haoyugao.com: could not connect to host
 hapissl.com: could not connect to host
 happyfabric.me: did not receive HSTS header
 happygastro.com: could not connect to host
 harabuhouse.com: did not receive HSTS header
 harbor-light.net: could not connect to host
@@ -1780,16 +1784,18 @@ hdm.io: [Exception... "Component returne
 hdsmigrationtool.com: could not connect to host
 hduin.xyz: could not connect to host
 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
 hectorj.net: could not connect to host
 heftkaufen.de: did not receive HSTS header
+helgakristoffer.com: could not connect to host
+helgakristoffer.wedding: could not connect to host
 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
 hepteract.us: could not connect to host
@@ -1856,21 +1862,23 @@ hstspreload.appspot.com: did not receive
 hstspreload.org: did not receive HSTS header
 html-lab.tk: could not connect to host
 http418.xyz: could not connect to host
 httpstatuscode418.xyz: could not connect to host
 hu.search.yahoo.com: did not receive HSTS header
 huarongdao.com: did not receive HSTS header
 hugocollignon.fr: could not connect to host
 hugosleep.com.au: did not receive HSTS header
+huihui.moe: could not connect to host
 humankode.com: did not receive HSTS header
 humblefinances.com: could not connect to host
 humeurs.net: could not connect to host
 humpteedumptee.in: did not receive HSTS header
 huntshomeinspections.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]
+hup.blue: could not connect to host
 hurricanelabs.com: did not receive HSTS header
 huskybutt.dog: could not connect to host
 hydra.ws: could not connect to host
 hydronium.cf: could not connect to host
 hydronium.ga: could not connect to host
 hydronium.me: could not connect to host
 hydronium.tk: could not connect to host
 hyper69.com: did not receive HSTS header
@@ -1970,31 +1978,32 @@ innoloop.com: did not receive HSTS heade
 innophate-security.nl: could not connect to host
 ins1gn1a.com: did not receive HSTS header
 insane-bullets.com: could not connect to host
 insane.zone: could not connect to host
 insite-feedback.com: did not receive HSTS header
 inspire-av.com: did not receive HSTS header
 inspiroinc.com: could not connect to host
 instacart.com: did not receive HSTS header
-instagram-atom.appspot.com: did not receive HSTS header
 instantdev.io: could not connect to host
 institutoflordelavida.com: could not connect to host
 institutolancaster.com: could not connect to host
 intarweb.ca: could not connect to host
 intel.li: could not connect to host
 intelldynamics.com: could not connect to host
 interference.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]
 interlun.com: could not connect to host
+internect.co.za: did not receive HSTS header
 internetcasinos.de: could not connect to host
 internetcensus.org: could not connect to host
 interserved.com: did not receive HSTS header
 intex.es: max-age too low: 0
 intim-uslugi-kazan.net: could not connect to host
 intimtoy.com.ua: could not connect to host
+intrp.net: did not receive HSTS header
 inverselink-user-content.com: could not connect to host
 inverselink.com: could not connect to host
 invite24.pro: could not connect to host
 inwesttitle.com: max-age too low: 0
 ionx.co.uk: did not receive HSTS header
 iop.intuit.com: max-age too low: 86400
 iosmods.com: could not connect to host
 iostips.ru: could not connect to host
@@ -2006,29 +2015,29 @@ iptel.by: max-age too low: 0
 iptel.ro: could not connect to host
 ipv6cloud.club: could not connect to host
 iqcn.co: did not receive HSTS header
 iqualtech.com: did not receive HSTS header
 iranianlawschool.com: could not connect to host
 iraqidinar.org: did not receive HSTS header
 irazimina.ru: did not receive HSTS header
 irccloud.com: did not receive HSTS header
-ireef.tv: could not connect to host
 irelandesign.com: did not receive HSTS header
 irmtrudjurke.de: did not receive HSTS header
 ischool.co.jp: did not receive HSTS header
 iseek.biz: max-age too low: 0
 iseulde.com: could not connect to host
 ishillaryclintoninprisonyet.com: could not connect to host
 isitamor.pm: could not connect to host
 iskaz.rs: did not receive HSTS header
 israkurort.com: did not receive HSTS header
 isslshop.com: could not connect to host
 istaspirtslietas.lv: did not receive HSTS header
 it-go.net: did not receive HSTS header
+itchy.nl: could not connect to host
 itechgeek.com: max-age too low: 0
 itos.asia: did not receive HSTS header
 itos.pl: did not receive HSTS header
 itriskltd.com: could not connect to host
 itsadog.co.uk: did not receive HSTS header
 itsagadget.com: did not receive HSTS header
 itsamurai.ru: max-age too low: 2592000
 itsecurityassurance.pw: could not connect to host
@@ -2164,22 +2173,22 @@ justudin.com: did not receive HSTS heade
 juwairen.cn: did not receive HSTS header
 jvoice.net: could not connect to host
 jwilsson.me: could not connect to host
 jxm.in: could not connect to host
 jznet.org: max-age too low: 86400
 k-dev.de: could not connect to host
 ka-clan.com: could not connect to host
 kabuabc.com: did not receive HSTS header
+kabus.org: could not connect to host
 kadioglumakina.com.tr: did not receive HSTS header
 kaela.design: could not connect to host
 kahopoon.net: could not connect to host
 kaisers.de: did not receive HSTS header
 kalami.nl: did not receive HSTS header
-kaleidomarketing.com: could not connect to host
 kaliaa.fi: could not connect to host
 kamikano.com: could not connect to host
 kaneo-gmbh.de: did not receive HSTS header
 kaplatz.is: could not connect to host
 kapucini.si: max-age too low: 0
 karaoketonight.com: could not connect to host
 kasilag.me: could not connect to host
 katiaetdavid.fr: could not connect to host
@@ -2274,23 +2283,25 @@ kotonehoko.net: could not connect to hos
 kotovstyle.ru: could not connect to host
 kr.search.yahoo.com: did not receive HSTS header
 kramsj.uk: could not connect to host
 krayx.com: could not connect to host
 kreavis.com: did not receive HSTS header
 kredite.sale: could not connect to host
 kriegt.es: could not connect to host
 kristjanrang.eu: did not receive HSTS header
+kristofferkoch.com: 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
 kryptomech.com: could not connect to host
+ks-watch.de: did not receive HSTS header
 ksfh-mail.de: could not connect to host
 kstan.me: could not connect to host
 kswriter.com: could not connect to host
 kucom.it: did not receive HSTS header
 kueulangtahunanak.net: could not connect to host
 kummerlaender.eu: did not receive HSTS header
 kupelne-ptacek.sk: did not receive HSTS header
 kuppingercole.com: did not receive HSTS header
@@ -2335,16 +2346,17 @@ latour-managedcare.ch: did not receive H
 latus.xyz: could not connect to host
 lausitzer-widerstand.de: could not connect to host
 lavine.ch: did not receive HSTS header
 lavval.com: could not connect to host
 lawformt.com: could not connect to host
 laxatus.com: did not receive HSTS header
 laxiongames.es: could not connect to host
 lbrt.xyz: could not connect to host
+lbs-logics.com: max-age too low: 0
 ldarby.me.uk: could not connect to host
 leadership9.com: could not connect to host
 leardev.de: did not receive HSTS header
 learnfrenchfluently.com: did not receive HSTS header
 learningorder.com: could not connect to host
 lebal.se: could not connect to host
 lechiennoir.net: did not receive HSTS header
 ledgerscope.net: could not connect to host
@@ -2501,16 +2513,17 @@ m.nu: did not receive HSTS header
 m2epro.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]
 m2tc.fr: could not connect to host
 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
 mac-torrents.me: did not receive HSTS header
 macchaberrycream.com: could not connect to host
+macchedil.com: did not receive HSTS header
 macdj.tk: could not connect to host
 macgeneral.de: did not receive HSTS header
 machon.biz: could not connect to host
 madars.org: did not receive HSTS header
 maddin.ga: could not connect to host
 madebymagnitude.com: did not receive HSTS header
 maderwin.com: could not connect to host
 mae-berlinistanbul.com: could not connect to host
@@ -2583,24 +2596,24 @@ matthewprenger.com: could not connect to
 matthiassteen.be: max-age too low: 0
 mattsvensson.com: did not receive HSTS header
 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: could not connect to host
 mawe.red: could not connect to host
-maxfox.me: did not receive HSTS header
 maya.mg: 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
 mccrackon.com: could not connect to host
 mcdonalds.ru: did not receive HSTS header
 mcga.media: did not receive HSTS header
+mcjackk77.com: could not connect to host
 mclab.su: 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
 meamod.com: did not receive HSTS header
 mechanus.io: max-age too low: 2592000
 medallia.io: could not connect to host
@@ -2634,17 +2647,16 @@ meredithkm.info: could not connect to ho
 meritz.rocks: could not connect to host
 mersinunivercity.com: did not receive HSTS header
 merson.me: could not connect to host
 meshok.ru: did not receive HSTS header
 mesmoque.com: did not receive HSTS header
 metagrader.com: could not connect to host
 metebalci.com: did not receive HSTS header
 meteorapp.space: could not connect to host
-meteosherbrooke.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]
 mh-bloemen.co.jp: could not connect to host
@@ -2810,16 +2822,17 @@ myni.io: could not connect to host
 mypagella.com: could not connect to host
 mypagella.eu: could not connect to host
 mypagella.it: could not connect to host
 mypension.ca: could not connect to host
 myphonebox.de: could not connect to host
 myraytech.net: did not receive HSTS header
 mysecretrewards.com: did not receive HSTS header
 mystery-science-theater-3000.de: did not receive HSTS header
+mythslegendscollection.com: did not receive HSTS header
 myvirtualserver.com: max-age too low: 2592000
 myzone.com: did not receive HSTS header
 n0psled.nl: could not connect to host
 n2x.in: could not connect to host
 n4l.pw: could not connect to host
 nabytko.cz: could not connect to host
 nagoya-kyuyo.com: could not connect to host
 naiharngym.com: did not receive HSTS header
@@ -2842,40 +2855,40 @@ natalia.io: could not connect to host
 natalt.org: did not receive HSTS header
 nathanmfarrugia.com: did not receive HSTS header
 natural-progesterone.net: did not receive HSTS header
 naturesystems.cz: max-age too low: 0
 natuurbehangnederland.nl: could not connect to host
 nauck.org: did not receive HSTS header
 nav.jobs: could not connect to host
 naval.tf: could not connect to host
-navenlle.com: could not connect to host
+navenlle.com: did not receive HSTS header
 navjobs.com: did not receive HSTS header
 nbb.io: could not connect to host
 nbg-ha.de: could not connect to host
 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
+ne-on.org: could not connect to host
 near.st: did not receive HSTS header
 neels.ch: [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]
 neftaly.com: did not receive HSTS header
 neilgreen.net: did not receive HSTS header
 neko-life.com: did not receive HSTS header
 neko-system.com: did not receive HSTS header
 nemno.de: could not connect to host
 nemovement.org: could not connect to host
 neonisi.com: could not connect to host
 nepustil.net: did not receive HSTS header
 netba.net: could not connect to host
 netbox.cc: could not connect to host
 netherwind.eu: did not receive HSTS header
 netloanusa.com: max-age too low: 0
 netmagik.com: did not receive HSTS header
-netronix.be: did not receive HSTS header
 nettefoundation.com: could not connect to host
 netulo.com: 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: did not receive HSTS header
@@ -3074,17 +3087,16 @@ orbograph-hrcm.com: could not connect to
 ordereat.fr: could not connect to host
 orf-digitalsatkarte.at: could not connect to host
 organiplan.com: could not connect to host
 orioncustompcs.com: could not connect to host
 orionfcu.com: did not receive HSTS header
 orleika.ml: could not connect to host
 orthodoxy.lt: did not receive HSTS header
 osaiyuwu.com: could not connect to host
-oshell.me: could not connect to host
 oslfoundation.org: could not connect to host
 oslinux.net: did not receive HSTS header
 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
 otakuworld.de: could not connect to host
@@ -3167,16 +3179,17 @@ pay.gigahost.dk: did not receive HSTS he
 payfreez.com: could not connect to host
 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: could not connect to host
 pchax.net: could not connect to host
+pdamsidoarjo.co.id: could not connect to host
 pdevio.com: could not connect to host
 pdf.yt: could not connect to host
 peakapp.nl: 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: did not receive HSTS header
 pekkarik.ru: could not connect to host
 penguinclientsystem.com: did not receive HSTS header
 pensacolawinterfest.org: could not connect to host
@@ -3218,17 +3231,16 @@ physicalist.com: could not connect to ho
 pickr.co: could not connect to host
 picotronic.biz: could not connect to host
 picscare.co.uk: did not receive HSTS header
 pieperhome.de: could not connect to host
 piggott.me.uk: did not receive HSTS header
 pilgermaske.org: did not receive HSTS header
 piligrimname.com: could not connect to host
 pillowandpepper.com: did not receive HSTS header
-pinesandneedles.com: did not receive HSTS header
 pippen.io: could not connect to host
 piratedb.com: could not connect to host
 piratedot.com: could not connect to host
 piratelist.online: did not receive HSTS header
 piratenlogin.de: could not connect to host
 pirateproxy.sx: could not connect to host
 pirati.cz: max-age too low: 604800
 pirlitu.com: did not receive HSTS header
@@ -3259,17 +3271,16 @@ pleier.it: did not receive HSTS header
 plhdb.org: did not receive HSTS header
 plirt.ru: did not receive HSTS header
 plixer.com: did not receive HSTS header
 plogable.co: could not connect to host
 plombirator.kz: did not receive HSTS header
 plothost.com: did not receive HSTS header
 ploup.net: could not connect to host
 pluff.nl: could not connect to host
-plusstreamfeed.appspot.com: did not receive HSTS header
 pmnts.io: could not connect to host
 po.gl: did not receive HSTS header
 pocketsix.com: did not receive HSTS header
 pocloud.homelinux.net: could not connect to host
 poiema.com.sg: did not receive HSTS header
 pol.in.th: could not connect to host
 pole.net.nz: could not connect to host
 poleartschool.com: could not connect to host
@@ -3280,29 +3291,30 @@ politologos.org: could not connect to ho
 polycoise.com: could not connect to host
 polymathematician.com: could not connect to host
 polypho.nyc: could not connect to host
 pompompoes.com: could not connect to host
 pontualcomp.com: max-age too low: 2592000
 poolsandstuff.com: did not receive HSTS header
 poon.tech: could not connect to host
 portalplatform.net: did not receive HSTS header
-portalzine.de: did not receive HSTS header
 poshpak.com: max-age too low: 86400
 postcodewise.co.uk: did not receive HSTS header
+posterspy.com: did not receive HSTS header
 postscheduler.org: could not connect to host
 posylka.de: did not receive HSTS header
 poussinooz.fr: could not connect to host
 povitria.net: could not connect to host
 power99press.com: did not receive HSTS header
 powerplannerapp.com: did not receive HSTS header
 powerxequality.com: could not connect to host
 ppr-truby.ru: could not connect to host
 ppy3.com: did not receive HSTS header
 pr.search.yahoo.com: did not receive HSTS header
+preezzie.com: could not connect to host
 prefontaine.name: could not connect to host
 prego-shop.de: did not receive HSTS header
 preissler.co.uk: could not connect to host
 prelist.org: did not receive HSTS header
 pressfreedomfoundation.org: did not receive HSTS header
 pretzlaff.info: did not receive HSTS header
 preworkout.me: could not connect to host
 prezola.com: did not receive HSTS header
@@ -3323,17 +3335,16 @@ progg.no: could not connect to host
 progress-technologies.com: could not connect to host
 prohostonline.fi: could not connect to host
 projectdp.net: could not connect to host
 promecon-gmbh.de: did not receive HSTS header
 prontocleaners.co.uk: could not connect to host
 prontolight.com: did not receive HSTS header
 prontomovers.co.uk: could not connect to host
 propactrading.com: could not connect to host
-proposalonline.com: did not receive HSTS header
 prosocialmachines.com: could not connect to host
 prosoft.sk: did not receive HSTS header
 prosperident.com: did not receive HSTS header
 proweser.de: could not connect to host
 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
@@ -3418,16 +3429,17 @@ raydan.space: could not connect to host
 raydobe.me: could not connect to host
 rbhighinc.org: could not connect to host
 rc-rp.com: did not receive HSTS header
 rc4.io: did not receive HSTS header
 rcafox.com: could not connect to host
 rcpcbd.com: did not receive HSTS header
 rdns.im: did not receive HSTS header
 re-customer.net: did not receive HSTS header
+reachr.com: could not connect to host
 readr.pw: could not connect to host
 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
 redable.hosting: could not connect to host
 redar.xyz: did not receive HSTS header
 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]
@@ -3494,16 +3506,17 @@ rigolitch.fr: did not receive HSTS heade
 rijndael.xyz: could not connect to host
 rika.me: could not connect to host
 ring0.xyz: did not receive HSTS header
 ringh.am: could not connect to host
 rippleunion.com: could not connect to host
 riskmgt.com.au: could not connect to host
 rj.gg: could not connect to host
 rk6.cz: could not connect to host
+rkkhok.hu: did not receive HSTS header
 rkmantpur.org: did not receive HSTS header
 rme.li: did not receive HSTS header
 rngmeme.com: could not connect to host
 roadfeast.com: could not connect to host
 roan24.pl: did not receive HSTS header
 robertglastra.com: could not connect to host
 robigalia.org: did not receive HSTS header
 robteix.com: did not receive HSTS header
@@ -3530,16 +3543,17 @@ rootservice.org: did not receive HSTS he
 rootwpn.com: could not connect to host
 rop.io: could not connect to host
 rossen.be: did not receive HSTS header
 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]
 roundtheme.com: did not receive HSTS header
 rous.se: could not connect to host
 rout0r.org: did not receive HSTS header
 rouvray.org: could not connect to host
+royalpub.net: did not receive HSTS header
 rr.in.th: could not connect to host
 rrke.cc: did not receive HSTS header
 rsajeey.info: could not connect to host
 rsauget.fr: could not connect to host
 rsf.io: could not connect to host
 rsmaps.org: could not connect to host
 rubbereggs.ca: could not connect to host
 rubberfurs.org: max-age too low: 86400
@@ -3562,16 +3576,17 @@ ruxit.com: did not receive HSTS header
 rw.search.yahoo.com: did not receive HSTS header
 rx-contact.com: did not receive HSTS header
 rxprep.com: did not receive HSTS header
 rxv.cc: could not connect to host
 ryansmithphotography.com: did not receive HSTS header
 ryanteck.uk: did not receive HSTS header
 s.how: did not receive HSTS header
 s007.co: could not connect to host
+saba-piserver.info: could not connect to host
 safematix.com: could not connect to host
 safewings-nh.nl: did not receive HSTS header
 safic.net: could not connect to host
 sageth.com: max-age too low: 0
 sah3.net: could not connect to host
 sairai.bid: did not receive HSTS header
 sakaki.anime.my: max-age too low: 5184000
 sakaserver.com: did not receive HSTS header
@@ -3622,16 +3637,17 @@ schrauger.com: did not receive HSTS head
 schrauger.info: did not receive HSTS header
 schrauger.net: did not receive HSTS header
 schrauger.org: did not receive HSTS header
 schrauger.run: did not receive HSTS header
 schreiber-netzwerk.eu: did not receive HSTS header
 schrodinger.io: could not connect to host
 schulterglatzen-altenwalde.de: could not connect to host
 schultzflorists.com: could not connect to host
+schumanandmonnet.eu: did not receive HSTS header
 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
 scottgthomas.com: could not connect to host
 scrambl.is: could not connect to host
 scrambler.in: could not connect to host
 scrapings.net: could not connect to host
@@ -3756,17 +3772,16 @@ simbast.com: could not connect to host
 simod.org: could not connect to host
 simon.butcher.name: max-age too low: 2629743
 simongong.net: did not receive HSTS header
 simpleai.net: max-age too low: 600
 simplefraud.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]
 simplelearner.com: could not connect to host
 simplepractice.com: did not receive HSTS header
 simply-premium.com: max-age too low: 0
-simplycloud.de: could not connect to host
 sin30.net: could not connect to host
 sincron.org: could not connect to host
 sinful.pw: could not connect to host
 singul4rity.com: could not connect to host
 siriad.com: did not receive HSTS header
 sirius-lee.net: could not connect to host
 sitennisclub.com: did not receive HSTS header
 sites.google.com: did not receive HSTS header (error ignored - included regardless)
@@ -3788,17 +3803,16 @@ 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
 slovakiana.sk: did not receive HSTS header
 sluitkampzeist.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]
 slycurity.de: did not receive HSTS header
-sm.ms: did not receive HSTS header
 smart-mirror.de: did not receive HSTS header
 smart-ov.nl: could not connect to host
 smartcoin.com.br: could not connect to host
 smartlend.se: [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]
 smartofficesandsmarthomes.com: did not receive HSTS header
 smartrak.co.nz: did not receive HSTS header
 smatch.com: did not receive HSTS header
 smdev.fr: could not connect to host
@@ -3842,16 +3856,17 @@ solidfuelappliancespares.co.uk: did not 
 solinter.com.br: did not receive HSTS header
 solit.systems: 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
 sonicrainboom.rocks: could not connect to host
 soobi.org: did not receive HSTS header
+soondy.com: did not receive HSTS header
 sotiran.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]
 sotor.de: 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
@@ -3888,16 +3903,17 @@ spittersberger.recipes: did not receive 
 sponsortobias.com: did not receive HSTS header
 sportwette.eu: did not receive HSTS header
 spot-events.com: could not connect to host
 spotifyripper.tk: 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
+sprutech.de: could not connect to host
 sprybear.com: did not receive HSTS header
 square.gs: could not connect to host
 squatldf.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]
 sqzryang.com: did not receive HSTS header
 srevilak.net: did not receive HSTS header
 srna.sk: could not connect to host
 srrr.ca: could not connect to host
 ss.wtf: could not connect to host
@@ -3936,33 +3952,32 @@ stephenschrauger.org: did not receive HS
 stevensononthe.net: did not receive HSTS header
 stewartremodelingadvantage.com: did not receive HSTS header
 stig.io: did not receive HSTS header
 stigroom.com: could not connect to host
 stillblackhat.id: could not connect to host
 stirlingpoon.xyz: could not connect to host
 stkbn.com: did not receive HSTS header
 stmbgr.com: could not connect to host
-stn.me.uk: could not connect to host
+stn.me.uk: did not receive HSTS header
 stocktrade.de: could not connect to host
 stoffe-monster.de: did not receive HSTS header
 stole-my.bike: could not connect to host
 stole-my.tv: could not connect to host
 stopwoodfin.org: could not connect to host
 storecove.com: did not receive HSTS header
 storefrontify.com: did not receive HSTS header
 stormhub.org: could not connect to host
 stpatricksguild.com: did not receive HSTS header
 stqry.com: did not receive HSTS header
 str0.at: did not receive HSTS header
 strasweb.fr: did not receive HSTS header
 streamingeverywhere.com: did not receive HSTS header
 streamingmagazin.de: could not connect to host
 streampanel.net: did not receive HSTS header
-streams.dyndns.org: could not connect to host
 strictlysudo.com: could not connect to host
 strivephysmed.com: did not receive HSTS header
 stroeercrm.de: could not connect to host
 strom.family: could not connect to host
 strongest-privacy.com: could not connect to host
 stuartbaxter.co: could not connect to host
 student-scientist.org: did not receive HSTS header
 student.andover.edu: did not receive HSTS header
@@ -3999,16 +4014,17 @@ supersalescontest.nl: did not receive HS
 supersecurefancydomain.com: could not connect to host
 superuser.fi: could not connect to host
 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
 surfone-leucate.com: did not receive HSTS header
 sushi101tempe.com: did not receive HSTS header
+sushifrick.de: could not connect to host
 suzukikenichi.com: did not receive HSTS header
 sv.search.yahoo.com: did not receive HSTS header
 svarovani.tk: could not connect to host
 svatba-frantovi.cz: did not receive HSTS header
 sweetll.me: could not connect to host
 sweetstreats.ca: could not connect to host
 swimbee.nl: did not receive HSTS header
 swimming.ca: did not receive HSTS header
@@ -4081,16 +4097,17 @@ techhipster.net: could not connect to ho
 techhub.ml: could not connect to host
 techllage.com: could not connect to host
 techloaner.com: could not connect to host
 techmatehq.com: could not connect to host
 technogroup.cz: did not receive HSTS header
 technosavvyport.com: did not receive HSTS header
 techpointed.com: could not connect to host
 tedb.us: could not connect to host
+tedovo.com: did not receive HSTS header
 tegelsensanitaironline.nl: did not receive HSTS header
 tekshrek.com: did not receive HSTS header
 telefonnummer.online: could not connect to host
 telefoonnummerinfo.nl: could not connect to host
 telling.xyz: could not connect to host
 temehu.com: did not receive HSTS header
 tempcraft.net: could not connect to host
 tendertool.nl: could not connect to host
@@ -4128,16 +4145,17 @@ thebrotherswarde.com: could not connect 
 thecapitalbank.com: did not receive HSTS header
 thecharlestonwaldorf.com: did not receive HSTS header
 theclementinebutchers.com: could not connect to host
 theclubjersey.com: did not receive HSTS header
 thecoffeehouse.xyz: could not connect to host
 thediaryofadam.com: did not receive HSTS header
 theendofzion.com: did not receive HSTS header
 theescapistswiki.com: could not connect to host
+theeyeopener.com: did not receive HSTS header
 thefarbeyond.com: could not connect to host
 theflowerbasketonline.com: could not connect to host
 thefootballanalyst.com: could not connect to host
 thefrozenfire.com: did not receive HSTS header
 thegcccoin.com: did not receive HSTS header
 thego2swatking.com: could not connect to host
 thehiddenbay.eu: could not connect to host
 thehiddenbay.me: could not connect to host
@@ -4236,17 +4254,16 @@ tomask.info: 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: did not receive HSTS header
 tomlankhorst.nl: did not receive HSTS header
 tommsy.com: did not receive HSTS header
 tommyads.com: could not connect to host
-tomudding.nl: did not receive HSTS header
 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
 tonyw.xyz: could not connect to host
 toomanypillows.com: could not connect to host
 topbargains.com.au: did not receive HSTS header
 topdeskdev.net: could not connect to host
 topmarine.se: could not connect to host
 topnewstoday.org: could not connect to host
@@ -4267,23 +4284,21 @@ tradinghope.com: could not connect to ho
 traindb.nl: did not receive HSTS header
 trainut.com: could not connect to host
 transitownplaza.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
 travelinsurance.co.nz: did not receive HSTS header
 treeby.net: could not connect to host
 trendberry.ru: could not connect to host
-trik.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]
 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
-trufflemonkey.co.uk: did not receive HSTS header
 trunkjunk.co: did not receive HSTS header
 trusteecar.com: did not receive HSTS header
 trustmeimfancy.com: could not connect to host
 trybind.com: could not connect to host
 tryoneday.co: did not receive HSTS header
 ts2.se: could not connect to host
 tsecy.com: did not receive HSTS header
 tsgoc.com: did not receive HSTS header
@@ -4326,17 +4341,16 @@ tzappa.net: could not connect to host
 u-blox.com: max-age too low: 0
 ua.search.yahoo.com: did not receive HSTS header
 uadp.pw: did not receive HSTS header
 ubicloud.de: could not connect to host
 ubicv.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]
 ublox.com: did not receive HSTS header
 ubuntuhot.com: did not receive HSTS header
 uega.net: did not receive HSTS header
-ueu.me: could not connect to host
 ufgaming.com: did not receive HSTS header
 ufotable.uk: did not receive HSTS header
 ui8.net: max-age too low: 86400
 ukas.com: did not receive HSTS header
 ukdropshipment.co.uk: did not receive HSTS header
 ukdropshipment.com: did not receive HSTS header
 ukrgadget.com: could not connect to host
 ulabox.cat: did not receive HSTS header
@@ -4384,17 +4398,17 @@ url.rw: did not receive HSTS header
 urphp.com: could not connect to host
 us-immigration.com: did not receive HSTS header
 usaa.com: did not receive HSTS header
 usbtypeccompliant.com: could not connect to host
 uscitizenship.info: did not receive HSTS header
 uscurrency.gov: did not receive HSTS header
 used-in.jp: did not receive HSTS header
 usercare.com: did not receive HSTS header
-userify.com: max-age too low: 0
+userify.com: did not receive HSTS header
 ustr.gov: max-age too low: 86400
 utleieplassen.no: could not connect to host
 utopiagalaxy.space: could not connect to host
 utopianhomespa.com: did not receive HSTS header
 uttnetgroup.fr: could not connect to host
 utumno.ch: could not connect to host
 utvbloggen.se: [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]
 uvarov.pw: did not receive HSTS header
@@ -4422,16 +4436,17 @@ vanlaanen.com: did not receive HSTS head
 vansieleghem.com: could not connect to host
 vasanth.org: 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
 ve3oat.ca: 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
 vehent.org: did not receive HSTS header
 vemokin.net: did not receive HSTS header
 venixplays-stream.ml: could not connect to host
 verifikatorindonesia.com: could not connect to host
 vermontcareergateway.org: could not connect to host
 versia.ru: did not receive HSTS header
 veryhax.de: could not connect to host
@@ -4447,25 +4462,26 @@ vietnamchevrolet.net: did not receive HS
 vietnamphotographytours.com: did not receive HSTS header
 viewsea.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]
 vigilo.cf: could not connect to host
 viktorsvantesson.net: did not receive HSTS header
 vincentkooijman.at: did not receive HSTS header
 vincentkooijman.nl: did not receive HSTS header
 vincentpancol.com: could not connect to host
 vintageheartcoffee.com: did not receive HSTS header
-vinyculture.com: could not connect to host
 vio.no: did not receive HSTS header
 viperdns.com: could not connect to host
 vipi.es: could not connect to host
 vipmusic.ga: could not connect to host
+vipnettikasinoklubi.com: did not receive HSTS header
 visiontree-beta.eu: could not connect to host
 visitbroadstairs.com: could not connect to host
 vissanum.com: did not receive HSTS header
 vistarait.com: did not receive HSTS header
+vitagenda.nl: could not connect to host
 vitalorange.com: did not receive HSTS header
 viva-french.com: did not receive HSTS header
 vlastimilburian.cz: did not receive HSTS header
 vlora.city: could not connect to host
 vm0.eu: did not receive HSTS header
 vmrdev.com: could not connect to host
 voceinveste.com: did not receive HSTS header
 vodpay.net: could not connect to host
@@ -4514,17 +4530,16 @@ wassim.is: could not connect to host
 watchium.com: did not receive HSTS header
 watersportmarkt.net: did not receive HSTS header
 watsonhall.uk: could not connect to host
 wave.is: could not connect to host
 wavefrontsystemstech.com: could not connect to host
 wayne.cloud: did not receive HSTS header
 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
-wearepapermill.co: did not receive HSTS header
 weaverhairextensions.nl: could not connect to host
 web-industry.fr: could not connect to host
 web-torrent.com: max-age too low: 0
 web.cc: did not receive HSTS header
 web4all.fr: did not receive HSTS header
 web4pro.fr: did not receive HSTS header
 webandwords.com.au: could not connect to host
 webapps.directory: could not connect to host
@@ -4549,17 +4564,16 @@ webstory.xyz: could not connect to host
 webswitch.io: could not connect to host
 webtechgadgetry.com: did not receive HSTS header
 webtiles.co.uk: could not connect to host
 webwork.pw: could not connect to host
 weddingenvelopes.co.uk: did not receive HSTS header
 weizenke.im: could not connect to host
 wellastore.ru: did not receive HSTS header
 wellsolveit.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]
-welpy.com: could not connect to host
 weltmeisterschaft.net: could not connect to host
 weltverschwoerung.de: did not receive HSTS header
 weme.eu: could not connect to host
 wendalyncheng.com: could not connect to host
 werdeeintimo.de: did not receive HSTS header
 werkenbijkfc.nl: did not receive HSTS header
 werkplaatsoost.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]
 werkruimtebottendaal.nl: did not receive HSTS header
@@ -4639,36 +4653,40 @@ womosale.de: could not connect to host
 wonderfall.xyz: could not connect to host
 wonderhost.info: could not connect to host
 woodmafia.com.au: max-age too low: 0
 woontegelwinkel.nl: did not receive HSTS header
 woording.com: could not connect to host
 wootton95.com: could not connect to host
 woresite.jp: did not receive HSTS header
 workfone.io: did not receive HSTS header
+workwithgo.com: could not connect to host
+worldsbeststory.com: could not connect to host
 wowapi.org: could not connect to host
 wphostingspot.com: did not receive HSTS header
 wpmetadatastandardsproject.org: could not connect to host
 writeapp.me: did not receive HSTS header
 wsscompany.com.ve: could not connect to host
+wubocong.com: could not connect to host
 wufu.org: did not receive HSTS header
 wuhengmin.com: did not receive HSTS header
 wurzelzwerg.net: could not connect to host
 wusx.club: could not connect to host
-www.apollo-auto.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]
+www.apollo-auto.com: could not connect to host
 www.braintreepayments.com: did not receive HSTS header
 www.calyxinstitute.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]
 www.cueup.com: could not connect to host
 www.cyveillance.com: did not receive HSTS header
 www.developer.mydigipass.com: could not connect to host
 www.elanex.biz: did not receive HSTS header
 www.gamesdepartment.co.uk: did not receive HSTS header
 www.gmail.com: did not receive HSTS header (error ignored - included regardless)
 www.googlemail.com: did not receive HSTS header (error ignored - included regardless)
 www.greplin.com: could not connect to host
+www.heliosnet.com: could not connect to host
 www.honeybadger.io: did not receive HSTS header
 www.jitsi.org: did not receive HSTS header
 www.ledgerscope.net: could not connect to host
 www.logentries.com: did not receive HSTS header
 www.moneybookers.com: did not receive HSTS header
 www.neonisi.com: could not connect to host
 www.paycheckrecords.com: did not receive HSTS header
 www.rme.li: did not receive HSTS header
--- 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(1498147280284000);
+const PRTime gPreloadListExpirationTime = INT64_C(1498230217338000);
 
 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',
   /* "0100dev.com", true */ '0', '1', '0', '0', 'd', 'e', 'v', '.', 'c', 'o', 'm', '\0',
   /* "0100dev.nl", true */ '0', '1', '0', '0', 'd', 'e', 'v', '.', 'n', 'l', '\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',
@@ -452,17 +452,16 @@ static const char kSTSHostTable[] = {
   /* "agenda21senden.de", true */ 'a', 'g', 'e', 'n', 'd', 'a', '2', '1', 's', 'e', 'n', 'd', 'e', 'n', '.', 'd', 'e', '\0',
   /* "agevio.com", true */ 'a', 'g', 'e', 'v', 'i', 'o', '.', 'c', 'o', 'm', '\0',
   /* "agfmedia.com", true */ 'a', 'g', 'f', 'm', 'e', 'd', 'i', 'a', '.', 'c', 'o', 'm', '\0',
   /* "aggr.pw", true */ 'a', 'g', 'g', 'r', '.', 'p', 'w', '\0',
   /* "agilebits.com", true */ 'a', 'g', 'i', 'l', 'e', 'b', 'i', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "agilebits.net", false */ 'a', 'g', 'i', 'l', 'e', 'b', 'i', 't', 's', '.', 'n', 'e', 't', '\0',
   /* "agileui.com", true */ 'a', 'g', 'i', 'l', 'e', 'u', 'i', '.', 'c', 'o', 'm', '\0',
   /* "aging.gov", true */ 'a', 'g', 'i', 'n', 'g', '.', 'g', 'o', 'v', '\0',
-  /* "agonswim.com", false */ 'a', 'g', 'o', 'n', 's', 'w', 'i', 'm', '.', 'c', 'o', 'm', '\0',
   /* "agotnes.com", true */ 'a', 'g', 'o', 't', 'n', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "agowa338.de", true */ 'a', 'g', 'o', 'w', 'a', '3', '3', '8', '.', 'd', 'e', '\0',
   /* "agrias.com.br", true */ 'a', 'g', 'r', 'i', 'a', 's', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "agwa.name", true */ 'a', 'g', 'w', 'a', '.', 'n', 'a', 'm', 'e', '\0',
   /* "ahd.com", true */ 'a', 'h', 'd', '.', 'c', 'o', 'm', '\0',
   /* "ahelos.tk", true */ 'a', 'h', 'e', 'l', 'o', 's', '.', 't', 'k', '\0',
   /* "ahero4all.org", true */ 'a', 'h', 'e', 'r', 'o', '4', 'a', 'l', 'l', '.', 'o', 'r', 'g', '\0',
   /* "ahkubiak.ovh", true */ 'a', 'h', 'k', 'u', 'b', 'i', 'a', 'k', '.', 'o', 'v', 'h', '\0',
@@ -1121,17 +1120,16 @@ static const char kSTSHostTable[] = {
   /* "author24.ru", true */ 'a', 'u', 't', 'h', 'o', 'r', '2', '4', '.', 'r', 'u', '\0',
   /* "autimatisering.nl", true */ 'a', 'u', 't', 'i', 'm', 'a', 't', 'i', 's', 'e', 'r', 'i', 'n', 'g', '.', 'n', 'l', '\0',
   /* "auto-anleitung.de", true */ 'a', 'u', 't', 'o', '-', 'a', 'n', 'l', 'e', 'i', 't', 'u', 'n', 'g', '.', 'd', 'e', '\0',
   /* "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',
   /* "autodalmacija.com", true */ 'a', 'u', 't', 'o', 'd', 'a', 'l', 'm', 'a', 'c', 'i', 'j', 'a', '.', 'c', 'o', 'm', '\0',
   /* "autodeploy.it", true */ 'a', 'u', 't', 'o', 'd', 'e', 'p', 'l', 'o', 'y', '.', 'i', 't', '\0',
   /* "autoentrepreneurinfo.com", true */ 'a', 'u', 't', 'o', 'e', 'n', 't', 'r', 'e', 'p', 'r', 'e', 'n', 'e', 'u', 'r', 'i', 'n', 'f', 'o', '.', 'c', 'o', 'm', '\0',
-  /* "autoepc.ro", true */ 'a', 'u', 't', 'o', 'e', 'p', 'c', '.', 'r', 'o', '\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',
   /* "autoosijek.com", true */ 'a', 'u', 't', 'o', 'o', 's', 'i', 'j', 'e', 'k', '.', 'c', 'o', 'm', '\0',
   /* "autoparts.im", true */ 'a', 'u', 't', 'o', 'p', 'a', 'r', 't', 's', '.', 'i', 'm', '\0',
   /* "autoparts.sh", true */ 'a', 'u', 't', 'o', 'p', 'a', 'r', 't', 's', '.', 's', 'h', '\0',
   /* "autoparts.wf", true */ 'a', 'u', 't', 'o', 'p', 'a', 'r', 't', 's', '.', 'w', 'f', '\0',
   /* "autosiero.nl", true */ 'a', 'u', 't', 'o', 's', 'i', 'e', 'r', 'o', '.', 'n', 'l', '\0',
   /* "autoskola.hr", true */ 'a', 'u', 't', 'o', 's', 'k', 'o', 'l', 'a', '.', 'h', 'r', '\0',
@@ -1308,16 +1306,17 @@ static const char kSTSHostTable[] = {
   /* "bartel.ws", true */ 'b', 'a', 'r', 't', 'e', 'l', '.', 'w', 's', '\0',
   /* "bartelt.name", true */ 'b', 'a', 'r', 't', 'e', 'l', 't', '.', 'n', 'a', 'm', 'e', '\0',
   /* "bartlamboo.nl", true */ 'b', 'a', 'r', 't', 'l', 'a', 'm', 'b', 'o', 'o', '.', 'n', 'l', '\0',
   /* "bartula.de", true */ 'b', 'a', 'r', 't', 'u', 'l', 'a', '.', 'd', 'e', '\0',
   /* "baruch.me", true */ 'b', 'a', 'r', 'u', 'c', 'h', '.', 'm', 'e', '\0',
   /* "barunisystems.com", true */ 'b', 'a', 'r', 'u', 'n', 'i', 's', 'y', 's', 't', 'e', 'm', 's', '.', 'c', 'o', 'm', '\0',
   /* "bashc.at", true */ 'b', 'a', 's', 'h', 'c', '.', 'a', 't', '\0',
   /* "baskettemple.com", true */ 'b', 'a', 's', 'k', 'e', 't', 't', 'e', 'm', 'p', 'l', 'e', '.', 'c', 'o', 'm', '\0',
+  /* "basnieuwenhuizen.nl", true */ 'b', 'a', 's', 'n', 'i', 'e', 'u', 'w', 'e', 'n', 'h', 'u', 'i', 'z', 'e', 'n', '.', 'n', 'l', '\0',
   /* "basnoslovno.com.ua", true */ 'b', 'a', 's', 'n', 'o', 's', 'l', 'o', 'v', 'n', 'o', '.', 'c', 'o', 'm', '.', 'u', 'a', '\0',
   /* "basnoslovno.ru", true */ 'b', 'a', 's', 'n', 'o', 's', 'l', 'o', 'v', 'n', 'o', '.', 'r', 'u', '\0',
   /* "bastelzauberwelt.de", true */ 'b', 'a', 's', 't', 'e', 'l', 'z', 'a', 'u', 'b', 'e', 'r', 'w', 'e', 'l', 't', '.', 'd', 'e', '\0',
   /* "bastianstalder.ch", true */ 'b', 'a', 's', 't', 'i', 'a', 'n', 's', 't', 'a', 'l', 'd', 'e', 'r', '.', 'c', 'h', '\0',
   /* "bastiv.com", true */ 'b', 'a', 's', 't', 'i', 'v', '.', 'c', 'o', 'm', '\0',
   /* "basyspro.net", true */ 'b', 'a', 's', 'y', 's', 'p', 'r', 'o', '.', 'n', 'e', 't', '\0',
   /* "batfoundry.com", true */ 'b', 'a', 't', 'f', 'o', 'u', 'n', 'd', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "batonger.com", true */ 'b', 'a', 't', 'o', 'n', 'g', 'e', 'r', '.', 'c', 'o', 'm', '\0',
@@ -1771,23 +1770,21 @@ static const char kSTSHostTable[] = {
   /* "bluepostbox.de", true */ 'b', 'l', 'u', 'e', 'p', 'o', 's', 't', 'b', 'o', 'x', '.', 'd', 'e', '\0',
   /* "bluex.im", true */ 'b', 'l', 'u', 'e', 'x', '.', 'i', 'm', '\0',
   /* "bluex.info", true */ 'b', 'l', 'u', 'e', 'x', '.', 'i', 'n', 'f', 'o', '\0',
   /* "bluex.net", true */ 'b', 'l', 'u', 'e', 'x', '.', 'n', 'e', 't', '\0',
   /* "bluex.org", true */ 'b', 'l', 'u', 'e', 'x', '.', 'o', 'r', 'g', '\0',
   /* "blumenfeldart.com", true */ 'b', 'l', 'u', 'm', 'e', 'n', 'f', 'e', 'l', 'd', 'a', 'r', 't', '.', 'c', 'o', 'm', '\0',
   /* "blumiges-fischbachtal.de", true */ 'b', 'l', 'u', 'm', 'i', 'g', 'e', 's', '-', 'f', 'i', 's', 'c', 'h', 'b', 'a', 'c', 'h', 't', 'a', 'l', '.', 'd', 'e', '\0',
   /* "blurringexistence.net", true */ 'b', 'l', 'u', 'r', 'r', 'i', 'n', 'g', 'e', 'x', 'i', 's', 't', 'e', 'n', 'c', 'e', '.', 'n', 'e', 't', '\0',
-  /* "bluserv.net", true */ 'b', 'l', 'u', 's', 'e', 'r', 'v', '.', 'n', 'e', 't', '\0',
   /* "blusmurf.net", true */ 'b', 'l', 'u', 's', 'm', 'u', 'r', 'f', '.', 'n', 'e', 't', '\0',
   /* "blutroyal.de", true */ 'b', 'l', 'u', 't', 'r', 'o', 'y', 'a', 'l', '.', 'd', 'e', '\0',
   /* "blvdmb.com", true */ 'b', 'l', 'v', 'd', 'm', 'b', '.', 'c', 'o', 'm', '\0',
   /* "bmet.de", true */ 'b', 'm', 'e', 't', '.', 'd', 'e', '\0',
   /* "bmoattachments.org", true */ 'b', 'm', 'o', 'a', 't', 't', 'a', 'c', 'h', 'm', 'e', 'n', 't', 's', '.', 'o', 'r', 'g', '\0',
-  /* "bmone.net", true */ 'b', 'm', 'o', 'n', 'e', '.', 'n', 'e', 't', '\0',
   /* "bmros.com.ar", true */ 'b', 'm', 'r', 'o', 's', '.', 'c', 'o', 'm', '.', 'a', 'r', '\0',
   /* "bn1digital.co.uk", true */ 'b', 'n', '1', 'd', 'i', 'g', 'i', 't', 'a', 'l', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "bobancoamigo.com", true */ 'b', 'o', 'b', 'a', 'n', 'c', 'o', 'a', 'm', 'i', 'g', 'o', '.', 'c', 'o', 'm', '\0',
   /* "bobcopeland.com", true */ 'b', 'o', 'b', 'c', 'o', 'p', 'e', 'l', 'a', 'n', 'd', '.', 'c', 'o', 'm', '\0',
   /* "bobobox.net", true */ 'b', 'o', 'b', 'o', 'b', 'o', 'x', '.', 'n', 'e', 't', '\0',
   /* "boboolo.com", true */ 'b', 'o', 'b', 'o', 'o', 'l', 'o', '.', 'c', 'o', 'm', '\0',
   /* "bochs.info", true */ 'b', 'o', 'c', 'h', 's', '.', 'i', 'n', 'f', 'o', '\0',
   /* "bockenauer.at", true */ 'b', 'o', 'c', 'k', 'e', 'n', 'a', 'u', 'e', 'r', '.', 'a', 't', '\0',
@@ -1810,16 +1807,17 @@ static const char kSTSHostTable[] = {
   /* "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.es", true */ 'b', 'o', 'n', 'n', 'y', 'p', 'r', 'i', 'n', 't', 's', '.', 'e', 's', '\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',
   /* "bonop.com", true */ 'b', 'o', 'n', 'o', 'p', '.', 'c', 'o', 'm', '\0',
   /* "bonqoeur.ca", true */ 'b', 'o', 'n', 'q', 'o', 'e', 'u', 'r', '.', 'c', 'a', '\0',
   /* "boof.com", false */ 'b', 'o', 'o', 'f', '.', 'c', 'o', 'm', '\0',
+  /* "bookingapp.nl", true */ 'b', 'o', 'o', 'k', 'i', 'n', 'g', 'a', 'p', 'p', '.', 'n', 'l', '\0',
   /* "bookmein.in", true */ 'b', 'o', 'o', 'k', 'm', 'e', 'i', 'n', '.', 'i', 'n', '\0',
   /* "bookofraonlinecasinos.com", true */ 'b', 'o', 'o', 'k', 'o', 'f', 'r', 'a', 'o', 'n', 'l', 'i', 'n', 'e', 'c', 'a', 's', 'i', 'n', 'o', 's', '.', 'c', 'o', 'm', '\0',
   /* "bool.be", true */ 'b', 'o', 'o', 'l', '.', 'b', 'e', '\0',
   /* "boomersurf.com", true */ 'b', 'o', 'o', 'm', 'e', 'r', 's', 'u', 'r', 'f', '.', 'c', 'o', 'm', '\0',
   /* "boonbox.com", true */ 'b', 'o', 'o', 'n', 'b', 'o', 'x', '.', 'c', 'o', 'm', '\0',
   /* "booth.in.th", true */ 'b', 'o', 'o', 't', 'h', '.', 'i', 'n', '.', 't', 'h', '\0',
   /* "borchers-media.de", true */ 'b', 'o', 'r', 'c', 'h', 'e', 'r', 's', '-', 'm', 'e', 'd', 'i', 'a', '.', 'd', 'e', '\0',
   /* "borderlinegroup.com", true */ 'b', 'o', 'r', 'd', 'e', 'r', 'l', 'i', 'n', 'e', 'g', 'r', 'o', 'u', 'p', '.', 'c', 'o', 'm', '\0',
@@ -2004,16 +2002,17 @@ static const char kSTSHostTable[] = {
   /* "buffaloautomation.com", true */ 'b', 'u', 'f', 'f', 'a', 'l', 'o', 'a', 'u', 't', 'o', 'm', 'a', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "buffalodrinkinggame.beer", true */ 'b', 'u', 'f', 'f', 'a', 'l', 'o', 'd', 'r', 'i', 'n', 'k', 'i', 'n', 'g', 'g', 'a', 'm', 'e', '.', 'b', 'e', 'e', 'r', '\0',
   /* "buffhack.com", true */ 'b', 'u', 'f', 'f', 'h', 'a', 'c', 'k', '.', 'c', 'o', 'm', '\0',
   /* "bugcrowd.com", true */ 'b', 'u', 'g', 'c', 'r', 'o', 'w', 'd', '.', 'c', 'o', 'm', '\0',
   /* "bugginslab.co.uk", true */ 'b', 'u', 'g', 'g', 'i', 'n', 's', 'l', 'a', 'b', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "bugs.chromium.org", true */ 'b', 'u', 'g', 's', '.', 'c', 'h', 'r', 'o', 'm', 'i', 'u', 'm', '.', 'o', 'r', 'g', '\0',
   /* "bugsmashed.com", true */ 'b', 'u', 'g', 's', 'm', 'a', 's', 'h', 'e', 'd', '.', 'c', 'o', 'm', '\0',
   /* "bugtrack.co.uk", true */ 'b', 'u', 'g', 't', 'r', 'a', 'c', 'k', '.', 'c', 'o', '.', 'u', 'k', '\0',
+  /* "bugwie.com", true */ 'b', 'u', 'g', 'w', 'i', 'e', '.', 'c', 'o', 'm', '\0',
   /* "bugzil.la", true */ 'b', 'u', 'g', 'z', 'i', 'l', '.', 'l', 'a', '\0',
   /* "bugzilla.mozilla.org", true */ 'b', 'u', 'g', 'z', 'i', 'l', 'l', 'a', '.', 'm', 'o', 'z', 'i', 'l', 'l', 'a', '.', 'o', 'r', 'g', '\0',
   /* "buiko.com", true */ 'b', 'u', 'i', 'k', 'o', '.', 'c', 'o', 'm', '\0',
   /* "build.chromium.org", false */ 'b', 'u', 'i', 'l', 'd', '.', 'c', 'h', 'r', 'o', 'm', 'i', 'u', 'm', '.', 'o', 'r', 'g', '\0',
   /* "buildbox.io", true */ 'b', 'u', 'i', 'l', 'd', 'b', 'o', 'x', '.', 'i', 'o', '\0',
   /* "building-cost-estimators.com", true */ 'b', 'u', 'i', 'l', 'd', 'i', 'n', 'g', '-', 'c', 'o', 's', 't', '-', 'e', 's', 't', 'i', 'm', 'a', 't', 'o', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "buildingclouds.ch", true */ 'b', 'u', 'i', 'l', 'd', 'i', 'n', 'g', 'c', 'l', 'o', 'u', 'd', 's', '.', 'c', 'h', '\0',
   /* "buildingclouds.de", true */ 'b', 'u', 'i', 'l', 'd', 'i', 'n', 'g', 'c', 'l', 'o', 'u', 'd', 's', '.', 'd', 'e', '\0',
@@ -2069,16 +2068,17 @@ static const char kSTSHostTable[] = {
   /* "buyinginvestmentproperty.com", true */ 'b', 'u', 'y', 'i', 'n', 'g', 'i', 'n', 'v', 'e', 's', 't', 'm', 'e', 'n', 't', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "buytheway.co.za", true */ 'b', 'u', 'y', 't', 'h', 'e', 'w', 'a', 'y', '.', 'c', 'o', '.', 'z', 'a', '\0',
   /* "buzzconcert.com", true */ 'b', 'u', 'z', 'z', 'c', 'o', 'n', 'c', 'e', 'r', 't', '.', 'c', 'o', 'm', '\0',
   /* "buzzconf.io", true */ 'b', 'u', 'z', 'z', 'c', 'o', 'n', 'f', '.', 'i', 'o', '\0',
   /* "buzzdeck.com", true */ 'b', 'u', 'z', 'z', 'd', 'e', 'c', 'k', '.', 'c', 'o', 'm', '\0',
   /* "bvalle.com", true */ 'b', 'v', 'a', 'l', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "bvexplained.co.uk", true */ 'b', 'v', 'e', 'x', 'p', 'l', 'a', 'i', 'n', 'e', 'd', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "bvionline.eu", true */ 'b', 'v', 'i', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'e', 'u', '\0',
+  /* "bw.codes", true */ 'b', 'w', '.', 'c', 'o', 'd', 'e', 's', '\0',
   /* "bw81.xyz", true */ 'b', 'w', '8', '1', '.', 'x', 'y', 'z', '\0',
   /* "bwcscorecard.org", true */ 'b', 'w', 'c', 's', 'c', 'o', 'r', 'e', 'c', 'a', 'r', 'd', '.', 'o', 'r', 'g', '\0',
   /* "bwear4all.de", true */ 'b', 'w', 'e', 'a', 'r', '4', 'a', 'l', 'l', '.', 'd', 'e', '\0',
   /* "bwh1.net", true */ 'b', 'w', 'h', '1', '.', 'n', 'e', 't', '\0',
   /* "bwilkinson.co.uk", true */ 'b', 'w', 'i', 'l', 'k', 'i', 'n', 's', 'o', 'n', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "bx-n.de", true */ 'b', 'x', '-', 'n', '.', 'd', 'e', '\0',
   /* "bxdev.me", true */ 'b', 'x', 'd', 'e', 'v', '.', 'm', 'e', '\0',
   /* "bxp40.at", true */ 'b', 'x', 'p', '4', '0', '.', 'a', 't', '\0',
@@ -2199,17 +2199,16 @@ static const char kSTSHostTable[] = {
   /* "campaign.gov.uk", true */ 'c', 'a', 'm', 'p', 'a', 'i', 'g', 'n', '.', 'g', 'o', 'v', '.', 'u', 'k', '\0',
   /* "campaignelves.com", true */ 'c', 'a', 'm', 'p', 'a', 'i', 'g', 'n', 'e', 'l', 'v', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "campbellsoftware.co.uk", false */ 'c', 'a', 'm', 'p', 'b', 'e', 'l', 'l', 's', 'o', 'f', 't', 'w', 'a', 'r', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "campbrainybunch.com", true */ 'c', 'a', 'm', 'p', 'b', 'r', 'a', 'i', 'n', 'y', 'b', 'u', 'n', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "camperdays.de", true */ 'c', 'a', 'm', 'p', 'e', 'r', 'd', 'a', 'y', 's', '.', 'd', 'e', '\0',
   /* "camperlist.com", true */ 'c', 'a', 'm', 'p', 'e', 'r', 'l', 'i', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "campermanaustralia.com", true */ 'c', 'a', 'm', 'p', 'e', 'r', 'm', 'a', 'n', 'a', 'u', 's', 't', 'r', 'a', 'l', 'i', 'a', '.', 'c', 'o', 'm', '\0',
   /* "camperverzekerd.nl", true */ 'c', 'a', 'm', 'p', 'e', 'r', 'v', 'e', 'r', 'z', 'e', 'k', 'e', 'r', 'd', '.', 'n', 'l', '\0',
-  /* "campfire.co.il", true */ 'c', 'a', 'm', 'p', 'f', 'i', 'r', 'e', '.', 'c', 'o', '.', 'i', 'l', '\0',
   /* "campfiretails.org", true */ 'c', 'a', 'm', 'p', 'f', 'i', 'r', 'e', 't', 'a', 'i', 'l', 's', '.', 'o', 'r', 'g', '\0',
   /* "campfourpaws.com", true */ 'c', 'a', 'm', 'p', 'f', 'o', 'u', 'r', 'p', 'a', 'w', 's', '.', 'c', 'o', 'm', '\0',
   /* "campus-cybersecurity.team", true */ 'c', 'a', 'm', 'p', 'u', 's', '-', 'c', 'y', 'b', 'e', 'r', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '.', 't', 'e', 'a', 'm', '\0',
   /* "campus-finance.com", true */ 'c', 'a', 'm', 'p', 'u', 's', '-', 'f', 'i', 'n', 'a', 'n', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "canadabread.com", true */ 'c', 'a', 'n', 'a', 'd', 'a', 'b', 'r', 'e', 'a', 'd', '.', 'c', 'o', 'm', '\0',
   /* "canadalife.de", true */ 'c', 'a', 'n', 'a', 'd', 'a', 'l', 'i', 'f', 'e', '.', 'd', 'e', '\0',
   /* "canadasmotorcycle.ca", true */ 'c', 'a', 'n', 'a', 'd', 'a', 's', 'm', 'o', 't', 'o', 'r', 'c', 'y', 'c', 'l', 'e', '.', 'c', 'a', '\0',
   /* "canadian.dating", true */ 'c', 'a', 'n', 'a', 'd', 'i', 'a', 'n', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0',
@@ -2255,17 +2254,16 @@ static const char kSTSHostTable[] = {
   /* "carauctionscarolina.com", true */ 'c', 'a', 'r', 'a', 'u', 'c', 't', 'i', 'o', 'n', 's', 'c', 'a', 'r', 'o', 'l', 'i', 'n', 'a', '.', 'c', 'o', 'm', '\0',
   /* "carauctionsgeorgia.com", true */ 'c', 'a', 'r', 'a', 'u', 'c', 't', 'i', 'o', 'n', 's', 'g', 'e', 'o', 'r', 'g', 'i', 'a', '.', 'c', 'o', 'm', '\0',
   /* "carbon12.org", true */ 'c', 'a', 'r', 'b', 'o', 'n', '1', '2', '.', 'o', 'r', 'g', '\0',
   /* "carbon12.software", true */ 'c', 'a', 'r', 'b', 'o', 'n', '1', '2', '.', 's', 'o', 'f', 't', 'w', 'a', 'r', 'e', '\0',
   /* "carboneselectricosnettosl.info", false */ 'c', 'a', 'r', 'b', 'o', 'n', 'e', 's', 'e', 'l', 'e', 'c', 't', 'r', 'i', 'c', 'o', 's', 'n', 'e', 't', 't', 'o', 's', 'l', '.', 'i', 'n', 'f', 'o', '\0',
   /* "carbonmade.com", false */ 'c', 'a', 'r', 'b', 'o', 'n', 'm', 'a', 'd', 'e', '.', 'c', 'o', 'm', '\0',
   /* "carck.co.uk", true */ 'c', 'a', 'r', 'c', 'k', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "card-toka.jp", true */ 'c', 'a', 'r', 'd', '-', 't', 'o', 'k', 'a', '.', 'j', 'p', '\0',
-  /* "cardloan-manual.net", true */ 'c', 'a', 'r', 'd', 'l', 'o', 'a', 'n', '-', 'm', 'a', 'n', 'u', 'a', 'l', '.', 'n', 'e', 't', '\0',
   /* "cardranking.jp", true */ 'c', 'a', 'r', 'd', 'r', 'a', 'n', 'k', 'i', 'n', 'g', '.', 'j', 'p', '\0',
   /* "cardrecovery.fr", true */ 'c', 'a', 'r', 'd', 'r', 'e', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'f', 'r', '\0',
   /* "cardse.net", true */ 'c', 'a', 'r', 'd', 's', 'e', '.', 'n', 'e', 't', '\0',
   /* "careerstuds.com", true */ 'c', 'a', 'r', 'e', 'e', 'r', 's', 't', 'u', 'd', 's', '.', 'c', 'o', 'm', '\0',
   /* "caremad.io", true */ 'c', 'a', 'r', 'e', 'm', 'a', 'd', '.', 'i', 'o', '\0',
   /* "caretta.co.uk", true */ 'c', 'a', 'r', 'e', 't', 't', 'a', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "carey.bio", true */ 'c', 'a', 'r', 'e', 'y', '.', 'b', 'i', 'o', '\0',
   /* "carey.li", true */ 'c', 'a', 'r', 'e', 'y', '.', 'l', 'i', '\0',
@@ -2408,16 +2406,17 @@ static const char kSTSHostTable[] = {
   /* "cgcookiemarkets.com", true */ 'c', 'g', 'c', 'o', 'o', 'k', 'i', 'e', 'm', 'a', 'r', 'k', 'e', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "cgtx.us", true */ 'c', 'g', 't', 'x', '.', 'u', 's', '\0',
   /* "ch-sc.de", true */ 'c', 'h', '-', 's', 'c', '.', 'd', 'e', '\0',
   /* "ch.search.yahoo.com", false */ 'c', 'h', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "chabaudparfum.com", true */ 'c', 'h', 'a', 'b', 'a', 'u', 'd', 'p', 'a', 'r', 'f', 'u', 'm', '.', 'c', 'o', 'm', '\0',
   /* "chahub.com", true */ 'c', 'h', 'a', 'h', 'u', 'b', '.', 'c', 'o', 'm', '\0',
   /* "chaletmanager.com", true */ 'c', 'h', 'a', 'l', 'e', 't', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "chalkfestival.org", true */ 'c', 'h', 'a', 'l', 'k', 'f', 'e', 's', 't', 'i', 'v', 'a', 'l', '.', 'o', 'r', 'g', '\0',
+  /* "chamathellawala.com", true */ 'c', 'h', 'a', 'm', 'a', 't', 'h', 'e', 'l', 'l', 'a', 'w', 'a', 'l', 'a', '.', 'c', 'o', 'm', '\0',
   /* "chameth.com", true */ 'c', 'h', 'a', 'm', 'e', 't', 'h', '.', 'c', 'o', 'm', '\0',
   /* "chamilo.org", true */ 'c', 'h', 'a', 'm', 'i', 'l', 'o', '.', 'o', 'r', 'g', '\0',
   /* "champicreuse.fr", true */ 'c', 'h', 'a', 'm', 'p', 'i', 'c', 'r', 'e', 'u', 's', 'e', '.', 'f', 'r', '\0',
   /* "champserver.net", true */ 'c', 'h', 'a', 'm', 'p', 's', 'e', 'r', 'v', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "chanissue.com", true */ 'c', 'h', 'a', 'n', 'i', 's', 's', 'u', 'e', '.', 'c', 'o', 'm', '\0',
   /* "channelcards.com", true */ 'c', 'h', 'a', 'n', 'n', 'e', 'l', 'c', 'a', 'r', 'd', 's', '.', 'c', 'o', 'm', '\0',
   /* "chaos-inc.de", true */ 'c', 'h', 'a', 'o', 's', '-', 'i', 'n', 'c', '.', 'd', 'e', '\0',
   /* "chaoschemnitz.de", true */ 'c', 'h', 'a', 'o', 's', 'c', 'h', 'e', 'm', 'n', 'i', 't', 'z', '.', 'd', 'e', '\0',
@@ -2504,16 +2503,17 @@ static const char kSTSHostTable[] = {
   /* "chiru.no", true */ 'c', 'h', 'i', 'r', 'u', '.', 'n', 'o', '\0',
   /* "chiryotaisaku.com", true */ 'c', 'h', 'i', 'r', 'y', 'o', 't', 'a', 'i', 's', 'a', 'k', 'u', '.', 'c', 'o', 'm', '\0',
   /* "chit.search.yahoo.com", false */ 'c', 'h', 'i', 't', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "chloeallison.co.uk", true */ 'c', 'h', 'l', 'o', 'e', 'a', 'l', 'l', 'i', 's', 'o', 'n', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "chlouis.net", true */ 'c', 'h', 'l', 'o', 'u', 'i', 's', '.', 'n', 'e', 't', '\0',
   /* "chocolah.com.au", false */ 'c', 'h', 'o', 'c', 'o', 'l', 'a', 'h', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "chocotough.nl", false */ 'c', 'h', 'o', 'c', 'o', 't', 'o', 'u', 'g', 'h', '.', 'n', 'l', '\0',
   /* "choiralberta.ca", true */ 'c', 'h', 'o', 'i', 'r', 'a', 'l', 'b', 'e', 'r', 't', 'a', '.', 'c', 'a', '\0',
+  /* "chokladfantasi.net", false */ 'c', 'h', 'o', 'k', 'l', 'a', 'd', 'f', 'a', 'n', 't', 'a', 's', 'i', '.', 'n', 'e', 't', '\0',
   /* "chonghe.org", true */ 'c', 'h', 'o', 'n', 'g', 'h', 'e', '.', 'o', 'r', 'g', '\0',
   /* "choosemypc.net", true */ 'c', 'h', 'o', 'o', 's', 'e', 'm', 'y', 'p', 'c', '.', 'n', 'e', 't', '\0',
   /* "chorkley.co.uk", true */ 'c', 'h', 'o', 'r', 'k', 'l', 'e', 'y', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "chorkley.uk", true */ 'c', 'h', 'o', 'r', 'k', 'l', 'e', 'y', '.', 'u', 'k', '\0',
   /* "chorpinkpoemps.de", true */ 'c', 'h', 'o', 'r', 'p', 'i', 'n', 'k', 'p', 'o', 'e', 'm', 'p', 's', '.', 'd', 'e', '\0',
   /* "chosenplaintext.org", true */ 'c', 'h', 'o', 's', 'e', 'n', 'p', 'l', 'a', 'i', 'n', 't', 'e', 'x', 't', '.', 'o', 'r', 'g', '\0',
   /* "chourishi-shigoto.com", true */ 'c', 'h', 'o', 'u', 'r', 'i', 's', 'h', 'i', '-', 's', 'h', 'i', 'g', 'o', 't', 'o', '.', 'c', 'o', 'm', '\0',
   /* "chris-edwards.net", true */ 'c', 'h', 'r', 'i', 's', '-', 'e', 'd', 'w', 'a', 'r', 'd', 's', '.', 'n', 'e', 't', '\0',
@@ -2540,16 +2540,17 @@ static const char kSTSHostTable[] = {
   /* "christiesantiques.com", true */ 'c', 'h', 'r', 'i', 's', 't', 'i', 'e', 's', 'a', 'n', 't', 'i', 'q', 'u', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "christina-quast.de", true */ 'c', 'h', 'r', 'i', 's', 't', 'i', 'n', 'a', '-', 'q', 'u', 'a', 's', 't', '.', 'd', 'e', '\0',
   /* "christophersole.com", true */ 'c', 'h', 'r', 'i', 's', 't', 'o', 'p', 'h', 'e', 'r', 's', 'o', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "christophertruncer.com", true */ 'c', 'h', 'r', 'i', 's', 't', 'o', 'p', 'h', 'e', 'r', 't', 'r', 'u', 'n', 'c', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "christophkreileder.com", true */ 'c', 'h', 'r', 'i', 's', 't', 'o', 'p', 'h', 'k', 'r', 'e', 'i', 'l', 'e', 'd', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "chrisu3050.at", true */ 'c', 'h', 'r', 'i', 's', 'u', '3', '0', '5', '0', '.', 'a', 't', '\0',
   /* "chriswarrick.com", true */ 'c', 'h', 'r', 'i', 's', 'w', 'a', 'r', 'r', 'i', 'c', 'k', '.', 'c', 'o', 'm', '\0',
   /* "chriswells.io", true */ 'c', 'h', 'r', 'i', 's', 'w', 'e', 'l', 'l', 's', '.', 'i', 'o', '\0',
+  /* "chromaryu.net", true */ 'c', 'h', 'r', 'o', 'm', 'a', 'r', 'y', 'u', '.', 'n', 'e', 't', '\0',
   /* "chromaxa.com", true */ 'c', 'h', 'r', 'o', 'm', 'a', 'x', 'a', '.', 'c', 'o', 'm', '\0',
   /* "chrome-devtools-frontend.appspot.com", true */ 'c', 'h', 'r', 'o', 'm', 'e', '-', 'd', 'e', 'v', 't', 'o', 'o', 'l', 's', '-', 'f', 'r', 'o', 'n', 't', 'e', 'n', 'd', '.', 'a', 'p', 'p', 's', 'p', 'o', 't', '.', 'c', 'o', 'm', '\0',
   /* "chrome.com", false */ 'c', 'h', 'r', 'o', 'm', 'e', '.', 'c', 'o', 'm', '\0',
   /* "chrome.google.com", true */ 'c', 'h', 'r', 'o', 'm', 'e', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "chromebookchart.com", true */ 'c', 'h', 'r', 'o', 'm', 'e', 'b', 'o', 'o', 'k', 'c', 'h', 'a', 'r', 't', '.', 'c', 'o', 'm', '\0',
   /* "chromebooksforwork.com", true */ 'c', 'h', 'r', 'o', 'm', 'e', 'b', 'o', 'o', 'k', 's', 'f', 'o', 'r', 'w', 'o', 'r', 'k', '.', 'c', 'o', 'm', '\0',
   /* "chromiumbugs.appspot.com", true */ 'c', 'h', 'r', 'o', 'm', 'i', 'u', 'm', 'b', 'u', 'g', 's', '.', 'a', 'p', 'p', 's', 'p', 'o', 't', '.', 'c', 'o', 'm', '\0',
   /* "chromiumcodereview.appspot.com", true */ 'c', 'h', 'r', 'o', 'm', 'i', 'u', 'm', 'c', 'o', 'd', 'e', 'r', 'e', 'v', 'i', 'e', 'w', '.', 'a', 'p', 'p', 's', 'p', 'o', 't', '.', 'c', 'o', 'm', '\0',
@@ -2570,17 +2571,16 @@ static const char kSTSHostTable[] = {
   /* "cigarterminal.com", false */ 'c', 'i', 'g', 'a', 'r', 't', 'e', 'r', 'm', 'i', 'n', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "cigoteket.se", true */ 'c', 'i', 'g', 'o', 't', 'e', 'k', 'e', 't', '.', 's', 'e', '\0',
   /* "cimballa.com", true */ 'c', 'i', 'm', 'b', 'a', 'l', 'l', 'a', '.', 'c', 'o', 'm', '\0',
   /* "cinartelorgu.com", true */ 'c', 'i', 'n', 'a', 'r', 't', 'e', 'l', 'o', 'r', 'g', 'u', '.', 'c', 'o', 'm', '\0',
   /* "cine-music.de", true */ 'c', 'i', 'n', 'e', '-', 'm', 'u', 's', 'i', 'c', '.', 'd', 'e', '\0',
   /* "cinema5.ru", true */ 'c', 'i', 'n', 'e', 'm', 'a', '5', '.', 'r', 'u', '\0',
   /* "cinemaclub.co", true */ 'c', 'i', 'n', 'e', 'm', 'a', 'c', 'l', 'u', 'b', '.', 'c', 'o', '\0',
   /* "cinsects.de", true */ 'c', 'i', 'n', 's', 'e', 'c', 't', 's', '.', 'd', 'e', '\0',
-  /* "cintdirect.com", true */ 'c', 'i', 'n', 't', 'd', 'i', 'r', 'e', 'c', 't', '.', 'c', 'o', 'm', '\0',
   /* "cio.gov", true */ 'c', 'i', 'o', '.', 'g', 'o', 'v', '\0',
   /* "cipherboy.com", true */ 'c', 'i', 'p', 'h', 'e', 'r', 'b', 'o', 'y', '.', 'c', 'o', 'm', '\0',
   /* "cipherli.st", true */ 'c', 'i', 'p', 'h', 'e', 'r', 'l', 'i', '.', 's', 't', '\0',
   /* "ciphrex.com", true */ 'c', 'i', 'p', 'h', 'r', 'e', 'x', '.', 'c', 'o', 'm', '\0',
   /* "cirfi.com", true */ 'c', 'i', 'r', 'f', 'i', '.', 'c', 'o', 'm', '\0',
   /* "cirope.com", true */ 'c', 'i', 'r', 'o', 'p', 'e', '.', 'c', 'o', 'm', '\0',
   /* "cirrus0.de", true */ 'c', 'i', 'r', 'r', 'u', 's', '0', '.', 'd', 'e', '\0',
   /* "ciscodude.net", true */ 'c', 'i', 's', 'c', 'o', 'd', 'u', 'd', 'e', '.', 'n', 'e', 't', '\0',
@@ -2845,17 +2845,16 @@ static const char kSTSHostTable[] = {
   /* "compliancedictionary.com", true */ 'c', 'o', 'm', 'p', 'l', 'i', 'a', 'n', 'c', 'e', 'd', 'i', 'c', 't', 'i', 'o', 'n', 'a', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "complymd.com", true */ 'c', 'o', 'm', 'p', 'l', 'y', 'm', 'd', '.', 'c', 'o', 'm', '\0',
   /* "compucorner.mx", true */ 'c', 'o', 'm', 'p', 'u', 'c', 'o', 'r', 'n', 'e', 'r', '.', 'm', 'x', '\0',
   /* "computer-acquisti.com", true */ 'c', 'o', 'm', 'p', 'u', 't', 'e', 'r', '-', 'a', 'c', 'q', 'u', 'i', 's', 't', 'i', '.', 'c', 'o', 'm', '\0',
   /* "computerbase.de", true */ 'c', 'o', 'm', 'p', 'u', 't', 'e', 'r', 'b', 'a', 's', 'e', '.', 'd', 'e', '\0',
   /* "computeremergency.com.au", false */ 'c', 'o', 'm', 'p', 'u', 't', 'e', 'r', 'e', 'm', 'e', 'r', 'g', 'e', 'n', 'c', 'y', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "computerhilfe-feucht.de", true */ 'c', 'o', 'm', 'p', 'u', 't', 'e', 'r', 'h', 'i', 'l', 'f', 'e', '-', 'f', 'e', 'u', 'c', 'h', 't', '.', 'd', 'e', '\0',
   /* "computerslotopschool.nl", true */ 'c', 'o', 'm', 'p', 'u', 't', 'e', 'r', 's', 'l', 'o', 't', 'o', 'p', 's', 'c', 'h', 'o', 'o', 'l', '.', 'n', 'l', '\0',
-  /* "computersystems.guru", true */ 'c', 'o', 'm', 'p', 'u', 't', 'e', 'r', 's', 'y', 's', 't', 'e', 'm', 's', '.', 'g', 'u', 'r', 'u', '\0',
   /* "comssa.org.au", true */ 'c', 'o', 'm', 's', 's', 'a', '.', 'o', 'r', 'g', '.', 'a', 'u', '\0',
   /* "concentrade.de", true */ 'c', 'o', 'n', 'c', 'e', 'n', 't', 'r', 'a', 'd', 'e', '.', 'd', 'e', '\0',
   /* "conclave.global", true */ 'c', 'o', 'n', 'c', 'l', 'a', 'v', 'e', '.', 'g', 'l', 'o', 'b', 'a', 'l', '\0',
   /* "concretehermit.com", true */ 'c', 'o', 'n', 'c', 'r', 'e', 't', 'e', 'h', 'e', 'r', 'm', 'i', 't', '.', 'c', 'o', 'm', '\0',
   /* "condepenalba.com", true */ 'c', 'o', 'n', 'd', 'e', 'p', 'e', 'n', 'a', 'l', 'b', 'a', '.', 'c', 'o', 'm', '\0',
   /* "condosforcash.com", true */ 'c', 'o', 'n', 'd', 'o', 's', 'f', 'o', 'r', 'c', 'a', 's', 'h', '.', 'c', 'o', 'm', '\0',
   /* "confiancefoundation.org", true */ 'c', 'o', 'n', 'f', 'i', 'a', 'n', 'c', 'e', 'f', 'o', 'u', 'n', 'd', 'a', 't', 'i', 'o', 'n', '.', 'o', 'r', 'g', '\0',
   /* "config.schokokeks.org", false */ 'c', 'o', 'n', 'f', 'i', 'g', '.', 's', 'c', 'h', 'o', 'k', 'o', 'k', 'e', 'k', 's', '.', 'o', 'r', 'g', '\0',
@@ -3072,29 +3071,31 @@ static const char kSTSHostTable[] = {
   /* "cryptopartyutah.org", true */ 'c', 'r', 'y', 'p', 't', 'o', 'p', 'a', 'r', 't', 'y', 'u', 't', 'a', 'h', '.', 'o', 'r', 'g', '\0',
   /* "cryptophobia.nl", true */ 'c', 'r', 'y', 'p', 't', 'o', 'p', 'h', 'o', 'b', 'i', 'a', '.', 'n', 'l', '\0',
   /* "cryptoseb.pw", true */ 'c', 'r', 'y', 'p', 't', 'o', 's', 'e', 'b', '.', 'p', 'w', '\0',
   /* "cryptoshot.pw", true */ 'c', 'r', 'y', 'p', 't', 'o', 's', 'h', 'o', 't', '.', 'p', 'w', '\0',
   /* "cryptract.co", true */ 'c', 'r', 'y', 'p', 't', 'r', 'a', 'c', 't', '.', 'c', 'o', '\0',
   /* "crystalchandelierservices.com", true */ 'c', 'r', 'y', 's', 't', 'a', 'l', 'c', 'h', 'a', 'n', 'd', 'e', 'l', 'i', 'e', 'r', 's', 'e', 'r', 'v', 'i', 'c', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "crystone.me", true */ 'c', 'r', 'y', 's', 't', 'o', 'n', 'e', '.', 'm', 'e', '\0',
   /* "cs-ubladego.pl", true */ 'c', 's', '-', 'u', 'b', 'l', 'a', 'd', 'e', 'g', 'o', '.', 'p', 'l', '\0',
+  /* "csabg.org", true */ 'c', 's', 'a', 'b', 'g', '.', 'o', 'r', 'g', '\0',
   /* "csacongress.org", true */ 'c', 's', 'a', 'c', 'o', 'n', 'g', 'r', 'e', 's', 's', '.', 'o', 'r', 'g', '\0',
   /* "csbs.fr", true */ 'c', 's', 'b', 's', '.', 'f', 'r', '\0',
   /* "cselzer.com", false */ 'c', 's', 'e', 'l', 'z', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "csengle.de", true */ 'c', 's', 'e', 'n', 'g', 'l', 'e', '.', 'd', 'e', '\0',
   /* "csfm.com", true */ 'c', 's', 'f', 'm', '.', 'c', 'o', 'm', '\0',
   /* "csgo.help", true */ 'c', 's', 'g', 'o', '.', 'h', 'e', 'l', 'p', '\0',
   /* "csgogamers.com", true */ 'c', 's', 'g', 'o', 'g', 'a', 'm', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "csgohandouts.com", true */ 'c', 's', 'g', 'o', 'h', 'a', 'n', 'd', 'o', 'u', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "csgotwister.com", true */ 'c', 's', 'g', 'o', 't', 'w', 'i', 's', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "cshopify.com", true */ 'c', 's', 'h', 'o', 'p', 'i', 'f', 'y', '.', 'c', 'o', 'm', '\0',
   /* "csmainframe.com", true */ 'c', 's', 'm', 'a', 'i', 'n', 'f', 'r', 'a', 'm', 'e', '.', 'c', 'o', 'm', '\0',
   /* "csokolade.hu", true */ 'c', 's', 'o', 'k', 'o', 'l', 'a', 'd', 'e', '.', 'h', 'u', '\0',
   /* "cspvalidator.org", true */ 'c', 's', 'p', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'o', 'r', '.', 'o', 'r', 'g', '\0',
+  /* "csru.net", true */ 'c', 's', 'r', 'u', '.', 'n', 'e', 't', '\0',
   /* "css.net", true */ 'c', 's', 's', '.', 'n', 'e', 't', '\0',
   /* "cssu.in", true */ 'c', 's', 's', 'u', '.', 'i', 'n', '\0',
   /* "cstkit.com", true */ 'c', 's', 't', 'k', 'i', 't', '.', 'c', 'o', 'm', '\0',
   /* "csuw.net", true */ 'c', 's', 'u', 'w', '.', 'n', 'e', 't', '\0',
   /* "cthomas.work", true */ 'c', 't', 'h', 'o', 'm', 'a', 's', '.', 'w', 'o', 'r', 'k', '\0',
   /* "ctns.de", true */ 'c', 't', 'n', 's', '.', 'd', 'e', '\0',
   /* "ctoforhire.com.au", true */ 'c', 't', 'o', 'f', 'o', 'r', 'h', 'i', 'r', 'e', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "ctpe.net", true */ 'c', 't', 'p', 'e', '.', 'n', 'e', 't', '\0',
@@ -3208,16 +3209,17 @@ static const char kSTSHostTable[] = {
   /* "cyph.video", true */ 'c', 'y', 'p', 'h', '.', 'v', 'i', 'd', 'e', 'o', '\0',
   /* "cyprus-company-service.com", true */ 'c', 'y', 'p', 'r', 'u', 's', '-', 'c', 'o', 'm', 'p', 'a', 'n', 'y', '-', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "cysec.biz", true */ 'c', 'y', 's', 'e', 'c', '.', 'b', 'i', 'z', '\0',
   /* "cytadel.fr", true */ 'c', 'y', 't', 'a', 'd', 'e', 'l', '.', 'f', 'r', '\0',
   /* "czakey.net", true */ 'c', 'z', 'a', 'k', 'e', 'y', '.', 'n', 'e', 't', '\0',
   /* "czbix.com", true */ 'c', 'z', 'b', 'i', 'x', '.', 'c', 'o', 'm', '\0',
   /* "czechamlp.com", true */ 'c', 'z', 'e', 'c', 'h', 'a', 'm', 'l', 'p', '.', 'c', 'o', 'm', '\0',
   /* "czechvirus.cz", true */ 'c', 'z', 'e', 'c', 'h', 'v', 'i', 'r', 'u', 's', '.', 'c', 'z', '\0',
+  /* "czerno.com", true */ 'c', 'z', 'e', 'r', 'n', 'o', '.', 'c', 'o', 'm', '\0',
   /* "czk.mk", true */ 'c', 'z', 'k', '.', 'm', 'k', '\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-rickroll-e.pw", true */ 'd', '-', 'r', 'i', 'c', 'k', 'r', 'o', 'l', 'l', '-', 'e', '.', 'p', 'w', '\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',
   /* "d3xt3r01.tk", true */ 'd', '3', 'x', 't', '3', 'r', '0', '1', '.', 't', 'k', '\0',
@@ -3244,17 +3246,16 @@ static const char kSTSHostTable[] = {
   /* "daknob.net", true */ 'd', 'a', 'k', 'n', 'o', 'b', '.', 'n', 'e', 't', '\0',
   /* "daladubbeln.se", true */ 'd', 'a', 'l', 'a', 'd', 'u', 'b', 'b', 'e', 'l', 'n', '.', 's', 'e', '\0',
   /* "dale-electric.com", true */ 'd', 'a', 'l', 'e', '-', 'e', 'l', 'e', 'c', 't', 'r', 'i', 'c', '.', 'c', 'o', 'm', '\0',
   /* "dalek.co.nz", true */ 'd', 'a', 'l', 'e', 'k', '.', 'c', 'o', '.', 'n', 'z', '\0',
   /* "dalfiume.it", false */ 'd', 'a', 'l', 'f', 'i', 'u', 'm', 'e', '.', 'i', 't', '\0',
   /* "dalfsennet.nl", true */ 'd', 'a', 'l', 'f', 's', 'e', 'n', 'n', 'e', 't', '.', 'n', 'l', '\0',
   /* "dalingk.com", true */ 'd', 'a', 'l', 'i', 'n', 'g', 'k', '.', 'c', 'o', 'm', '\0',
   /* "dallmeier.net", true */ 'd', 'a', 'l', 'l', 'm', 'e', 'i', 'e', 'r', '.', 'n', 'e', 't', '\0',
-  /* "damedrogy.cz", true */ 'd', 'a', 'm', 'e', 'd', 'r', 'o', 'g', 'y', '.', 'c', 'z', '\0',
   /* "damienoreilly.org", true */ 'd', 'a', 'm', 'i', 'e', 'n', 'o', 'r', 'e', 'i', 'l', 'l', 'y', '.', 'o', 'r', 'g', '\0',
   /* "dammekens.be", true */ 'd', 'a', 'm', 'm', 'e', 'k', 'e', 'n', 's', '.', 'b', 'e', '\0',
   /* "damngoodpepper.com", true */ 'd', 'a', 'm', 'n', 'g', 'o', 'o', 'd', 'p', 'e', 'p', 'p', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "dan.me.uk", true */ 'd', 'a', 'n', '.', 'm', 'e', '.', 'u', 'k', '\0',
   /* "dan.org.nz", true */ 'd', 'a', 'n', '.', 'o', 'r', 'g', '.', 'n', 'z', '\0',
   /* "danaketh.com", true */ 'd', 'a', 'n', 'a', 'k', 'e', 't', 'h', '.', 'c', 'o', 'm', '\0',
   /* "danarozmarin.com", true */ 'd', 'a', 'n', 'a', 'r', 'o', 'z', 'm', 'a', 'r', 'i', 'n', '.', 'c', 'o', 'm', '\0',
   /* "danbarrett.com.au", true */ 'd', 'a', 'n', 'b', 'a', 'r', 'r', 'e', 't', 't', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
@@ -3756,16 +3757,17 @@ static const char kSTSHostTable[] = {
   /* "djxmmx.net", false */ 'd', 'j', 'x', 'm', 'm', 'x', '.', 'n', 'e', 't', '\0',
   /* "dk.search.yahoo.com", false */ 'd', 'k', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "dkds.us", true */ 'd', 'k', 'd', 's', '.', 'u', 's', '\0',
   /* "dkravchenko.su", true */ 'd', 'k', 'r', 'a', 'v', 'c', 'h', 'e', 'n', 'k', 'o', '.', 's', 'u', '\0',
   /* "dl.google.com", true */ 'd', 'l', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "dlaspania.pl", true */ 'd', 'l', 'a', 's', 'p', 'a', 'n', 'i', 'a', '.', 'p', 'l', '\0',
   /* "dlitz.net", true */ 'd', 'l', 'i', 't', 'z', '.', 'n', 'e', 't', '\0',
   /* "dlld.com", true */ 'd', 'l', 'l', 'd', '.', 'c', 'o', 'm', '\0',
+  /* "dlouwrink.nl", true */ 'd', 'l', 'o', 'u', 'w', 'r', 'i', 'n', 'k', '.', 'n', 'l', '\0',
   /* "dlscomputers.com.au", true */ 'd', 'l', 's', 'c', 'o', 'm', 'p', 'u', 't', 'e', 'r', 's', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "dlzz.net", true */ 'd', 'l', 'z', 'z', '.', 'n', 'e', 't', '\0',
   /* "dm.lookout.com", false */ 'd', 'm', '.', 'l', 'o', 'o', 'k', 'o', 'u', 't', '.', 'c', 'o', 'm', '\0',
   /* "dm7ds.de", true */ 'd', 'm', '7', 'd', 's', '.', 'd', 'e', '\0',
   /* "dmarc.dk", false */ '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',
@@ -3866,17 +3868,16 @@ static const char kSTSHostTable[] = {
   /* "dooleytackaberry.com", true */ 'd', 'o', 'o', 'l', 'e', 'y', 't', 'a', 'c', 'k', 'a', 'b', 'e', 'r', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "doomsworld.com", true */ 'd', 'o', 'o', 'm', 's', 'w', 'o', 'r', 'l', 'd', '.', 'c', 'o', 'm', '\0',
   /* "doooonoooob.com", true */ 'd', 'o', 'o', 'o', 'o', 'n', 'o', 'o', 'o', 'o', 'b', '.', 'c', 'o', 'm', '\0',
   /* "doordecor.bg", true */ 'd', 'o', 'o', 'r', 'd', 'e', 'c', 'o', 'r', '.', 'b', 'g', '\0',
   /* "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',
   /* "dopfer-fenstertechnik.de", true */ 'd', 'o', 'p', 'f', 'e', 'r', '-', 'f', 'e', 'n', 's', 't', 'e', 'r', 't', 'e', 'c', 'h', 'n', 'i', 'k', '.', 'd', 'e', '\0',
   /* "doppenpost.nl", true */ 'd', 'o', 'p', 'p', 'e', 'n', 'p', 'o', 's', 't', '.', 'n', 'l', '\0',
-  /* "dopply.com", true */ 'd', 'o', 'p', 'p', 'l', 'y', '.', 'c', 'o', 'm', '\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',
   /* "dotacni-parazit.cz", true */ 'd', 'o', 't', 'a', 'c', 'n', 'i', '-', 'p', 'a', 'r', 'a', 'z', 'i', 't', '.', 'c', 'z', '\0',
   /* "dotbigbang.com", true */ 'd', 'o', 't', 'b', 'i', 'g', 'b', 'a', 'n', 'g', '.', 'c', 'o', 'm', '\0',
@@ -4031,16 +4032,17 @@ static const char kSTSHostTable[] = {
   /* "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',
   /* "dwtm.ch", true */ 'd', 'w', 't', 'm', '.', 'c', 'h', '\0',
+  /* "dxa.io", false */ 'd', 'x', 'a', '.', 'i', 'o', '\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',
   /* "dynamicnet.net", false */ 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'n', 'e', 't', '.', 'n', 'e', 't', '\0',
@@ -4336,17 +4338,16 @@ static const char kSTSHostTable[] = {
   /* "emyr.net", true */ 'e', 'm', 'y', 'r', '.', 'n', 'e', 't', '\0',
   /* "en-booster.jp", true */ 'e', 'n', '-', 'b', 'o', 'o', 's', 't', 'e', 'r', '.', 'j', 'p', '\0',
   /* "en-maktoob.search.yahoo.com", false */ 'e', 'n', '-', 'm', 'a', 'k', 't', 'o', 'o', 'b', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "enaia.fr", true */ 'e', 'n', 'a', 'i', 'a', '.', 'f', 'r', '\0',
   /* "enaim.de", true */ 'e', 'n', 'a', 'i', 'm', '.', 'd', 'e', '\0',
   /* "encfs.win", true */ 'e', 'n', 'c', 'f', 's', '.', 'w', 'i', 'n', '\0',
   /* "encircleapp.com", true */ 'e', 'n', 'c', 'i', 'r', 'c', 'l', 'e', 'a', 'p', 'p', '.', 'c', 'o', 'm', '\0',
   /* "encnet.de", true */ 'e', 'n', 'c', 'n', 'e', 't', '.', 'd', 'e', '\0',
-  /* "encode.host", true */ 'e', 'n', 'c', 'o', 'd', 'e', '.', 'h', 'o', 's', 't', '\0',
   /* "encode.uk.com", true */ 'e', 'n', 'c', 'o', 'd', 'e', '.', 'u', 'k', '.', 'c', 'o', 'm', '\0',
   /* "encredible.de", false */ 'e', 'n', 'c', 'r', 'e', 'd', 'i', 'b', 'l', 'e', '.', 'd', 'e', '\0',
   /* "encredible.org", false */ 'e', 'n', 'c', 'r', 'e', 'd', 'i', 'b', 'l', 'e', '.', 'o', 'r', 'g', '\0',
   /* "encryptallthethings.net", true */ 'e', 'n', 'c', 'r', 'y', 'p', 't', 'a', 'l', 'l', 't', 'h', 'e', 't', 'h', 'i', 'n', 'g', 's', '.', 'n', 'e', 't', '\0',
   /* "encrypted.google.com", true */ 'e', 'n', 'c', 'r', 'y', 'p', 't', 'e', 'd', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "encryptedaudience.com", true */ 'e', 'n', 'c', 'r', 'y', 'p', 't', 'e', 'd', 'a', 'u', 'd', 'i', 'e', 'n', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "encryptio.com", true */ 'e', 'n', 'c', 'r', 'y', 'p', 't', 'i', 'o', '.', 'c', 'o', 'm', '\0',
   /* "endeal.nl", true */ 'e', 'n', 'd', 'e', 'a', 'l', '.', 'n', 'l', '\0',
@@ -4448,17 +4449,16 @@ static const char kSTSHostTable[] = {
   /* "erick.blog", true */ 'e', 'r', 'i', 'c', 'k', '.', 'b', 'l', 'o', 'g', '\0',
   /* "ericleuthardt.com", true */ 'e', 'r', 'i', 'c', 'l', 'e', 'u', 't', 'h', 'a', 'r', 'd', 't', '.', 'c', 'o', 'm', '\0',
   /* "erico.jp", true */ 'e', 'r', 'i', 'c', 'o', '.', 'j', 'p', '\0',
   /* "ericoc.com", true */ 'e', 'r', 'i', 'c', 'o', 'c', '.', 'c', 'o', 'm', '\0',
   /* "ericwie.se", true */ 'e', 'r', 'i', 'c', 'w', 'i', 'e', '.', 's', 'e', '\0',
   /* "ericyl.com", true */ 'e', 'r', 'i', 'c', 'y', 'l', '.', 'c', 'o', 'm', '\0',
   /* "erigrid.eu", true */ 'e', 'r', 'i', 'g', 'r', 'i', 'd', '.', 'e', 'u', '\0',
   /* "eriix.org", true */ 'e', 'r', 'i', 'i', 'x', '.', 'o', 'r', 'g', '\0',
-  /* "erikhubers.nl", true */ 'e', 'r', 'i', 'k', 'h', 'u', 'b', 'e', 'r', 's', '.', 'n', 'l', '\0',
   /* "erikseth.de", true */ 'e', 'r', 'i', 'k', 's', 'e', 't', 'h', '.', 'd', 'e', '\0',
   /* "eriner.me", true */ 'e', 'r', 'i', 'n', 'e', 'r', '.', 'm', 'e', '\0',
   /* "erisrenee.com", true */ 'e', 'r', 'i', 's', 'r', 'e', 'n', 'e', 'e', '.', 'c', 'o', 'm', '\0',
   /* "ernest.ly", true */ 'e', 'r', 'n', 'e', 's', 't', '.', 'l', 'y', '\0',
   /* "erp-band.ru", true */ 'e', 'r', 'p', '-', 'b', 'a', 'n', 'd', '.', 'r', 'u', '\0',
   /* "erp.band", true */ 'e', 'r', 'p', '.', 'b', 'a', 'n', 'd', '\0',
   /* "erpband.ru", true */ 'e', 'r', 'p', 'b', 'a', 'n', 'd', '.', 'r', 'u', '\0',
   /* "erpcargo.com", false */ 'e', 'r', 'p', 'c', 'a', 'r', 'g', 'o', '.', 'c', 'o', 'm', '\0',
@@ -5115,17 +5115,16 @@ static const char kSTSHostTable[] = {
   /* "franke-chemie.de", true */ 'f', 'r', 'a', 'n', 'k', 'e', '-', 'c', 'h', 'e', 'm', 'i', 'e', '.', 'd', 'e', '\0',
   /* "franken-lehrmittel.de", true */ 'f', 'r', 'a', 'n', 'k', 'e', 'n', '-', 'l', 'e', 'h', 'r', 'm', 'i', 't', 't', 'e', 'l', '.', 'd', 'e', '\0',
   /* "frankhaala.com", true */ 'f', 'r', 'a', 'n', 'k', 'h', 'a', 'a', 'l', 'a', '.', 'c', 'o', 'm', '\0',
   /* "frankierprofi.de", true */ 'f', 'r', 'a', 'n', 'k', 'i', 'e', 'r', 'p', 'r', 'o', 'f', 'i', '.', 'd', 'e', '\0',
   /* "frankl.in", true */ 'f', 'r', 'a', 'n', 'k', 'l', '.', 'i', 'n', '\0',
   /* "frankwei.xyz", true */ 'f', 'r', 'a', 'n', 'k', 'w', 'e', 'i', '.', 'x', 'y', 'z', '\0',
   /* "fransallen.com", true */ 'f', 'r', 'a', 'n', 's', 'a', 'l', 'l', 'e', 'n', '.', 'c', 'o', 'm', '\0',
   /* "frantic1048.com", true */ 'f', 'r', 'a', 'n', 't', 'i', 'c', '1', '0', '4', '8', '.', 'c', 'o', 'm', '\0',
-  /* "franzt.ovh", true */ 'f', 'r', 'a', 'n', 'z', 't', '.', 'o', 'v', 'h', '\0',
   /* "frappant.cc", true */ 'f', 'r', 'a', 'p', 'p', 'a', 'n', 't', '.', 'c', 'c', '\0',
   /* "frasesparaface.com.br", true */ 'f', 'r', 'a', 's', 'e', 's', 'p', 'a', 'r', 'a', 'f', 'a', 'c', 'e', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "frasys.cloud", true */ 'f', 'r', 'a', 's', 'y', 's', '.', 'c', 'l', 'o', 'u', 'd', '\0',
   /* "frasys.net", true */ 'f', 'r', 'a', 's', 'y', 's', '.', 'n', 'e', 't', '\0',
   /* "fraudempire.com", true */ 'f', 'r', 'a', 'u', 'd', 'e', 'm', 'p', 'i', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "fraurichter.net", true */ 'f', 'r', 'a', 'u', 'r', 'i', 'c', 'h', 't', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "fraye.net", true */ 'f', 'r', 'a', 'y', 'e', '.', 'n', 'e', 't', '\0',
   /* "frbracch.it", true */ 'f', 'r', 'b', 'r', 'a', 'c', 'c', 'h', '.', 'i', 't', '\0',
@@ -5218,17 +5217,16 @@ static const char kSTSHostTable[] = {
   /* "fugle.de", true */ 'f', 'u', 'g', 'l', 'e', '.', 'd', 'e', '\0',
   /* "fuglede.dk", true */ 'f', 'u', 'g', 'l', 'e', 'd', 'e', '.', 'd', 'k', '\0',
   /* "fukuko.biz", true */ 'f', 'u', 'k', 'u', 'k', 'o', '.', 'b', 'i', 'z', '\0',
   /* "fukuko.xyz", true */ 'f', 'u', 'k', 'u', 'k', 'o', '.', 'x', 'y', 'z', '\0',
   /* "fullbundle.com", true */ 'f', 'u', 'l', 'l', 'b', 'u', 'n', 'd', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "fullyint.com", true */ 'f', 'u', 'l', 'l', 'y', 'i', 'n', 't', '.', 'c', 'o', 'm', '\0',
   /* "fumblers.ca", true */ 'f', 'u', 'm', 'b', 'l', 'e', 'r', 's', '.', 'c', 'a', '\0',
   /* "fumiware.com", true */ 'f', 'u', 'm', 'i', 'w', 'a', 'r', 'e', '.', 'c', 'o', 'm', '\0',
-  /* "fumo.se", true */ 'f', 'u', 'm', 'o', '.', 's', 'e', '\0',
   /* "fun-stamps.de", true */ 'f', 'u', 'n', '-', 's', 't', 'a', 'm', 'p', 's', '.', 'd', 'e', '\0',
   /* "fun-stempel.de", true */ 'f', 'u', 'n', '-', 's', 't', 'e', 'm', 'p', 'e', 'l', '.', 'd', 'e', '\0',
   /* "funchestra.at", false */ 'f', 'u', 'n', 'c', 'h', 'e', 's', 't', 'r', 'a', '.', 'a', 't', '\0',
   /* "functions-online.com", true */ 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', 's', '-', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "fundays.nl", true */ 'f', 'u', 'n', 'd', 'a', 'y', 's', '.', 'n', 'l', '\0',
   /* "funderburg.me", true */ 'f', 'u', 'n', 'd', 'e', 'r', 'b', 'u', 'r', 'g', '.', 'm', 'e', '\0',
   /* "fundingempire.com", true */ 'f', 'u', 'n', 'd', 'i', 'n', 'g', 'e', 'm', 'p', 'i', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "funi4u.com", true */ 'f', 'u', 'n', 'i', '4', 'u', '.', 'c', 'o', 'm', '\0',
@@ -5273,37 +5271,35 @@ static const char kSTSHostTable[] = {
   /* "fxtalk.cn", true */ 'f', 'x', 't', 'a', 'l', 'k', '.', 'c', 'n', '\0',
   /* "fyfywka.com", true */ 'f', 'y', 'f', 'y', 'w', 'k', 'a', '.', 'c', 'o', 'm', '\0',
   /* "fyn.nl", true */ 'f', 'y', 'n', '.', 'n', 'l', '\0',
   /* "fyrkat.no", true */ 'f', 'y', 'r', 'k', 'a', 't', '.', 'n', 'o', '\0',
   /* "g-m-w.eu", true */ 'g', '-', 'm', '-', 'w', '.', 'e', 'u', '\0',
   /* "g-marketing.ro", true */ 'g', '-', 'm', 'a', 'r', 'k', 'e', 't', 'i', 'n', 'g', '.', 'r', 'o', '\0',
   /* "g-o.pl", true */ 'g', '-', 'o', '.', 'p', 'l', '\0',
   /* "g-rickroll-o.pw", true */ 'g', '-', 'r', 'i', 'c', 'k', 'r', 'o', 'l', 'l', '-', 'o', '.', 'p', 'w', '\0',
-  /* "g01.in.ua", true */ 'g', '0', '1', '.', 'i', 'n', '.', 'u', 'a', '\0',
   /* "g2links.com", true */ 'g', '2', 'l', 'i', 'n', 'k', 's', '.', 'c', 'o', 'm', '\0',
   /* "g2pla.net", true */ 'g', '2', 'p', 'l', 'a', '.', 'n', 'e', 't', '\0',
   /* "g2soft.net", true */ 'g', '2', 's', 'o', 'f', 't', '.', 'n', 'e', 't', '\0',
   /* "g3rv4.com", true */ 'g', '3', 'r', 'v', '4', '.', 'c', 'o', 'm', '\0',
   /* "g4w.co", true */ 'g', '4', 'w', '.', 'c', 'o', '\0',
   /* "gabi.com.es", true */ 'g', 'a', 'b', 'i', '.', 'c', 'o', 'm', '.', 'e', 's', '\0',
   /* "gabi.soy", true */ 'g', 'a', 'b', 'i', '.', 's', 'o', 'y', '\0',
   /* "gabi.uno", true */ 'g', 'a', 'b', 'i', '.', 'u', 'n', 'o', '\0',
   /* "gablaxian.com", true */ 'g', 'a', 'b', 'l', 'a', 'x', 'i', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "gabriele-kluge.de", true */ 'g', 'a', 'b', 'r', 'i', 'e', 'l', 'e', '-', 'k', 'l', 'u', 'g', 'e', '.', 'd', 'e', '\0',
   /* "gaestehaus-monika.com", true */ 'g', 'a', 'e', 's', 't', 'e', 'h', 'a', 'u', 's', '-', 'm', 'o', 'n', 'i', 'k', 'a', '.', 'c', 'o', 'm', '\0',
   /* "gagniard.org", true */ 'g', 'a', 'g', 'n', 'i', 'a', 'r', 'd', '.', 'o', 'r', 'g', '\0',
   /* "gagor.pl", true */ 'g', 'a', 'g', 'o', 'r', '.', 'p', 'l', '\0',
   /* "gagstempel.de", true */ 'g', 'a', 'g', 's', 't', 'e', 'm', 'p', 'e', 'l', '.', 'd', 'e', '\0',
-  /* "gaichon.com", true */ 'g', 'a', 'i', 'c', 'h', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "gaireg.de", true */ 'g', 'a', 'i', 'r', 'e', 'g', '.', 'd', 'e', '\0',
   /* "gaiserik.com", false */ 'g', 'a', 'i', 's', 'e', 'r', 'i', 'k', '.', 'c', 'o', 'm', '\0',
-  /* "gaite.me", true */ 'g', 'a', 'i', 't', 'e', '.', 'm', 'e', '\0',
   /* "gakkainavi-epsilon.jp", true */ 'g', 'a', 'k', 'k', 'a', 'i', 'n', 'a', 'v', 'i', '-', 'e', 'p', 's', 'i', 'l', 'o', 'n', '.', 'j', 'p', '\0',
   /* "gakkainavi-epsilon.net", true */ 'g', 'a', 'k', 'k', 'a', 'i', 'n', 'a', 'v', 'i', '-', 'e', 'p', 's', 'i', 'l', 'o', 'n', '.', 'n', 'e', 't', '\0',
+  /* "gakkainavi.net", true */ 'g', 'a', 'k', 'k', 'a', 'i', 'n', 'a', 'v', 'i', '.', 'n', 'e', 't', '\0',
   /* "gakkainavi4.jp", true */ 'g', 'a', 'k', 'k', 'a', 'i', 'n', 'a', 'v', 'i', '4', '.', 'j', 'p', '\0',
   /* "galactic-crew.org", true */ 'g', 'a', 'l', 'a', 'c', 't', 'i', 'c', '-', 'c', 'r', 'e', 'w', '.', 'o', 'r', 'g', '\0',
   /* "galena.io", true */ 'g', 'a', 'l', 'e', 'n', 'a', '.', 'i', 'o', '\0',
   /* "galgoafegao.com.br", true */ 'g', 'a', 'l', 'g', 'o', 'a', 'f', 'e', 'g', 'a', 'o', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "galgoingles.com.br", true */ 'g', 'a', 'l', 'g', 'o', 'i', 'n', 'g', 'l', 'e', 's', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "galgopersa.com.br", true */ 'g', 'a', 'l', 'g', 'o', 'p', 'e', 'r', 's', 'a', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "galletasgabi.com.mx", true */ 'g', 'a', 'l', 'l', 'e', 't', 'a', 's', 'g', 'a', 'b', 'i', '.', 'c', 'o', 'm', '.', 'm', 'x', '\0',
   /* "gam3rs.de", true */ 'g', 'a', 'm', '3', 'r', 's', '.', 'd', 'e', '\0',
@@ -5615,17 +5611,16 @@ static const char kSTSHostTable[] = {
   /* "goldminer.ga", true */ 'g', 'o', 'l', 'd', 'm', 'i', 'n', 'e', 'r', '.', 'g', 'a', '\0',
   /* "goldpreisfinder.at", true */ 'g', 'o', 'l', 'd', 'p', 'r', 'e', 'i', 's', 'f', 'i', 'n', 'd', 'e', 'r', '.', 'a', 't', '\0',
   /* "goldpros.com", true */ 'g', 'o', 'l', 'd', 'p', 'r', 'o', 's', '.', 'c', 'o', 'm', '\0',
   /* "goldsecurity.com", true */ 'g', 'o', 'l', 'd', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "golf18network.com", true */ 'g', 'o', 'l', 'f', '1', '8', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'c', 'o', 'm', '\0',
   /* "golfburn.com", false */ 'g', 'o', 'l', 'f', 'b', 'u', 'r', 'n', '.', 'c', 'o', 'm', '\0',
   /* "golfhausmallorca.com", true */ 'g', 'o', 'l', 'f', 'h', 'a', 'u', 's', 'm', 'a', 'l', 'l', 'o', 'r', 'c', 'a', '.', 'c', 'o', 'm', '\0',
   /* "golfscape.com", true */ 'g', 'o', 'l', 'f', 's', 'c', 'a', 'p', 'e', '.', 'c', 'o', 'm', '\0',
-  /* "gong8.win", true */ 'g', 'o', 'n', 'g', '8', '.', 'w', 'i', 'n', '\0',
   /* "gonkar.com", true */ 'g', 'o', 'n', 'k', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "goo.gl", true */ 'g', 'o', 'o', '.', 'g', 'l', '\0',
   /* "gooby.co", false */ 'g', 'o', 'o', 'b', 'y', '.', 'c', 'o', '\0',
   /* "goodmengroup.de", true */ 'g', 'o', 'o', 'd', 'm', 'e', 'n', 'g', 'r', 'o', 'u', 'p', '.', 'd', 'e', '\0',
   /* "goodtech.com.br", true */ 'g', 'o', 'o', 'd', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "google", true */ 'g', 'o', 'o', 'g', 'l', 'e', '\0',
   /* "google-analytics.com", true */ 'g', 'o', 'o', 'g', 'l', 'e', '-', 'a', 'n', 'a', 'l', 'y', 't', 'i', 'c', 's', '.', 'c', 'o', 'm', '\0',
   /* "google.ax", true */ 'g', 'o', 'o', 'g', 'l', 'e', '.', 'a', 'x', '\0',
@@ -5690,27 +5685,29 @@ static const char kSTSHostTable[] = {
   /* "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',
   /* "gramati.com.br", true */ 'g', 'r', 'a', 'm', 'a', 't', 'i', '.', 'c', 'o', 'm', '.', 'b', 'r', '\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',
   /* "grandchamproofing.com", true */ 'g', 'r', 'a', 'n', 'd', 'c', 'h', 'a', 'm', 'p', 'r', 'o', 'o', 'f', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "grandlinecsk.ru", true */ 'g', 'r', 'a', 'n', 'd', 'l', 'i', 'n', 'e', 'c', 's', 'k', '.', 'r', 'u', '\0',
   /* "grandmasfridge.org", true */ 'g', 'r', 'a', 'n', 'd', 'm', 'a', 's', 'f', 'r', 'i', 'd', 'g', 'e', '.', 'o', 'r', 'g', '\0',
   /* "grandpadusercontent.com", true */ 'g', 'r', 'a', 'n', 'd', 'p', 'a', 'd', 'u', 's', 'e', 'r', 'c', 'o', 'n', 't', 'e', 'n', 't', '.', 'c', 'o', 'm', '\0',
   /* "grandwailea.com", true */ 'g', 'r', 'a', 'n', 'd', 'w', 'a', 'i', 'l', 'e', 'a', '.', 'c', 'o', 'm', '\0',
   /* "grannyshouse.de", true */ 'g', 'r', 'a', 'n', 'n', 'y', 's', 'h', 'o', 'u', 's', 'e', '.', 'd', 'e', '\0',
   /* "granth.io", true */ 'g', 'r', 'a', 'n', 't', 'h', '.', 'i', 'o', '\0',
   /* "granular.ag", true */ 'g', 'r', 'a', 'n', 'u', 'l', 'a', 'r', '.', 'a', 'g', '\0',
   /* "graphene.software", true */ 'g', 'r', 'a', 'p', 'h', 'e', 'n', 'e', '.', 's', 'o', 'f', 't', 'w', 'a', 'r', 'e', '\0',
+  /* "graphire.io", true */ 'g', 'r', 'a', 'p', 'h', 'i', 'r', 'e', '.', 'i', 'o', '\0',
   /* "grassenberg.de", true */ 'g', 'r', 'a', 's', 's', 'e', 'n', 'b', 'e', 'r', 'g', '.', 'd', 'e', '\0',
   /* "grasshoppervape.com", true */ 'g', 'r', 'a', 's', 's', 'h', 'o', 'p', 'p', 'e', 'r', 'v', 'a', 'p', 'e', '.', 'c', 'o', 'm', '\0',
   /* "gratis-lovecheck.de", true */ 'g', 'r', 'a', 't', 'i', 's', '-', 'l', 'o', 'v', 'e', 'c', 'h', 'e', 'c', 'k', '.', 'd', 'e', '\0',
   /* "gratisonlinesex.com", true */ 'g', 'r', 'a', 't', 'i', 's', 'o', 'n', 'l', 'i', 'n', 'e', 's', 'e', 'x', '.', 'c', 'o', 'm', '\0',
   /* "gravitascreative.net", true */ 'g', 'r', 'a', 'v', 'i', 't', 'a', 's', 'c', 'r', 'e', 'a', 't', 'i', 'v', 'e', '.', 'n', 'e', 't', '\0',
   /* "gravitation.pro", false */ 'g', 'r', 'a', 'v', 'i', 't', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', '\0',
   /* "gravitechthai.com", true */ 'g', 'r', 'a', 'v', 'i', 't', 'e', 'c', 'h', 't', 'h', 'a', 'i', '.', 'c', 'o', 'm', '\0',
   /* "gravity-dev.de", true */ 'g', 'r', 'a', 'v', 'i', 't', 'y', '-', 'd', 'e', 'v', '.', 'd', 'e', '\0',
@@ -5929,17 +5926,16 @@ static const char kSTSHostTable[] = {
   /* "hammer-corp.com", true */ 'h', 'a', 'm', 'm', 'e', 'r', '-', 'c', 'o', 'r', 'p', '.', 'c', 'o', 'm', '\0',
   /* "hana.ondemand.com", true */ 'h', 'a', 'n', 'a', '.', 'o', 'n', 'd', 'e', 'm', 'a', 'n', 'd', '.', 'c', 'o', 'm', '\0',
   /* "handenafvanhetmedischdossier.nl", true */ 'h', 'a', 'n', 'd', 'e', 'n', 'a', 'f', 'v', 'a', 'n', 'h', 'e', 't', 'm', 'e', 'd', 'i', 's', 'c', 'h', 'd', 'o', 's', 's', 'i', 'e', 'r', '.', 'n', 'l', '\0',
   /* "handiworker.com", true */ 'h', 'a', 'n', 'd', 'i', 'w', 'o', 'r', 'k', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "handmadetutorials.ro", true */ 'h', 'a', 'n', 'd', 'm', 'a', 'd', 'e', 't', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', '.', 'r', 'o', '\0',
   /* "handycommerce.co", true */ 'h', 'a', 'n', 'd', 'y', 'c', 'o', 'm', 'm', 'e', 'r', 'c', 'e', '.', 'c', 'o', '\0',
   /* "handysex.live", true */ 'h', 'a', 'n', 'd', 'y', 's', 'e', 'x', '.', 'l', 'i', 'v', 'e', '\0',
   /* "hangouts.google.com", true */ 'h', 'a', 'n', 'g', 'o', 'u', 't', 's', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
-  /* "hanimalis.fr", true */ 'h', 'a', 'n', 'i', 'm', 'a', 'l', 'i', 's', '.', 'f', 'r', '\0',
   /* "hannah.link", true */ 'h', 'a', 'n', 'n', 'a', 'h', '.', 'l', 'i', 'n', 'k', '\0',
   /* "hannover-banditen.de", true */ 'h', 'a', 'n', 'n', 'o', 'v', 'e', 'r', '-', 'b', 'a', 'n', 'd', 'i', 't', 'e', 'n', '.', 'd', 'e', '\0',
   /* "hans-natur.de", true */ 'h', 'a', 'n', 's', '-', 'n', 'a', 't', 'u', 'r', '.', 'd', 'e', '\0',
   /* "hansvaneijsden.com", true */ 'h', 'a', 'n', 's', 'v', 'a', 'n', 'e', 'i', 'j', 's', 'd', 'e', 'n', '.', 'c', 'o', 'm', '\0',
   /* "hansvaneijsden.nl", true */ 'h', 'a', 'n', 's', 'v', 'a', 'n', 'e', 'i', 'j', 's', 'd', 'e', 'n', '.', 'n', 'l', '\0',
   /* "hantse.com", true */ 'h', 'a', 'n', 't', 's', 'e', '.', 'c', 'o', 'm', '\0',
   /* "hanu.la", true */ 'h', 'a', 'n', 'u', '.', 'l', 'a', '\0',
   /* "hanzubon.jp", true */ 'h', 'a', 'n', 'z', 'u', 'b', 'o', 'n', '.', 'j', 'p', '\0',
@@ -6078,18 +6074,16 @@ static const char kSTSHostTable[] = {
   /* "heissluft-fritteuse.com", true */ 'h', 'e', 'i', 's', 's', 'l', 'u', 'f', 't', '-', 'f', 'r', 'i', 't', 't', 'e', 'u', 's', 'e', '.', 'c', 'o', 'm', '\0',
   /* "heitland-it.de", true */ 'h', 'e', 'i', 't', 'l', 'a', 'n', 'd', '-', 'i', 't', '.', 'd', 'e', '\0',
   /* "hejahanif.se", true */ 'h', 'e', 'j', 'a', 'h', 'a', 'n', 'i', 'f', '.', 's', 'e', '\0',
   /* "hejsupport.se", true */ 'h', 'e', 'j', 's', 'u', 'p', 'p', 'o', 'r', 't', '.', 's', 'e', '\0',
   /* "helden-spielen.de", true */ 'h', 'e', 'l', 'd', 'e', 'n', '-', 's', 'p', 'i', 'e', 'l', 'e', 'n', '.', 'd', 'e', '\0',
   /* "hele.cz", true */ 'h', 'e', 'l', 'e', '.', 'c', 'z', '\0',
   /* "helencrump.co.uk", true */ 'h', 'e', 'l', 'e', 'n', 'c', 'r', 'u', 'm', 'p', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "helenkellersimulator.org", true */ 'h', 'e', 'l', 'e', 'n', 'k', 'e', 'l', 'l', 'e', 'r', 's', 'i', 'm', 'u', 'l', 'a', 't', 'o', 'r', '.', 'o', 'r', 'g', '\0',
-  /* "helgakristoffer.com", true */ 'h', 'e', 'l', 'g', 'a', 'k', 'r', 'i', 's', 't', 'o', 'f', 'f', 'e', 'r', '.', 'c', 'o', 'm', '\0',
-  /* "helgakristoffer.wedding", true */ 'h', 'e', 'l', 'g', 'a', 'k', 'r', 'i', 's', 't', 'o', 'f', 'f', 'e', 'r', '.', 'w', 'e', 'd', 'd', 'i', 'n', 'g', '\0',
   /* "helichat.de", true */ 'h', 'e', 'l', 'i', 'c', 'h', 'a', 't', '.', 'd', 'e', '\0',
   /* "helingqi.com", true */ 'h', 'e', 'l', 'i', 'n', 'g', 'q', 'i', '.', 'c', 'o', 'm', '\0',
   /* "helioanodyne.eu", true */ 'h', 'e', 'l', 'i', 'o', 'a', 'n', 'o', 'd', 'y', 'n', 'e', '.', 'e', 'u', '\0',
   /* "helix.am", true */ 'h', 'e', 'l', 'i', 'x', '.', 'a', 'm', '\0',
   /* "helixflight.com", true */ 'h', 'e', 'l', 'i', 'x', 'f', 'l', 'i', 'g', 'h', 't', '.', 'c', 'o', 'm', '\0',
   /* "hellenicaward.com", true */ 'h', 'e', 'l', 'l', 'e', 'n', 'i', 'c', 'a', 'w', 'a', 'r', 'd', '.', 'c', 'o', 'm', '\0',
   /* "hellersgas.com", true */ 'h', 'e', 'l', 'l', 'e', 'r', 's', 'g', 'a', 's', '.', 'c', 'o', 'm', '\0',
   /* "helles-koepfchen.de", true */ 'h', 'e', 'l', 'l', 'e', 's', '-', 'k', 'o', 'e', 'p', 'f', 'c', 'h', 'e', 'n', '.', 'd', 'e', '\0',
@@ -6365,26 +6359,24 @@ static const char kSTSHostTable[] = {
   /* "huchet.me", true */ 'h', 'u', 'c', 'h', 'e', 't', '.', 'm', 'e', '\0',
   /* "hudhaifahgoga.co.za", true */ 'h', 'u', 'd', 'h', 'a', 'i', 'f', 'a', 'h', 'g', 'o', 'g', 'a', '.', 'c', 'o', '.', 'z', 'a', '\0',
   /* "hudingyuan.cn", true */ 'h', 'u', 'd', 'i', 'n', 'g', 'y', 'u', 'a', 'n', '.', 'c', 'n', '\0',
   /* "huendeleskopfhuette.de", true */ 'h', 'u', 'e', 'n', 'd', 'e', 'l', 'e', 's', 'k', 'o', 'p', 'f', 'h', 'u', 'e', 't', 't', 'e', '.', 'd', 'e', '\0',
   /* "huersch.com", true */ 'h', 'u', 'e', 'r', 's', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "huffduffer.com", true */ 'h', 'u', 'f', 'f', 'd', 'u', 'f', 'f', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "hugofs.com", true */ 'h', 'u', 'g', 'o', 'f', 's', '.', 'c', 'o', 'm', '\0',
   /* "huguesblanchard.paris", true */ 'h', 'u', 'g', 'u', 'e', 's', 'b', 'l', 'a', 'n', 'c', 'h', 'a', 'r', 'd', '.', 'p', 'a', 'r', 'i', 's', '\0',
-  /* "huihui.moe", true */ 'h', 'u', 'i', 'h', 'u', 'i', '.', 'm', 'o', 'e', '\0',
   /* "huiser.nl", true */ 'h', 'u', 'i', 's', 'e', 'r', '.', 'n', 'l', '\0',
   /* "hump.dk", true */ 'h', 'u', 'm', 'p', '.', 'd', 'k', '\0',
   /* "humpi.at", true */ 'h', 'u', 'm', 'p', 'i', '.', 'a', 't', '\0',
   /* "hund.io", true */ 'h', 'u', 'n', 'd', '.', 'i', 'o', '\0',
   /* "hundeformel.de", true */ 'h', 'u', 'n', 'd', 'e', 'f', 'o', 'r', 'm', 'e', 'l', '.', 'd', 'e', '\0',
   /* "hunger.im", true */ 'h', 'u', 'n', 'g', 'e', 'r', '.', 'i', 'm', '\0',
   /* "hunter.io", true */ 'h', 'u', 'n', 't', 'e', 'r', '.', 'i', 'o', '\0',
   /* "huodongweb.com", true */ 'h', 'u', 'o', 'd', 'o', 'n', 'g', 'w', 'e', 'b', '.', 'c', 'o', 'm', '\0',
-  /* "hup.blue", true */ 'h', 'u', 'p', '.', 'b', 'l', 'u', 'e', '\0',
   /* "hupp.se", true */ 'h', 'u', 'p', 'p', '.', 's', 'e', '\0',
   /* "hurd.is", true */ 'h', 'u', 'r', 'd', '.', 'i', 's', '\0',
   /* "huren.nl", true */ 'h', 'u', 'r', 'e', 'n', '.', 'n', 'l', '\0',
   /* "huroji.com", true */ 'h', 'u', 'r', 'o', 'j', 'i', '.', 'c', 'o', 'm', '\0',
   /* "husakbau.at", true */ 'h', 'u', 's', 'a', 'k', 'b', 'a', 'u', '.', 'a', 't', '\0',
   /* "hushfile.it", true */ 'h', 'u', 's', 'h', 'f', 'i', 'l', 'e', '.', 'i', 't', '\0',
   /* "husic.net", true */ 'h', 'u', 's', 'i', 'c', '.', 'n', 'e', 't', '\0',
   /* "husky.xyz", true */ 'h', 'u', 's', 'k', 'y', '.', 'x', 'y', 'z', '\0',
@@ -6689,16 +6681,17 @@ static const char kSTSHostTable[] = {
   /* "insightera.co.th", true */ 'i', 'n', 's', 'i', 'g', 'h', 't', 'e', 'r', 'a', '.', 'c', 'o', '.', 't', 'h', '\0',
   /* "insighti.com", true */ 'i', 'n', 's', 'i', 'g', 'h', 't', 'i', '.', 'c', 'o', 'm', '\0',
   /* "insighti.eu", true */ 'i', 'n', 's', 'i', 'g', 'h', 't', 'i', '.', 'e', 'u', '\0',
   /* "insighti.org", true */ 'i', 'n', 's', 'i', 'g', 'h', 't', 'i', '.', 'o', 'r', 'g', '\0',
   /* "insighti.sk", true */ 'i', 'n', 's', 'i', 'g', 'h', 't', 'i', '.', 's', 'k', '\0',
   /* "insouciant.org", true */ 'i', 'n', 's', 'o', 'u', 'c', 'i', 'a', 'n', 't', '.', 'o', 'r', 'g', '\0',
   /* "inspired-lua.org", true */ 'i', 'n', 's', 'p', 'i', 'r', 'e', 'd', '-', 'l', 'u', 'a', '.', 'o', 'r', 'g', '\0',
   /* "inspy.me", true */ 'i', 'n', 's', 'p', 'y', '.', 'm', 'e', '\0',
+  /* "instagram-atom.appspot.com", true */ 'i', 'n', 's', 't', 'a', 'g', 'r', 'a', 'm', '-', 'a', 't', 'o', 'm', '.', 'a', 'p', 'p', 's', 'p', 'o', 't', '.', 'c', 'o', 'm', '\0',
   /* "instagrammernews.com", true */ 'i', 'n', 's', 't', 'a', 'g', 'r', 'a', 'm', 'm', 'e', 'r', 'n', 'e', 'w', 's', '.', 'c', 'o', 'm', '\0',
   /* "installgentoo.net", true */ 'i', 'n', 's', 't', 'a', 'l', 'l', 'g', 'e', 'n', 't', 'o', 'o', '.', 'n', 'e', 't', '\0',
   /* "instant-hack.com", true */ 'i', 'n', 's', 't', 'a', 'n', 't', '-', 'h', 'a', 'c', 'k', '.', 'c', 'o', 'm', '\0',
   /* "instant.io", true */ 'i', 'n', 's', 't', 'a', 'n', 't', '.', 'i', 'o', '\0',
   /* "instantkhabar.com", false */ 'i', 'n', 's', 't', 'a', 'n', 't', 'k', 'h', 'a', 'b', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "instantsubs.de", true */ 'i', 'n', 's', 't', 'a', 'n', 't', 's', 'u', 'b', 's', '.', 'd', 'e', '\0',
   /* "instasex.ch", true */ 'i', 'n', 's', 't', 'a', 's', 'e', 'x', '.', 'c', 'h', '\0',
   /* "instela.com", true */ 'i', 'n', 's', 't', 'e', 'l', 'a', '.', 'c', 'o', 'm', '\0',
@@ -6729,17 +6722,16 @@ static const char kSTSHostTable[] = {
   /* "interfug.de", true */ 'i', 'n', 't', 'e', 'r', 'f', 'u', 'g', '.', 'd', 'e', '\0',
   /* "interhosts.co.za", true */ 'i', 'n', 't', 'e', 'r', 'h', 'o', 's', 't', 's', '.', 'c', 'o', '.', 'z', 'a', '\0',
   /* "interim-cto.de", true */ 'i', 'n', 't', 'e', 'r', 'i', 'm', '-', 'c', 't', 'o', '.', 'd', 'e', '\0',
   /* "interisaudit.com", true */ 'i', 'n', 't', 'e', 'r', 'i', 's', 'a', 'u', 'd', 'i', 't', '.', 'c', 'o', 'm', '\0',
   /* "interleucina.org", true */ 'i', 'n', 't', 'e', 'r', 'l', 'e', 'u', 'c', 'i', 'n', 'a', '.', 'o', 'r', 'g', '\0',
   /* "intermedinet.nl", true */ 'i', 'n', 't', 'e', 'r', 'm', 'e', 'd', 'i', 'n', 'e', 't', '.', 'n', 'l', '\0',
   /* "internaldh.com", true */ 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'd', 'h', '.', 'c', 'o', 'm', '\0',
   /* "internaut.co.za", true */ 'i', 'n', 't', 'e', 'r', 'n', 'a', 'u', 't', '.', 'c', 'o', '.', 'z', 'a', '\0',
-  /* "internect.co.za", true */ 'i', 'n', 't', 'e', 'r', 'n', 'e', 'c', 't', '.', 'c', 'o', '.', 'z', 'a', '\0',
   /* "internet-pornografie.de", true */ 'i', 'n', 't', 'e', 'r', 'n', 'e', 't', '-', 'p', 'o', 'r', 'n', 'o', 'g', 'r', 'a', 'f', 'i', 'e', '.', 'd', 'e', '\0',
   /* "internetbank.swedbank.se", true */ 'i', 'n', 't', 'e', 'r', 'n', 'e', 't', 'b', 'a', 'n', 'k', '.', 's', 'w', 'e', 'd', 'b', 'a', 'n', 'k', '.', 's', 'e', '\0',
   /* "internetbugbounty.org", true */ 'i', 'n', 't', 'e', 'r', 'n', 'e', 't', 'b', 'u', 'g', 'b', 'o', 'u', 'n', 't', 'y', '.', 'o', 'r', 'g', '\0',
   /* "internetcom.jp", true */ 'i', 'n', 't', 'e', 'r', 'n', 'e', 't', 'c', 'o', 'm', '.', 'j', 'p', '\0',
   /* "internetdentalalliance.com", true */ 'i', 'n', 't', 'e', 'r', 'n', 'e', 't', 'd', 'e', 'n', 't', 'a', 'l', 'a', 'l', 'l', 'i', 'a', 'n', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "internethering.de", true */ 'i', 'n', 't', 'e', 'r', 'n', 'e', 't', 'h', 'e', 'r', 'i', 'n', 'g', '.', 'd', 'e', '\0',
   /* "internetofdon.gs", true */ 'i', 'n', 't', 'e', 'r', 'n', 'e', 't', 'o', 'f', 'd', 'o', 'n', '.', 'g', 's', '\0',
   /* "internetovehazardnihry.cz", true */ 'i', 'n', 't', 'e', 'r', 'n', 'e', 't', 'o', 'v', 'e', 'h', 'a', 'z', 'a', 'r', 'd', 'n', 'i', 'h', 'r', 'y', '.', 'c', 'z', '\0',
@@ -6757,17 +6749,16 @@ static const char kSTSHostTable[] = {
   /* "intimateperrierjouet.com", true */ 'i', 'n', 't', 'i', 'm', 'a', 't', 'e', 'p', 'e', 'r', 'r', 'i', 'e', 'r', 'j', 'o', 'u', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "intocities.de", false */ 'i', 'n', 't', 'o', 'c', 'i', 't', 'i', 'e', 's', '.', 'd', 'e', '\0',
   /* "inton.biz", true */ 'i', 'n', 't', 'o', 'n', '.', 'b', 'i', 'z', '\0',
   /* "intramanager.co.uk", true */ 'i', 'n', 't', 'r', 'a', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "intramanager.dk", true */ 'i', 'n', 't', 'r', 'a', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'd', 'k', '\0',
   /* "intranetsec-regionra.fr", true */ 'i', 'n', 't', 'r', 'a', 'n', 'e', 't', 's', 'e', 'c', '-', 'r', 'e', 'g', 'i', 'o', 'n', 'r', 'a', '.', 'f', 'r', '\0',
   /* "intranetsec.fr", true */ 'i', 'n', 't', 'r', 'a', 'n', 'e', 't', 's', 'e', 'c', '.', 'f', 'r', '\0',
   /* "intrasoft.com.au", true */ 'i', 'n', 't', 'r', 'a', 's', 'o', 'f', 't', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
-  /* "intrp.net", true */ 'i', 'n', 't', 'r', 'p', '.', 'n', 'e', 't', '\0',
   /* "intux.be", true */ 'i', 'n', 't', 'u', 'x', '.', 'b', 'e', '\0',
   /* "intvonline.com", true */ 'i', 'n', 't', 'v', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "intxt.net", true */ 'i', 'n', 't', 'x', 't', '.', 'n', 'e', 't', '\0',
   /* "inusasha.de", true */ 'i', 'n', 'u', 's', 'a', 's', 'h', 'a', '.', 'd', 'e', '\0',
   /* "inuyasha-petition.tk", true */ 'i', 'n', 'u', 'y', 'a', 's', 'h', 'a', '-', 'p', 'e', 't', 'i', 't', 'i', 'o', 'n', '.', 't', 'k', '\0',
   /* "invasion.com", true */ 'i', 'n', 'v', 'a', 's', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "investor.gov", true */ 'i', 'n', 'v', 'e', 's', 't', 'o', 'r', '.', 'g', 'o', 'v', '\0',
   /* "investorforms.com", true */ 'i', 'n', 'v', 'e', 's', 't', 'o', 'r', 'f', 'o', 'r', 'm', 's', '.', 'c', 'o', 'm', '\0',
@@ -6830,16 +6821,17 @@ static const char kSTSHostTable[] = {
   /* "ipv6-handbuch.de", true */ 'i', 'p', 'v', '6', '-', 'h', 'a', 'n', 'd', 'b', 'u', 'c', 'h', '.', 'd', 'e', '\0',
   /* "ipv6.gr", true */ 'i', 'p', 'v', '6', '.', 'g', 'r', '\0',
   /* "ipv6.watch", true */ 'i', 'p', 'v', '6', '.', 'w', 'a', 't', 'c', 'h', '\0',
   /* "ipv6vpn.net", true */ 'i', 'p', 'v', '6', 'v', 'p', 'n', '.', 'n', 'e', 't', '\0',
   /* "iqboxy.com", true */ 'i', 'q', 'b', 'o', 'x', 'y', '.', 'c', 'o', 'm', '\0',
   /* "ir-saitama.com", true */ 'i', 'r', '-', 's', 'a', 'i', 't', 'a', 'm', 'a', '.', 'c', 'o', 'm', '\0',
   /* "ircmett.de", true */ 'i', 'r', 'c', 'm', 'e', 't', 't', '.', 'd', 'e', '\0',
   /* "iready.ro", true */ 'i', 'r', 'e', 'a', 'd', 'y', '.', 'r', 'o', '\0',
+  /* "ireef.tv", true */ 'i', 'r', 'e', 'e', 'f', '.', 't', 'v', '\0',
   /* "irgit.pl", true */ 'i', 'r', 'g', 'i', 't', '.', 'p', 'l', '\0',
   /* "iridiumbrowser.de", true */ 'i', 'r', 'i', 'd', 'i', 'u', 'm', 'b', 'r', 'o', 'w', 's', 'e', 'r', '.', 'd', 'e', '\0',
   /* "iridiumflare.de", true */ 'i', 'r', 'i', 'd', 'i', 'u', 'm', 'f', 'l', 'a', 'r', 'e', '.', 'd', 'e', '\0',
   /* "iris-insa.com", true */ 'i', 'r', 'i', 's', '-', 'i', 'n', 's', 'a', '.', 'c', 'o', 'm', '\0',
   /* "irische-segenswuensche.info", true */ 'i', 'r', 'i', 's', 'c', 'h', 'e', '-', 's', 'e', 'g', 'e', 'n', 's', 'w', 'u', 'e', 'n', 's', 'c', 'h', 'e', '.', 'i', 'n', 'f', 'o', '\0',
   /* "irish.dating", true */ 'i', 'r', 'i', 's', 'h', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0',
   /* "irmag.ru", true */ 'i', 'r', 'm', 'a', 'g', '.', 'r', 'u', '\0',
   /* "irmgard-woelfle.de", true */ 'i', 'r', 'm', 'g', 'a', 'r', 'd', '-', 'w', 'o', 'e', 'l', 'f', 'l', 'e', '.', 'd', 'e', '\0',
@@ -6905,17 +6897,16 @@ static const char kSTSHostTable[] = {
   /* "it-schwerin.de", true */ 'i', 't', '-', 's', 'c', 'h', 'w', 'e', 'r', 'i', 'n', '.', 'd', 'e', '\0',
   /* "it-shamans.eu", true */ 'i', 't', '-', 's', 'h', 'a', 'm', 'a', 'n', 's', '.', 'e', 'u', '\0',
   /* "it-sysoft.com", true */ 'i', 't', '-', 's', 'y', 's', 'o', 'f', 't', '.', 'c', 'o', 'm', '\0',
   /* "it.search.yahoo.com", false */ 'i', 't', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "itactiq.info", true */ 'i', 't', 'a', 'c', 't', 'i', 'q', '.', 'i', 'n', 'f', 'o', '\0',
   /* "italia-store.com", true */ 'i', 't', 'a', 'l', 'i', 'a', '-', 's', 't', 'o', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "italian.dating", true */ 'i', 't', 'a', 'l', 'i', 'a', 'n', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0',
   /* "itb-online.co.uk", true */ 'i', 't', 'b', '-', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0',
-  /* "itchy.nl", true */ 'i', 't', 'c', 'h', 'y', '.', 'n', 'l', '\0',
   /* "itcko.sk", true */ 'i', 't', 'c', 'k', 'o', '.', 's', 'k', '\0',
   /* "itdashboard.gov", true */ 'i', 't', 'd', 'a', 's', 'h', 'b', 'o', 'a', 'r', 'd', '.', 'g', 'o', 'v', '\0',
   /* "itds-consulting.com", true */ 'i', 't', 'd', 's', '-', 'c', 'o', 'n', 's', 'u', 'l', 't', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "itds-consulting.cz", true */ 'i', 't', 'd', 's', '-', 'c', 'o', 'n', 's', 'u', 'l', 't', 'i', 'n', 'g', '.', 'c', 'z', '\0',
   /* "iteli.eu", true */ 'i', 't', 'e', 'l', 'i', '.', 'e', 'u', '\0',
   /* "items.lv", true */ 'i', 't', 'e', 'm', 's', '.', 'l', 'v', '\0',
   /* "iterror.co", true */ 'i', 't', 'e', 'r', 'r', 'o', 'r', '.', 'c', 'o', '\0',
   /* "itfaq.nl", true */ 'i', 't', 'f', 'a', 'q', '.', 'n', 'l', '\0',
@@ -7355,17 +7346,16 @@ static const char kSTSHostTable[] = {
   /* "k-tube.com", true */ 'k', '-', 't', 'u', 'b', 'e', '.', 'c', 'o', 'm', '\0',
   /* "k-wallet.com", true */ 'k', '-', 'w', 'a', 'l', 'l', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "k2mts.org", true */ 'k', '2', 'm', 't', 's', '.', 'o', 'r', 'g', '\0',
   /* "kaangenc.me", true */ 'k', 'a', 'a', 'n', 'g', 'e', 'n', 'c', '.', 'm', 'e', '\0',
   /* "kaasbijwijn.nl", true */ 'k', 'a', 'a', 's', 'b', 'i', 'j', 'w', 'i', 'j', 'n', '.', 'n', 'l', '\0',
   /* "kab-s.de", true */ 'k', 'a', 'b', '-', 's', '.', 'd', 'e', '\0',
   /* "kabat-fans.cz", true */ 'k', 'a', 'b', 'a', 't', '-', 'f', 'a', 'n', 's', '.', 'c', 'z', '\0',
   /* "kabeuchi.com", true */ 'k', 'a', 'b', 'e', 'u', 'c', 'h', 'i', '.', 'c', 'o', 'm', '\0',
-  /* "kabus.org", true */ 'k', 'a', 'b', 'u', 's', '.', 'o', 'r', 'g', '\0',
   /* "kachlikova2.cz", true */ 'k', 'a', 'c', 'h', 'l', 'i', 'k', 'o', 'v', 'a', '2', '.', 'c', 'z', '\0',
   /* "kackscharf.de", true */ 'k', 'a', 'c', 'k', 's', 'c', 'h', 'a', 'r', 'f', '.', 'd', 'e', '\0',
   /* "kadmec.com", true */ 'k', 'a', 'd', 'm', 'e', 'c', '.', 'c', 'o', 'm', '\0',
   /* "kaffeekrone.de", true */ 'k', 'a', 'f', 'f', 'e', 'e', 'k', 'r', 'o', 'n', 'e', '.', 'd', 'e', '\0',
   /* "kafoom.de", true */ 'k', 'a', 'f', 'o', 'o', 'm', '.', 'd', 'e', '\0',
   /* "kaheim.de", false */ 'k', 'a', 'h', 'e', 'i', 'm', '.', 'd', 'e', '\0',
   /* "kaileymslusser.com", true */ 'k', 'a', 'i', 'l', 'e', 'y', 'm', 's', 'l', 'u', 's', 's', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "kainz.bayern", true */ 'k', 'a', 'i', 'n', 'z', '.', 'b', 'a', 'y', 'e', 'r', 'n', '\0',
@@ -7373,16 +7363,17 @@ static const char kSTSHostTable[] = {
   /* "kairion.de", true */ 'k', 'a', 'i', 'r', 'i', 'o', 'n', '.', 'd', 'e', '\0',
   /* "kaiusaltd.com", true */ 'k', 'a', 'i', 'u', 's', 'a', 'l', 't', 'd', '.', 'c', 'o', 'm', '\0',
   /* "kaizenreporting.com", true */ 'k', 'a', 'i', 'z', 'e', 'n', 'r', 'e', 'p', 'o', 'r', 't', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "kaizeronion.com", true */ 'k', 'a', 'i', 'z', 'e', 'r', 'o', 'n', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "kajak.land", true */ 'k', 'a', 'j', 'a', 'k', '.', 'l', 'a', 'n', 'd', '\0',
   /* "kakao-karten.de", true */ 'k', 'a', 'k', 'a', 'o', '-', 'k', 'a', 'r', 't', 'e', 'n', '.', 'd', 'e', '\0',
   /* "kakaomilchkuh.de", true */ 'k', 'a', 'k', 'a', 'o', 'm', 'i', 'l', 'c', 'h', 'k', 'u', 'h', '.', 'd', 'e', '\0',
   /* "kakaravaara.fi", true */ 'k', 'a', 'k', 'a', 'r', 'a', 'v', 'a', 'a', 'r', 'a', '.', 'f', 'i', '\0',
+  /* "kaleidomarketing.com", true */ 'k', 'a', 'l', 'e', 'i', 'd', 'o', 'm', 'a', 'r', 'k', 'e', 't', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "kalender.com", true */ 'k', 'a', 'l', 'e', 'n', 'd', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "kalevlamps.co.uk", true */ 'k', 'a', 'l', 'e', 'v', 'l', 'a', 'm', 'p', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "kalian.cz", true */ 'k', 'a', 'l', 'i', 'a', 'n', '.', 'c', 'z', '\0',
   /* "kall.is", true */ 'k', 'a', 'l', 'l', '.', 'i', 's', '\0',
   /* "kalmar.com", true */ 'k', 'a', 'l', 'm', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "kaloix.de", true */ 'k', 'a', 'l', 'o', 'i', 'x', '.', 'd', 'e', '\0',
   /* "kalterersee.ch", true */ 'k', 'a', 'l', 't', 'e', 'r', 'e', 'r', 's', 'e', 'e', '.', 'c', 'h', '\0',
   /* "kamcvicit.sk", true */ 'k', 'a', 'm', 'c', 'v', 'i', 'c', 'i', 't', '.', 's', 'k', '\0',
@@ -7790,33 +7781,31 @@ static const char kSTSHostTable[] = {
   /* "kreen.org", true */ 'k', 'r', 'e', 'e', 'n', '.', 'o', 'r', 'g', '\0',
   /* "kriechel.de", true */ 'k', 'r', 'i', 'e', 'c', 'h', 'e', 'l', '.', 'd', 'e', '\0',
   /* "kriegskindernothilfe.de", true */ 'k', 'r', 'i', 'e', 'g', 's', 'k', 'i', 'n', 'd', 'e', 'r', 'n', 'o', 't', 'h', 'i', 'l', 'f', 'e', '.', 'd', 'e', '\0',
   /* "kriptosec.com", true */ 'k', 'r', 'i', 'p', 't', 'o', 's', 'e', 'c', '.', 'c', 'o', 'm', '\0',
   /* "krislamoureux.com", true */ 'k', 'r', 'i', 's', 'l', 'a', 'm', 'o', 'u', 'r', 'e', 'u', 'x', '.', 'c', 'o', 'm', '\0',
   /* "krisstarkey.co.uk", true */ 'k', 'r', 'i', 's', 's', 't', 'a', 'r', 'k', 'e', 'y', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "kristikala.nl", true */ 'k', 'r', 'i', 's', 't', 'i', 'k', 'a', 'l', 'a', '.', 'n', 'l', '\0',
   /* "kristinbailey.com", true */ 'k', 'r', 'i', 's', 't', 'i', 'n', 'b', 'a', 'i', 'l', 'e', 'y', '.', 'c', 'o', 'm', '\0',
-  /* "kristofferkoch.com", true */ 'k', 'r', 'i', 's', 't', 'o', 'f', 'f', 'e', 'r', 'k', 'o', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "krizek.cc", true */ 'k', 'r', 'i', 'z', 'e', 'k', '.', 'c', 'c', '\0',
   /* "krizevackapajdasija.hr", true */ 'k', 'r', 'i', 'z', 'e', 'v', 'a', 'c', 'k', 'a', 'p', 'a', 'j', 'd', 'a', 's', 'i', 'j', 'a', '.', 'h', 'r', '\0',
   /* "krizevci.info", true */ 'k', 'r', 'i', 'z', 'e', 'v', 'c', 'i', '.', 'i', 'n', 'f', 'o', '\0',
   /* "krk-media.pl", false */ 'k', 'r', 'k', '-', 'm', 'e', 'd', 'i', 'a', '.', 'p', 'l', '\0',
   /* "krmeni.cz", true */ 'k', 'r', 'm', 'e', 'n', 'i', '.', 'c', 'z', '\0',
   /* "kromonos.net", true */ 'k', 'r', 'o', 'm', 'o', 'n', 'o', 's', '.', 'n', 'e', 't', '\0',
   /* "krony.de", true */ 'k', 'r', 'o', 'n', 'y', '.', 'd', 'e', '\0',
   /* "kroodle.nl", true */ 'k', 'r', 'o', 'o', 'd', 'l', 'e', '.', 'n', 'l', '\0',
   /* "kroon.email", true */ 'k', 'r', 'o', 'o', 'n', '.', 'e', 'm', 'a', 'i', 'l', '\0',
   /* "krupa.net.pl", false */ 'k', 'r', 'u', 'p', 'a', '.', 'n', 'e', 't', '.', 'p', 'l', '\0',
   /* "krutka.cz", true */ 'k', 'r', 'u', 't', 'k', 'a', '.', 'c', 'z', '\0',
   /* "kruu.de", true */ 'k', 'r', 'u', 'u', '.', 'd', 'e', '\0',
   /* "krypsys.com", true */ 'k', 'r', 'y', 'p', 's', 'y', 's', '.', 'c', 'o', 'm', '\0',
   /* "kryptera.se", true */ 'k', 'r', 'y', 'p', 't', 'e', 'r', 'a', '.', 's', 'e', '\0',
   /* "kryx.de", true */ 'k', 'r', 'y', 'x', '.', 'd', 'e', '\0',
-  /* "ks-watch.de", true */ 'k', 's', '-', 'w', 'a', 't', 'c', 'h', '.', 'd', 'e', '\0',
   /* "kschv-rdeck.de", true */ 'k', 's', 'c', 'h', 'v', '-', 'r', 'd', 'e', 'c', 'k', '.', 'd', 'e', '\0',
   /* "kshlm.in", true */ 'k', 's', 'h', 'l', 'm', '.', 'i', 'n', '\0',
   /* "ku.io", true */ 'k', 'u', '.', 'i', 'o', '\0',
   /* "kualo.co.uk", true */ 'k', 'u', 'a', 'l', 'o', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "kualo.com", true */ 'k', 'u', 'a', 'l', 'o', '.', 'c', 'o', 'm', '\0',
   /* "kualo.in", true */ 'k', 'u', 'a', 'l', 'o', '.', 'i', 'n', '\0',
   /* "kuaza.com", true */ 'k', 'u', 'a', 'z', 'a', '.', 'c', 'o', 'm', '\0',
   /* "kub.hr", true */ 'k', 'u', 'b', '.', 'h', 'r', '\0',
@@ -8015,17 +8004,16 @@ static const char kSTSHostTable[] = {
   /* "laylo.nl", true */ 'l', 'a', 'y', 'l', 'o', '.', 'n', 'l', '\0',
   /* "layoutsatzunddruck.de", true */ 'l', 'a', 'y', 'o', 'u', 't', 's', 'a', 't', 'z', 'u', 'n', 'd', 'd', 'r', 'u', 'c', 'k', '.', 'd', 'e', '\0',
   /* "lazerus.net", true */ 'l', 'a', 'z', 'e', 'r', 'u', 's', '.', 'n', 'e', 't', '\0',
   /* "lazowik.pl", true */ 'l', 'a', 'z', 'o', 'w', 'i', 'k', '.', 'p', 'l', '\0',
   /* "lazurit.com", true */ 'l', 'a', 'z', 'u', 'r', 'i', 't', '.', 'c', 'o', 'm', '\0',
   /* "lb-toner.de", true */ 'l', 'b', '-', 't', 'o', 'n', 'e', 'r', '.', 'd', 'e', '\0',
   /* "lbayer.com", true */ 'l', 'b', 'a', 'y', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "lbihrhelpdesk.com", true */ 'l', 'b', 'i', 'h', 'r', 'h', 'e', 'l', 'p', 'd', 'e', 's', 'k', '.', 'c', 'o', 'm', '\0',
-  /* "lbs-logics.com", true */ 'l', 'b', 's', '-', 'l', 'o', 'g', 'i', 'c', 's', '.', 'c', 'o', 'm', '\0',
   /* "lca-pv.de", true */ 'l', 'c', 'a', '-', 'p', 'v', '.', 'd', 'e', '\0',
   /* "lcti.biz", true */ 'l', 'c', 't', 'i', '.', 'b', 'i', 'z', '\0',
   /* "ld-begunjscica.si", true */ 'l', 'd', '-', 'b', 'e', 'g', 'u', 'n', 'j', 's', 'c', 'i', 'c', 'a', '.', 's', 'i', '\0',
   /* "ldc.com.br", false */ 'l', 'd', 'c', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "le-bar.org", true */ 'l', 'e', '-', 'b', 'a', 'r', '.', 'o', 'r', 'g', '\0',
   /* "le-dev.de", false */ 'l', 'e', '-', 'd', 'e', 'v', '.', 'd', 'e', '\0',
   /* "le-h.de", true */ 'l', 'e', '-', 'h', '.', 'd', 'e', '\0',
   /* "le-hosting.de", true */ 'l', 'e', '-', 'h', 'o', 's', 't', 'i', 'n', 'g', '.', 'd', 'e', '\0',
@@ -8525,17 +8513,16 @@ static const char kSTSHostTable[] = {
   /* "m0wef.uk", true */ 'm', '0', 'w', 'e', 'f', '.', 'u', 'k', '\0',
   /* "m132.eu", true */ 'm', '1', '3', '2', '.', 'e', 'u', '\0',
   /* "m2os.com", true */ 'm', '2', 'o', 's', '.', 'c', 'o', 'm', '\0',
   /* "ma2t.com", true */ 'm', 'a', '2', 't', '.', 'c', 'o', 'm', '\0',
   /* "maartenterpstra.xyz", true */ 'm', 'a', 'a', 'r', 't', 'e', 'n', 't', 'e', 'r', 'p', 's', 't', 'r', 'a', '.', 'x', 'y', 'z', '\0',
   /* "mac1.net", true */ 'm', 'a', 'c', '1', '.', 'n', 'e', 't', '\0',
   /* "macaque.io", false */ 'm', 'a', 'c', 'a', 'q', 'u', 'e', '.', 'i', 'o', '\0',
   /* "macbolo.com", true */ 'm', 'a', 'c', 'b', 'o', 'l', 'o', '.', 'c', 'o', 'm', '\0',
-  /* "macchedil.com", false */ 'm', 'a', 'c', 'c', 'h', 'e', 'd', 'i', 'l', '.', 'c', 'o', 'm', '\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',
   /* "mackey7.net", true */ 'm', 'a', 'c', 'k', 'e', 'y', '7', '.', 'n', 'e', 't', '\0',
   /* "maclemon.at", true */ 'm', 'a', 'c', 'l', 'e', 'm', 'o', 'n', '.', 'a', 't', '\0',
@@ -8804,16 +8791,17 @@ static const char kSTSHostTable[] = {
   /* "mavenclinic.com", true */ 'm', 'a', 'v', 'e', 'n', 'c', 'l', 'i', 'n', 'i', 'c', '.', 'c', 'o', 'm', '\0',
   /* "mavensecurity.com", true */ 'm', 'a', 'v', 'e', 'n', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "maveris.com", true */ 'm', 'a', 'v', 'e', 'r', 'i', 's', '.', 'c', 'o', 'm', '\0',
   /* "mawidabp.com", true */ 'm', 'a', 'w', 'i', 'd', 'a', 'b', 'p', '.', 'c', 'o', 'm', '\0',
   /* "mawidaca.com", true */ 'm', 'a', 'w', 'i', 'd', 'a', 'c', 'a', '.', 'c', 'o', 'm', '\0',
   /* "max-moeglich.de", true */ 'm', 'a', 'x', '-', 'm', 'o', 'e', 'g', 'l', 'i', 'c', 'h', '.', 'd', 'e', '\0',
   /* "max.gov", true */ 'm', 'a', 'x', '.', 'g', 'o', 'v', '\0',
   /* "maxbytes.nl", false */ 'm', 'a', 'x', 'b', 'y', 't', 'e', 's', '.', 'n', 'l', '\0',
+  /* "maxfox.me", true */ 'm', 'a', 'x', 'f', 'o', 'x', '.', 'm', 'e', '\0',
   /* "maxhoechtl.at", true */ 'm', 'a', 'x', 'h', 'o', 'e', 'c', 'h', 't', 'l', '.', 'a', 't', '\0',
   /* "maxima.at", true */ 'm', 'a', 'x', 'i', 'm', 'a', '.', 'a', 't', '\0',
   /* "maximdeboiserie.be", true */ 'm', 'a', 'x', 'i', 'm', 'd', 'e', 'b', 'o', 'i', 's', 'e', 'r', 'i', 'e', '.', 'b', 'e', '\0',
   /* "maximeferon.fr", true */ 'm', 'a', 'x', 'i', 'm', 'e', 'f', 'e', 'r', 'o', 'n', '.', 'f', 'r', '\0',
   /* "maximelouet.me", true */ 'm', 'a', 'x', 'i', 'm', 'e', 'l', 'o', 'u', 'e', 't', '.', 'm', 'e', '\0',
   /* "maximilian-graf.de", true */ 'm', 'a', 'x', 'i', 'm', 'i', 'l', 'i', 'a', 'n', '-', 'g', 'r', 'a', 'f', '.', 'd', 'e', '\0',
   /* "maximilian-greger.com", true */ 'm', 'a', 'x', 'i', 'm', 'i', 'l', 'i', 'a', 'n', '-', 'g', 'r', 'e', 'g', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "maximiliankrieg.de", true */ 'm', 'a', 'x', 'i', 'm', 'i', 'l', 'i', 'a', 'n', 'k', 'r', 'i', 'e', 'g', '.', 'd', 'e', '\0',
@@ -8849,17 +8837,16 @@ static const char kSTSHostTable[] = {
   /* "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',
   /* "mceconferencecentre.eu", true */ 'm', 'c', 'e', 'c', 'o', 'n', 'f', 'e', 'r', 'e', 'n', 'c', 'e', 'c', 'e', 'n', 't', 'r', 'e', '.', 'e', 'u', '\0',
   /* "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',
-  /* "mcjackk77.com", true */ 'm', 'c', 'j', 'a', 'c', 'k', 'k', '7', '7', '.', 'c', 'o', 'm', '\0',
   /* "mckinley.school", false */ 'm', 'c', 'k', 'i', 'n', 'l', 'e', 'y', '.', 's', 'c', 'h', 'o', 'o', 'l', '\0',
   /* "mckinley1.com", false */ 'm', 'c', 'k', 'i', 'n', 'l', 'e', 'y', '1', '.', 'c', 'o', 'm', '\0',
   /* "mcl.gg", true */ 'm', 'c', 'l', '.', 'g', 'g', '\0',
   /* "mclist.it", true */ 'm', 'c', 'l', 'i', 's', 't', '.', 'i', 't', '\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',
@@ -9008,16 +8995,17 @@ static const char kSTSHostTable[] = {
   /* "meteobox.co", true */ 'm', 'e', 't', 'e', 'o', 'b', 'o', 'x', '.', 'c', 'o', '\0',
   /* "meteobox.cz", true */ 'm', 'e', 't', 'e', 'o', 'b', 'o', 'x', '.', 'c', 'z', '\0',
   /* "meteobox.de", true */ 'm', 'e', 't', 'e', 'o', 'b', 'o', 'x', '.', 'd', 'e', '\0',
   /* "meteobox.es", true */ 'm', 'e', 't', 'e', 'o', 'b', 'o', 'x', '.', 'e', 's', '\0',
   /* "meteobox.fr", true */ 'm', 'e', 't', 'e', 'o', 'b', 'o', 'x', '.', 'f', 'r', '\0',
   /* "meteobox.mx", true */ 'm', 'e', 't', 'e', 'o', 'b', 'o', 'x', '.', 'm', 'x', '\0',
   /* "meteobox.pl", true */ 'm', 'e', 't', 'e', 'o', 'b', 'o', 'x', '.', 'p', 'l', '\0',
   /* "meteobox.sk", true */ 'm', 'e', 't', 'e', 'o', 'b', 'o', 'x', '.', 's', 'k', '\0',
+  /* "meteosherbrooke.com", false */ 'm', 'e', 't', 'e', 'o', 's', 'h', 'e', 'r', 'b', 'r', 'o', 'o', 'k', 'e', '.', 'c', 'o', 'm', '\0',
   /* "meter.md", true */ 'm', 'e', 't', 'e', 'r', '.', 'm', 'd', '\0',
   /* "metricaid.com", true */ 'm', 'e', 't', 'r', 'i', 'c', 'a', 'i', 'd', '.', 'c', 'o', 'm', '\0',
   /* "metrobriefs.com", true */ 'm', 'e', 't', 'r', 'o', 'b', 'r', 'i', 'e', 'f', 's', '.', 'c', 'o', 'm', '\0',
   /* "metronaut.de", true */ 'm', 'e', 't', 'r', 'o', 'n', 'a', 'u', 't', '.', 'd', 'e', '\0',
   /* "metsasta.com", true */ 'm', 'e', 't', 's', 'a', 's', 't', 'a', '.', 'c', 'o', 'm', '\0',
   /* "metzgerei-birkenhof.de", true */ 'm', 'e', 't', 'z', 'g', 'e', 'r', 'e', 'i', '-', 'b', 'i', 'r', 'k', 'e', 'n', 'h', 'o', 'f', '.', 'd', 'e', '\0',
   /* "meusigno.com", true */ 'm', 'e', 'u', 's', 'i', 'g', 'n', 'o', '.', 'c', 'o', 'm', '\0',
   /* "mevs.cz", true */ 'm', 'e', 'v', 's', '.', 'c', 'z', '\0',
@@ -9576,17 +9564,16 @@ static const char kSTSHostTable[] = {
   /* "mysqldump-secure.org", true */ 'm', 'y', 's', 'q', 'l', 'd', 'u', 'm', 'p', '-', 's', 'e', 'c', 'u', 'r', 'e', '.', 'o', 'r', 'g', '\0',
   /* "mysterysear.ch", true */ 'm', 'y', 's', 't', 'e', 'r', 'y', 's', 'e', 'a', 'r', '.', 'c', 'h', '\0',
   /* "mysticplumes.com", true */ 'm', 'y', 's', 't', 'i', 'c', 'p', 'l', 'u', 'm', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "mystown.org", true */ 'm', 'y', 's', 't', 'o', 'w', 'n', '.', 'o', 'r', 'g', '\0',
   /* "mystudy.me", true */ 'm', 'y', 's', 't', 'u', 'd', 'y', '.', 'm', 'e', '\0',
   /* "mytc.fr", true */ 'm', 'y', 't', 'c', '.', 'f', 'r', '\0',
   /* "mythengay.ch", true */ 'm', 'y', 't', 'h', 'e', 'n', 'g', 'a', 'y', '.', 'c', 'h', '\0',
   /* "mythlogic.com", true */ 'm', 'y', 't', 'h', 'l', 'o', 'g', 'i', 'c', '.', 'c', 'o', 'm', '\0',
-  /* "mythslegendscollection.com", true */ 'm', 'y', 't', 'h', 's', 'l', 'e', 'g', 'e', 'n', 'd', 's', 'c', 'o', 'l', 'l', 'e', 'c', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "mytraiteurs.com", true */ 'm', 'y', 't', 'r', 'a', 'i', 't', 'e', 'u', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "mytripcar.co.uk", true */ 'm', 'y', 't', 'r', 'i', 'p', 'c', 'a', 'r', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "mytripcar.de", true */ 'm', 'y', 't', 'r', 'i', 'p', 'c', 'a', 'r', '.', 'd', 'e', '\0',
   /* "mytripcar.es", true */ 'm', 'y', 't', 'r', 'i', 'p', 'c', 'a', 'r', '.', 'e', 's', '\0',
   /* "mytty.net", true */ 'm', 'y', 't', 't', 'y', '.', 'n', 'e', 't', '\0',
   /* "mytweeps.com", true */ 'm', 'y', 't', 'w', 'e', 'e', 'p', 's', '.', 'c', 'o', 'm', '\0',
   /* "myvoipnews.com", true */ 'm', 'y', 'v', 'o', 'i', 'p', 'n', 'e', 'w', 's', '.', 'c', 'o', 'm', '\0',
   /* "myvpl.com", true */ 'm', 'y', 'v', 'p', 'l', '.', 'c', 'o', 'm', '\0',
@@ -9692,17 +9679,16 @@ static const char kSTSHostTable[] = {
   /* "ndarville.com", true */ 'n', 'd', 'a', 'r', 'v', 'i', 'l', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "ndbt.com", true */ 'n', 'd', 'b', 't', '.', 'c', 'o', 'm', '\0',
   /* "ndeoffshore.com", true */ 'n', 'd', 'e', 'o', 'f', 'f', 's', 'h', 'o', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "nder.be", true */ 'n', 'd', 'e', 'r', '.', 'b', 'e', '\0',
   /* "ndmath.club", true */ 'n', 'd', 'm', 'a', 't', 'h', '.', 'c', 'l', 'u', 'b', '\0',
   /* "ndtblog.com", true */ 'n', 'd', 't', 'b', 'l', 'o', 'g', '.', 'c', 'o', 'm', '\0',
   /* "ndtmarket.place", true */ 'n', 'd', 't', 'm', 'a', 'r', 'k', 'e', 't', '.', 'p', 'l', 'a', 'c', 'e', '\0',
   /* "ndy.sex", true */ 'n', 'd', 'y', '.', 's', 'e', 'x', '\0',
-  /* "ne-on.org", true */ 'n', 'e', '-', 'o', 'n', '.', 'o', 'r', 'g', '\0',
   /* "ne1home.dyndns.org", true */ 'n', 'e', '1', 'h', 'o', 'm', 'e', '.', 'd', 'y', 'n', 'd', 'n', 's', '.', 'o', 'r', 'g', '\0',
   /* "neap.io", true */ 'n', 'e', 'a', 'p', '.', 'i', 'o', '\0',
   /* "nearby.in.th", true */ 'n', 'e', 'a', 'r', 'b', 'y', '.', 'i', 'n', '.', 't', 'h', '\0',
   /* "neartothesky.com", true */ 'n', 'e', 'a', 'r', 't', 'o', 't', 'h', 'e', 's', 'k', 'y', '.', 'c', 'o', 'm', '\0',
   /* "neatous.cz", true */ 'n', 'e', 'a', 't', 'o', 'u', 's', '.', 'c', 'z', '\0',
   /* "neatous.net", true */ 'n', 'e', 'a', 't', 'o', 'u', 's', '.', 'n', 'e', 't', '\0',
   /* "nebra.io", true */ 'n', 'e', 'b', 'r', 'a', '.', 'i', 'o', '\0',
   /* "nebulousenhanced.com", true */ 'n', 'e', 'b', 'u', 'l', 'o', 'u', 's', 'e', 'n', 'h', 'a', 'n', 'c', 'e', 'd', '.', 'c', 'o', 'm', '\0',
@@ -9779,16 +9765,17 @@ static const char kSTSHostTable[] = {
   /* "netlilo.com", true */ 'n', 'e', 't', 'l', 'i', 'l', 'o', '.', 'c', 'o', 'm', '\0',
   /* "netlocal.ru", true */ 'n', 'e', 't', 'l', 'o', 'c', 'a', 'l', '.', 'r', 'u', '\0',
   /* "netmazk.net", false */ 'n', 'e', 't', 'm', 'a', 'z', 'k', '.', 'n', 'e', 't', '\0',
   /* "netnodes.net", true */ 'n', 'e', 't', 'n', 'o', 'd', 'e', 's', '.', 'n', 'e', 't', '\0',
   /* "netprofile.com.au", true */ 'n', 'e', 't', 'p', 'r', 'o', 'f', 'i', 'l', 'e', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "netraising.com", true */ 'n', 'e', 't', 'r', 'a', 'i', 's', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "netrelay.email", true */ 'n', 'e', 't', 'r', 'e', 'l', 'a', 'y', '.', 'e', 'm', 'a', 'i', 'l', '\0',
   /* "netrider.net.au", false */ 'n', 'e', 't', 'r', 'i', 'd', 'e', 'r', '.', 'n', 'e', 't', '.', 'a', 'u', '\0',
+  /* "netronix.be", true */ 'n', 'e', 't', 'r', 'o', 'n', 'i', 'x', '.', 'b', 'e', '\0',
   /* "netsight.org", true */ 'n', 'e', 't', 's', 'i', 'g', 'h', 't', '.', 'o', 'r', 'g', '\0',
   /* "netsigna.de", true */ 'n', 'e', 't', 's', 'i', 'g', 'n', 'a', '.', 'd', 'e', '\0',
   /* "netsite.dk", true */ 'n', 'e', 't', 's', 'i', 't', 'e', '.', 'd', 'k', '\0',
   /* "netsoins.org", true */ 'n', 'e', 't', 's', 'o', 'i', 'n', 's', '.', 'o', 'r', 'g', '\0',
   /* "netsparker.com", false */ 'n', 'e', 't', 's', 'p', 'a', 'r', 'k', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "netsystems.pro", true */ 'n', 'e', 't', 's', 'y', 's', 't', 'e', 'm', 's', '.', 'p', 'r', 'o', '\0',
   /* "nette.org", true */ 'n', 'e', 't', 't', 'e', '.', 'o', 'r', 'g', '\0',
   /* "nettia.fi", true */ 'n', 'e', 't', 't', 'i', 'a', '.', 'f', 'i', '\0',
@@ -10358,16 +10345,17 @@ static const char kSTSHostTable[] = {
   /* "osacrypt.studio", true */ 'o', 's', 'a', 'c', 'r', 'y', 'p', 't', '.', 's', 't', 'u', 'd', 'i', 'o', '\0',
   /* "osao.org", true */ 'o', 's', 'a', 'o', '.', 'o', 'r', 'g', '\0',
   /* "osborneinn.com", true */ 'o', 's', 'b', 'o', 'r', 'n', 'e', 'i', 'n', 'n', '.', 'c', 'o', 'm', '\0',
   /* "osburn.com", true */ 'o', 's', 'b', 'u', 'r', 'n', '.', 'c', 'o', 'm', '\0',
   /* "oscarvk.ch", true */ 'o', 's', 'c', 'a', 'r', 'v', 'k', '.', 'c', 'h', '\0',
   /* "oscsdp.cz", true */ 'o', 's', 'c', 's', 'd', 'p', '.', 'c', 'z', '\0',
   /* "oses.mobi", true */ 'o', 's', 'e', 's', '.', 'm', 'o', 'b', 'i', '\0',
   /* "oshayr.com", true */ 'o', 's', 'h', 'a', 'y', 'r', '.', 'c', 'o', 'm', '\0',
+  /* "oshell.me", true */ 'o', 's', 'h', 'e', 'l', 'l', '.', 'm', 'e', '\0',
   /* "oskuro.net", true */ 'o', 's', 'k', 'u', 'r', 'o', '.', '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',
@@ -10612,17 +10600,16 @@ static const char kSTSHostTable[] = {
   /* "pchospital.cc", true */ 'p', 'c', 'h', 'o', 's', 'p', 'i', 't', 'a', 'l', '.', 'c', 'c', '\0',
   /* "pciconcursos.com.br", true */ 'p', 'c', 'i', 'c', 'o', 'n', 'c', 'u', 'r', 's', 'o', 's', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "pclaeuft.de", true */ 'p', 'c', 'l', 'a', 'e', 'u', 'f', 't', '.', 'd', 'e', '\0',
   /* "pclob.gov", true */ 'p', 'c', 'l', 'o', 'b', '.', 'g', 'o', 'v', '\0',
   /* "pcloud.com", true */ 'p', 'c', 'l', 'o', 'u', 'd', '.', 'c', 'o', 'm', '\0',
   /* "pcnotdienst-oldenburg-rastede.de", true */ 'p', 'c', 'n', 'o', 't', 'd', 'i', 'e', 'n', 's', 't', '-', 'o', 'l', 'd', 'e', 'n', 'b', 'u', 'r', 'g', '-', 'r', 'a', 's', 't', 'e', 'd', 'e', '.', 'd', 'e', '\0',
   /* "pctonic.net", true */ 'p', 'c', 't', 'o', 'n', 'i', 'c', '.', 'n', 'e', 't', '\0',
   /* "pcxserver.com", true */ 'p', 'c', 'x', 's', 'e', 'r', 'v', 'e', 'r', '.', 'c', 'o', 'm', '\0',
-  /* "pdamsidoarjo.co.id", true */ 'p', 'd', 'a', 'm', 's', 'i', 'd', 'o', 'a', 'r', 'j', 'o', '.', 'c', 'o', '.', 'i', 'd', '\0',
   /* "pdfresizer.com", true */ 'p', 'd', 'f', 'r', 'e', 's', 'i', 'z', 'e', 'r', '.', 'c', 'o', 'm', '\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',
   /* "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',
   /* "pebblesdemo.com", true */ 'p', 'e', 'b', 'b', 'l', 'e', 's', 'd', 'e', 'm', 'o', '.', 'c', 'o', 'm', '\0',
@@ -10825,16 +10812,17 @@ static const char kSTSHostTable[] = {
   /* "pimhaarsmamedia.nl", true */ 'p', 'i', 'm', 'h', 'a', 'a', 'r', 's', 'm', 'a', 'm', 'e', 'd', 'i', 'a', '.', 'n', 'l', '\0',
   /* "pimpmymac.ru", true */ 'p', 'i', 'm', 'p', 'm', 'y', 'm', 'a', 'c', '.', 'r', 'u', '\0',
   /* "pims.global", true */ 'p', 'i', 'm', 's', '.', 'g', 'l', 'o', 'b', 'a', 'l', '\0',
   /* "pimspage.nl", true */ 'p', 'i', 'm', 's', 'p', 'a', 'g', 'e', '.', 'n', 'l', '\0',
   /* "pin.net.au", true */ 'p', 'i', 'n', '.', 'n', 'e', 't', '.', 'a', 'u', '\0',
   /* "pincha.com.tw", true */ 'p', 'i', 'n', 'c', 'h', 'a', '.', 'c', 'o', 'm', '.', 't', 'w', '\0',
   /* "pincodeit.com", true */ 'p', 'i', 'n', 'c', 'o', 'd', 'e', 'i', 't', '.', 'c', 'o', 'm', '\0',
   /* "pindanutjes.be", false */ 'p', 'i', 'n', 'd', 'a', 'n', 'u', 't', 'j', 'e', 's', '.', 'b', 'e', '\0',
+  /* "pinesandneedles.com", true */ 'p', 'i', 'n', 'e', 's', 'a', 'n', 'd', 'n', 'e', 'e', 'd', 'l', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "pinkcasino.co.uk", true */ 'p', 'i', 'n', 'k', 'c', 'a', 's', 'i', 'n', 'o', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "pinkfis.ch", true */ 'p', 'i', 'n', 'k', 'f', 'i', 's', '.', 'c', 'h', '\0',
   /* "pinkhq.com", true */ 'p', 'i', 'n', 'k', 'h', 'q', '.', 'c', 'o', 'm', '\0',
   /* "pinkinked.com", true */ 'p', 'i', 'n', 'k', 'i', 'n', 'k', 'e', 'd', '.', 'c', 'o', 'm', '\0',
   /* "pinkladyapples.co.uk", true */ 'p', 'i', 'n', 'k', 'l', 'a', 'd', 'y', 'a', 'p', 'p', 'l', 'e', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "pinklecfest.org", true */ 'p', 'i', 'n', 'k', 'l', 'e', 'c', 'f', 'e', 's', 't', '.', 'o', 'r', 'g', '\0',
   /* "pinnaclelife.co.nz", true */ 'p', 'i', 'n', 'n', 'a', 'c', 'l', 'e', 'l', 'i', 'f', 'e', '.', 'c', 'o', '.', 'n', 'z', '\0',
   /* "pinnaclelife.nz", true */ 'p', 'i', 'n', 'n', 'a', 'c', 'l', 'e', 'l', 'i', 'f', 'e', '.', 'n', 'z', '\0',
@@ -10916,16 +10904,17 @@ static const char kSTSHostTable[] = {
   /* "plugin-planet.com", true */ 'p', 'l', 'u', 'g', 'i', 'n', '-', 'p', 'l', 'a', 'n', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "pluginsloaded.com", true */ 'p', 'l', 'u', 'g', 'i', 'n', 's', 'l', 'o', 'a', 'd', 'e', 'd', '.', 'c', 'o', 'm', '\0',
   /* "plumlocosoft.com", true */ 'p', 'l', 'u', 'm', 'l', 'o', 'c', 'o', 's', 'o', 'f', 't', '.', 'c', 'o', 'm', '\0',
   /* "plur.com.au", true */ 'p', 'l', 'u', 'r', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "plus-5.com", true */ 'p', 'l', 'u', 's', '-', '5', '.', 'c', 'o', 'm', '\0',
   /* "plus.google.com", false */ 'p', 'l', 'u', 's', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "plus.sandbox.google.com", false */ 'p', 'l', 'u', 's', '.', 's', 'a', 'n', 'd', 'b', 'o', 'x', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "plushmania.de", true */ 'p', 'l', 'u', 's', 'h', 'm', 'a', 'n', 'i', 'a', '.', 'd', 'e', '\0',
+  /* "plusstreamfeed.appspot.com", true */ 'p', 'l', 'u', 's', 's', 't', 'r', 'e', 'a', 'm', 'f', 'e', 'e', 'd', '.', 'a', 'p', 'p', 's', 'p', 'o', 't', '.', 'c', 'o', 'm', '\0',
   /* "plzenskybarcamp.cz", true */ 'p', 'l', 'z', 'e', 'n', 's', 'k', 'y', 'b', 'a', 'r', 'c', 'a', 'm', 'p', '.', 'c', 'z', '\0',
   /* "pm-onboarding-external-dev.azurewebsites.net", true */ 'p', 'm', '-', 'o', 'n', 'b', 'o', 'a', 'r', 'd', 'i', 'n', 'g', '-', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', '-', 'd', 'e', 'v', '.', 'a', 'z', 'u', 'r', 'e', 'w', 'e', 'b', 's', 'i', 't', 'e', 's', '.', 'n', 'e', 't', '\0',
   /* "pm-partners-management-dev.azurewebsites.net", true */ 'p', 'm', '-', 'p', 'a', 'r', 't', 'n', 'e', 'r', 's', '-', 'm', 'a', 'n', 'a', 'g', 'e', 'm', 'e', 'n', 't', '-', 'd', 'e', 'v', '.', 'a', 'z', 'u', 'r', 'e', 'w', 'e', 'b', 's', 'i', 't', 'e', 's', '.', 'n', 'e', 't', '\0',
   /* "pm13-media.cz", true */ 'p', 'm', '1', '3', '-', 'm', 'e', 'd', 'i', 'a', '.', 'c', 'z', '\0',
   /* "pm13.cz", true */ 'p', 'm', '1', '3', '.', 'c', 'z', '\0',
   /* "pm13.org", true */ 'p', 'm', '1', '3', '.', 'o', 'r', 'g', '\0',
   /* "pmalaty.com", true */ 'p', 'm', 'a', 'l', 'a', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "pmctire.com", true */ 'p', 'm', 'c', 't', 'i', 'r', 'e', '.', 'c', 'o', 'm', '\0',
@@ -10983,32 +10972,32 @@ static const char kSTSHostTable[] = {
   /* "pornbase.info", true */ 'p', 'o', 'r', 'n', 'b', 'a', 's', 'e', '.', 'i', 'n', 'f', 'o', '\0',
   /* "pornbay.org", true */ 'p', 'o', 'r', 'n', 'b', 'a', 'y', '.', 'o', 'r', 'g', '\0',
   /* "porno-gif.ru", true */ 'p', 'o', 'r', 'n', 'o', '-', 'g', 'i', 'f', '.', 'r', 'u', '\0',
   /* "pornstars.me", true */ 'p', 'o', 'r', 'n', 's', 't', 'a', 'r', 's', '.', 'm', 'e', '\0',
   /* "porschen.fr", true */ 'p', 'o', 'r', 's', 'c', 'h', 'e', 'n', '.', 'f', 'r', '\0',
   /* "port443.hamburg", true */ 'p', 'o', 'r', 't', '4', '4', '3', '.', 'h', 'a', 'm', 'b', 'u', 'r', 'g', '\0',
   /* "port80.hamburg", true */ 'p', 'o', 'r', 't', '8', '0', '.', 'h', 'a', 'm', 'b', 'u', 'r', 'g', '\0',
   /* "portal.tirol.gv.at", true */ 'p', 'o', 'r', 't', 'a', 'l', '.', 't', 'i', 'r', 'o', 'l', '.', 'g', 'v', '.', 'a', 't', '\0',
+  /* "portalzine.de", true */ 'p', 'o', 'r', 't', 'a', 'l', 'z', 'i', 'n', 'e', '.', 'd', 'e', '\0',
   /* "portercup.com", true */ 'p', 'o', 'r', 't', 'e', 'r', 'c', 'u', 'p', '.', 'c', 'o', 'm', '\0',
   /* "portofrotterdam.com", true */ 'p', 'o', 'r', 't', 'o', 'f', 'r', 'o', 't', 't', 'e', 'r', 'd', 'a', 'm', '.', 'c', 'o', 'm', '\0',
   /* "portosonline.pl", true */ 'p', 'o', 'r', 't', 'o', 's', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'p', 'l', '\0',
   /* "portraitsystem.biz", true */ 'p', 'o', 'r', 't', 'r', 'a', 'i', 't', 's', 'y', 's', 't', 'e', 'm', '.', 'b', 'i', 'z', '\0',
   /* "portvaletickets.com", true */ 'p', 'o', 'r', 't', 'v', 'a', 'l', 'e', 't', 'i', 'c', 'k', 'e', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "porybox.com", true */ 'p', 'o', 'r', 'y', 'b', 'o', 'x', '.', 'c', 'o', 'm', '\0',
   /* "posaunenchor-senden.de", true */ 'p', 'o', 's', 'a', 'u', 'n', 'e', 'n', 'c', 'h', 'o', 'r', '-', 's', 'e', 'n', 'd', 'e', 'n', '.', 'd', 'e', '\0',
   /* "positivesobrietyinstitute.com", true */ 'p', 'o', 's', 'i', 't', 'i', 'v', 'e', 's', 'o', 'b', 'r', 'i', 'e', 't', 'y', 'i', 'n', 's', 't', 'i', 't', 'u', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "posobota.cz", true */ 'p', 'o', 's', 'o', 'b', 'o', 't', 'a', '.', 'c', 'z', '\0',
   /* "post4me.at", true */ 'p', 'o', 's', 't', '4', 'm', 'e', '.', 'a', 't', '\0',
   /* "postal.dk", true */ 'p', 'o', 's', 't', 'a', 'l', '.', 'd', 'k', '\0',
   /* "postblue.info", true */ 'p', 'o', 's', 't', 'b', 'l', 'u', 'e', '.', 'i', 'n', 'f', 'o', '\0',
   /* "postbox.life", true */ 'p', 'o', 's', 't', 'b', 'o', 'x', '.', 'l', 'i', 'f', 'e', '\0',
   /* "postcodegarant.nl", true */ 'p', 'o', 's', 't', 'c', 'o', 'd', 'e', 'g', 'a', 'r', 'a', 'n', 't', '.', 'n', 'l', '\0',
   /* "posteo.de", false */ 'p', 'o', 's', 't', 'e', 'o', '.', 'd', 'e', '\0',
-  /* "posterspy.com", true */ 'p', 'o', 's', 't', 'e', 'r', 's', 'p', 'y', '.', 'c', 'o', 'm', '\0',
   /* "postfinance.ch", true */ 'p', 'o', 's', 't', 'f', 'i', 'n', 'a', 'n', 'c', 'e', '.', 'c', 'h', '\0',
   /* "postmatescode.com", true */ 'p', 'o', 's', 't', 'm', 'a', 't', 'e', 's', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm', '\0',
   /* "postn.eu", true */ 'p', 'o', 's', 't', 'n', '.', 'e', 'u', '\0',
   /* "posttigo.com", true */ 'p', 'o', 's', 't', 't', 'i', 'g', 'o', '.', 'c', 'o', 'm', '\0',
   /* "potatofrom.space", false */ 'p', 'o', 't', 'a', 't', 'o', 'f', 'r', 'o', 'm', '.', 's', 'p', 'a', 'c', 'e', '\0',
   /* "potatoheads.net", true */ 'p', 'o', 't', 'a', 't', 'o', 'h', 'e', 'a', 'd', 's', '.', 'n', 'e', 't', '\0',
   /* "potbar.com", true */ 'p', 'o', 't', 'b', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "potbox.com", true */ 'p', 'o', 't', 'b', 'o', 'x', '.', 'c', 'o', 'm', '\0',
@@ -11049,17 +11038,16 @@ static const char kSTSHostTable[] = {
   /* "pratinav.xyz", true */ 'p', 'r', 'a', 't', 'i', 'n', 'a', 'v', '.', 'x', 'y', 'z', '\0',
   /* "prattpokemon.com", true */ 'p', 'r', 'a', 't', 't', 'p', 'o', 'k', 'e', 'm', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "praxis-research.info", true */ 'p', 'r', 'a', 'x', 'i', 's', '-', 'r', 'e', 's', 'e', 'a', 'r', 'c', 'h', '.', 'i', 'n', 'f', 'o', '\0',
   /* "prayerrequest.com", true */ 'p', 'r', 'a', 'y', 'e', 'r', 'r', 'e', 'q', 'u', 'e', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "prazynka.pl", true */ 'p', 'r', 'a', 'z', 'y', 'n', 'k', 'a', '.', 'p', 'l', '\0',
   /* "precedecaritas.com.br", true */ 'p', 'r', 'e', 'c', 'e', 'd', 'e', 'c', 'a', 'r', 'i', 't', 'a', 's', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "prediksisydney.com", false */ 'p', 'r', 'e', 'd', 'i', 'k', 's', 'i', 's', 'y', 'd', 'n', 'e', 'y', '.', 'c', 'o', 'm', '\0',
   /* "predoiu.ro", true */ 'p', 'r', 'e', 'd', 'o', 'i', 'u', '.', 'r', 'o', '\0',
-  /* "preezzie.com", true */ 'p', 'r', 'e', 'e', 'z', 'z', 'i', 'e', '.', 'c', 'o', 'm', '\0',
   /* "preferredathlete.com", true */ 'p', 'r', 'e', 'f', 'e', 'r', 'r', 'e', 'd', 'a', 't', 'h', 'l', 'e', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "prefis.com", true */ 'p', 'r', 'e', 'f', 'i', 's', '.', 'c', 'o', 'm', '\0',
   /* "preisser-it.de", true */ 'p', 'r', 'e', 'i', 's', 's', 'e', 'r', '-', 'i', 't', '.', 'd', 'e', '\0',
   /* "preisser.it", true */ 'p', 'r', 'e', 'i', 's', 's', 'e', 'r', '.', 'i', 't', '\0',
   /* "prekladysanca.cz", true */ 'p', 'r', 'e', 'k', 'l', 'a', 'd', 'y', 's', 'a', 'n', 'c', 'a', '.', 'c', 'z', '\0',
   /* "preloaded-hsts.badssl.com", true */ 'p', 'r', 'e', 'l', 'o', 'a', 'd', 'e', 'd', '-', 'h', 's', 't', 's', '.', 'b', 'a', 'd', 's', 's', 'l', '.', 'c', 'o', 'm', '\0',
   /* "premierheart.com", true */ 'p', 'r', 'e', 'm', 'i', 'e', 'r', 'h', 'e', 'a', 'r', 't', '.', 'c', 'o', 'm', '\0',
   /* "premiumzweirad.de", false */ 'p', 'r', 'e', 'm', 'i', 'u', 'm', 'z', 'w', 'e', 'i', 'r', 'a', 'd', '.', 'd', 'e', '\0',
@@ -11156,16 +11144,17 @@ static const char kSTSHostTable[] = {
   /* "promotiongeeks.com", false */ 'p', 'r', 'o', 'm', 'o', 't', 'i', 'o', 'n', 'g', 'e', 'e', 'k', 's', '.', 'c', 'o', 'm', '\0',
   /* "proofwiki.org", true */ 'p', 'r', 'o', 'o', 'f', 'w', 'i', 'k', 'i', '.', 'o', 'r', 'g', '\0',
   /* "proos.nl", true */ 'p', 'r', 'o', 'o', 's', '.', 'n', 'l', '\0',
   /* "propagandism.org", true */ 'p', 'r', 'o', 'p', 'a', 'g', 'a', 'n', 'd', 'i', 's', 'm', '.', 'o', 'r', 'g', '\0',
   /* "propershave.com", true */ 'p', 'r', 'o', 'p', 'e', 'r', 's', 'h', 'a', 'v', 'e', '.', 'c', 'o', 'm', '\0',
   /* "property-catalogue.eu", true */ 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '-', 'c', 'a', 't', 'a', 'l', 'o', 'g', 'u', 'e', '.', 'e', 'u', '\0',
   /* "propertygroup.pl", true */ 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', 'g', 'r', 'o', 'u', 'p', '.', 'p', 'l', '\0',
   /* "propipesystem.com", true */ 'p', 'r', 'o', 'p', 'i', 'p', 'e', 's', 'y', 's', 't', 'e', 'm', '.', 'c', 'o', 'm', '\0',
+  /* "proposalonline.com", true */ 'p', 'r', 'o', 'p', 'o', 's', 'a', 'l', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "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',
   /* "proteapower.co.za", true */ 'p', 'r', 'o', 't', 'e', 'a', 'p', 'o', 'w', 'e', 'r', '.', 'c', 'o', '.', 'z', 'a', '\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',
@@ -11478,17 +11467,16 @@ static const char kSTSHostTable[] = {
   /* "rburchell.com", true */ 'r', 'b', 'u', 'r', 'c', 'h', 'e', 'l', 'l', '.', 'c', 'o', 'm', '\0',
   /* "rbxcatalog.com", true */ 'r', 'b', 'x', 'c', 'a', 't', 'a', 'l', 'o', 'g', '.', 'c', 'o', 'm', '\0',
   /* "rc-offi.net", true */ 'r', 'c', '-', 'o', 'f', 'f', 'i', '.', 'n', 'e', 't', '\0',
   /* "rca.fr", true */ 'r', 'c', 'a', '.', 'f', 'r', '\0',
   /* "rcnitrotalk.com", true */ 'r', 'c', 'n', 'i', 't', 'r', 'o', 't', 'a', 'l', 'k', '.', 'c', 'o', 'm', '\0',
   /* "rcorporation.be", true */ 'r', 'c', 'o', 'r', 'p', 'o', 'r', 'a', 't', 'i', 'o', 'n', '.', 'b', 'e', '\0',
   /* "rdh.asia", true */ 'r', 'd', 'h', '.', 'a', 's', 'i', 'a', '\0',
   /* "rdl.at", true */ 'r', 'd', 'l', '.', 'a', 't', '\0',
-  /* "reachr.com", true */ 'r', 'e', 'a', 'c', 'h', 'r', '.', 'c', 'o', 'm', '\0',
   /* "reaconverter.com", true */ 'r', 'e', 'a', 'c', 'o', 'n', 'v', 'e', 'r', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "react-db.com", true */ 'r', 'e', 'a', 'c', 't', '-', 'd', 'b', '.', 'c', 'o', 'm', '\0',
   /* "reactivarte.es", true */ 'r', 'e', 'a', 'c', 't', 'i', 'v', 'a', 'r', 't', 'e', '.', 'e', 's', '\0',
   /* "reader.ga", true */ 'r', 'e', 'a', 'd', 'e', 'r', '.', 'g', 'a', '\0',
   /* "readism.io", true */ 'r', 'e', 'a', 'd', 'i', 's', 'm', '.', 'i', 'o', '\0',
   /* "readmeeatmedrinkme.com", true */ 'r', 'e', 'a', 'd', 'm', 'e', 'e', 'a', 't', 'm', 'e', 'd', 'r', 'i', 'n', 'k', 'm', 'e', '.', 'c', 'o', 'm', '\0',
   /* "readonly.de", true */ 'r', 'e', 'a', 'd', 'o', 'n', 'l', 'y', '.', 'd', 'e', '\0',
   /* "readouble.com", false */ 'r', 'e', 'a', 'd', 'o', 'u', 'b', 'l', 'e', '.', 'c', 'o', 'm', '\0',
@@ -11750,17 +11738,16 @@ static const char kSTSHostTable[] = {
   /* "riverbanktearooms.co.uk", true */ 'r', 'i', 'v', 'e', 'r', 'b', 'a', 'n', 'k', 't', 'e', 'a', 'r', 'o', 'o', 'm', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "rivermendhealthcenters.com", true */ 'r', 'i', 'v', 'e', 'r', 'm', 'e', 'n', 'd', 'h', 'e', 'a', 'l', 't', 'h', 'c', 'e', 'n', 't', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "riversideauto.net", true */ 'r', 'i', 'v', 'e', 'r', 's', 'i', 'd', 'e', 'a', 'u', 't', 'o', '.', 'n', 'e', 't', '\0',
   /* "rivlo.com", true */ 'r', 'i', 'v', 'l', 'o', '.', 'c', 'o', 'm', '\0',
   /* "rivy.org", true */ 'r', 'i', 'v', 'y', '.', 'o', 'r', 'g', '\0',
   /* "rix.ninja", true */ 'r', 'i', 'x', '.', 'n', 'i', 'n', 'j', 'a', '\0',
   /* "riyono.com", true */ 'r', 'i', 'y', 'o', 'n', 'o', '.', 'c', 'o', 'm', '\0',
   /* "rjnutrition.consulting", true */ 'r', 'j', 'n', 'u', 't', 'r', 'i', 't', 'i', 'o', 'n', '.', 'c', 'o', 'n', 's', 'u', 'l', 't', 'i', 'n', 'g', '\0',
-  /* "rkkhok.hu", true */ 'r', 'k', 'k', 'h', 'o', 'k', '.', 'h', 'u', '\0',
   /* "rlalique.com", true */ 'r', 'l', 'a', 'l', 'i', 'q', 'u', 'e', '.', 'c', 'o', 'm', '\0',
   /* "rleh.de", true */ 'r', 'l', 'e', 'h', '.', 'd', 'e', '\0',
   /* "rmb.li", true */ 'r', 'm', 'b', '.', 'l', 'i', '\0',
   /* "rmdlingerie.com.br", true */ 'r', 'm', 'd', 'l', 'i', 'n', 'g', 'e', 'r', 'i', 'e', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "rmf.io", true */ 'r', 'm', 'f', '.', 'i', 'o', '\0',
   /* "rmmanfredi.com", true */ 'r', 'm', 'm', 'a', 'n', 'f', 'r', 'e', 'd', 'i', '.', 'c', 'o', 'm', '\0',
   /* "rms.sexy", true */ 'r', 'm', 's', '.', 's', 'e', 'x', 'y', '\0',
   /* "rmstudio.tw", true */ 'r', 'm', 's', 't', 'u', 'd', 'i', 'o', '.', 't', 'w', '\0',
@@ -11863,17 +11850,16 @@ static const char kSTSHostTable[] = {
   /* "rowankaag.nl", true */ 'r', 'o', 'w', 'a', 'n', 'k', 'a', 'a', 'g', '.', 'n', 'l', '\0',
   /* "rowlog.com", true */ 'r', 'o', 'w', 'l', 'o', 'g', '.', 'c', 'o', 'm', '\0',
   /* "roxtri.cz", true */ 'r', 'o', 'x', 't', 'r', 'i', '.', 'c', 'z', '\0',
   /* "royal-rangers.de", true */ 'r', 'o', 'y', 'a', 'l', '-', 'r', 'a', 'n', 'g', 'e', 'r', 's', '.', 'd', 'e', '\0',
   /* "royalacademy.org.uk", true */ 'r', 'o', 'y', 'a', 'l', 'a', 'c', 'a', 'd', 'e', 'm', 'y', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "royalhop.co", true */ 'r', 'o', 'y', 'a', 'l', 'h', 'o', 'p', '.', 'c', 'o', '\0',
   /* "royalmarinesassociation.org.uk", true */ 'r', 'o', 'y', 'a', 'l', 'm', 'a', 'r', 'i', 'n', 'e', 's', 'a', 's', 's', 'o', 'c', 'i', 'a', 't', 'i', 'o', 'n', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "royalpalacenogent.fr", true */ 'r', 'o', 'y', 'a', 'l', 'p', 'a', 'l', 'a', 'c', 'e', 'n', 'o', 'g', 'e', 'n', 't', '.', 'f', 'r', '\0',
-  /* "royalpub.net", true */ 'r', 'o', 'y', 'a', 'l', 'p', 'u', 'b', '.', 'n', 'e', 't', '\0',
   /* "royalsignaturecruise.com", true */ 'r', 'o', 'y', 'a', 'l', 's', 'i', 'g', 'n', 'a', 't', 'u', 'r', 'e', 'c', 'r', 'u', 'i', 's', 'e', '.', 'c', 'o', 'm', '\0',
   /* "royalvisiongroup.com", true */ 'r', 'o', 'y', 'a', 'l', 'v', 'i', 's', 'i', 'o', 'n', 'g', 'r', 'o', 'u', 'p', '.', 'c', 'o', 'm', '\0',
   /* "royzez.com", true */ 'r', 'o', 'y', 'z', 'e', 'z', '.', 'c', 'o', 'm', '\0',
   /* "rozalisbengal.ro", true */ 'r', 'o', 'z', 'a', 'l', 'i', 's', 'b', 'e', 'n', 'g', 'a', 'l', '.', 'r', 'o', '\0',
   /* "rpgmaker.es", true */ 'r', 'p', 'g', 'm', 'a', 'k', 'e', 'r', '.', 'e', 's', '\0',
   /* "rpherbig.com", true */ 'r', 'p', 'h', 'e', 'r', 'b', 'i', 'g', '.', 'c', 'o', 'm', '\0',
   /* "rprimas.duckdns.org", true */ 'r', 'p', 'r', 'i', 'm', 'a', 's', '.', 'd', 'u', 'c', 'k', 'd', 'n', 's', '.', 'o', 'r', 'g', '\0',
   /* "rpy.xyz", true */ 'r', 'p', 'y', '.', 'x', 'y', 'z', '\0',
@@ -11958,17 +11944,16 @@ static const char kSTSHostTable[] = {
   /* "s-cubed.net", true */ 's', '-', 'c', 'u', 'b', 'e', 'd', '.', 'n', 'e', 't', '\0',
   /* "s-mainte.com", true */ 's', '-', 'm', 'a', 'i', 'n', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "s-mdb.com", true */ 's', '-', 'm', 'd', 'b', '.', 'c', 'o', 'm', '\0',
   /* "s-rickroll-p.pw", true */ 's', '-', 'r', 'i', 'c', 'k', 'r', 'o', 'l', 'l', '-', 'p', '.', 'p', 'w', '\0',
   /* "s13d.fr", true */ 's', '1', '3', 'd', '.', 'f', 'r', '\0',
   /* "s16e.no", true */ 's', '1', '6', 'e', '.', 'n', 'o', '\0',
   /* "sa.net", true */ 's', 'a', '.', 'n', 'e', 't', '\0',
   /* "saamhorigheidsfonds.nl", false */ 's', 'a', 'a', 'm', 'h', 'o', 'r', 'i', 'g', 'h', 'e', 'i', 'd', 's', 'f', 'o', 'n', 'd', 's', '.', 'n', 'l', '\0',
-  /* "saba-piserver.info", true */ 's', 'a', 'b', 'a', '-', 'p', 'i', 's', 'e', 'r', 'v', 'e', 'r', '.', 'i', 'n', 'f', 'o', '\0',
   /* "sabahattin-gucukoglu.com", true */ 's', 'a', 'b', 'a', 'h', 'a', 't', 't', 'i', 'n', '-', 'g', 'u', 'c', 'u', 'k', 'o', 'g', 'l', 'u', '.', 'c', 'o', 'm', '\0',
   /* "sacaentradas.com", true */ 's', 'a', 'c', 'a', 'e', 'n', 't', 'r', 'a', 'd', 'a', 's', '.', 'c', 'o', 'm', '\0',
   /* "saccani.net", true */ 's', 'a', 'c', 'c', 'a', 'n', 'i', '.', 'n', 'e', 't', '\0',
   /* "sackers.com", true */ 's', 'a', 'c', 'k', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "sadbox.es", true */ 's', 'a', 'd', 'b', 'o', 'x', '.', 'e', 's', '\0',
   /* "sadbox.org", true */ 's', 'a', 'd', 'b', 'o', 'x', '.', 'o', 'r', 'g', '\0',
   /* "sadhawkict.org", true */ 's', 'a', 'd', 'h', 'a', 'w', 'k', 'i', 'c', 't', '.', 'o', 'r', 'g', '\0',
   /* "safar.sk", true */ 's', 'a', 'f', 'a', 'r', '.', 's', 'k', '\0',
@@ -12170,17 +12155,16 @@ static const char kSTSHostTable[] = {
   /* "schreinerei-jahreis.de", true */ 's', 'c', 'h', 'r', 'e', 'i', 'n', 'e', 'r', 'e', 'i', '-', 'j', 'a', 'h', 'r', 'e', 'i', 's', '.', 'd', 'e', '\0',
   /* "schrikdraad.net", true */ 's', 'c', 'h', 'r', 'i', 'k', 'd', 'r', 'a', 'a', 'd', '.', 'n', 'e', 't', '\0',
   /* "schritt4fit.de", true */ 's', 'c', 'h', 'r', 'i', 't', 't', '4', 'f', 'i', 't', '.', 'd', 'e', '\0',
   /* "schroepfglas-versand.de", true */ 's', 'c', 'h', 'r', 'o', 'e', 'p', 'f', 'g', 'l', 'a', 's', '-', 'v', 'e', 'r', 's', 'a', 'n', 'd', '.', 'd', 'e', '\0',
   /* "schsrch.xyz", true */ 's', 'c', 'h', 's', 'r', 'c', 'h', '.', 'x', 'y', 'z', '\0',
   /* "schubergphilis.com", true */ 's', 'c', 'h', 'u', 'b', 'e', 'r', 'g', 'p', 'h', 'i', 'l', 'i', 's', '.', 'c', 'o', 'm', '\0',
   /* "schul-bar.de", true */ 's', 'c', 'h', 'u', 'l', '-', 'b', 'a', 'r', '.', 'd', 'e', '\0',
   /* "schuler.st", true */ 's', 'c', 'h', 'u', 'l', 'e', 'r', '.', 's', 't', '\0',
-  /* "schumanandmonnet.eu", true */ 's', 'c', 'h', 'u', 'm', 'a', 'n', 'a', 'n', 'd', 'm', 'o', 'n', 'n', 'e', 't', '.', 'e', 'u', '\0',
   /* "schunako.ch", true */ 's', 'c', 'h', 'u', 'n', 'a', 'k', 'o', '.', 'c', 'h', '\0',
   /* "schurkenstaat.net", true */ 's', 'c', 'h', 'u', 'r', 'k', 'e', 'n', 's', 't', 'a', 'a', 't', '.', 'n', 'e', 't', '\0',
   /* "schutznetze24.de", true */ 's', 'c', 'h', 'u', 't', 'z', 'n', 'e', 't', 'z', 'e', '2', '4', '.', 'd', 'e', '\0',
   /* "schutzwerk.com", true */ 's', 'c', 'h', 'u', 't', 'z', 'w', 'e', 'r', 'k', '.', 'c', 'o', 'm', '\0',
   /* "schwabenhaus-ka.de", true */ 's', 'c', 'h', 'w', 'a', 'b', 'e', 'n', 'h', 'a', 'u', 's', '-', 'k', 'a', '.', 'd', 'e', '\0',
   /* "schwarzer.it", true */ 's', 'c', 'h', 'w', 'a', 'r', 'z', 'e', 'r', '.', 'i', 't', '\0',
   /* "schwarztrade.cz", true */ 's', 'c', 'h', 'w', 'a', 'r', 'z', 't', 'r', 'a', 'd', 'e', '.', 'c', 'z', '\0',
   /* "schwarzwaldcon.de", true */ 's', 'c', 'h', 'w', 'a', 'r', 'z', 'w', 'a', 'l', 'd', 'c', 'o', 'n', '.', 'd', 'e', '\0',
@@ -12623,16 +12607,17 @@ static const char kSTSHostTable[] = {
   /* "simplednscrypt.org", false */ 's', 'i', 'm', 'p', 'l', 'e', 'd', 'n', 's', 'c', 'r', 'y', 'p', 't', '.', 'o', 'r', 'g', '\0',
   /* "simplerses.com", true */ 's', 'i', 'm', 'p', 'l', 'e', 'r', 's', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "simpletax.ca", true */ 's', 'i', 'm', 'p', 'l', 'e', 't', 'a', 'x', '.', 'c', 'a', '\0',
   /* "simplexsupport.com", false */ 's', 'i', 'm', 'p', 'l', 'e', 'x', 's', 'u', 'p', 'p', 'o', 'r', 't', '.', 'c', 'o', 'm', '\0',
   /* "simplia.cz", true */ 's', 'i', 'm', 'p', 'l', 'i', 'a', '.', 'c', 'z', '\0',
   /* "simplicitypvp.net", true */ 's', 'i', 'm', 'p', 'l', 'i', 'c', 'i', 't', 'y', 'p', 'v', 'p', '.', 'n', 'e', 't', '\0',
   /* "simplixos.org", true */ 's', 'i', 'm', 'p', 'l', 'i', 'x', 'o', 's', '.', 'o', 'r', 'g', '\0',
   /* "simplycharlottemason.com", true */ 's', 'i', 'm', 'p', 'l', 'y', 'c', 'h', 'a', 'r', 'l', 'o', 't', 't', 'e', 'm', 'a', 's', 'o', 'n', '.', 'c', 'o', 'm', '\0',
+  /* "simplycloud.de", true */ 's', 'i', 'm', 'p', 'l', 'y', 'c', 'l', 'o', 'u', 'd', '.', 'd', 'e', '\0',
   /* "simplyfixit.co.uk", true */ 's', 'i', 'm', 'p', 'l', 'y', 'f', 'i', 'x', 'i', 't', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "simplyhelen.de", true */ 's', 'i', 'm', 'p', 'l', 'y', 'h', 'e', 'l', 'e', 'n', '.', 'd', 'e', '\0',
   /* "simplymozzo.se", true */ 's', 'i', 'm', 'p', 'l', 'y', 'm', 'o', 'z', 'z', 'o', '.', 's', 'e', '\0',
   /* "simplystudio.com", true */ 's', 'i', 'm', 'p', 'l', 'y', 's', 't', 'u', 'd', 'i', 'o', '.', 'c', 'o', 'm', '\0',
   /* "simpte.com", true */ 's', 'i', 'm', 'p', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "simpul.nl", true */ 's', 'i', 'm', 'p', 'u', 'l', '.', 'n', 'l', '\0',
   /* "sims4hub.ga", true */ 's', 'i', 'm', 's', '4', 'h', 'u', 'b', '.', 'g', 'a', '\0',
   /* "simsnieuws.nl", true */ 's', 'i', 'm', 's', 'n', 'i', 'e', 'u', 'w', 's', '.', 'n', 'l', '\0',
@@ -12754,16 +12739,17 @@ static const char kSTSHostTable[] = {
   /* "slotcar.com", false */ 's', 'l', 'o', 't', 'c', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "slovoice.org", true */ 's', 'l', 'o', 'v', 'o', 'i', 'c', 'e', '.', 'o', 'r', 'g', '\0',
   /* "slow.zone", true */ 's', 'l', 'o', 'w', '.', 'z', 'o', 'n', 'e', '\0',
   /* "slowb.ro", true */ 's', 'l', 'o', 'w', 'b', '.', 'r', 'o', '\0',
   /* "slowfood.es", true */ 's', 'l', 'o', 'w', 'f', 'o', 'o', 'd', '.', 'e', 's', '\0',
   /* "slse.ca", true */ 's', 'l', 's', 'e', '.', 'c', 'a', '\0',
   /* "slxh.eu", true */ 's', 'l', 'x', 'h', '.', 'e', 'u', '\0',
   /* "slxh.nl", true */ 's', 'l', 'x', 'h', '.', 'n', 'l', '\0',
+  /* "sm.ms", true */ 's', 'm', '.', 'm', 's', '\0',
   /* "smablo.com", true */ 's', 'm', 'a', 'b', 'l', 'o', '.', 'c', 'o', 'm', '\0',
   /* "smallcdn.rocks", true */ 's', 'm', 'a', 'l', 'l', 'c', 'd', 'n', '.', 'r', 'o', 'c', 'k', 's', '\0',
   /* "smallchat.nl", true */ 's', 'm', 'a', 'l', 'l', 'c', 'h', 'a', 't', '.', 'n', 'l', '\0',
   /* "smalldata.tech", true */ 's', 'm', 'a', 'l', 'l', 'd', 'a', 't', 'a', '.', 't', 'e', 'c', 'h', '\0',
   /* "smalldogbreeds.net", true */ 's', 'm', 'a', 'l', 'l', 'd', 'o', 'g', 'b', 'r', 'e', 'e', 'd', 's', '.', 'n', 'e', 't', '\0',
   /* "smallhadroncollider.com", true */ 's', 'm', 'a', 'l', 'l', 'h', 'a', 'd', 'r', 'o', 'n', 'c', 'o', 'l', 'l', 'i', 'd', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "smallpath.me", true */ 's', 'm', 'a', 'l', 'l', 'p', 'a', 't', 'h', '.', 'm', 'e', '\0',
   /* "smallplanet.ch", true */ 's', 'm', 'a', 'l', 'l', 'p', 'l', 'a', 'n', 'e', 't', '.', 'c', 'h', '\0',
@@ -12923,17 +12909,16 @@ static const char kSTSHostTable[] = {
   /* "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',
   /* "songzhuolun.com", true */ 's', 'o', 'n', 'g', 'z', 'h', 'u', 'o', 'l', 'u', 'n', '.', 'c', 'o', 'm', '\0',
   /* "sonic.network", true */ 's', 'o', 'n', 'i', 'c', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '\0',
   /* "sonic.sk", false */ 's', 'o', 'n', 'i', 'c', '.', 's', 'k', '\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',
-  /* "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',
@@ -13064,17 +13049,16 @@ static const char kSTSHostTable[] = {
   /* "spresso.me", true */ 's', 'p', 'r', 'e', 's', 's', 'o', '.', 'm', 'e', '\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',
   /* "spron.in", true */ 's', 'p', 'r', 'o', 'n', '.', 'i', 'n', '\0',
   /* "sprueche-zum-valentinstag.de", true */ 's', 'p', 'r', 'u', 'e', 'c', 'h', 'e', '-', 'z', 'u', 'm', '-', 'v', 'a', 'l', 'e', 'n', 't', 'i', 'n', 's', 't', 'a', 'g', '.', 'd', 'e', '\0',
   /* "sprueche-zur-geburt.info", true */ 's', 'p', 'r', 'u', 'e', 'c', 'h', 'e', '-', 'z', 'u', 'r', '-', 'g', 'e', 'b', 'u', 'r', 't', '.', 'i', 'n', 'f', 'o', '\0',
   /* "sprueche-zur-hochzeit.de", true */ 's', 'p', 'r', 'u', 'e', 'c', 'h', 'e', '-', 'z', 'u', 'r', '-', 'h', 'o', 'c', 'h', 'z', 'e', 'i', 't', '.', 'd', 'e', '\0',
   /* "sprueche-zur-konfirmation.de", true */ 's', 'p', 'r', 'u', 'e', 'c', 'h', 'e', '-', 'z', 'u', 'r', '-', 'k', 'o', 'n', 'f', 'i', 'r', 'm', 'a', 't', 'i', 'o', 'n', '.', 'd', 'e', '\0',
-  /* "sprutech.de", true */ 's', 'p', 'r', 'u', 't', 'e', 'c', 'h', '.', 'd', 'e', '\0',
   /* "sps-lehrgang.de", true */ 's', 'p', 's', '-', 'l', 'e', 'h', 'r', 'g', 'a', 'n', 'g', '.', 'd', 'e', '\0',
   /* "sptk.org", true */ 's', 'p', 't', 'k', '.', 'o', 'r', 'g', '\0',
   /* "spuffin.com", true */ 's', 'p', 'u', 'f', 'f', 'i', 'n', '.', 'c', 'o', 'm', '\0',
   /* "spydar007.com", true */ 's', 'p', 'y', 'd', 'a', 'r', '0', '0', '7', '.', 'c', 'o', 'm', '\0',
   /* "spydar007.net", true */ 's', 'p', 'y', 'd', 'a', 'r', '0', '0', '7', '.', 'n', 'e', 't', '\0',
   /* "spydersec.com", true */ 's', 'p', 'y', 'd', 'e', 'r', 's', 'e', 'c', '.', 'c', 'o', 'm', '\0',
   /* "spyprofit.ru", true */ 's', 'p', 'y', 'p', 'r', 'o', 'f', 'i', 't', '.', 'r', 'u', '\0',
   /* "spyroszarzonis.com", true */ 's', 'p', 'y', 'r', 'o', 's', 'z', 'a', 'r', 'z', 'o', 'n', 'i', 's', '.', 'c', 'o', 'm', '\0',
@@ -13284,16 +13268,17 @@ static const char kSTSHostTable[] = {
   /* "strangeplace.net", true */ 's', 't', 'r', 'a', 'n', 'g', 'e', 'p', 'l', 'a', 'c', 'e', '.', 'n', 'e', 't', '\0',
   /* "strategie-zone.de", true */ 's', 't', 'r', 'a', 't', 'e', 'g', 'i', 'e', '-', 'z', 'o', 'n', 'e', '.', 'd', 'e', '\0',
   /* "straubis.org", true */ 's', 't', 'r', 'a', 'u', 'b', 'i', 's', '.', 'o', 'r', 'g', '\0',
   /* "strauser.com", true */ 's', 't', 'r', 'a', 'u', 's', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "stravers.shoes", true */ 's', 't', 'r', 'a', 'v', 'e', 'r', 's', '.', 's', 'h', 'o', 'e', 's', '\0',
   /* "strbt.de", true */ 's', 't', 'r', 'b', 't', '.', 'd', 'e', '\0',
   /* "strchr.com", true */ 's', 't', 'r', 'c', 'h', 'r', '.', 'c', 'o', 'm', '\0',
   /* "streamchan.org", true */ 's', 't', 'r', 'e', 'a', 'm', 'c', 'h', 'a', 'n', '.', 'o', 'r', 'g', '\0',
+  /* "streams.dyndns.org", true */ 's', 't', 'r', 'e', 'a', 'm', 's', '.', 'd', 'y', 'n', 'd', 'n', 's', '.', 'o', 'r', 'g', '\0',
   /* "streamzilla.com", true */ 's', 't', 'r', 'e', 'a', 'm', 'z', 'i', 'l', 'l', 'a', '.', 'c', 'o', 'm', '\0',
   /* "streetdancecenter.com", true */ 's', 't', 'r', 'e', 'e', 't', 'd', 'a', 'n', 'c', 'e', 'c', 'e', 'n', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "streetspotr.com", true */ 's', 't', 'r', 'e', 'e', 't', 's', 'p', 'o', 't', 'r', '.', 'c', 'o', 'm', '\0',
   /* "streetview.wien", true */ 's', 't', 'r', 'e', 'e', 't', 'v', 'i', 'e', 'w', '.', 'w', 'i', 'e', 'n', '\0',
   /* "stressfreehousehold.com", true */ 's', 't', 'r', 'e', 's', 's', 'f', 'r', 'e', 'e', 'h', 'o', 'u', 's', 'e', 'h', 'o', 'l', 'd', '.', 'c', 'o', 'm', '\0',
   /* "stretchmyan.us", true */ 's', 't', 'r', 'e', 't', 'c', 'h', 'm', 'y', 'a', 'n', '.', 'u', 's', '\0',
   /* "stricted.net", true */ 's', 't', 'r', 'i', 'c', 't', 'e', 'd', '.', 'n', 'e', 't', '\0',
   /* "strictlynormal.com", true */ 's', 't', 'r', 'i', 'c', 't', 'l', 'y', 'n', 'o', 'r', 'm', 'a', 'l', '.', 'c', 'o', 'm', '\0',
@@ -13401,17 +13386,16 @@ static const char kSTSHostTable[] = {
   /* "surkatty.org", true */ 's', 'u', 'r', 'k', 'a', 't', 't', 'y', '.', 'o', 'r', 'g', '\0',
   /* "survature.com", true */ 's', 'u', 'r', 'v', 'a', 't', 'u', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "surveymill.co.uk", true */ 's', 'u', 'r', 'v', 'e', 'y', 'm', 'i', 'l', 'l', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "survivalmonkey.com", true */ 's', 'u', 'r', 'v', 'i', 'v', 'a', 'l', 'm', 'o', 'n', 'k', 'e', 'y', '.', 'c', 'o', 'm', '\0',
   /* "susanbpilates.co", true */ 's', 'u', 's', 'a', 'n', 'b', 'p', 'i', 'l', 'a', 't', 'e', 's', '.', 'c', 'o', '\0',
   /* "susanbpilates.com", true */ 's', 'u', 's', 'a', 'n', 'b', 'p', 'i', 'l', 'a', 't', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "susann-kerk.de", true */ 's', 'u', 's', 'a', 'n', 'n', '-', 'k', 'e', 'r', 'k', '.', 'd', 'e', '\0',
   /* "susastudentenjobs.de", true */ 's', 'u', 's', 'a', 's', 't', 'u', 'd', 'e', 'n', 't', 'e', 'n', 'j', 'o', 'b', 's', '.', 'd', 'e', '\0',
-  /* "sushifrick.de", true */ 's', 'u', 's', 'h', 'i', 'f', 'r', 'i', 'c', 'k', '.', 'd', 'e', '\0',
   /* "suspiciousdarknet.xyz", true */ 's', 'u', 's', 'p', 'i', 'c', 'i', 'o', 'u', 's', 'd', 'a', 'r', 'k', 'n', 'e', 't', '.', 'x', 'y', 'z', '\0',
   /* "sustainability.gov", true */ 's', 'u', 's', 't', 'a', 'i', 'n', 'a', 'b', 'i', 'l', 'i', 't', 'y', '.', 'g', 'o', 'v', '\0',
   /* "sustsol.com", true */ 's', 'u', 's', 't', 's', 'o', 'l', '.', 'c', 'o', 'm', '\0',
   /* "sutas.market", true */ 's', 'u', 't', 'a', 's', '.', 'm', 'a', 'r', 'k', 'e', 't', '\0',
   /* "suwalls.com", true */ 's', 'u', 'w', 'a', 'l', 'l', 's', '.', 'c', 'o', 'm', '\0',
   /* "sv-turm-hohenlimburg.de", true */ 's', 'v', '-', 't', 'u', 'r', 'm', '-', 'h', 'o', 'h', 'e', 'n', 'l', 'i', 'm', 'b', 'u', 'r', 'g', '.', 'd', 'e', '\0',
   /* "svager.cz", true */ 's', 'v', 'a', 'g', 'e', 'r', '.', 'c', 'z', '\0',
   /* "svendubbeld.nl", true */ 's', 'v', 'e', 'n', 'd', 'u', 'b', 'b', 'e', 'l', 'd', '.', 'n', 'l', '\0',
@@ -13660,17 +13644,16 @@ static const char kSTSHostTable[] = {
   /* "techtalks.no", true */ 't', 'e', 'c', 'h', 't', 'a', 'l', 'k', 's', '.', 'n', 'o', '\0',
   /* "techtoy.store", true */ 't', 'e', 'c', 'h', 't', 'o', 'y', '.', 's', 't', 'o', 'r', 'e', '\0',
   /* "techvalue.gr", true */ 't', 'e', 'c', 'h', 'v', 'a', 'l', 'u', 'e', '.', 'g', 'r', '\0',
   /* "techwords.io", true */ 't', 'e', 'c', 'h', 'w', 'o', 'r', 'd', 's', '.', 'i', 'o', '\0',
   /* "tecnogaming.com", true */ 't', 'e', 'c', 'n', 'o', 'g', 'a', 'm', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "tecture.de", true */ 't', 'e', 'c', 't', 'u', 'r', 'e', '.', 'd', 'e', '\0',
   /* "teddy.ch", true */ 't', 'e', 'd', 'd', 'y', '.', 'c', 'h', '\0',
   /* "tedeh.net", true */ 't', 'e', 'd', 'e', 'h', '.', 'n', 'e', 't', '\0',
-  /* "tedovo.com", true */ 't', 'e', 'd', 'o', 'v', 'o', '.', 'c', 'o', 'm', '\0',
   /* "tee-idf.net", true */ 't', 'e', 'e', '-', 'i', 'd', 'f', '.', 'n', 'e', 't', '\0',
   /* "teebeedee.org", true */ 't', 'e', 'e', 'b', 'e', 'e', 'd', 'e', 'e', '.', 'o', 'r', 'g', '\0',
   /* "teedb.de", true */ 't', 'e', 'e', 'd', 'b', '.', 'd', 'e', '\0',
   /* "teehaus-shila.de", true */ 't', 'e', 'e', 'h', 'a', 'u', 's', '-', 's', 'h', 'i', 'l', 'a', '.', 'd', 'e', '\0',
   /* "teemo.gg", true */ 't', 'e', 'e', 'm', 'o', '.', 'g', 'g', '\0',
   /* "teemperor.de", true */ 't', 'e', 'e', 'm', 'p', 'e', 'r', 'o', 'r', '.', 'd', 'e', '\0',
   /* "teencounseling.com", true */ 't', 'e', 'e', 'n', 'c', 'o', 'u', 'n', 's', 'e', 'l', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "teeworlds-friends.de", true */ 't', 'e', 'e', 'w', 'o', 'r', 'l', 'd', 's', '-', 'f', 'r', 'i', 'e', 'n', 'd', 's', '.', 'd', 'e', '\0',
@@ -13791,17 +13774,16 @@ static const char kSTSHostTable[] = {
   /* "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',
   /* "thedronechart.com", true */ 't', 'h', 'e', 'd', 'r', 'o', 'n', 'e', 'c', 'h', 'a', 'r', 't', '.', 'c', 'o', 'm', '\0',
   /* "thedrop.pw", true */ 't', 'h', 'e', 'd', 'r', 'o', 'p', '.', 'p', 'w', '\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',
-  /* "theeyeopener.com", false */ 't', 'h', 'e', 'e', 'y', 'e', 'o', 'p', 'e', 'n', 'e', 'r', '.', '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',
   /* "thegoldregister.co.uk", true */ 't', 'h', 'e', 'g', 'o', 'l', 'd', 'r', 'e', 'g', 'i', 's', 't', 'e', 'r', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "thegraciousgourmet.com", true */ 't', 'h', 'e', 'g', 'r', 'a', 'c', 'i', 'o', 'u', 's', 'g', 'o', 'u', 'r', 'm', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "thegrape.ro", true */ 't', 'h', 'e', 'g', 'r', 'a', 'p', 'e', '.', 'r', 'o', '\0',
   /* "thegreatplains.com", true */ 't', 'h', 'e', 'g', 'r', 'e', 'a', 't', 'p', 'l', 'a', 'i', 'n', 's', '.', 'c', 'o', 'm', '\0',
   /* "thegreenfields.se", true */ 't', 'h', 'e', 'g', 'r', 'e', 'e', 'n', 'f', 'i', 'e', 'l', 'd', 's', '.', 's', 'e', '\0',
@@ -14096,16 +14078,17 @@ static const char kSTSHostTable[] = {
   /* "tomli.blog", true */ 't', 'o', 'm', 'l', 'i', '.', 'b', 'l', 'o', 'g', '\0',
   /* "tomli.me", true */ 't', 'o', 'm', 'l', 'i', '.', 'm', 'e', '\0',
   /* "tomm.yt", true */ 't', 'o', 'm', 'm', '.', 'y', 't', '\0',
   /* "tomnatt.com", true */ 't', 'o', 'm', 'n', 'a', 't', 't', '.', 'c', 'o', 'm', '\0',
   /* "tomo.gr", false */ 't', 'o', 'm', 'o', '.', 'g', 'r', '\0',
   /* "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',
@@ -14294,16 +14277,17 @@ static const char kSTSHostTable[] = {
   /* "tresorit.com", true */ 't', 'r', 'e', 's', 'o', 'r', 'i', 't', '.', 'c', 'o', 'm', '\0',
   /* "tresorsecurity.com", true */ 't', 'r', 'e', 's', 'o', 'r', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "tretkowski.de", true */ 't', 'r', 'e', 't', 'k', 'o', 'w', 's', 'k', 'i', '.', 'd', 'e', '\0',
   /* "triadwars.com", true */ 't', 'r', 'i', 'a', 'd', 'w', 'a', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "tribaldos.com", true */ 't', 'r', 'i', 'b', 'a', 'l', 'd', 'o', 's', '.', 'c', 'o', 'm', '\0',
   /* "tribut.de", true */ 't', 'r', 'i', 'b', 'u', 't', '.', 'd', 'e', '\0',
   /* "tributh.net", true */ 't', 'r', 'i', 'b', 'u', 't', 'h', '.', 'n', 'e', 't', '\0',
   /* "trident-online.de", true */ 't', 'r', 'i', 'd', 'e', 'n', 't', '-', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'd', 'e', '\0',
+  /* "trik.es", false */ 't', 'r', 'i', 'k', '.', 'e', 's', '\0',
   /* "trim-a-slab.com", true */ 't', 'r', 'i', 'm', '-', 'a', '-', 's', 'l', 'a', 'b', '.', 'c', 'o', 'm', '\0',
   /* "trimage.org", true */ 't', 'r', 'i', 'm', 'a', 'g', 'e', '.', 'o', 'r', 'g', '\0',
   /* "trineco.com", true */ 't', 'r', 'i', 'n', 'e', 'c', 'o', '.', 'c', 'o', 'm', '\0',
   /* "trineco.fi", true */ 't', 'r', 'i', 'n', 'e', 'c', 'o', '.', 'f', 'i', '\0',
   /* "trinnes.net", true */ 't', 'r', 'i', 'n', 'n', 'e', 's', '.', 'n', 'e', 't', '\0',
   /* "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',
@@ -14327,16 +14311,17 @@ static const char kSTSHostTable[] = {
   /* "trueblueessentials.com", true */ 't', 'r', 'u', 'e', 'b', 'l', 'u', 'e', 'e', 's', 's', 'e', 'n', 't', 'i', 'a', 'l', 's', '.', 'c', 'o', 'm', '\0',
   /* "truebred-labradors.com", true */ 't', 'r', 'u', 'e', 'b', 'r', 'e', 'd', '-', 'l', 'a', 'b', 'r', 'a', 'd', 'o', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "trueinstincts.ca", true */ 't', 'r', 'u', 'e', 'i', 'n', 's', 't', 'i', 'n', 'c', 't', 's', '.', 'c', 'a', '\0',
   /* "truejob.com", true */ 't', 'r', 'u', 'e', 'j', 'o', 'b', '.', 'c', 'o', 'm', '\0',
   /* "truestaradvisors.com", true */ 't', 'r', 'u', 'e', 's', 't', 'a', 'r', 'a', 'd', 'v', 'i', 's', 'o', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "truesteamachievements.com", true */ 't', 'r', 'u', 'e', 's', 't', 'e', 'a', 'm', 'a', 'c', 'h', 'i', 'e', 'v', 'e', 'm', 'e', 'n', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "trueteaching.com", true */ 't', 'r', 'u', 'e', 't', 'e', 'a', 'c', 'h', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "truetrophies.com", true */ 't', 'r', 'u', 'e', 't', 'r', 'o', 'p', 'h', 'i', 'e', 's', '.', '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',
   /* "truserve.org", true */ 't', 'r', 'u', 's', 'e', 'r', 'v', 'e', '.', 'o', 'r', 'g', '\0',
   /* "trusitio.com", true */ 't', 'r', 'u', 's', 'i', 't', 'i', 'o', '.', 'c', 'o', 'm', '\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',
   /* "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',
@@ -14477,16 +14462,17 @@ static const char kSTSHostTable[] = {
   /* "udbhav.me", true */ 'u', 'd', 'b', 'h', 'a', 'v', '.', 'm', 'e', '\0',
   /* "udo-luetkemeier.de", true */ 'u', 'd', 'o', '-', 'l', 'u', 'e', 't', 'k', 'e', 'm', 'e', 'i', 'e', 'r', '.', 'd', 'e', '\0',
   /* "udomain.net", true */ 'u', 'd', 'o', 'm', 'a', 'i', 'n', '.', 'n', 'e', 't', '\0',
   /* "udp.sh", true */ 'u', 'd', 'p', '.', 's', 'h', '\0',
   /* "udruga-point.hr", true */ 'u', 'd', 'r', 'u', 'g', 'a', '-', 'p', 'o', 'i', 'n', 't', '.', 'h', 'r', '\0',
   /* "uefeng.com", true */ 'u', 'e', 'f', 'e', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "uerdingen.info", true */ 'u', 'e', 'r', 'd', 'i', 'n', 'g', 'e', 'n', '.', 'i', 'n', 'f', 'o', '\0',
   /* "uesociedadlimitada.com", true */ 'u', 'e', 's', 'o', 'c', 'i', 'e', 'd', 'a', 'd', 'l', 'i', 'm', 'i', 't', 'a', 'd', 'a', '.', 'c', 'o', 'm', '\0',
+  /* "ueu.me", true */ 'u', 'e', 'u', '.', 'm', 'e', '\0',
   /* "uevan.com", true */ 'u', 'e', 'v', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "ufindme.at", true */ 'u', 'f', 'i', 'n', 'd', 'm', 'e', '.', 'a', 't', '\0',
   /* "ugcdn.com", true */ 'u', 'g', 'c', 'd', 'n', '.', 'c', 'o', 'm', '\0',
   /* "uggedal.com", true */ 'u', 'g', 'g', 'e', 'd', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "ugisgutless.com", true */ 'u', 'g', 'i', 's', 'g', 'u', 't', 'l', 'e', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "uhc.gg", true */ 'u', 'h', 'c', '.', 'g', 'g', '\0',
   /* "uhm.io", true */ 'u', 'h', 'm', '.', 'i', 'o', '\0',
   /* "uhrenlux.de", true */ 'u', 'h', 'r', 'e', 'n', 'l', 'u', 'x', '.', 'd', 'e', '\0',
@@ -14750,17 +14736,16 @@ static const char kSTSHostTable[] = {
   /* "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',
   /* "vdesc.com", true */ 'v', 'd', 'e', 's', 'c', '.', 'c', 'o', 'm', '\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',
   /* "vea.re", true */ 'v', 'e', 'a', '.', 'r', 'e', '\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',
   /* "vega.dyndns.info", true */ 'v', 'e', 'g', 'a', '.', 'd', 'y', 'n', 'd', 'n', 's', '.', 'i', 'n', 'f', 'o', '\0',
   /* "vegalitarian.org", true */ 'v', 'e', 'g', 'a', 'l', 'i', 't', 'a', 'r', 'i', 'a', 'n', '.', 'o', 'r', 'g', '\0',
   /* "vegane-proteine.com", true */ 'v', 'e', 'g', 'a', 'n', 'e', '-', 'p', 'r', 'o', 't', 'e', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "veganism.com", true */ 'v', 'e', 'g', 'a', 'n', 'i', 's', 'm', '.', 'c', 'o', 'm', '\0',
   /* "veggiesbourg.fr", true */ 'v', 'e', 'g', 'g', 'i', 'e', 's', 'b', 'o', 'u', 'r', 'g', '.', 'f', 'r', '\0',
@@ -14859,21 +14844,21 @@ static const char kSTSHostTable[] = {
   /* "vinciconps4.it", true */ 'v', 'i', 'n', 'c', 'i', 'c', 'o', 'n', 'p', 's', '4', '.', 'i', 't', '\0',
   /* "vincitraining.com", true */ 'v', 'i', 'n', 'c', 'i', 't', 'r', 'a', 'i', 'n', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "vineright.com", true */ 'v', 'i', 'n', 'e', 'r', 'i', 'g', 'h', 't', '.', 'c', 'o', 'm', '\0',
   /* "vinesauce.info", true */ 'v', 'i', 'n', 'e', 's', 'a', 'u', 'c', 'e', '.', 'i', 'n', 'f', 'o', '\0',
   /* "vinicius.sl", true */ 'v', 'i', 'n', 'i', 'c', 'i', 'u', 's', '.', 's', 'l', '\0',
   /* "vinilosdecorativos.net", true */ 'v', 'i', 'n', 'i', 'l', 'o', 's', 'd', 'e', 'c', 'o', 'r', 'a', 't', 'i', 'v', 'o', 's', '.', 'n', 'e', 't', '\0',
   /* "vinner.com.au", true */ 'v', 'i', 'n', 'n', 'e', 'r', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "vintagetrailerbuyers.com", true */ 'v', 'i', 'n', 't', 'a', 'g', 'e', 't', 'r', 'a', 'i', 'l', 'e', 'r', 'b', 'u', 'y', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
+  /* "vinyculture.com", true */ 'v', 'i', 'n', 'y', 'c', 'u', 'l', 't', 'u', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "violenceinterrupted.org", true */ 'v', 'i', 'o', 'l', 'e', 'n', 'c', 'e', 'i', 'n', 't', 'e', 'r', 'r', 'u', 'p', 't', 'e', 'd', '.', 'o', 'r', 'g', '\0',
   /* "violin4fun.nl", true */ 'v', 'i', 'o', 'l', 'i', 'n', '4', 'f', 'u', 'n', '.', 'n', 'l', '\0',
   /* "viosey.com", true */ 'v', 'i', 'o', 's', 'e', 'y', '.', 'c', 'o', 'm', '\0',
   /* "viphospitality.se", true */ 'v', 'i', 'p', 'h', 'o', 's', 'p', 'i', 't', 'a', 'l', 'i', 't', 'y', '.', 's', 'e', '\0',
-  /* "vipnettikasinoklubi.com", true */ 'v', 'i', 'p', 'n', 'e', 't', 't', 'i', 'k', 'a', 's', 'i', 'n', 'o', 'k', 'l', 'u', 'b', 'i', '.', 'c', 'o', 'm', '\0',
   /* "virginiacrimeanalysisnetwork.org", true */ 'v', 'i', 'r', 'g', 'i', 'n', 'i', 'a', 'c', 'r', 'i', 'm', 'e', 'a', 'n', 'a', 'l', 'y', 's', 'i', 's', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'o', 'r', 'g', '\0',
   /* "virtualdesignmedia.com", false */ 'v', 'i', 'r', 't', 'u', 'a', 'l', 'd', 'e', 's', 'i', 'g', 'n', 'm', 'e', 'd', 'i', 'a', '.', 'c', 'o', 'm', '\0',
   /* "virtuallifestyle.nl", true */ 'v', 'i', 'r', 't', 'u', 'a', 'l', 'l', 'i', 'f', 'e', 's', 't', 'y', 'l', 'e', '.', 'n', 'l', '\0',
   /* "virtualperez.com", true */ 'v', 'i', 'r', 't', 'u', 'a', 'l', 'p', 'e', 'r', 'e', 'z', '.', 'c', 'o', 'm', '\0',
   /* "virtualsanity.com", true */ 'v', 'i', 'r', 't', 'u', 'a', 'l', 's', 'a', 'n', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "virtualstrongbox.ca", true */ 'v', 'i', 'r', 't', 'u', 'a', 'l', 's', 't', 'r', 'o', 'n', 'g', 'b', 'o', 'x', '.', 'c', 'a', '\0',
   /* "visage.ch", true */ 'v', 'i', 's', 'a', 'g', 'e', '.', 'c', 'h', '\0',
   /* "visalogy.com", true */ 'v', 'i', 's', 'a', 'l', 'o', 'g', 'y', '.', 'c', 'o', 'm', '\0',
@@ -14885,17 +14870,16 @@ static const char kSTSHostTable[] = {
   /* "visionarymedia.nl", true */ 'v', 'i', 's', 'i', 'o', 'n', 'a', 'r', 'y', 'm', 'e', 'd', 'i', 'a', '.', 'n', 'l', '\0',
   /* "visionless.me", false */ 'v', 'i', 's', 'i', 'o', 'n', 'l', 'e', 's', 's', '.', 'm', 'e', '\0',
   /* "visiontree.eu", true */ 'v', 'i', 's', 'i', 'o', 'n', 't', 'r', 'e', 'e', '.', 'e', 'u', '\0',
   /* "vispaleistexel.nl", true */ 'v', 'i', 's', 'p', 'a', 'l', 'e', 'i', 's', 't', 'e', 'x', 'e', 'l', '.', 'n', 'l', '\0',
   /* "vissersgrootboek.nl", true */ 'v', 'i', 's', 's', 'e', 'r', 's', 'g', 'r', 'o', 'o', 't', 'b', 'o', 'e', 'k', '.', 'n', 'l', '\0',
   /* "vistaalmar.es", true */ 'v', 'i', 's', 't', 'a', 'a', 'l', 'm', 'a', 'r', '.', 'e', 's', '\0',
   /* "vistb.me", true */ 'v', 'i', 's', 't', 'b', '.', 'm', 'e', '\0',
   /* "visualideas.org", true */ 'v', 'i', 's', 'u', 'a', 'l', 'i', 'd', 'e', 'a', 's', '.', 'o', 'r', 'g', '\0',
-  /* "vitagenda.nl", true */ 'v', 'i', 't', 'a', 'g', 'e', 'n', 'd', 'a', '.', 'n', 'l', '\0',
   /* "vitalismaatjes.nl", true */ 'v', 'i', 't', 'a', 'l', 'i', 's', 'm', 'a', 'a', 't', 'j', 'e', 's', '.', 'n', 'l', '\0',
   /* "vitalita.cz", true */ 'v', 'i', 't', 'a', 'l', 'i', 't', 'a', '.', 'c', 'z', '\0',
   /* "vitalthings.de", true */ 'v', 'i', 't', 'a', 'l', 't', 'h', 'i', 'n', 'g', 's', '.', 'd', 'e', '\0',
   /* "vitapingu.de", true */ 'v', 'i', 't', 'a', 'p', 'i', 'n', 'g', 'u', '.', 'd', 'e', '\0',
   /* "vitastic.nl", true */ 'v', 'i', 't', 'a', 's', 't', 'i', 'c', '.', 'n', 'l', '\0',
   /* "vitkausk.as", true */ 'v', 'i', 't', 'k', 'a', 'u', 's', 'k', '.', 'a', 's', '\0',
   /* "vitrado.de", true */ 'v', 'i', 't', 'r', 'a', 'd', 'o', '.', 'd', 'e', '\0',
   /* "vitsoft.by", true */ 'v', 'i', 't', 's', 'o', 'f', 't', '.', 'b', 'y', '\0',
@@ -15090,16 +15074,17 @@ static const char kSTSHostTable[] = {
   /* "wdt.cz", false */ 'w', 'd', 't', '.', 'c', 'z', '\0',
   /* "we-bb.com", true */ 'w', 'e', '-', 'b', 'b', '.', 'c', 'o', 'm', '\0',
   /* "wealthcentral.com.au", true */ 'w', 'e', 'a', 'l', 't', 'h', 'c', 'e', 'n', 't', 'r', 'a', 'l', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "wealthprojector.com", true */ 'w', 'e', 'a', 'l', 't', 'h', 'p', 'r', 'o', 'j', 'e', 'c', 't', 'o', 'r', '.', 'c', 'o', 'm', '\0',
   /* "wealthprojector.com.au", true */ 'w', 'e', 'a', 'l', 't', 'h', 'p', 'r', 'o', 'j', 'e', 'c', 't', 'o', 'r', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "wealthreport.com.au", true */ 'w', 'e', 'a', 'l', 't', 'h', 'r', 'e', 'p', 'o', 'r', 't', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "wearandcare.net", true */ 'w', 'e', 'a', 'r', 'a', 'n', 'd', 'c', 'a', 'r', 'e', '.', 'n', 'e', 't', '\0',
   /* "wearegenki.com", true */ 'w', 'e', 'a', 'r', 'e', 'g', 'e', 'n', 'k', 'i', '.', 'c', 'o', 'm', '\0',
+  /* "wearepapermill.co", true */ 'w', 'e', 'a', 'r', 'e', 'p', 'a', 'p', 'e', 'r', 'm', 'i', 'l', 'l', '.', 'c', 'o', '\0',
   /* "wearvr.com", true */ 'w', 'e', 'a', 'r', 'v', 'r', '.', 'c', 'o', 'm', '\0',
   /* "weather-and-climate.com", false */ 'w', 'e', 'a', 't', 'h', 'e', 'r', '-', 'a', 'n', 'd', '-', 'c', 'l', 'i', 'm', 'a', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "weathermyway.rocks", true */ 'w', 'e', 'a', 't', 'h', 'e', 'r', 'm', 'y', 'w', 'a', 'y', '.', 'r', 'o', 'c', 'k', 's', '\0',
   /* "web-hotel.gr", true */ 'w', 'e', 'b', '-', 'h', 'o', 't', 'e', 'l', '.', 'g', 'r', '\0',
   /* "web-insider.net", true */ 'w', 'e', 'b', '-', 'i', 'n', 's', 'i', 'd', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "web-vision.de", true */ 'w', 'e', 'b', '-', 'v', 'i', 's', 'i', 'o', 'n', '.', 'd', 'e', '\0',
   /* "web2033.com", true */ 'w', 'e', 'b', '2', '0', '3', '3', '.', 'c', 'o', 'm', '\0',
   /* "webandmore.de", false */ 'w', 'e', 'b', 'a', 'n', 'd', 'm', 'o', 'r', 'e', '.', 'd', 'e', '\0',
@@ -15185,16 +15170,17 @@ static const char kSTSHostTable[] = {
   /* "welches-kinderfahrrad.de", true */ 'w', 'e', 'l', 'c', 'h', 'e', 's', '-', 'k', 'i', 'n', 'd', 'e', 'r', 'f', 'a', 'h', 'r', 'r', 'a', 'd', '.', 'd', 'e', '\0',
   /* "welcomehelp.de", true */ 'w', 'e', 'l', 'c', 'o', 'm', 'e', 'h', 'e', 'l', 'p', '.', 'd', 'e', '\0',
   /* "wellacapability.com", true */ 'w', 'e', 'l', 'l', 'a', 'c', 'a', 'p', 'a', 'b', 'i', 'l', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "welldrake.com", true */ 'w', 'e', 'l', 'l', 'd', 'r', 'a', 'k', 'e', '.', 'c', 'o', 'm', '\0',
   /* "wellensteyn.ru", true */ 'w', 'e', 'l', 'l', 'e', 'n', 's', 't', 'e', 'y', 'n', '.', 'r', 'u', '\0',
   /* "wellproducedwines.com", true */ 'w', 'e', 'l', 'l', 'p', 'r', 'o', 'd', 'u', 'c', 'e', 'd', 'w', 'i', 'n', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "wellspringcamps.com", true */ 'w', 'e', 'l', 'l', 's', 'p', 'r', 'i', 'n', 'g', 'c', 'a', 'm', 'p', 's', '.', 'c', 'o', 'm', '\0',
   /* "welovemail.com", true */ 'w', 'e', 'l', 'o', 'v', 'e', 'm', 'a', 'i', 'l', '.', 'c', 'o', 'm', '\0',
+  /* "welpy.com", true */ 'w', 'e', 'l', 'p', 'y', '.', 'c', 'o', 'm', '\0',
   /* "welsh.com.br", true */ 'w', 'e', 'l', 's', 'h', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "welteneroberer.de", true */ 'w', 'e', 'l', 't', 'e', 'n', 'e', 'r', 'o', 'b', 'e', 'r', 'e', 'r', '.', 'd', 'e', '\0',
   /* "weltengilde.de", true */ 'w', 'e', 'l', 't', 'e', 'n', 'g', 'i', 'l', 'd', 'e', '.', 'd', 'e', '\0',
   /* "weltenhueter.de", true */ 'w', 'e', 'l', 't', 'e', 'n', 'h', 'u', 'e', 't', 'e', 'r', '.', 'd', 'e', '\0',
   /* "weltentreff.com", true */ 'w', 'e', 'l', 't', 'e', 'n', 't', 'r', 'e', 'f', 'f', '.', 'c', 'o', 'm', '\0',
   /* "wemakemenus.com", true */ 'w', 'e', 'm', 'a', 'k', 'e', 'm', 'e', 'n', 'u', 's', '.', 'c', 'o', 'm', '\0',
   /* "wendigo.pl", true */ 'w', 'e', 'n', 'd', 'i', 'g', 'o', '.', 'p', 'l', '\0',
   /* "wenjs.me", true */ 'w', 'e', 'n', 'j', 's', '.', 'm', 'e', '\0',
@@ -15418,23 +15404,21 @@ static const char kSTSHostTable[] = {
   /* "wordpress.com", false */ 'w', 'o', 'r', 'd', 'p', 'r', 'e', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "wordsmart.it", true */ 'w', 'o', 'r', 'd', 's', 'm', 'a', 'r', 't', '.', 'i', 't', '\0',
   /* "wordxtra.net", true */ 'w', 'o', 'r', 'd', 'x', 't', 'r', 'a', '.', 'n', 'e', 't', '\0',
   /* "work-and-jockel.de", true */ 'w', 'o', 'r', 'k', '-', 'a', 'n', 'd', '-', 'j', 'o', 'c', 'k', 'e', 'l', '.', 'd', 'e', '\0',
   /* "workingclassmedia.com", true */ 'w', 'o', 'r', 'k', 'i', 'n', 'g', 'c', 'l', 'a', 's', 's', 'm', 'e', 'd', 'i', 'a', '.', 'c', 'o', 'm', '\0',
   /* "workpermit.com.vn", true */ 'w', 'o', 'r', 'k', 'p', 'e', 'r', 'm', 'i', 't', '.', 'c', 'o', 'm', '.', 'v', 'n', '\0',
   /* "workray.com", true */ 'w', 'o', 'r', 'k', 'r', 'a', 'y', '.', 'c', 'o', 'm', '\0',
   /* "works-ginan.jp", true */ 'w', 'o', 'r', 'k', 's', '-', 'g', 'i', 'n', 'a', 'n', '.', 'j', 'p', '\0',
-  /* "workwithgo.com", true */ 'w', 'o', 'r', 'k', 'w', 'i', 't', 'h', 'g', 'o', '.', 'c', 'o', 'm', '\0',
   /* "world-in-my-eyes.com", true */ 'w', 'o', 'r', 'l', 'd', '-', 'i', 'n', '-', 'm', 'y', '-', 'e', 'y', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "worldcubeassociation.org", true */ 'w', 'o', 'r', 'l', 'd', 'c', 'u', 'b', 'e', 'a', 's', 's', 'o', 'c', 'i', 'a', 't', 'i', 'o', 'n', '.', 'o', 'r', 'g', '\0',
   /* "worldeventscalendars.com", true */ 'w', 'o', 'r', 'l', 'd', 'e', 'v', 'e', 'n', 't', 's', 'c', 'a', 'l', 'e', 'n', 'd', 'a', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "worldofbelia.de", true */ 'w', 'o', 'r', 'l', 'd', 'o', 'f', 'b', 'e', 'l', 'i', 'a', '.', 'd', 'e', '\0',
   /* "worldpovertysolutions.org", true */ 'w', 'o', 'r', 'l', 'd', 'p', 'o', 'v', 'e', 'r', 't', 'y', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 's', '.', 'o', 'r', 'g', '\0',
-  /* "worldsbeststory.com", true */ 'w', 'o', 'r', 'l', 'd', 's', 'b', 'e', 's', 't', 's', 't', 'o', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "wormdisk.net", true */ 'w', 'o', 'r', 'm', 'd', 'i', 's', 'k', '.', 'n', 'e', 't', '\0',
   /* "wormholevpn.net", true */ 'w', 'o', 'r', 'm', 'h', 'o', 'l', 'e', 'v', 'p', 'n', '.', 'n', 'e', 't', '\0',
   /* "worshapp.com", true */ 'w', 'o', 'r', 's', 'h', 'a', 'p', 'p', '.', 'c', 'o', 'm', '\0',
   /* "woufbox.com", true */ 'w', 'o', 'u', 'f', 'b', 'o', 'x', '.', 'c', 'o', 'm', '\0',
   /* "woutergeraedts.nl", true */ 'w', 'o', 'u', 't', 'e', 'r', 'g', 'e', 'r', 'a', 'e', 'd', 't', 's', '.', 'n', 'l', '\0',
   /* "woutervdb.com", true */ 'w', 'o', 'u', 't', 'e', 'r', 'v', 'd', 'b', '.', 'c', 'o', 'm', '\0',
   /* "wow-foederation.de", true */ 'w', 'o', 'w', '-', 'f', 'o', 'e', 'd', 'e', 'r', 'a', 't', 'i', 'o', 'n', '.', 'd', 'e', '\0',
   /* "wowhelp.it", true */ 'w', 'o', 'w', 'h', 'e', 'l', 'p', '.', 'i', 't', '\0',
@@ -15477,17 +15461,16 @@ static const char kSTSHostTable[] = {
   /* "wselektro.de", true */ 'w', 's', 'e', 'l', 'e', 'k', 't', 'r', 'o', '.', 'd', 'e', '\0',
   /* "wsgvet.com", true */ 'w', 's', 'g', 'v', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "wss.com.ve", true */ 'w', 's', 's', '.', 'c', 'o', 'm', '.', 'v', 'e', '\0',
   /* "wsv-grafenau.de", true */ 'w', 's', 'v', '-', 'g', 'r', 'a', 'f', 'e', 'n', 'a', 'u', '.', 'd', 'e', '\0',
   /* "wt-server3.de", true */ 'w', 't', '-', 's', 'e', 'r', 'v', 'e', 'r', '3', '.', 'd', 'e', '\0',
   /* "wtf.ninja", true */ 'w', 't', 'f', '.', 'n', 'i', 'n', 'j', 'a', '\0',
   /* "wtfismyip.com", true */ 'w', 't', 'f', 'i', 's', 'm', 'y', 'i', 'p', '.', 'c', 'o', 'm', '\0',
   /* "wth.in", true */ 'w', 't', 'h', '.', 'i', 'n', '\0',
-  /* "wubocong.com", true */ 'w', 'u', 'b', 'o', 'c', 'o', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "wubthecaptain.eu", true */ 'w', 'u', 'b', 't', 'h', 'e', 'c', 'a', 'p', 't', 'a', 'i', 'n', '.', 'e', 'u', '\0',
   /* "wuetix.de", true */ 'w', 'u', 'e', 't', 'i', 'x', '.', 'd', 'e', '\0',
   /* "wuji.cz", true */ 'w', 'u', 'j', 'i', '.', 'c', 'z', '\0',
   /* "wukongmusic.us", true */ 'w', 'u', 'k', 'o', 'n', 'g', 'm', 'u', 's', 'i', 'c', '.', 'u', 's', '\0',
   /* "wumbo.co.nz", true */ 'w', 'u', 'm', 'b', 'o', '.', 'c', 'o', '.', 'n', 'z', '\0',
   /* "wunderkarten.de", true */ 'w', 'u', 'n', 'd', 'e', 'r', 'k', 'a', 'r', 't', 'e', 'n', '.', 'd', 'e', '\0',
   /* "wunderlist.com", true */ 'w', 'u', 'n', 'd', 'e', 'r', 'l', 'i', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "wundi.net", true */ 'w', 'u', 'n', 'd', 'i', '.', 'n', 'e', 't', '\0',
@@ -15525,17 +15508,16 @@ static const char kSTSHostTable[] = {
   /* "www.fastmail.com", true */ 'w', 'w', 'w', '.', 'f', 'a', 's', 't', 'm', 'a', 'i', 'l', '.', 'c', 'o', 'm', '\0',
   /* "www.getcloak.com", false */ 'w', 'w', 'w', '.', 'g', 'e', 't', 'c', 'l', 'o', 'a', 'k', '.', 'c', 'o', 'm', '\0',
   /* "www.gmail.com", false */ 'w', 'w', 'w', '.', 'g', 'm', 'a', 'i', 'l', '.', 'c', 'o', 'm', '\0',
   /* "www.googlemail.com", false */ 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', 'm', 'a', 'i', 'l', '.', 'c', 'o', 'm', '\0',
   /* "www.gov.uk", false */ 'w', 'w', 'w', '.', 'g', 'o', 'v', '.', 'u', 'k', '\0',
   /* "www.gpo.gov", false */ 'w', 'w', 'w', '.', 'g', 'p', 'o', '.', 'g', 'o', 'v', '\0',
   /* "www.grc.com", false */ 'w', 'w', 'w', '.', 'g', 'r', 'c', '.', 'c', 'o', 'm', '\0',
   /* "www.healthcare.gov", false */ 'w', 'w', 'w', '.', 'h', 'e', 'a', 'l', 't', 'h', 'c', 'a', 'r', 'e', '.', 'g', 'o', 'v', '\0',
-  /* "www.heliosnet.com", true */ 'w', 'w', 'w', '.', 'h', 'e', 'l', 'i', 'o', 's', 'n', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "www.icann.org", false */ 'w', 'w', 'w', '.', 'i', 'c', 'a', 'n', 'n', '.', 'o', 'r', 'g', '\0',
   /* "www.intercom.io", true */ 'w', 'w', 'w', '.', 'i', 'n', 't', 'e', 'r', 'c', 'o', 'm', '.', 'i', 'o', '\0',
   /* "www.irccloud.com", false */ 'w', 'w', 'w', '.', 'i', 'r', 'c', 'c', 'l', 'o', 'u', 'd', '.', 'c', 'o', 'm', '\0',
   /* "www.lastpass.com", false */ 'w', 'w', 'w', '.', 'l', 'a', 's', 't', 'p', 'a', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "www.linode.com", false */ 'w', 'w', 'w', '.', 'l', 'i', 'n', 'o', 'd', 'e', '.', 'c', 'o', 'm', '\0',
   /* "www.lookout.com", false */ 'w', 'w', 'w', '.', 'l', 'o', 'o', 'k', 'o', 'u', 't', '.', 'c', 'o', 'm', '\0',
   /* "www.makeyourlaws.org", true */ 'w', 'w', 'w', '.', 'm', 'a', 'k', 'e', 'y', 'o', 'u', 'r', 'l', 'a', 'w', 's', '.', 'o', 'r', 'g', '\0',
   /* "www.mydigipass.com", false */ 'w', 'w', 'w', '.', 'm', 'y', 'd', 'i', 'g', 'i', 'p', 'a', 's', 's', '.', 'c', 'o', 'm', '\0',
@@ -16479,15580 +16461,15562 @@ static const nsSTSPreload kSTSPreloadLis
   { 5785, true },
   { 5803, true },
   { 5814, true },
   { 5827, true },
   { 5835, true },
   { 5849, false },
   { 5863, true },
   { 5875, true },
-  { 5885, false },
-  { 5898, true },
-  { 5910, true },
-  { 5922, true },
-  { 5936, true },
-  { 5946, true },
-  { 5954, true },
-  { 5964, true },
+  { 5885, true },
+  { 5897, true },
+  { 5909, true },
+  { 5923, true },
+  { 5933, true },
+  { 5941, true },
+  { 5951, true },
+  { 5965, true },
   { 5978, true },
-  { 5991, true },
-  { 6003, true },
-  { 6022, true },
-  { 6041, true },
-  { 6051, true },
-  { 6084, true },
-  { 6094, true },
-  { 6108, true },
-  { 6115, true },
-  { 6132, true },
-  { 6148, true },
-  { 6157, true },
-  { 6164, true },
-  { 6178, true },
-  { 6186, true },
-  { 6197, true },
-  { 6212, true },
-  { 6227, true },
+  { 5990, true },
+  { 6009, true },
+  { 6028, true },
+  { 6038, true },
+  { 6071, true },
+  { 6081, true },
+  { 6095, true },
+  { 6102, true },
+  { 6119, true },
+  { 6135, true },
+  { 6144, true },
+  { 6151, true },
+  { 6165, true },
+  { 6173, true },
+  { 6184, true },
+  { 6199, true },
+  { 6214, true },
+  { 6231, true },
   { 6244, true },
-  { 6257, true },
-  { 6267, true },
-  { 6278, true },
-  { 6293, true },
-  { 6316, true },
-  { 6327, true },
-  { 6339, true },
-  { 6350, true },
-  { 6370, true },
-  { 6381, true },
-  { 6392, true },
-  { 6403, true },
+  { 6254, true },
+  { 6265, true },
+  { 6280, true },
+  { 6303, true },
+  { 6314, true },
+  { 6326, true },
+  { 6337, true },
+  { 6357, true },
+  { 6368, true },
+  { 6379, true },
+  { 6390, true },
+  { 6401, true },
   { 6414, true },
-  { 6427, true },
-  { 6445, true },
-  { 6457, true },
-  { 6474, true },
-  { 6483, true },
-  { 6497, true },
-  { 6508, true },
-  { 6525, true },
-  { 6536, true },
-  { 6544, true },
-  { 6553, false },
-  { 6579, false },
-  { 6590, true },
-  { 6600, false },
-  { 6617, true },
+  { 6432, true },
+  { 6444, true },
+  { 6461, true },
+  { 6470, true },
+  { 6484, true },
+  { 6495, true },
+  { 6512, true },
+  { 6523, true },
+  { 6531, true },
+  { 6540, false },
+  { 6566, false },
+  { 6577, true },
+  { 6587, false },
+  { 6604, true },
+  { 6614, true },
   { 6627, true },
-  { 6640, true },
-  { 6652, true },
-  { 6661, true },
-  { 6678, true },
-  { 6685, true },
-  { 6709, true },
-  { 6725, true },
-  { 6745, true },
-  { 6770, true },
-  { 6795, true },
-  { 6820, true },
-  { 6832, true },
-  { 6844, true },
-  { 6853, true },
-  { 6866, false },
-  { 6875, true },
-  { 6891, true },
-  { 6907, true },
-  { 6919, true },
-  { 6933, true },
-  { 6953, true },
-  { 6968, true },
-  { 6989, true },
-  { 7001, true },
-  { 7012, true },
-  { 7022, true },
-  { 7034, true },
-  { 7046, true },
-  { 7055, true },
-  { 7067, true },
+  { 6639, true },
+  { 6648, true },
+  { 6665, true },
+  { 6672, true },
+  { 6696, true },
+  { 6712, true },
+  { 6732, true },
+  { 6757, true },
+  { 6782, true },
+  { 6807, true },
+  { 6819, true },
+  { 6831, true },
+  { 6840, true },
+  { 6853, false },
+  { 6862, true },
+  { 6878, true },
+  { 6894, true },
+  { 6906, true },
+  { 6920, true },
+  { 6940, true },
+  { 6955, true },
+  { 6976, true },
+  { 6988, true },
+  { 6999, true },
+  { 7009, true },
+  { 7021, true },
+  { 7033, true },
+  { 7042, true },
+  { 7054, true },
+  { 7073, true },
   { 7086, true },
-  { 7099, true },
-  { 7110, true },
-  { 7119, true },
-  { 7137, true },
-  { 7151, true },
-  { 7165, true },
-  { 7181, true },
-  { 7197, true },
-  { 7217, true },
-  { 7238, true },
+  { 7097, true },
+  { 7106, true },
+  { 7124, true },
+  { 7138, true },
+  { 7152, true },
+  { 7168, true },
+  { 7184, true },
+  { 7204, true },
+  { 7225, true },
+  { 7239, true },
   { 7252, true },
-  { 7265, true },
-  { 7280, true },
-  { 7290, true },
-  { 7308, true },
-  { 7323, true },
-  { 7341, true },
-  { 7351, true },
-  { 7366, true },
-  { 7384, true },
-  { 7398, true },
-  { 7412, true },
-  { 7426, true },
-  { 7438, true },
-  { 7453, true },
-  { 7467, true },
-  { 7482, true },
-  { 7492, true },
-  { 7506, true },
-  { 7521, true },
-  { 7535, true },
-  { 7549, true },
-  { 7565, true },
-  { 7577, true },
-  { 7590, false },
-  { 7605, true },
-  { 7632, true },
-  { 7644, true },
-  { 7659, true },
-  { 7673, true },
-  { 7695, true },
-  { 7707, true },
-  { 7730, true },
-  { 7751, true },
-  { 7763, true },
+  { 7267, true },
+  { 7277, true },
+  { 7295, true },
+  { 7310, true },
+  { 7328, true },
+  { 7338, true },
+  { 7353, true },
+  { 7371, true },
+  { 7385, true },
+  { 7399, true },
+  { 7413, true },
+  { 7425, true },
+  { 7440, true },
+  { 7454, true },
+  { 7469, true },
+  { 7479, true },
+  { 7493, true },
+  { 7508, true },
+  { 7522, true },
+  { 7536, true },
+  { 7552, true },
+  { 7564, true },
+  { 7577, false },
+  { 7592, true },
+  { 7619, true },
+  { 7631, true },
+  { 7646, true },
+  { 7660, true },
+  { 7682, true },
+  { 7694, true },
+  { 7717, true },
+  { 7738, true },
+  { 7750, true },
+  { 7762, true },
   { 7775, true },
-  { 7788, true },
-  { 7803, true },
-  { 7814, false },
-  { 7830, true },
-  { 7841, true },
+  { 7790, true },
+  { 7801, false },
+  { 7817, true },
+  { 7828, true },
+  { 7840, true },
   { 7853, true },
-  { 7866, true },
+  { 7873, true },
   { 7886, true },
-  { 7899, true },
-  { 7917, true },
-  { 7934, true },
-  { 7958, true },
-  { 7977, true },
+  { 7904, true },
+  { 7921, true },
+  { 7945, true },
+  { 7964, true },
+  { 7978, true },
   { 7991, true },
-  { 8004, true },
-  { 8020, true },
-  { 8036, true },
+  { 8007, true },
+  { 8023, true },
+  { 8042, true },
   { 8055, true },
-  { 8068, true },
-  { 8089, true },
-  { 8109, true },
-  { 8129, true },
-  { 8145, true },
-  { 8158, false },
-  { 8171, true },
-  { 8183, true },
+  { 8076, true },
+  { 8096, true },
+  { 8116, true },
+  { 8132, true },
+  { 8145, false },
+  { 8158, true },
+  { 8170, true },
+  { 8180, true },
   { 8193, true },
-  { 8206, true },
-  { 8220, true },
-  { 8236, true },
-  { 8250, true },
-  { 8266, true },
-  { 8278, true },
-  { 8292, true },
-  { 8303, true },
+  { 8207, true },
+  { 8223, true },
+  { 8237, true },
+  { 8253, true },
+  { 8265, true },
+  { 8279, true },
+  { 8290, true },
+  { 8309, true },
   { 8322, true },
-  { 8335, true },
-  { 8349, true },
+  { 8336, true },
+  { 8344, true },
   { 8357, true },
-  { 8370, true },
-  { 8385, true },
-  { 8399, true },
-  { 8416, true },
-  { 8435, true },
-  { 8447, true },
-  { 8461, true },
-  { 8483, true },
-  { 8497, true },
-  { 8509, true },
-  { 8537, true },
-  { 8552, true },
-  { 8564, true },
-  { 8575, true },
-  { 8586, true },
-  { 8600, true },
-  { 8612, true },
-  { 8620, true },
-  { 8631, true },
-  { 8639, true },
-  { 8647, true },
-  { 8655, true },
+  { 8372, true },
+  { 8386, true },
+  { 8403, true },
+  { 8422, true },
+  { 8434, true },
+  { 8448, true },
+  { 8470, true },
+  { 8484, true },
+  { 8496, true },
+  { 8524, true },
+  { 8539, true },
+  { 8551, true },
+  { 8562, true },
+  { 8573, true },
+  { 8587, true },
+  { 8599, true },
+  { 8607, true },
+  { 8618, true },
+  { 8626, true },
+  { 8634, true },
+  { 8642, true },
+  { 8650, true },
   { 8663, true },
-  { 8676, true },
-  { 8683, true },
+  { 8670, true },
+  { 8680, true },
   { 8693, true },
-  { 8706, true },
+  { 8705, true },
   { 8718, true },
-  { 8731, true },
-  { 8751, true },
-  { 8763, true },
-  { 8775, true },
-  { 8793, true },
+  { 8738, true },
+  { 8750, true },
+  { 8762, true },
+  { 8780, true },
+  { 8808, true },
   { 8821, true },
-  { 8834, true },
+  { 8830, true },
   { 8843, true },
-  { 8856, true },
-  { 8868, true },
+  { 8855, true },
+  { 8869, true },
   { 8882, true },
-  { 8895, true },
-  { 8906, true },
-  { 8916, true },
-  { 8927, true },
-  { 8937, true },
-  { 8948, true },
-  { 8957, true },
-  { 8973, true },
-  { 8989, true },
-  { 9017, true },
-  { 9036, true },
-  { 9051, true },
-  { 9071, true },
-  { 9083, true },
+  { 8893, true },
+  { 8903, true },
+  { 8914, true },
+  { 8924, true },
+  { 8935, true },
+  { 8944, true },
+  { 8960, true },
+  { 8976, true },
+  { 9004, true },
+  { 9023, true },
+  { 9038, true },
+  { 9058, true },
+  { 9070, true },
+  { 9082, true },
   { 9095, true },
-  { 9108, true },
-  { 9117, true },
-  { 9126, true },
-  { 9145, true },
-  { 9156, true },
-  { 9167, true },
-  { 9182, true },
-  { 9202, true },
-  { 9220, true },
-  { 9230, true },
-  { 9247, true },
-  { 9258, true },
-  { 9268, true },
-  { 9282, true },
-  { 9299, true },
-  { 9308, true },
-  { 9319, true },
-  { 9339, true },
-  { 9358, true },
-  { 9369, true },
-  { 9380, true },
-  { 9398, true },
-  { 9424, false },
-  { 9435, true },
-  { 9457, true },
-  { 9479, true },
-  { 9493, true },
-  { 9508, true },
-  { 9522, true },
-  { 9536, true },
-  { 9551, true },
-  { 9572, true },
-  { 9582, true },
-  { 9593, true },
-  { 9614, true },
-  { 9632, true },
+  { 9104, true },
+  { 9113, true },
+  { 9132, true },
+  { 9143, true },
+  { 9154, true },
+  { 9169, true },
+  { 9189, true },
+  { 9207, true },
+  { 9217, true },
+  { 9234, true },
+  { 9245, true },
+  { 9255, true },
+  { 9269, true },
+  { 9286, true },
+  { 9295, true },
+  { 9306, true },
+  { 9326, true },
+  { 9345, true },
+  { 9356, true },
+  { 9367, true },
+  { 9385, true },
+  { 9411, false },
+  { 9422, true },
+  { 9444, true },
+  { 9466, true },
+  { 9480, true },
+  { 9495, true },
+  { 9509, true },
+  { 9523, true },
+  { 9538, true },
+  { 9559, true },
+  { 9569, true },
+  { 9580, true },
+  { 9601, true },
+  { 9619, true },
+  { 9637, true },
   { 9650, true },
-  { 9663, true },
+  { 9658, true },
   { 9671, true },
-  { 9684, true },
-  { 9698, true },
-  { 9716, true },
-  { 9738, true },
-  { 9753, true },
-  { 9770, true },
-  { 9792, true },
-  { 9807, true },
-  { 9824, true },
-  { 9845, true },
-  { 9861, true },
-  { 9888, true },
-  { 9904, true },
-  { 9921, true },
-  { 9936, true },
-  { 9950, true },
-  { 9967, true },
-  { 9984, true },
-  { 9996, true },
-  { 10014, true },
-  { 10031, true },
-  { 10046, true },
-  { 10060, true },
-  { 10077, true },
-  { 10095, true },
-  { 10110, true },
-  { 10122, true },
+  { 9685, true },
+  { 9703, true },
+  { 9725, true },
+  { 9740, true },
+  { 9757, true },
+  { 9779, true },
+  { 9794, true },
+  { 9811, true },
+  { 9832, true },
+  { 9848, true },
+  { 9875, true },
+  { 9891, true },
+  { 9908, true },
+  { 9923, true },
+  { 9937, true },
+  { 9954, true },
+  { 9971, true },
+  { 9983, true },
+  { 10001, true },
+  { 10018, true },
+  { 10033, true },
+  { 10047, true },
+  { 10064, true },
+  { 10082, true },
+  { 10097, true },
+  { 10109, true },
+  { 10125, true },
   { 10138, true },
-  { 10151, true },
-  { 10171, true },
-  { 10191, true },
-  { 10202, true },
-  { 10213, true },
-  { 10224, true },
-  { 10239, true },
-  { 10250, true },
-  { 10267, true },
-  { 10283, true },
-  { 10294, true },
-  { 10305, true },
+  { 10158, true },
+  { 10178, true },
+  { 10189, true },
+  { 10200, true },
+  { 10211, true },
+  { 10226, true },
+  { 10237, true },
+  { 10254, true },
+  { 10270, true },
+  { 10281, true },
+  { 10292, true },
+  { 10304, true },
   { 10317, true },
-  { 10330, true },
-  { 10349, true },
+  { 10336, true },
+  { 10347, true },
   { 10360, true },
-  { 10373, true },
-  { 10387, true },
+  { 10374, true },
+  { 10392, false },
   { 10405, false },
-  { 10418, false },
-  { 10427, true },
-  { 10444, true },
-  { 10461, true },
-  { 10481, true },
-  { 10492, true },
-  { 10503, true },
-  { 10521, true },
-  { 10553, true },
-  { 10580, true },
-  { 10592, true },
-  { 10602, true },
-  { 10620, true },
-  { 10635, true },
-  { 10647, true },
-  { 10659, true },
-  { 10679, true },
-  { 10698, true },
-  { 10718, true },
-  { 10741, false },
-  { 10765, true },
-  { 10777, true },
-  { 10788, true },
-  { 10800, true },
-  { 10812, true },
-  { 10828, true },
-  { 10845, true },
-  { 10864, true },
-  { 10878, true },
-  { 10889, true },
-  { 10905, true },
+  { 10414, true },
+  { 10431, true },
+  { 10448, true },
+  { 10468, true },
+  { 10479, true },
+  { 10490, true },
+  { 10508, true },
+  { 10540, true },
+  { 10567, true },
+  { 10579, true },
+  { 10589, true },
+  { 10607, true },
+  { 10622, true },
+  { 10634, true },
+  { 10646, true },
+  { 10666, true },
+  { 10685, true },
+  { 10705, true },
+  { 10728, false },
+  { 10752, true },
+  { 10764, true },
+  { 10775, true },
+  { 10787, true },
+  { 10799, true },
+  { 10815, true },
+  { 10832, true },
+  { 10851, true },
+  { 10865, true },
+  { 10876, true },
+  { 10892, true },
+  { 10911, true },
   { 10924, true },
   { 10937, true },
-  { 10950, true },
-  { 10962, false },
-  { 10986, true },
-  { 11002, true },
-  { 11018, true },
-  { 11030, true },
-  { 11046, true },
-  { 11063, true },
-  { 11077, true },
-  { 11092, true },
-  { 11107, true },
-  { 11118, true },
-  { 11136, true },
-  { 11152, true },
-  { 11173, true },
-  { 11187, true },
-  { 11202, true },
+  { 10949, false },
+  { 10973, true },
+  { 10989, true },
+  { 11005, true },
+  { 11017, true },
+  { 11033, true },
+  { 11050, true },
+  { 11064, true },
+  { 11079, true },
+  { 11094, true },
+  { 11105, true },
+  { 11123, true },
+  { 11139, true },
+  { 11160, true },
+  { 11174, true },
+  { 11189, true },
+  { 11199, true },
   { 11212, true },
-  { 11225, true },
-  { 11242, false },
+  { 11229, false },
+  { 11236, true },
   { 11249, true },
   { 11262, true },
-  { 11275, true },
-  { 11291, true },
-  { 11302, true },
-  { 11314, true },
-  { 11325, true },
-  { 11332, true },
-  { 11340, false },
-  { 11351, true },
-  { 11362, true },
-  { 11375, false },
-  { 11383, true },
-  { 11393, true },
-  { 11400, true },
-  { 11414, false },
-  { 11428, true },
-  { 11444, true },
-  { 11453, true },
-  { 11483, true },
+  { 11278, true },
+  { 11289, true },
+  { 11301, true },
+  { 11312, true },
+  { 11319, true },
+  { 11327, false },
+  { 11338, true },
+  { 11349, true },
+  { 11362, false },
+  { 11370, true },
+  { 11380, true },
+  { 11387, true },
+  { 11401, false },
+  { 11415, true },
+  { 11431, true },
+  { 11440, true },
+  { 11470, true },
+  { 11493, true },
   { 11506, true },
-  { 11519, true },
-  { 11538, true },
-  { 11551, false },
-  { 11570, true },
-  { 11586, false },
-  { 11602, true },
-  { 11618, false },
-  { 11633, false },
-  { 11646, true },
-  { 11662, true },
-  { 11674, true },
-  { 11693, true },
+  { 11525, true },
+  { 11538, false },
+  { 11557, true },
+  { 11573, false },
+  { 11589, true },
+  { 11605, false },
+  { 11620, false },
+  { 11633, true },
+  { 11649, true },
+  { 11661, true },
+  { 11680, true },
+  { 11701, true },
   { 11714, true },
   { 11727, true },
-  { 11740, true },
-  { 11750, true },
-  { 11761, true },
-  { 11772, true },
-  { 11786, true },
-  { 11802, true },
-  { 11819, false },
-  { 11836, true },
+  { 11737, true },
+  { 11748, true },
+  { 11759, true },
+  { 11773, true },
+  { 11789, true },
+  { 11806, false },
+  { 11823, true },
+  { 11849, true },
   { 11862, true },
-  { 11875, true },
-  { 11889, true },
-  { 11908, true },
-  { 11929, true },
-  { 11941, true },
-  { 11955, true },
-  { 11979, true },
+  { 11876, true },
+  { 11895, true },
+  { 11916, true },
+  { 11928, true },
+  { 11942, true },
+  { 11966, true },
+  { 11975, true },
   { 11988, true },
   { 12001, true },
-  { 12014, true },
-  { 12028, true },
-  { 12039, true },
+  { 12015, true },
+  { 12026, true },
+  { 12035, true },
   { 12048, true },
   { 12061, true },
-  { 12074, true },
-  { 12086, true },
-  { 12107, false },
-  { 12125, true },
-  { 12148, true },
-  { 12175, true },
-  { 12194, true },
-  { 12214, true },
-  { 12225, true },
-  { 12242, true },
-  { 12254, true },
-  { 12268, true },
-  { 12276, true },
+  { 12073, true },
+  { 12094, false },
+  { 12112, true },
+  { 12135, true },
+  { 12162, true },
+  { 12181, true },
+  { 12201, true },
+  { 12212, true },
+  { 12229, true },
+  { 12241, true },
+  { 12255, true },
+  { 12263, true },
+  { 12280, true },
   { 12293, true },
-  { 12306, true },
-  { 12318, true },
-  { 12336, true },
-  { 12359, false },
-  { 12375, true },
-  { 12381, true },
-  { 12393, true },
-  { 12403, true },
-  { 12415, true },
-  { 12426, true },
-  { 12436, true },
-  { 12453, true },
-  { 12472, true },
-  { 12484, true },
+  { 12305, true },
+  { 12323, true },
+  { 12346, false },
+  { 12362, true },
+  { 12368, true },
+  { 12380, true },
+  { 12390, true },
+  { 12402, true },
+  { 12413, true },
+  { 12423, true },
+  { 12440, true },
+  { 12459, true },
+  { 12471, true },
+  { 12483, true },
   { 12496, true },
-  { 12509, true },
-  { 12538, true },
-  { 12564, true },
+  { 12525, true },
+  { 12551, true },
+  { 12567, true },
   { 12580, true },
-  { 12593, true },
-  { 12607, true },
-  { 12623, true },
-  { 12642, true },
+  { 12594, true },
+  { 12610, true },
+  { 12629, true },
+  { 12653, true },
   { 12666, true },
-  { 12679, true },
-  { 12688, true },
-  { 12700, true },
-  { 12716, true },
-  { 12730, true },
-  { 12746, true },
-  { 12766, true },
-  { 12780, true },
-  { 12788, true },
-  { 12802, true },
-  { 12820, true },
-  { 12840, true },
-  { 12862, true },
-  { 12874, true },
-  { 12890, true },
-  { 12904, false },
-  { 12917, true },
-  { 12932, true },
-  { 12950, true },
-  { 12964, true },
-  { 12973, true },
-  { 12985, true },
-  { 13003, true },
-  { 13023, false },
+  { 12675, true },
+  { 12687, true },
+  { 12703, true },
+  { 12717, true },
+  { 12733, true },
+  { 12753, true },
+  { 12767, true },
+  { 12775, true },
+  { 12789, true },
+  { 12807, true },
+  { 12827, true },
+  { 12849, true },
+  { 12861, true },
+  { 12877, true },
+  { 12891, false },
+  { 12904, true },
+  { 12919, true },
+  { 12937, true },
+  { 12951, true },
+  { 12960, true },
+  { 12972, true },
+  { 12990, true },
+  { 13010, false },
+  { 13025, true },
   { 13038, true },
-  { 13051, true },
-  { 13061, true },
-  { 13075, true },
-  { 13101, true },
-  { 13111, true },
-  { 13125, true },
-  { 13137, true },
-  { 13155, true },
-  { 13173, false },
-  { 13189, true },
-  { 13199, true },
+  { 13048, true },
+  { 13062, true },
+  { 13088, true },
+  { 13098, true },
+  { 13112, true },
+  { 13124, true },
+  { 13142, true },
+  { 13160, false },
+  { 13176, true },
+  { 13186, true },
+  { 13197, true },
   { 13210, true },
-  { 13223, true },
-  { 13239, true },
-  { 13247, true },
-  { 13258, true },
-  { 13268, true },
-  { 13283, true },
+  { 13226, true },
+  { 13234, true },
+  { 13245, true },
+  { 13255, true },
+  { 13270, true },
+  { 13289, true },
   { 13302, true },
-  { 13315, true },
-  { 13333, false },
-  { 13348, true },
-  { 13368, true },
-  { 13379, true },
+  { 13320, false },
+  { 13335, true },
+  { 13355, true },
+  { 13366, true },
+  { 13378, true },
   { 13391, true },
-  { 13404, true },
-  { 13424, false },
+  { 13411, false },
+  { 13425, true },
   { 13438, true },
-  { 13451, true },
-  { 13469, true },
+  { 13456, true },
+  { 13470, true },
   { 13483, true },
-  { 13496, true },
-  { 13508, true },
+  { 13495, true },
+  { 13509, true },
   { 13522, true },
-  { 13535, true },
-  { 13549, true },
-  { 13561, true },
-  { 13579, true },
-  { 13591, true },
-  { 13602, true },
+  { 13536, true },
+  { 13548, true },
+  { 13566, true },
+  { 13578, true },
+  { 13589, true },
+  { 13600, true },
   { 13613, true },
-  { 13626, true },
-  { 13641, true },
-  { 13652, true },
-  { 13663, true },
-  { 13674, true },
-  { 13684, true },
-  { 13705, true },
-  { 13714, true },
-  { 13721, true },
-  { 13735, false },
-  { 13748, true },
+  { 13628, true },
+  { 13639, true },
+  { 13650, true },
+  { 13661, true },
+  { 13671, true },
+  { 13692, true },
+  { 13701, true },
+  { 13708, true },
+  { 13722, false },
+  { 13735, true },
+  { 13745, true },
   { 13758, true },
   { 13771, true },
-  { 13784, true },
-  { 13796, true },
-  { 13813, true },
-  { 13824, true },
-  { 13838, true },
-  { 13848, true },
-  { 13866, true },
-  { 13876, true },
-  { 13888, true },
-  { 13902, true },
-  { 13919, true },
-  { 13933, true },
-  { 13943, true },
-  { 13959, true },
-  { 13970, true },
-  { 13987, true },
-  { 13999, true },
-  { 14021, true },
-  { 14047, true },
+  { 13783, true },
+  { 13800, true },
+  { 13811, true },
+  { 13825, true },
+  { 13835, true },
+  { 13853, true },
+  { 13863, true },
+  { 13875, true },
+  { 13889, true },
+  { 13906, true },
+  { 13920, true },
+  { 13930, true },
+  { 13946, true },
+  { 13957, true },
+  { 13974, true },
+  { 13986, true },
+  { 14008, true },
+  { 14034, true },
+  { 14049, true },
   { 14062, true },
-  { 14075, true },
-  { 14093, true },
-  { 14104, true },
-  { 14114, true },
-  { 14124, true },
-  { 14143, true },
-  { 14163, true },
-  { 14175, true },
-  { 14189, true },
-  { 14196, true },
-  { 14206, true },
-  { 14216, true },
-  { 14238, true },
-  { 14250, true },
-  { 14268, true },
+  { 14080, true },
+  { 14091, true },
+  { 14101, true },
+  { 14111, true },
+  { 14130, true },
+  { 14150, true },
+  { 14162, true },
+  { 14176, true },
+  { 14183, true },
+  { 14193, true },
+  { 14203, true },
+  { 14225, true },
+  { 14237, true },
+  { 14255, true },
+  { 14267, true },
   { 14280, true },
-  { 14293, true },
-  { 14321, true },
-  { 14331, true },
-  { 14339, true },
-  { 14351, false },
-  { 14371, true },
-  { 14378, true },
-  { 14394, true },
-  { 14410, true },
-  { 14425, true },
-  { 14435, true },
-  { 14453, true },
-  { 14468, true },
-  { 14495, true },
-  { 14512, true },
-  { 14530, true },
-  { 14538, true },
-  { 14552, true },
-  { 14563, true },
-  { 14572, true },
-  { 14599, true },
-  { 14607, true },
-  { 14617, true },
-  { 14633, true },
-  { 14645, true },
-  { 14660, true },
-  { 14672, true },
-  { 14687, true },
-  { 14702, true },
-  { 14714, true },
-  { 14735, true },
-  { 14752, true },
-  { 14766, true },
-  { 14778, true },
-  { 14792, true },
-  { 14802, true },
-  { 14812, true },
-  { 14827, true },
-  { 14842, true },
+  { 14308, true },
+  { 14318, true },
+  { 14326, true },
+  { 14338, false },
+  { 14358, true },
+  { 14365, true },
+  { 14381, true },
+  { 14397, true },
+  { 14412, true },
+  { 14422, true },
+  { 14440, true },
+  { 14455, true },
+  { 14482, true },
+  { 14499, true },
+  { 14517, true },
+  { 14525, true },
+  { 14539, true },
+  { 14550, true },
+  { 14559, true },
+  { 14586, true },
+  { 14594, true },
+  { 14604, true },
+  { 14620, true },
+  { 14632, true },
+  { 14647, true },
+  { 14659, true },
+  { 14674, true },
+  { 14689, true },
+  { 14701, true },
+  { 14722, true },
+  { 14739, true },
+  { 14753, true },
+  { 14765, true },
+  { 14779, true },
+  { 14789, true },
+  { 14799, true },
+  { 14814, true },
+  { 14829, true },
+  { 14840, true },
   { 14853, true },
   { 14866, true },
-  { 14879, true },
-  { 14891, true },
+  { 14878, true },
+  { 14886, true },
   { 14899, true },
-  { 14912, true },
-  { 14930, true },
-  { 14951, true },
-  { 14965, true },
-  { 14981, true },
-  { 14993, true },
-  { 15005, true },
-  { 15017, true },
-  { 15029, true },
-  { 15039, true },
-  { 15049, true },
-  { 15060, true },
+  { 14917, true },
+  { 14938, true },
+  { 14952, true },
+  { 14968, true },
+  { 14980, true },
+  { 14992, true },
+  { 15004, true },
+  { 15016, true },
+  { 15026, true },
+  { 15036, true },
+  { 15047, true },
+  { 15062, true },
   { 15075, true },
-  { 15088, true },
-  { 15107, true },
-  { 15133, true },
-  { 15145, true },
-  { 15161, true },
-  { 15173, true },
-  { 15189, true },
+  { 15094, true },
+  { 15120, true },
+  { 15132, true },
+  { 15148, true },
+  { 15160, true },
+  { 15176, true },
+  { 15195, true },
   { 15208, true },
-  { 15221, true },
-  { 15232, true },
-  { 15243, true },
-  { 15261, true },
-  { 15291, true },
-  { 15314, true },
-  { 15327, false },
-  { 15335, true },
-  { 15347, true },
-  { 15357, true },
-  { 15367, true },
-  { 15381, true },
-  { 15397, true },
-  { 15426, true },
-  { 15442, true },
-  { 15458, true },
-  { 15476, true },
-  { 15497, true },
-  { 15508, true },
-  { 15520, true },
-  { 15532, true },
-  { 15550, true },
-  { 15568, true },
-  { 15589, true },
-  { 15614, true },
-  { 15632, true },
-  { 15646, true },
+  { 15219, true },
+  { 15230, true },
+  { 15248, true },
+  { 15278, true },
+  { 15301, true },
+  { 15314, false },
+  { 15322, true },
+  { 15334, true },
+  { 15344, true },
+  { 15354, true },
+  { 15368, true },
+  { 15384, true },
+  { 15413, true },
+  { 15429, true },
+  { 15445, true },
+  { 15463, true },
+  { 15484, true },
+  { 15495, true },
+  { 15507, true },
+  { 15519, true },
+  { 15537, true },
+  { 15555, true },
+  { 15576, true },
+  { 15601, true },
+  { 15619, true },
+  { 15633, true },
+  { 15658, true },
   { 15671, true },
-  { 15682, true },
-  { 15695, true },
-  { 15710, true },
-  { 15725, true },
-  { 15738, true },
-  { 15751, true },
-  { 15764, true },
-  { 15777, true },
+  { 15686, true },
+  { 15701, true },
+  { 15714, true },
+  { 15727, true },
+  { 15740, true },
+  { 15753, true },
+  { 15766, true },
+  { 15779, true },
   { 15790, true },
-  { 15803, true },
-  { 15814, true },
-  { 15830, true },
-  { 15840, true },
-  { 15852, true },
-  { 15869, true },
-  { 15881, true },
-  { 15894, true },
-  { 15902, true },
-  { 15913, true },
-  { 15924, true },
-  { 15942, true },
-  { 15957, true },
-  { 15975, true },
-  { 15985, true },
-  { 15995, true },
-  { 16004, true },
-  { 16026, true },
-  { 16040, true },
-  { 16051, true },
-  { 16059, true },
-  { 16069, true },
-  { 16081, true },
-  { 16089, true },
-  { 16099, true },