merge mozilla-inbound to mozilla-central. r=merge a=merge
authorSebastian Hengst <archaeopteryx@coole-files.de>
Sun, 20 Aug 2017 23:24:15 +0200
changeset 375859 7dddbd85047c6dc73ddbe1e423cd643a217845b3
parent 375849 0286df0f0eba0e81e2c628c332f90457c38ea926 (diff)
parent 375858 47172ec305228afaa7fff15c8cb3c864954ef14c (current diff)
child 375860 9914f61c12671114a6e063b353f5ac70394ab9ae
child 375901 6668a2b3f65ac1b362fc1c2c4511ad8d8ee13d2f
push id49207
push userarchaeopteryx@coole-files.de
push dateSun, 20 Aug 2017 21:26:25 +0000
treeherderautoland@9914f61c1267 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge, merge
milestone57.0a1
first release with
nightly linux32
7dddbd85047c / 57.0a1 / 20170821100350 / files
nightly linux64
7dddbd85047c / 57.0a1 / 20170821100350 / files
nightly mac
7dddbd85047c / 57.0a1 / 20170821100350 / files
nightly win32
7dddbd85047c / 57.0a1 / 20170821100350 / files
nightly win64
7dddbd85047c / 57.0a1 / 20170821100350 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
merge mozilla-inbound to mozilla-central. r=merge a=merge MozReview-Commit-ID: 1yS8D5e0Ejz
--- a/.clang-format-ignore
+++ b/.clang-format-ignore
@@ -1,31 +1,50 @@
-^build/clang-plugin/tests/.*
+^build/clang-plugin/.*
 ^config/gcc-stl-wrapper.template.h
 ^config/msvc-stl-wrapper.template.h
+^dom/base/test/.*
+^dom/bindings/test/.*
+^dom/media/gtest/.*
+^gfx/testsd/.*
+^image/test/.*
+^ipc/ipdl/test/.*
+^ipc/testshell/.*
 ^js/src/jsapi-tests/.*
+^layout/style/nsCSSPropAliasList.h
+^layout/style/nsCSSPropList.h
+^media/mtransport/test/.*
+^mfbt/tests/.*
+^storage/test/.*
+^testing/gtest/.*
+^tools/profiler/tests/.*
+^uriloader/exthandler/tests/.*
 ^widget/android/GeneratedJNINatives.h
 ^widget/android/GeneratedJNIWrappers.cpp
 ^widget/android/GeneratedJNIWrappers.h
 ^widget/android/fennec/FennecJNINatives.h
 ^widget/android/fennec/FennecJNIWrappers.cpp
 ^widget/android/fennec/FennecJNIWrappers.h
+^widget/tests/.*
+^xpcom/glue/tests/.*
+^xpcom/tests/.*
 
 # Generated from ./tools/rewriting/ThirdPartyPaths.txt
 # awk '{print "^"$1".*"}' ./tools/rewriting/ThirdPartyPaths.txt
 ^browser/components/translation/cld2/.*
 ^db/sqlite3/src/.*
 ^dom/media/platforms/ffmpeg/libav.*
 ^extensions/spellcheck/hunspell/src/.*
 ^gfx/angle/.*
 ^gfx/cairo/.*
 ^gfx/graphite2/.*
 ^gfx/harfbuzz/.*
 ^gfx/ots/.*
 ^gfx/qcms/.*
+^gfx/sfntly/.*
 ^gfx/skia/.*
 ^gfx/vr/openvr/.*
 ^gfx/webrender.*
 ^gfx/webrender_api.*
 ^gfx/ycbcr/.*
 ^intl/hyphenation/hyphen/.*
 ^intl/icu/.*
 ^ipc/chromium/.*
@@ -62,28 +81,32 @@
 ^mfbt/lz4.*
 ^mobile/android/geckoview/src/thirdparty/.*
 ^mobile/android/thirdparty/.*
 ^modules/brotli/.*
 ^modules/fdlibm/.*
 ^modules/freetype2/.*
 ^modules/libbz2/.*
 ^modules/libmar/.*
+^modules/pdfium/.*
 ^modules/woff2/.*
 ^modules/zlib/.*
 ^netwerk/sctp/src/.*
 ^netwerk/srtp/src/.*
 ^nsprpub/.*
 ^other-licenses/.*
 ^parser/expat/.*
 ^security/nss/.*
 ^security/sandbox/chromium/.*
 ^testing/gtest/gmock/.*
 ^testing/gtest/gtest/.*
+^testing/talos/talos/tests/canvasmark/.*
 ^testing/talos/talos/tests/dromaeo/.*
+^testing/talos/talos/tests/kraken/.*
+^testing/talos/talos/tests/v8_7/.*
 ^third_party/aom/.*
 ^third_party/python/blessings/.*
 ^third_party/python/configobj/.*
 ^third_party/python/futures/.*
 ^third_party/python/jsmin/.*
 ^third_party/python/mock-*/.*
 ^third_party/python/psutil/.*
 ^third_party/python/py/.*
@@ -92,11 +115,13 @@
 ^third_party/python/PyECC/.*
 ^third_party/python/pytest/.*
 ^third_party/python/pytoml/.*
 ^third_party/python/pyyaml/.*
 ^third_party/python/redo/.*
 ^third_party/python/requests/.*
 ^third_party/python/rsa/.*
 ^third_party/python/which/.*
+^third_party/rust/.*
 ^toolkit/components/jsoncpp/.*
 ^toolkit/components/protobuf/.*
 ^toolkit/crashreporter/google-breakpad/.*
+^tools/fuzzing/libfuzzer.*
--- a/devtools/client/inspector/markup/test/head.js
+++ b/devtools/client/inspector/markup/test/head.js
@@ -7,17 +7,17 @@
 "use strict";
 
 // Import the inspector's head.js first (which itself imports shared-head.js).
 Services.scriptloader.loadSubScript(
   "chrome://mochitests/content/browser/devtools/client/inspector/test/head.js",
   this);
 
 var {getInplaceEditorForSpan: inplaceEditor} = require("devtools/client/shared/inplace-editor");
-var clipboard = require("sdk/clipboard");
+var clipboard = require("devtools/shared/platform/clipboard");
 var {ActorRegistryFront} = require("devtools/shared/fronts/actor-registry");
 
 // If a test times out we want to see the complete log and not just the last few
 // lines.
 SimpleTest.requestCompleteLog();
 
 // Set the testing flag on DevToolsUtils and reset it when the test ends
 flags.testing = true;
@@ -292,17 +292,17 @@ function searchUsingSelectorSearch(selec
  * @param {InspectorPanel} inspector
  * @param {Boolean} assert Should this function run assertions inline.
  * @return A promise that resolves with a boolean indicating whether
  *         the menu items are disabled once the menu has been checked.
  */
 var isEditingMenuDisabled = Task.async(
 function* (nodeFront, inspector, assert = true) {
   // To ensure clipboard contains something to paste.
-  clipboard.set("<p>test</p>", "html");
+  clipboard.copyString("<p>test</p>");
 
   yield selectNode(nodeFront, inspector);
   let allMenuItems = openContextMenuAndGetAllItems(inspector);
 
   let deleteMenuItem = allMenuItems.find(i => i.id === "node-menu-delete");
   let editHTMLMenuItem = allMenuItems.find(i => i.id === "node-menu-edithtml");
   let pasteHTMLMenuItem = allMenuItems.find(i => i.id === "node-menu-pasteouterhtml");
 
@@ -324,17 +324,17 @@ function* (nodeFront, inspector, assert 
  * @param {InspectorPanel} inspector
  * @param {Boolean} assert Should this function run assertions inline.
  * @return A promise that resolves with a boolean indicating whether
  *         the menu items are enabled once the menu has been checked.
  */
 var isEditingMenuEnabled = Task.async(
 function* (nodeFront, inspector, assert = true) {
   // To ensure clipboard contains something to paste.
-  clipboard.set("<p>test</p>", "html");
+  clipboard.copyString("<p>test</p>");
 
   yield selectNode(nodeFront, inspector);
   let allMenuItems = openContextMenuAndGetAllItems(inspector);
 
   let deleteMenuItem = allMenuItems.find(i => i.id === "node-menu-delete");
   let editHTMLMenuItem = allMenuItems.find(i => i.id === "node-menu-edithtml");
   let pasteHTMLMenuItem = allMenuItems.find(i => i.id === "node-menu-pasteouterhtml");
 
--- a/devtools/client/inspector/test/browser_inspector_menu-01-sensitivity.js
+++ b/devtools/client/inspector/test/browser_inspector_menu-01-sensitivity.js
@@ -57,77 +57,77 @@ const TEST_CASES = [
   {
     desc: "doctype node with empty clipboard",
     selector: null,
     disabled: INACTIVE_ON_DOCTYPE_ITEMS,
   },
   {
     desc: "doctype node with html on clipboard",
     clipboardData: "<p>some text</p>",
-    clipboardDataType: "html",
+    clipboardDataType: "text",
     selector: null,
     disabled: INACTIVE_ON_DOCTYPE_ITEMS,
   },
   {
     desc: "element node HTML on the clipboard",
     clipboardData: "<p>some text</p>",
-    clipboardDataType: "html",
+    clipboardDataType: "text",
     disabled: [
       "node-menu-copyimagedatauri",
       "node-menu-copy-attribute",
       "node-menu-edit-attribute",
       "node-menu-remove-attribute"
     ],
     selector: "#sensitivity",
   },
   {
     desc: "<html> element",
     clipboardData: "<p>some text</p>",
-    clipboardDataType: "html",
+    clipboardDataType: "text",
     selector: "html",
     disabled: [
       "node-menu-copyimagedatauri",
       "node-menu-pastebefore",
       "node-menu-pasteafter",
       "node-menu-pastefirstchild",
       "node-menu-pastelastchild",
       "node-menu-copy-attribute",
       "node-menu-edit-attribute",
       "node-menu-remove-attribute"
     ],
   },
   {
     desc: "<body> with HTML on clipboard",
     clipboardData: "<p>some text</p>",
-    clipboardDataType: "html",
+    clipboardDataType: "text",
     selector: "body",
     disabled: [
       "node-menu-copyimagedatauri",
       "node-menu-pastebefore",
       "node-menu-pasteafter",
       "node-menu-copy-attribute",
       "node-menu-edit-attribute",
       "node-menu-remove-attribute"
     ]
   },
   {
     desc: "<img> with HTML on clipboard",
     clipboardData: "<p>some text</p>",
-    clipboardDataType: "html",
+    clipboardDataType: "text",
     selector: "img",
     disabled: [
       "node-menu-copy-attribute",
       "node-menu-edit-attribute",
       "node-menu-remove-attribute"
     ]
   },
   {
     desc: "<head> with HTML on clipboard",
     clipboardData: "<p>some text</p>",
-    clipboardDataType: "html",
+    clipboardDataType: "text",
     selector: "head",
     disabled: [
       "node-menu-copyimagedatauri",
       "node-menu-pastebefore",
       "node-menu-pasteafter",
       "node-menu-screenshotnode",
       "node-menu-copy-attribute",
       "node-menu-edit-attribute",
@@ -143,55 +143,55 @@ const TEST_CASES = [
       "node-menu-copy-attribute",
       "node-menu-edit-attribute",
       "node-menu-remove-attribute"
     ]),
   },
   {
     desc: "<element> with text on clipboard",
     clipboardData: "some text",
-    clipboardDataType: undefined,
+    clipboardDataType: "text",
     selector: "#paste-area",
     disabled: [
       "node-menu-copyimagedatauri",
       "node-menu-copy-attribute",
       "node-menu-edit-attribute",
       "node-menu-remove-attribute"
     ]
   },
   {
     desc: "<element> with base64 encoded image data uri on clipboard",
     clipboardData:
-      "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABC" +
+      "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABC" +
       "AAAAAA6fptVAAAACklEQVQYV2P4DwABAQEAWk1v8QAAAABJRU5ErkJggg==",
-    clipboardDataType: undefined,
+    clipboardDataType: "image",
     selector: "#paste-area",
     disabled: PASTE_MENU_ITEMS.concat([
       "node-menu-copyimagedatauri",
       "node-menu-copy-attribute",
       "node-menu-edit-attribute",
       "node-menu-remove-attribute"
     ]),
   },
   {
     desc: "<element> with empty string on clipboard",
     clipboardData: "",
-    clipboardDataType: undefined,
+    clipboardDataType: "text",
     selector: "#paste-area",
     disabled: PASTE_MENU_ITEMS.concat([
       "node-menu-copyimagedatauri",
       "node-menu-copy-attribute",
       "node-menu-edit-attribute",
       "node-menu-remove-attribute"
     ]),
   },
   {
     desc: "<element> with whitespace only on clipboard",
     clipboardData: " \n\n\t\n\n  \n",
-    clipboardDataType: undefined,
+    clipboardDataType: "text",
     selector: "#paste-area",
     disabled: PASTE_MENU_ITEMS.concat([
       "node-menu-copyimagedatauri",
       "node-menu-copy-attribute",
       "node-menu-edit-attribute",
       "node-menu-remove-attribute"
     ]),
   },
@@ -220,18 +220,19 @@ const TEST_CASES = [
   {
     desc: "<element> with context menu triggered on attribute, empty clipboard",
     selector: "#attributes",
     disabled: PASTE_MENU_ITEMS.concat(["node-menu-copyimagedatauri"]),
     attributeTrigger: "data-edit"
   }
 ];
 
-var clipboard = require("sdk/clipboard");
+var clipboard = require("devtools/shared/platform/clipboard");
 registerCleanupFunction(() => {
+  clipboard.copyString("");
   clipboard = null;
 });
 
 add_task(function* () {
   let { inspector } = yield openInspectorForURL(TEST_URL);
   for (let test of TEST_CASES) {
     let { desc, disabled, selector, attributeTrigger } = test;
 
@@ -253,17 +254,17 @@ add_task(function* () {
     let allMenuItems = openContextMenuAndGetAllItems(inspector, {
       target: contextMenuTrigger,
     });
 
     for (let id of ALL_MENU_ITEMS) {
       let menuItem = allMenuItems.find(item => item.id === id);
       let shouldBeDisabled = disabled.indexOf(id) !== -1;
       is(menuItem.disabled, shouldBeDisabled,
-        `#${id} should be ${shouldBeDisabled ? "disabled" : "enabled"} `);
+        `#${id} should be ${shouldBeDisabled ? "disabled" : "enabled"}`);
     }
   }
 });
 
 /**
  * A helper that fetches a front for a node that matches the given selector or
  * doctype node if the selector is falsy.
  */
@@ -278,16 +279,48 @@ function* getNodeFrontForSelector(select
   return nodes[0];
 }
 
 /**
  * A helper that populates the clipboard with data of given type. Clears the
  * clipboard if data is falsy.
  */
 function setupClipboard(data, type) {
-  if (data) {
-    info("Populating clipboard with " + type + " data.");
-    clipboard.set(data, type);
-  } else {
-    info("Clearing clipboard.");
-    clipboard.set("", "text");
+  if (!data) {
+    info("Clearing the clipboard.");
+    clipboard.copyString("");
+  } else if (type === "text") {
+    info("Populating clipboard with text.");
+    clipboard.copyString(data);
+  } else if (type === "image") {
+    info("Populating clipboard with image content");
+    copyImageToClipboard(data);
   }
 }
+
+/**
+ * The code below is a simplified version of the sdk/clipboard helper set() method.
+ */
+function copyImageToClipboard(data) {
+  let clipboardService = Cc["@mozilla.org/widget/clipboard;1"]
+                              .getService(Ci.nsIClipboard);
+  let imageTools = Cc["@mozilla.org/image/tools;1"]
+                     .getService(Ci.imgITools);
+
+  // Image data is stored as base64 in the test.
+  let image = atob(data);
+
+  let input = Cc["@mozilla.org/io/string-input-stream;1"]
+                .createInstance(Ci.nsIStringInputStream);
+  input.setData(image, image.length);
+
+  let imgPtr = Cc["@mozilla.org/supports-interface-pointer;1"]
+                 .createInstance(Ci.nsISupportsInterfacePointer);
+  imgPtr.data = imageTools.decodeImage(input, "image/png");
+
+  let xferable = Cc["@mozilla.org/widget/transferable;1"]
+                   .createInstance(Ci.nsITransferable);
+  xferable.init(null);
+  xferable.addDataFlavor("image/png");
+  xferable.setTransferData("image/png", imgPtr, -1);
+
+  clipboardService.setData(xferable, null, clipboardService.kGlobalClipboard);
+}
--- a/devtools/client/inspector/test/browser_inspector_menu-03-paste-items-svg.js
+++ b/devtools/client/inspector/test/browser_inspector_menu-03-paste-items-svg.js
@@ -5,17 +5,17 @@ http://creativecommons.org/publicdomain/
 
 // Test that HTML can be pasted in SVG elements.
 
 const TEST_URL = URL_ROOT + "doc_inspector_svg.svg";
 const PASTE_AS_FIRST_CHILD = '<circle xmlns="http://www.w3.org/2000/svg" cx="42" cy="42" r="5"/>';
 const PASTE_AS_LAST_CHILD = '<circle xmlns="http://www.w3.org/2000/svg" cx="42" cy="42" r="15"/>';
 
 add_task(function* () {
-  let clipboard = require("sdk/clipboard");
+  let clipboard = require("devtools/shared/platform/clipboard");
 
   let { inspector, testActor } = yield openInspectorForURL(TEST_URL);
 
   let refSelector = "svg";
   let oldHTML = yield testActor.getProperty(refSelector, "innerHTML");
   yield selectNode(refSelector, inspector);
   let markupTagLine = getContainerForSelector(refSelector, inspector).tagLine;
 
@@ -27,16 +27,16 @@ add_task(function* () {
   is(html, expectedHtml, "The innerHTML of the SVG node is correct");
 
   // Helpers
   function* pasteContent(menuId, clipboardData) {
     let allMenuItems = openContextMenuAndGetAllItems(inspector, {
       target: markupTagLine,
     });
     info(`Testing ${menuId} for ${clipboardData}`);
-    clipboard.set(clipboardData);
+    clipboard.copyString(clipboardData);
 
     let onMutation = inspector.once("markupmutation");
     allMenuItems.find(item => item.id === menuId).click();
     info("Waiting for mutation to occur");
     yield onMutation;
   }
 });
--- a/devtools/client/inspector/test/browser_inspector_menu-03-paste-items.js
+++ b/devtools/client/inspector/test/browser_inspector_menu-03-paste-items.js
@@ -24,56 +24,56 @@ const PASTE_ADJACENT_HTML_DATA = [
   },
   {
     desc: "After",
     clipboardData: "<span>5</span>",
     menuId: "node-menu-pasteafter",
   },
 ];
 
-var clipboard = require("sdk/clipboard");
+var clipboard = require("devtools/shared/platform/clipboard");
 registerCleanupFunction(() => {
   clipboard = null;
 });
 
 add_task(function* () {
   let { inspector, testActor } = yield openInspectorForURL(TEST_URL);
 
   yield testPasteOuterHTMLMenu();
   yield testPasteInnerHTMLMenu();
   yield testPasteAdjacentHTMLMenu();
 
   function* testPasteOuterHTMLMenu() {
     info("Testing that 'Paste Outer HTML' menu item works.");
-    clipboard.set("this was pasted (outerHTML)");
+    clipboard.copyString("this was pasted (outerHTML)");
     let outerHTMLSelector = "#paste-area h1";
 
     let nodeFront = yield getNodeFront(outerHTMLSelector, inspector);
     yield selectNode(nodeFront, inspector);
 
     let allMenuItems = openContextMenuAndGetAllItems(inspector, {
       target: getContainerForNodeFront(nodeFront, inspector).tagLine,
     });
 
     let onNodeReselected = inspector.markup.once("reselectedonremoved");
     allMenuItems.find(item => item.id === "node-menu-pasteouterhtml").click();
 
     info("Waiting for inspector selection to update");
     yield onNodeReselected;
 
     let outerHTML = yield testActor.getProperty("body", "outerHTML");
-    ok(outerHTML.includes(clipboard.get()),
+    ok(outerHTML.includes(clipboard.getText()),
        "Clipboard content was pasted into the node's outer HTML.");
     ok(!(yield testActor.hasNode(outerHTMLSelector)),
       "The original node was removed.");
   }
 
   function* testPasteInnerHTMLMenu() {
     info("Testing that 'Paste Inner HTML' menu item works.");
-    clipboard.set("this was pasted (innerHTML)");
+    clipboard.copyString("this was pasted (innerHTML)");
     let innerHTMLSelector = "#paste-area .inner";
     let getInnerHTML = () => testActor.getProperty(innerHTMLSelector,
                                                    "innerHTML");
     let origInnerHTML = yield getInnerHTML();
 
     let nodeFront = yield getNodeFront(innerHTMLSelector, inspector);
     yield selectNode(nodeFront, inspector);
 
@@ -81,17 +81,17 @@ add_task(function* () {
       target: getContainerForNodeFront(nodeFront, inspector).tagLine,
     });
 
     let onMutation = inspector.once("markupmutation");
     allMenuItems.find(item => item.id === "node-menu-pasteinnerhtml").click();
     info("Waiting for mutation to occur");
     yield onMutation;
 
-    ok((yield getInnerHTML()) === clipboard.get(),
+    ok((yield getInnerHTML()) === clipboard.getText(),
        "Clipboard content was pasted into the node's inner HTML.");
     ok((yield testActor.hasNode(innerHTMLSelector)),
        "The original node has been preserved.");
     yield undoChange(inspector);
     ok((yield getInnerHTML()) === origInnerHTML,
        "Previous innerHTML has been restored after undo");
   }
 
@@ -102,17 +102,17 @@ add_task(function* () {
     yield selectNode(nodeFront, inspector);
     let markupTagLine = getContainerForNodeFront(nodeFront, inspector).tagLine;
 
     for (let { clipboardData, menuId } of PASTE_ADJACENT_HTML_DATA) {
       let allMenuItems = openContextMenuAndGetAllItems(inspector, {
         target: markupTagLine,
       });
       info(`Testing ${menuId} for ${clipboardData}`);
-      clipboard.set(clipboardData);
+      clipboard.copyString(clipboardData);
 
       let onMutation = inspector.once("markupmutation");
       allMenuItems.find(item => item.id === menuId).click();
       info("Waiting for mutation to occur");
       yield onMutation;
     }
 
     let html = yield testActor.getProperty(adjacentNodeSelector, "innerHTML");
--- a/dom/animation/test/mochitest.ini
+++ b/dom/animation/test/mochitest.ini
@@ -118,8 +118,9 @@ skip-if = toolkit == 'android'
 [mozilla/test_underlying-discrete-value.html]
 [style/test_animation-seeking-with-current-time.html]
 [style/test_animation-seeking-with-start-time.html]
 [style/test_animation-setting-effect.html]
 [style/test_composite.html]
 [style/test_interpolation-from-interpolatematrix-to-none.html]
 [style/test_missing-keyframe.html]
 [style/test_missing-keyframe-on-compositor.html]
+[style/test_transform-non-normalizable-rotate3d.html]
new file mode 100644
--- /dev/null
+++ b/dom/animation/test/style/test_transform-non-normalizable-rotate3d.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<meta charset=utf-8>
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src='../testcommon.js'></script>
+<div id='log'></div>
+<script type='text/javascript'>
+'use strict';
+
+test(function(t) {
+  var target = addDiv(t);
+  target.style.transform = 'rotate3d(0, 0, 1, 90deg)';
+  target.style.transition = 'all 10s linear -5s';
+  getComputedStyle(target).transform;
+
+  target.style.transform = 'rotate3d(0, 0, 0, 270deg)';
+  var interpolated_matrix = 'matrix(' + Math.cos(Math.PI / 4) + ',' +
+                                        Math.sin(Math.PI / 4) + ',' +
+                                       -Math.sin(Math.PI / 4) + ',' +
+                                        Math.cos(Math.PI / 4) + ',' +
+                                        '0, 0)';
+  assert_matrix_equals(getComputedStyle(target).transform, interpolated_matrix,
+                       'transition from a normal rotate3d to a ' +
+                       'non-normalizable rotate3d');
+}, 'Test interpolation on non-normalizable rotate3d function');
+
+</script>
+</html>
--- a/dom/canvas/moz.build
+++ b/dom/canvas/moz.build
@@ -183,17 +183,17 @@ UNIFIED_SOURCES += [
     'WebGLVertexAttribData.cpp',
 ]
 
 SOURCES += [
     'MurmurHash3.cpp',
 ]
 
 # Suppress warnings from third-party code.
-if CONFIG['CLANG_CXX']:
+if CONFIG['CLANG_CXX'] or CONFIG['GNU_CXX']:
     SOURCES['MurmurHash3.cpp'].flags += ['-Wno-implicit-fallthrough']
 
 LOCAL_INCLUDES += [
     '/js/xpconnect/wrappers',
 ]
 
 include('/ipc/chromium/chromium-config.mozbuild')
 
--- a/gfx/ots/README.mozilla
+++ b/gfx/ots/README.mozilla
@@ -1,12 +1,12 @@
 This is the Sanitiser for OpenType project, from http://code.google.com/p/ots/.
 
 Our reference repository is https://github.com/khaledhosny/ots/.
 
-Current revision: 57ef618b11aa0409637af04988ccce7e6b92ed0f (5.2.0)
+Current revision: e2d4b5daba24e746a48d240e90d92fe09a20b681 (5.2.0)
 
 Upstream files included: LICENSE, src/, include/, tests/*.cc
 
 Additional files: README.mozilla, src/moz.build
 
 Additional patch: ots-visibility.patch (bug 711079).
 Additional patch: ots-lz4.patch
--- a/gfx/ots/src/glat.cc
+++ b/gfx/ots/src/glat.cc
@@ -69,17 +69,17 @@ bool OpenTypeGLAT_v1::GlatEntry::ParsePa
   if (!table.ReadU8(&this->attNum)) {
     return parent->Error("GlatEntry: Failed to read attNum");
   }
   if (!table.ReadU8(&this->num)) {
     return parent->Error("GlatEntry: Failed to read num");
   }
 
   //this->attributes.resize(this->num);
-  for (unsigned i = 0; i < this->num; ++i) {
+  for (int i = 0; i < this->num; ++i) {
     this->attributes.emplace_back();
     if (!table.ReadS16(&this->attributes[i])) {
       return parent->Error("GlatEntry: Failed to read attribute %u", i);
     }
   }
   return true;
 }
 
@@ -151,17 +151,17 @@ bool OpenTypeGLAT_v2::GlatEntry::ParsePa
   if (!table.ReadS16(&this->attNum)) {
     return parent->Error("GlatEntry: Failed to read attNum");
   }
   if (!table.ReadS16(&this->num) || this->num < 0) {
     return parent->Error("GlatEntry: Failed to read valid num");
   }
 
   //this->attributes.resize(this->num);
-  for (unsigned i = 0; i < this->num; ++i) {
+  for (int i = 0; i < this->num; ++i) {
     this->attributes.emplace_back();
     if (!table.ReadS16(&this->attributes[i])) {
       return parent->Error("GlatEntry: Failed to read attribute %u", i);
     }
   }
   return true;
 }
 
new file mode 100644
--- /dev/null
+++ b/layout/style/crashtests/1391577.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<style>
+.foo input[type="range"]::-moz-range-thumb:hover {
+  color: red;
+}
+</style>
+<div>
+  <input type="range"></input>
+</div>
+<script>
+onload = function() {
+  document.querySelector('div').classList.add('foo');
+}
+</script>
--- a/layout/style/crashtests/crashtests.list
+++ b/layout/style/crashtests/crashtests.list
@@ -196,8 +196,9 @@ load link-transition-before.html
 load long-url-list-stack-overflow.html
 load 1383981.html
 load 1383981-2.html
 load 1384824-1.html
 load 1384824-2.html
 load 1387481-1.html
 load 1387499.html
 load 1388234.html
+load 1391577.html
--- a/layout/style/test/test_transitions_per_property.html
+++ b/layout/style/test/test_transitions_per_property.html
@@ -376,25 +376,23 @@ var transformTests = [
     expected_uncomputed: 'rotate(360deg)',
     expected: computeMatrix('scale(1)'),
     round_error_ok: true },
   { start: 'none', end: 'rotatey(60deg)',
     expected_uncomputed: 'rotatey(15deg)',
     expected: computeMatrix('rotatey(15deg)') },
   { start: 'none', end: 'rotatey(720deg)',
     expected_uncomputed: 'rotatey(180deg)',
-    expected: computeMatrix('rotatey(180deg)'),
-    skipped: isServo },
+    expected: computeMatrix('rotatey(180deg)') },
   { start: 'none', end: 'rotatex(60deg)',
     expected_uncomputed: 'rotatex(15deg)',
     expected: computeMatrix('rotatex(15deg)') },
   { start: 'none', end: 'rotatex(720deg)',
     expected_uncomputed: 'rotatex(180deg)',
-    expected: computeMatrix('rotatex(180deg)'),
-    skipped: isServo },
+    expected: computeMatrix('rotatex(180deg)') },
 
   // translate
   { start: 'translate(20px)', end: 'none',
     expected_uncomputed: 'translate(15px)',
     expected: 'matrix(1, 0, 0, 1, 15, 0)' },
   { start: 'translate(20px, 12px)', end: 'none',
     expected_uncomputed: 'translate(15px, 9px)',
     expected: 'matrix(1, 0, 0, 1, 15, 9)' },
--- a/parser/html/moz.build
+++ b/parser/html/moz.build
@@ -94,12 +94,11 @@ UNIFIED_SOURCES += [
 FINAL_LIBRARY = 'xul'
 
 # DEFINES['ENABLE_VOID_MENUITEM'] = True
 
 LOCAL_INCLUDES += [
     '/dom/base',
 ]
 
-if CONFIG['GNU_CXX']:
-    CXXFLAGS += ['-Wno-error=shadow']
-    if CONFIG['CLANG_CXX']:
-        CXXFLAGS += ['-Wno-implicit-fallthrough']
+if CONFIG['GNU_CXX'] or CONFIG['CLANG_CXX']:
+    CXXFLAGS += ['-Wno-error=shadow',
+                 '-Wno-implicit-fallthrough']
--- a/security/manager/ssl/StaticHPKPins.h
+++ b/security/manager/ssl/StaticHPKPins.h
@@ -1135,9 +1135,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 = 479;
 
 static const int32_t kUnknownId = -1;
 
-static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1511629637049000);
+static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1511716026856000);
--- a/security/manager/ssl/nsSTSPreloadList.errors
+++ b/security/manager/ssl/nsSTSPreloadList.errors
@@ -50,16 +50,17 @@ 166166.com: could not connect to host
 16deza.com: did not receive HSTS header
 16packets.com: could not connect to host
 188betwarriors.co.uk: could not connect to host
 188trafalgar.ca: did not receive HSTS header
 195gm.com: could not connect to host
 1a-jva.de: could not connect to host
 1atic.com: could not connect to host
 1cover.com: could not connect to host
+1js.de: did not receive HSTS header
 1k8b.com: could not connect to host
 1password.com: did not receive HSTS header
 1s.tn: could not connect to host
 1stcapital.com.sg: did not receive HSTS header
 1xcess.com: did not receive HSTS header
 1years.cc: could not connect to host
 206rc.net: max-age too low: 2592000
 21.co.uk: did not receive HSTS header
@@ -80,28 +81,28 @@ 2ss.jp: could not connect to host
 300651.ru: did not receive HSTS header
 300m.com: did not receive HSTS header
 300mbmovies4u.cc: could not connect to host
 301.website: could not connect to host
 302.nyc: could not connect to host
 32ph.com: could not connect to host
 33drugstore.com: did not receive HSTS header
 341.com: max-age too low: 0
-341.mg: could not connect to host
+341.mg: did not receive HSTS header
 3555.com: max-age too low: 0
 3555aa.com: could not connect to host
 360gradus.com: did not receive HSTS header
-360live.fr: did not receive HSTS header
 365.or.jp: could not connect to host
 368mibn.com: could not connect to host
 3778.com: max-age too low: 0
 3778xl.com: did not receive HSTS header
 38sihu.com: could not connect to host
 39988.com: max-age too low: 0
 39sihu.com: could not connect to host
+3ags.de: did not receive HSTS header
 3chit.cf: could not connect to host
 3click-loan.com: could not connect to host
 3d-bastler.de: could not connect to host
 3dcart.com: did not receive HSTS header
 3delivered.com: could not connect to host
 3dproteinimaging.com: did not receive HSTS header
 3sreporting.com: did not receive HSTS header
 3yearloans.com: max-age too low: 0
@@ -118,16 +119,17 @@ 4cclothing.com: could not connect to hos
 4elements.com: did not receive HSTS header
 4eyes.ch: did not receive HSTS header
 4miners.net: could not connect to host
 4ourty2.org: did not receive HSTS header
 4sqsu.eu: could not connect to host
 4w-performers.link: could not connect to host
 507.net: max-age too low: 0
 50millionablaze.org: could not connect to host
+517vpn.cn: could not connect to host
 540.co: did not receive HSTS header
 54bf.com: could not connect to host
 56ct.com: could not connect to host
 5piecesofadvice.com: could not connect to host
 60ych.net: did not receive HSTS header
 6120.eu: did not receive HSTS header
 69square.com: could not connect to host
 721av.com: max-age too low: 2592000
@@ -359,16 +361,17 @@ alza.cz: did not receive HSTS header
 alza.de: did not receive HSTS header
 alza.hu: did not receive HSTS header
 alza.sk: did not receive HSTS header
 alzashop.com: did not receive HSTS header
 am8888.top: could not connect to host
 amandaonishi.com: could not connect to host
 amavis.org: did not receive HSTS header
 amcvega.com: did not receive HSTS header
+amerhd.com: did not receive HSTS header
 american-truck-simulator.de: could not connect to host
 american-truck-simulator.net: could not connect to host
 americanworkwear.nl: did not receive HSTS header
 amigogeek.net: could not connect to host
 amilx.com: could not connect to host
 amilx.org: could not connect to host
 amimoto-ami.com: max-age too low: 3153600
 amishsecurity.com: could not connect to host
@@ -450,16 +453,17 @@ aojf.fr: could not connect to host
 aozora.moe: could not connect to host
 apachelounge.com: did not receive HSTS header
 aparaatti.org: could not connect to host
 apeasternpower.com: could not connect to host
 api.mega.co.nz: could not connect to host
 apibot.de: could not connect to host
 apis.google.com: did not receive HSTS header (error ignored - included regardless)
 apis.world: could not connect to host
+apm.com.tw: did not receive HSTS header
 apmg-certified.com: did not receive HSTS header
 apmg-cyber.com: did not receive HSTS header
 apnakliyat.com: did not receive HSTS header
 apolloyl.com: could not connect to host
 aponkral.site: could not connect to host
 aponkralsunucu.com: could not connect to host
 aponow.de: did not receive HSTS header
 app-arena.com: did not receive HSTS header
@@ -483,16 +487,17 @@ aquilalab.com: could not connect to host
 arabdigitalexpression.org: did not receive HSTS header
 aradulconteaza.ro: could not connect to host
 aran.me.uk: could not connect to host
 arboineuropa.nl: did not receive HSTS header
 arboleda-hurtado.com: could not connect to host
 arbu.eu: max-age too low: 2419200
 arcbit.io: could not connect to host
 ardao.me: could not connect to host
+arewedubstepyet.com: could not connect to host
 argennon.xyz: could not connect to host
 argh.io: could not connect to host
 arguggi.co.uk: could not connect to host
 ariacreations.net: could not connect to host
 aristilabs.com: did not receive HSTS header
 arlen.io: could not connect to host
 arlen.se: could not connect to host
 armingrodon.de: max-age too low: 0
@@ -541,44 +546,43 @@ ask.pe: did not receive HSTS header
 askfit.cz: did not receive HSTS header
 asm-x.com: could not connect to host
 asmui.ga: could not connect to host
 asmui.ml: could not connect to host
 ass.org.au: did not receive HSTS header
 assekuranzjobs.de: could not connect to host
 asset-alive.com: did not receive HSTS header
 asset-alive.net: did not receive HSTS header
-asspinter.me: could not connect to host
 astrath.net: could not connect to host
 astrolpost.com: could not connect to host
 astromelody.com: did not receive HSTS header
 asuhe.cc: did not receive HSTS header
 asuhe.win: did not receive HSTS header
 atavio.at: could not connect to host
 atavio.ch: could not connect to host
 atavio.de: did not receive HSTS header
 atbeckett.com: did not receive HSTS header
 atcreform.gov: did not receive HSTS header
 atelier-rk.com: did not receive HSTS header
 athaliasoft.com: could not connect to host
 athenelive.com: could not connect to host
 athensbusinessresources.us: could not connect to host
 athul.xyz: could not connect to host
 atk.me: could not connect to host
-atlantis-kh.noip.me: could not connect to host
 atlex.nl: did not receive HSTS header
 atlseccon.com: did not receive HSTS header
 atomic.menu: could not connect to host
 atomik.pro: could not connect to host
 atop.io: could not connect to host
 attic118.com: could not connect to host
 attimidesigns.com: did not receive HSTS header
 attogproductions.com: could not connect to host
 au-pair24.de: did not receive HSTS header
 au.search.yahoo.com: max-age too low: 172800
+au2pb.net: could not connect to host
 aubiosales.com: could not connect to host
 aucubin.moe: could not connect to host
 audiolibri.org: did not receive HSTS header
 audiovisualdevices.com.au: did not receive HSTS header
 augias.org: could not connect to host
 aujapan.ru: could not connect to host
 aunali1.com: could not connect to host
 aurainfosec.com: did not receive HSTS header
@@ -596,30 +600,28 @@ authoritynutrition.com: did not receive 
 auto-serwis.zgorzelec.pl: did not receive HSTS header
 auto4trade.nl: could not connect to host
 autodeploy.it: could not connect to host
 autoeet.cz: did not receive HSTS header
 autoepc.ro: did not receive HSTS header
 autojuhos.sk: could not connect to host
 autokovrik-diskont.ru: did not receive HSTS header
 automobiles5.com: could not connect to host
-autos-retro-plaisir.com: 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
 auvernet.org: could not connect to host
 aux-arts-de-la-table.com: did not receive HSTS header
 auxiliumincrementum.co.uk: could not connect to host
 av.de: did not receive HSTS header
 avantmfg.com: did not receive HSTS header
 avec-ou-sans-ordonnance.fr: could not connect to host
 avepol.cz: did not receive HSTS header
 avepol.eu: did not receive HSTS header
 averysphotography.com: max-age too low: 84600
-avi9526.pp.ua: could not connect to host
 aviacao.pt: did not receive HSTS header
 avid.blue: could not connect to host
 avinet.com: max-age too low: 0
 aviodeals.com: could not connect to host
 avqueen.cn: did not receive HSTS header
 avus-automobile.com: did not receive HSTS header
 awanderlustadventure.com: did not receive HSTS header
 awg-mode.de: did not receive HSTS header
@@ -909,17 +911,16 @@ boomerang.com: did not receive HSTS head
 boosterlearnpro.com: did not receive HSTS header
 booth.in.th: did not receive HSTS header
 bootjp.me: did not receive HSTS header
 borchers-media.de: could not connect to host
 borderlinegroup.com: could not connect to host
 boringsecurity.net: could not connect to host
 boris.one: did not receive HSTS header
 borscheid-wenig.com: did not receive HSTS header
-bosun.io: 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
 boxintense.com: did not receive HSTS header
 bp-wahl.at: did not receive HSTS header
 bqtoolbox.com: could not connect to host
 bragasoft.com.br: did not receive HSTS header
@@ -930,20 +931,18 @@ braintreegateway.com: did not receive HS
 braintreepayments.com: did not receive HSTS header
 brainvation.de: did not receive HSTS header
 bran.cc: could not connect to host
 branchtrack.com: did not receive HSTS header
 brandnewdays.nl: could not connect to host
 brandon.so: could not connect to host
 brandred.net: could not connect to host
 brandspray.com: could not connect to host
-brasal.ma: could not connect to host
-brasalcosmetics.com: could not connect to host
+bratteng.xyz: could not connect to host
 bravz.de: could not connect to host
-bredvid.no: did not receive HSTS header
 bregnedalsystems.dk: did not receive HSTS header
 bremensaki.com: max-age too low: 2592000
 brickoo.com: could not connect to host
 brickyardbuffalo.com: did not receive HSTS header
 bridholm.se: could not connect to host
 brightstarkids.com.au: did not receive HSTS header
 brilliantbuilders.co.uk: did not receive HSTS header
 britzer-toner.de: did not receive HSTS header
@@ -969,32 +968,32 @@ bubulazi.com: did not receive HSTS heade
 bubulazy.com: did not receive HSTS header
 buch-cuber.de: 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
 buenosairesestetica.com.ar: could not connect to host
 buero-stempel.de: max-age too low: 86400
-buffaloautomation.com: could not connect to host
 bugtrack.io: could not connect to host
 buhler.pro: did not receive HSTS header
 build.chromium.org: did not receive HSTS header (error ignored - included regardless)
 buildci.asia: could not connect to host
 buildify.co.za: could not connect to host
 buildingclouds.at: did not receive HSTS header
 buildingclouds.ch: did not receive HSTS header
 buildingclouds.de: did not receive HSTS header
 buildingclouds.es: did not receive HSTS header
 buildingclouds.eu: did not receive HSTS header
 buildingclouds.fr: did not receive HSTS header
 buildsaver.co.za: did not receive HSTS header
 built.by: did not receive HSTS header
 bukatv.cz: could not connect to host
 bulkbuy.tech: could not connect to host
+bullbits.com: could not connect to host
 bulletpoint.cz: could not connect to host
 bullterrier.me: could not connect to host
 bulmafox.com: could not connect to host
 bunaken.asia: did not receive HSTS header
 bunbomenu.de: could not connect to host
 bunsenlabs.org: max-age too low: 259200
 bupu.ml: could not connect to host
 burian-server.cz: could not connect to host
@@ -1159,16 +1158,17 @@ centillien.com: did not receive HSTS hea
 centralpoint.be: did not receive HSTS header
 centralpoint.nl: did not receive HSTS header
 centralvacsunlimited.net: could not connect to host
 centrepoint-community.com: could not connect to host
 centsforchange.net: did not receive HSTS header
 ceritamalam.net: could not connect to host
 cerize.love: could not connect to host
 cert.se: max-age too low: 2628001
+certifi.io: could not connect to host
 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
 cfoitplaybook.com: could not connect to host
 cg.search.yahoo.com: did not receive HSTS header
@@ -1337,20 +1337,20 @@ codeco.pw: could not connect to host
 codecontrollers.de: could not connect to host
 codeforce.io: could not connect to host
 codeforhakodate.org: did not receive HSTS header
 codelayer.ca: could not connect to host
 codelitmus.com: did not receive HSTS header
 codemonkeyrawks.net: could not connect to host
 codenlife.xyz: could not connect to host
 codepoet.de: could not connect to host
-codepult.com: could not connect to host
 codepx.com: did not receive HSTS header
 codewiththepros.org: could not connect to host
 codiva.io: max-age too low: 2592000
+codymoniz.com: did not receive HSTS header
 coffeeetc.co.uk: max-age too low: 7776000
 coffeestrategies.com: max-age too low: 0
 cohesive.io: did not receive HSTS header
 coiffeurschnittstelle.ch: did not receive HSTS header
 coincoin.eu.org: could not connect to host
 coindam.com: could not connect to host
 coldhak.ca: could not connect to host
 coldlostsick.net: could not connect to host
@@ -1381,16 +1381,17 @@ compartir.party: did not receive HSTS he
 compassionate-biology.com: could not connect to host
 compiledworks.com: could not connect to host
 completeid.com: max-age too low: 86400
 completionist.audio: could not connect to host
 complymd.com: did not receive HSTS header
 compraneta.com: did not receive HSTS header
 compucorner.com.mx: could not connect to host
 computeremergency.com.au: did not receive HSTS header
+computerhilfe-feucht.de: could not connect to host
 computersystems.guru: did not receive HSTS header
 computertal.de: could not connect to host
 conception.sk: could not connect to host
 concord-group.co.jp: did not receive HSTS header
 confirm365.com: could not connect to host
 conformal.com: could not connect to host
 congz.me: could not connect to host
 conjugacao.com.br: did not receive HSTS header
@@ -1490,30 +1491,31 @@ cryptobin.org: could not connect to host
 cryptodash.net: could not connect to host
 cryptojar.io: did not receive HSTS header
 cryptolab.pro: did not receive HSTS header
 cryptolab.tk: could not connect to host
 cryptonit.net: did not receive HSTS header
 cryptopartyatx.org: could not connect to host
 cryptophobia.nl: did not receive HSTS header
 cryptopush.com: did not receive HSTS header
-crysadm.com: could not connect to host
+crysadm.com: max-age too low: 1
 crystalclassics.co.uk: did not receive HSTS header
 cs-ubladego.pl: could not connect to host
 csapak.com: did not receive HSTS header
 csawctf.poly.edu: could not connect to host
 csfs.org.uk: could not connect to host
 csgf.ru: did not receive HSTS header
 csgodicegame.com: did not receive HSTS header
 csgoelemental.com: could not connect to host
 csgokings.eu: could not connect to host
 csgoshifter.com: could not connect to host
 cshopify.com: could not connect to host
 csohack.tk: could not connect to host
 cspbuilder.info: could not connect to host
+cspvalidator.org: could not connect to host
 csru.net: did not receive HSTS header
 cssu.in: did not receive HSTS header
 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
 cubela.tech: could not connect to host
 cubeserver.eu: could not connect to host
@@ -1550,16 +1552,17 @@ cyphertite.com: could not connect to hos
 cytadel.fr: did not receive HSTS header
 cyyzaid.cn: could not connect to host
 d-rickroll-e.pw: could not connect to host
 d0xq.net: could not connect to host
 d4rkdeagle.tk: could not connect to host
 dabbot.org: could not connect to host
 dad256.tk: could not connect to host
 dadtheimpaler.com: could not connect to host
+daemon.xin: could not connect to host
 dah5.com: did not receive HSTS header
 dahl-pind.dk: could not connect to host
 dai-rin.co.jp: could not connect to host
 dailybits.be: did not receive HSTS header
 dailystormerpodcasts.com: could not connect to host
 daimadi.com: could not connect to host
 daisuki.pw: could not connect to host
 dakerealestate.com: did not receive HSTS header
@@ -1582,17 +1585,16 @@ danijobs.com: could not connect to host
 danishenanigans.com: could not connect to host
 dankeblog.com: could not connect to host
 dannycrichton.com: did not receive HSTS header
 danrl.de: could not connect to host
 danwillenberg.com: did not receive HSTS header
 daolerp.xyz: could not connect to host
 daplie.com: did not receive HSTS header
 dargasia.is: could not connect to host
-darinkotter.com: could not connect to host
 dario.im: could not connect to host
 dark-x.cf: could not connect to host
 darkanzali.pl: max-age too low: 0
 darkengine.io: could not connect to host
 darkfriday.ddns.net: could not connect to host
 darkhole.cn: did not receive HSTS header
 darkkeepers.dk: did not receive HSTS header
 darknebula.space: could not connect to host
@@ -1655,17 +1657,16 @@ deetz.nl: did not receive HSTS header
 deetzen.de: did not receive HSTS header
 defcon.org: did not receive HSTS header
 defiler.tk: could not connect to host
 degroetenvanrosaline.nl: did not receive HSTS header
 deight.co: could not connect to host
 deinserverhost.de: did not receive HSTS header
 dekasan.ru: could not connect to host
 delayrefunds.co.uk: could not connect to host
-delbrouck.ch: did not receive HSTS header
 deliverance.co.uk: could not connect to host
 deltaconcepts.de: did not receive HSTS header
 deltanet-production.de: max-age too low: 0
 delvj.org: could not connect to host
 demdis.org: could not connect to host
 demilitarized.ninja: could not connect to host
 demo.swedbank.se: did not receive HSTS header
 demomanca.com: did not receive HSTS header
@@ -1700,54 +1701,57 @@ detutorial.com: max-age too low: 0
 deuxvia.com: could not connect to host
 dev-aegon.azurewebsites.net: did not receive HSTS header
 devafterdark.com: could not connect to host
 devalps.eu: could not connect to host
 devcu.com: could not connect to host
 devcu.net: could not connect to host
 develop.cool: could not connect to host
 develop.fitness: could not connect to host
+developersclub.website: did not receive HSTS header
 devincrow.me: could not connect to host
 devisonline.ch: could not connect to host
 devmsg.com: did not receive HSTS header
 devnsec.com: could not connect to host
 devnull.team: could not connect to host
 devopps.me: did not receive HSTS header
 devopsconnected.com: could not connect to host
 devtub.com: did not receive HSTS header
 devuan.org: did not receive HSTS header
 dewin.io: could not connect to host
 dfviana.com.br: max-age too low: 2592000
 dhpcs.com: did not receive HSTS header
 dhpiggott.net: did not receive HSTS header
 diablotine.rocks: could not connect to host
+diagnosia.com: could not connect to host
 dianlujitao.com: did not receive HSTS header
 diannaobos.com: did not receive HSTS header
 diarbag.us: max-age too low: 0
 dicando.com: max-age too low: 2592000
 dicelab.co.uk: could not connect to host
+dicgaming.net: could not connect to host
 dicionariofinanceiro.com: did not receive HSTS header
 didierlaumen.be: could not connect to host
 dierenkruiden.nl: could not connect to host
 dietrich-spielwaren.de: max-age too low: 86400
 diewebstube.de: could not connect to host
 diezel.com: could not connect to host
 diferenca.com: did not receive HSTS header
 digital.gov: could not connect to host
 digitalbank.kz: could not connect to host
 digitaldaddy.net: could not connect to host
 digitalero.rip: did not receive HSTS header
+digitalewelten.de: could not connect to host
 digitalnonplus.com: could not connect to host
 digitalriver.tk: could not connect to host
 digitalskillswap.com: could not connect to host
 dim.lighting: could not connect to host
 dinamoelektrik.com: could not connect to host
 dingcc.me: could not connect to host
 dinkum.online: could not connect to host
-diodo.me: could not connect to host
 dipconsultants.com: could not connect to host
 directhskincream.com: could not connect to host
 directorinegocis.cat: could not connect to host
 dirk-weise.de: could not connect to host
 discoveringdocker.com: could not connect to host
 discovery.lookout.com: did not receive HSTS header
 dise-online.de: did not receive HSTS header
 dislocated.de: did not receive HSTS header
@@ -1799,17 +1803,17 @@ dohosting.ru: could not connect to host
 dojin.nagoya: could not connect to host
 dokan.online: did not receive HSTS header
 doked.io: could not connect to host
 dolevik.com: could not connect to host
 dollarstore24.com: could not connect to host
 dollywiki.co.uk: could not connect to host
 dolphin-cloud.com: could not connect to host
 dolphincorp.co.uk: did not receive HSTS header
-dolphinswithlasers.com: could not connect to host
+dolphinswithlasers.com: did not receive HSTS header
 domaine-aigoual-cevennes.com: did not receive HSTS header
 domaris.de: could not connect to host
 domenicocatelli.com: could not connect to host
 dominicpratt.de: max-age too low: 600000
 dominioanimal.com: could not connect to host
 dominique-mueller.de: did not receive HSTS header
 don.yokohama: could not connect to host
 donmez.uk: could not connect to host
@@ -1851,22 +1855,22 @@ drakefortreasurer.sexy: could not connec
 draw.uy: could not connect to host
 drdevil.ru: could not connect to host
 dreadbyte.com: could not connect to host
 dreamcatcherblog.de: could not connect to host
 dreamlighteyeserum.com: could not connect to host
 dreamsforabetterworld.com.au: did not receive HSTS header
 dreid.org: did not receive HSTS header
 drewgle.net: could not connect to host
-drgn.no: did not receive HSTS header
 drhopeson.com: could not connect to host
 drinknaturespower.com: could not connect to host
 drishti.guru: could not connect to host
 droidboss.com: did not receive HSTS header
 droncentrum.pl: could not connect to host
+dronexpertos.com: could not connect to host
 droomhuis-in-brielle-kopen.nl: could not connect to host
 droomhuis-in-de-friese-meren-kopen.nl: could not connect to host
 droomhuis-in-delfzijl-kopen.nl: could not connect to host
 droomhuis-in-friesland-kopen.nl: could not connect to host
 droomhuis-in-laren-kopen.nl: could not connect to host
 droomhuis-in-pekela-kopen.nl: could not connect to host
 droomhuis-in-rijnwaarden-kopen.nl: could not connect to host
 droomhuis-in-sudwest-fryslan-kopen.nl: could not connect to host
@@ -1874,17 +1878,16 @@ droomhuis-in-veendam-kopen.nl: could not
 droomhuis-in-zeeland-kopen.nl: could not connect to host
 droomhuisindestadverkopen.nl: could not connect to host
 droomhuisophetplattelandverkopen.nl: could not connect to host
 dropcam.com: did not receive HSTS header
 drtroyhendrickson.com: could not connect to host
 drtti.io: could not connect to host
 drumbandesperanto.nl: did not receive HSTS header
 drupal123.com: did not receive HSTS header
-drycreekapiary.com: did not receive HSTS header
 ds-christiansen.de: could not connect to host
 dshiv.io: could not connect to host
 dtub.co: could not connect to host
 dualias.xyz: could not connect to host
 dubik.su: did not receive HSTS header
 dubrovskiy.net: could not connect to host
 dubrovskiy.pro: could not connect to host
 duerls.de: did not receive HSTS header
@@ -1958,17 +1961,16 @@ eden-noel.at: could not connect to host
 edenaya.com: could not connect to host
 edgereinvent.com: did not receive HSTS header
 ediscomp.sk: did not receive HSTS header
 edissecurity.sk: did not receive HSTS header
 edix.ru: could not connect to host
 edk.com.tr: did not receive HSTS header
 edmodo.com: did not receive HSTS header
 educatio.tech: could not connect to host
-eduif.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 119"  data: no]
 eduroam.no: did not receive HSTS header
 eduvance.in: did not receive HSTS header
 eengezinswoning-in-alphen-aan-den-rijn-kopen.nl: could not connect to host
 eengezinswoning-in-de-friese-meren-kopen.nl: could not connect to host
 eengezinswoning-in-friesland-kopen.nl: could not connect to host
 eengezinswoning-in-leeuwarden-kopen.nl: could not connect to host
 eengezinswoning-in-pekela-kopen.nl: could not connect to host
 eengezinswoning-in-rijnwaarden-kopen.nl: could not connect to host
@@ -1990,16 +1992,17 @@ ego-world.org: could not connect to host
 ehealthcounselor.com: could not connect to host
 ehipaadev.com: could not connect to host
 ehito.ovh: could not connect to host
 ehrenamt-skpfcw.de: could not connect to host
 eicfood.com: could not connect to host
 eidolonhost.com: did not receive HSTS header
 eigo.work: did not receive HSTS header
 einhorn.space: could not connect to host
+einsatzstellenverwaltung.de: could not connect to host
 eit-web.de: could not connect to host
 ekbanden.nl: could not connect to host
 eksik.com: could not connect to host
 elaintehtaat.fi: did not receive HSTS header
 elan-organics.com: did not receive HSTS header
 elanguest.pl: could not connect to host
 elanguest.ro: could not connect to host
 elanguest.ru: could not connect to host
@@ -2011,17 +2014,16 @@ electricoperaduo.com: could not connect 
 electromc.com: could not connect to host
 elektronring.com: could not connect to host
 elemenx.com: did not receive HSTS header
 elemprendedor.com.ve: did not receive HSTS header
 elenag.ga: could not connect to host
 elenoon.ir: did not receive HSTS header
 elgacien.de: could not connect to host
 elimdengelen.com: did not receive HSTS header
-elinvention.ovh: could not connect to host
 elite-porno.ru: could not connect to host
 elitefishtank.com: could not connect to host
 elnutricionista.es: did not receive HSTS header
 eloanpersonal.com: max-age too low: 0
 elohna.ch: did not receive HSTS header
 elonbase.com: could not connect to host
 elpo.xyz: could not connect to host
 elsamakhin.com: could not connect to host
@@ -2090,16 +2092,17 @@ epicpages.com: could not connect to host
 epoxate.com: could not connect to host
 eq8.net.au: could not connect to host
 eqim.me: could not connect to host
 equate.net.au: did not receive HSTS header
 equatetechnologies.com.au: did not receive HSTS header
 equilibre-yoga-jennifer-will.com: could not connect to host
 erawanarifnugroho.com: did not receive HSTS header
 eressea.xyz: could not connect to host
+ergo-open.de: could not connect to host
 ergorium.com: did not receive HSTS header
 ergorium.eu: did not receive HSTS header
 ericbond.net: could not connect to host
 erichalv.com: could not connect to host
 ericyl.com: could not connect to host
 erikwalther.eu: could not connect to host
 eriser.fr: could not connect to host
 ernaehrungsberatung-zurich.ch: could not connect to host
@@ -2107,17 +2110,16 @@ 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
 errolz.com: could not connect to host
 errors.zenpayroll.com: could not connect to host
 ersindemirtas.com: did not receive HSTS header
 eru.me: did not receive HSTS header
-esc.chat: could not connect to host
 escalate.eu: could not connect to host
 escargotbistro.com: could not connect to host
 escotour.com: could not connect to host
 esec.rs: did not receive HSTS header
 esko.bar: could not connect to host
 esln.org: did not receive HSTS header
 esn-ypci.com: could not connect to host
 esocweb.com: could not connect to host
@@ -2130,17 +2132,16 @@ essexghosthunters.co.uk: did not receive
 estaciona.guru: could not connect to host
 estebanborges.com: did not receive HSTS header
 estilosapeca.com: could not connect to host
 estoic.net: could not connect to host
 et-buchholz.de: could not connect to host
 et180.com: could not connect to host
 etangs-magazine.com: could not connect to host
 etaoinwu.tk: could not connect to host
-etath.com: did not receive HSTS header
 etdonline.co.uk: could not connect to host
 eternitylove.us: could not connect to host
 eth9.net: could not connect to host
 ethanfaust.com: could not connect to host
 ethicalexploiting.com: could not connect to host
 ethicall.org.uk: did not receive HSTS header
 ethil-faer.fr: did not receive HSTS header
 ethlan.fr: max-age too low: 0
@@ -2163,16 +2164,17 @@ euren.se: could not connect to host
 eurocamping.se: could not connect to host
 euroshop24.net: could not connect to host
 eurotime.ua: did not receive HSTS header
 evafojtova.cz: did not receive HSTS header
 evanhandgraaf.nl: did not receive HSTS header
 evdenevenakliyatankara.pw: could not connect to host
 events12.com: did not receive HSTS header
 everybooks.com: could not connect to host
+everygayporn.com: could not connect to host
 everylab.org: could not connect to host
 everything.place: could not connect to host
 evi.be: did not receive HSTS header
 evilnerd.de: did not receive HSTS header
 evilsay.com: could not connect to host
 evin.ml: could not connect to host
 evites.me: could not connect to host
 evomon.com: could not connect to host
@@ -2184,21 +2186,21 @@ ewuchuan.com: could not connect to host
 exceed.global: could not connect to host
 excelgum.ca: did not receive HSTS header
 exceptionalservers.com: could not connect to host
 exfiles.cz: did not receive HSTS header
 exgravitus.com: could not connect to host
 exitus.jp: max-age too low: 0
 exno.co: could not connect to host
 exousiakaidunamis.xyz: could not connect to host
+exp.de: could not connect to host
 expertmile.com: did not receive HSTS header
 expo-designers.com: did not receive HSTS header
 expoundite.net: did not receive HSTS header
 expressfinance.co.za: did not receive HSTS header
-extendwings.com: could not connect to host
 extrathemeshowcase.net: could not connect to host
 extratorrentlive.xyz: could not connect to host
 extratorrents.tech: could not connect to host
 extreemhost.nl: did not receive HSTS header
 extremenetworking.net: could not connect to host
 exy.pw: could not connect to host
 exyplis.com: did not receive HSTS header
 eyasc.nl: could not connect to host
@@ -2209,17 +2211,16 @@ ez.fi: could not connect to host
 ezimoeko.net: could not connect to host
 ezmod.org: could not connect to host
 ezrefurb.co.uk: did not receive HSTS header
 eztv.ch: did not receive HSTS header
 f-rickroll-g.pw: could not connect to host
 f-s-u.co.uk: could not connect to host
 f00.ca: did not receive HSTS header
 f2f.cash: could not connect to host
-f5movies.top: could not connect to host
 faber.io: could not connect to host
 fabhub.io: could not connect to host
 fabianfischer.de: did not receive HSTS header
 facebook.ax: could not connect to host
 factorable.net: did not receive HSTS header
 factorygw.com: did not receive HSTS header
 fadilus.com: did not receive HSTS header
 fads-center.online: could not connect to host
@@ -2298,16 +2299,17 @@ fikt.space: could not connect to host
 filemeal.com: did not receive HSTS header
 filey.co.uk: did not receive HSTS header
 filmesubtitrate2017.online: did not receive HSTS header
 filmipop.com: max-age too low: 0
 finalgear.com: did not receive HSTS header
 financieringsportaal.nl: did not receive HSTS header
 finanzkontor.net: could not connect to host
 findigo.fish: could not connect to host
+findingmyname.com: did not receive HSTS header
 findtutorsnearme.com: did not receive HSTS header
 finfev.de: could not connect to host
 finiteheap.com: did not receive HSTS header
 finpt.com: did not receive HSTS header
 fiodental.com.br: did not receive HSTS header
 firebaseio-demo.com: could not connect to host
 firebaseio.com: could not connect to host (error ignored - included regardless)
 firebird.io: max-age too low: 0
@@ -2341,32 +2343,31 @@ flawcheck.com: could not connect to host
 fliexer.com: could not connect to host
 flipkey.com: did not receive HSTS header
 flirchi.com: did not receive HSTS header
 floless.co.uk: did not receive HSTS header
 florafiora.com.br: did not receive HSTS header
 florian-lillpopp.de: max-age too low: 10
 florianlillpopp.de: max-age too low: 10
 floridaescapes.co.uk: did not receive HSTS header
+florismouwen.com: did not receive HSTS header
 florispoort.nl: did not receive HSTS header
 flouartistique.ch: could not connect to host
 flow.pe: could not connect to host
 flow.su: could not connect to host
 flowersandclouds.com: could not connect to host
 floweslawncare.com: did not receive HSTS header
 flowlo.me: could not connect to host
 flucke-creation.ch: max-age too low: 1209600
 flucke-creation.com: max-age too low: 1209600
 fluidojobs.com: could not connect to host
 flukethoughts.com: could not connect to host
 flurrybridge.com: did not receive HSTS header
 flushstudios.com: did not receive HSTS header
-fluxfingers.net: could not connect to host
 flyaces.com: did not receive HSTS header
-flyss.net: did not receive HSTS header
 fm83.nl: could not connect to host
 fmi.gov: did not receive HSTS header
 fnvsecurity.com: could not connect to host
 fojtova.cz: did not receive HSTS header
 fojtovi.cz: did not receive HSTS header
 fonetiq.io: could not connect to host
 food4health.guide: could not connect to host
 foodbuddy.ch: could not connect to host
@@ -2414,17 +2415,17 @@ frasys.net: could not connect to host
 frau-inge.de: could not connect to host
 fraudempire.com: could not connect to host
 fraurichter.net: could not connect to host
 freeflow.tv: could not connect to host
 freelanced.co.za: could not connect to host
 freelo.cz: did not receive HSTS header
 freematthale.net: did not receive HSTS header
 freenetproject.org: did not receive HSTS header
-freesoftwaredriver.com: did not receive HSTS header
+freesoftwaredriver.com: could not connect to host
 freethought.org.au: could not connect to host
 freeutopia.org: did not receive HSTS header
 frenzel.dk: could not connect to host
 freqlabs.com: did not receive HSTS header
 freshfind.xyz: could not connect to host
 freshlymind.com: did not receive HSTS header
 frezbo.com: could not connect to host
 frforms.com: did not receive HSTS header
@@ -2436,21 +2437,22 @@ front-end.dog: could not connect to host
 frontisme.nl: could not connect to host
 frontmin.com: did not receive HSTS header
 frost-ci.xyz: could not connect to host
 froxlor.support: max-age too low: 0
 frsis2017.com: could not connect to host
 frugro.be: did not receive HSTS header
 fruitusers.com: could not connect to host
 frumious.fyi: could not connect to host
-frusky.net: did not receive HSTS header
+frusky.net: could not connect to host
 fsinf.at: did not receive HSTS header
 fspphoto.com: could not connect to host
 fstfy.de: could not connect to host
 ftctele.com: could not connect to host
+ftpi.ml: could not connect to host
 fuckgfw233.org: could not connect to host
 fukushima-web.com: did not receive HSTS header
 fulilingyu.info: could not connect to host
 fullyint.com: max-age too low: 0
 fullytrained.co.uk: did not receive HSTS header
 fun-stamps.de: max-age too low: 86400
 fun-stempel.de: max-age too low: 86400
 fundacionhijosdelsol.org: could not connect to host
@@ -2547,16 +2549,17 @@ gearev.net: could not connect to host
 gebn.co.uk: did not receive HSTS header
 gebn.uk: could not connect to host
 gedankenbude.info: could not connect to host
 geekcast.co.uk: did not receive HSTS header
 geeks.lgbt: did not receive HSTS header
 geeky.software: could not connect to host
 geemo.top: could not connect to host
 geeq.ch: could not connect to host
+gehaowu.com: could not connect to host
 geli-graphics.com: did not receive HSTS header
 genesischangelog.com: did not receive HSTS header
 genshiken.org: could not connect to host
 gensonline.eu: could not connect to host
 genuu.com: could not connect to host
 genuxation.com: could not connect to host
 genyaa.com: could not connect to host
 genyhitch.com: did not receive HSTS header
@@ -2632,16 +2635,17 @@ gistfy.com: could not connect to host
 git-stuff.tk: could not connect to host
 github.party: did not receive HSTS header
 givemyanswer.com: could not connect to host
 gizzo.sk: could not connect to host
 gl.search.yahoo.com: did not receive HSTS header
 glass.google.com: did not receive HSTS header (error ignored - included regardless)
 glasslikes.com: did not receive HSTS header
 glentakahashi.com: max-age too low: 0
+glitchsys.com: could not connect to host
 glitzmirror.com: could not connect to host
 global-adult-webcams.com: did not receive HSTS header
 globalado.com: could not connect to host
 globalbridge-japan.com: did not receive HSTS header
 globalchat.pk: could not connect to host
 globalexpert.co.nz: could not connect to host
 globalinsights.xyz: could not connect to host
 globalittech.com: could not connect to host
@@ -2735,18 +2739,16 @@ greatsong.net: did not receive HSTS head
 greencardtalent.com: could not connect to host
 greenesting.ch: could not connect to host
 greenesting.com: could not connect to host
 greenhillantiques.co.uk: did not receive HSTS header
 greenroach.ru: could not connect to host
 greenvines.com.tw: did not receive HSTS header
 greenvpn.ltd: could not connect to host
 greg.red: could not connect to host
-gregmilton.com: could not connect to host
-gregmilton.org: could not connect to host
 gregorytlee.me: could not connect to host
 gremots.com: could not connect to host
 greplin.com: could not connect to host
 gresb.com: did not receive HSTS header
 gretchelizartistry.com: did not receive HSTS header
 grevesgarten.de: could not connect to host
 greyline.se: could not connect to host
 gribani.com: could not connect to host
@@ -2941,23 +2943,25 @@ heimnetze.org: could not connect to host
 helencrump.co.uk: did not receive HSTS header
 helloworldhost.com: did not receive HSTS header
 helpadmin.net: could not connect to host
 helpium.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 119"  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
-hentai.design: could not connect to host
 hepteract.us: did not receive HSTS header
+herbandpat.org: could not connect to host
+herbertmouwen.nl: could not connect to host
 heritagedentistry.ca: did not receive HSTS header
 herpaderp.net: could not connect to host
 herrenfahrt.com: did not receive HSTS header
 herzbotschaft.de: did not receive HSTS header
 heutger.net: did not receive HSTS header
+heyfringe.com: could not connect to host
 heyguevara.com: could not connect to host
 heywoodtown.co.uk: could not connect to host
 hfi.me: did not receive HSTS header
 hibilog.com: could not connect to host
 hicn.gq: could not connect to host
 hiddendepth.ie: max-age too low: 0
 hiddenmail.xyz: could not connect to host
 hiddenrefuge.eu.org: could not connect to host
@@ -3017,17 +3021,16 @@ horza.org: could not connect to host
 hostam.link: could not connect to host
 hostanalyticsconsulting.com: could not connect to host
 hosteasy.nl: did not receive HSTS header
 hostedtalkgadget.google.com: did not receive HSTS header (error ignored - included regardless)
 hostelite.com: did not receive HSTS header
 hostgarou.com: did not receive HSTS header
 hostinaus.com.au: did not receive HSTS header
 hostingactive.it: did not receive HSTS header
-hostingfirst.nl: did not receive HSTS header
 hostingfj.com: did not receive HSTS header
 hostisan.com: did not receive HSTS header
 hotartup.com: could not connect to host
 hotchillibox.co.za: could not connect to host
 hotchillibox.com: max-age too low: 0
 hotchoc.io: did not receive HSTS header
 hotelvictoriaoax-mailing.com: did not receive HSTS header
 hotelvillahermosa-mailing.com: did not receive HSTS header
@@ -3107,17 +3110,17 @@ icq-project.net: could not connect to ho
 icreative.nl: did not receive HSTS header
 ictual.com: max-age too low: 0
 id-co.in: could not connect to host
 id-conf.com: did not receive HSTS header
 idacmedia.com: max-age too low: 5184000
 ideadozz.hu: could not connect to host
 ideal-envelopes.co.uk: did not receive HSTS header
 idealmykonos.com: did not receive HSTS header
-ideaplus.me: did not receive HSTS header
+ideaplus.me: could not connect to host
 ideasmeetingpoint.com: could not connect to host
 ideation-inc.co.jp: could not connect to host
 idecode.net: could not connect to host
 idedr.com: could not connect to host
 identitylabs.uk: could not connect to host
 idgsupply.com: did not receive HSTS header
 idinby.dk: did not receive HSTS header
 idisplay.es: did not receive HSTS header
@@ -3133,16 +3136,17 @@ ifleurs.com: could not connect to host
 ifx.ee: could not connect to host
 igforums.com: could not connect to host
 igiftcards.nl: did not receive HSTS header
 ignace72.eu: could not connect to host
 ignatisd.gr: did not receive HSTS header
 ignatovich.by: could not connect to host
 ignatovich.me: could not connect to host
 igule.net: could not connect to host
+ihostup.net: could not connect to host
 ihrlotto.de: could not connect to host
 ihrnationalrat.ch: could not connect to host
 ihsbsd.me: could not connect to host
 ihsbsd.tk: could not connect to host
 iispeed.com: did not receive HSTS header
 ikujii.com: max-age too low: 0
 ikwilguidobellen.nl: could not connect to host
 ilbuongiorno.it: did not receive HSTS header
@@ -3261,16 +3265,17 @@ intim-uslugi-kazan.net: could not connec
 intimateperrierjouet.com: could not connect to host
 intimtoy.com.ua: could not connect to host
 intranetsec.fr: 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
 invictusmc.uk: could not connect to host
 invite24.pro: could not connect to host
+ioiart.eu: could not connect to host
 iolife.dk: could not connect to host
 ionas-law.ro: did not receive HSTS header
 ionx.co.uk: did not receive HSTS header
 ioover.net: could not connect to host
 iop.intuit.com: max-age too low: 86400
 iora.fr: could not connect to host
 iosmods.com: did not receive HSTS header
 iostips.ru: could not connect to host
@@ -3358,23 +3363,25 @@ ixec2.tk: could not connect to host
 izdiwho.com: could not connect to host
 izolight.ch: could not connect to host
 izoox.com: did not receive HSTS header
 izzzorgconcerten.nl: could not connect to host
 j-lsolutions.com: could not connect to host
 j-rickroll-a.pw: could not connect to host
 j15t98j.co.uk: did not receive HSTS header
 ja-publications.com: did not receive HSTS header
+jaalits.com: could not connect to host
 jabbari.io: did not receive HSTS header
 jackalworks.com: could not connect to host
 jackfahnestock.com: could not connect to host
 jacobparry.ca: did not receive HSTS header
 jadefalcons.de: could not connect to host
 jagido.de: did not receive HSTS header
 jahliveradio.com: could not connect to host
+jake.ml: could not connect to host
 jaksel.id: could not connect to host
 jaksi.io: could not connect to host
 jamanji.com.ng: could not connect to host
 james.je: could not connect to host
 jamesandpame.la: could not connect to host
 jamesburton.london: could not connect to host
 jamesbywater.co.uk: could not connect to host
 jamesbywater.com: could not connect to host
@@ -3422,17 +3429,16 @@ jayshao.com: did not receive HSTS header
 jbfp.dk: could not connect to host
 jbn.mx: could not connect to host
 jcch.de: could not connect to host
 jcf-office.com: did not receive HSTS header
 jcor.me: did not receive HSTS header
 jcoscia.com: could not connect to host
 jctf.io: could not connect to host
 jdav-leipzig.de: could not connect to host
-jdcdirectsales.com.ph: did not receive HSTS header
 jebengotai.com: did not receive HSTS header
 jedentageinegutetarte.de: max-age too low: 86400
 jeff393.com: could not connect to host
 jellow.nl: did not receive HSTS header
 jenjoit.de: could not connect to host
 jensenbanden.no: could not connect to host
 jeremiahbenes.com: did not receive HSTS header
 jeremye77.com: did not receive HSTS header
@@ -3462,34 +3468,36 @@ jimas.eu: did not receive HSTS header
 jimgao.tk: did not receive HSTS header
 jimmehcai.com: could not connect to host
 jimmycai.org: could not connect to host
 jingyuesi.com: could not connect to host
 jinshavip.com: did not receive HSTS header
 jirav.io: could not connect to host
 jitsi.org: did not receive HSTS header
 jiyue.com: could not connect to host
+jiyuu-ni.com: could not connect to host
+jiyuu-ni.net: could not connect to host
 jkb.pics: could not connect to host
 jkbuster.com: could not connect to host
 jko.works: could not connect to host
 jmdekker.it: could not connect to host
-jmk.hu: could not connect to host
+jmedved.com: did not receive HSTS header
+jmk.hu: did not receive HSTS header
 joakimalgroy.com: could not connect to host
 job-offer.de: did not receive HSTS header
 jobmedic.com: did not receive HSTS header
 jobshq.com: did not receive HSTS header
 jobss.co.uk: did not receive HSTS header
 joedavison.me: could not connect to host
 johannes-sprink.de: could not connect to host
 johnbrownphotography.ch: did not receive HSTS header
 johners.me: could not connect to host
 johnhgaunt.com: did not receive HSTS header
 johnrom.com: did not receive HSTS header
 jointoweb.com: could not connect to host
-jonarcher.info: could not connect to host
 jonas-keidel.de: did not receive HSTS header
 jonasgroth.se: did not receive HSTS header
 jonathan.ir: could not connect to host
 jonfor.net: could not connect to host
 jongha.me: could not connect to host
 jonn.me: could not connect to host
 jonnichols.info: did not receive HSTS header
 joostbovee.nl: did not receive HSTS header
@@ -3511,16 +3519,17 @@ jrmd.io: could not connect to host
 jrvar.com: could not connect to host
 jsanders.us: did not receive HSTS header
 jsg-technologies.de: did not receive HSTS header
 jtwp470.net: did not receive HSTS header
 jualautoclave.com: did not receive HSTS header
 jualssh.com: could not connect to host
 juka.pp.ua: did not receive HSTS header
 julian-kipka.de: could not connect to host
+julian-witusch.de: could not connect to host
 julido.de: did not receive HSTS header
 jumbox.xyz: could not connect to host
 jumbster.com: max-age too low: 2592000
 jumping-duck.com: could not connect to host
 junaos.com: did not receive HSTS header
 junaos.xyz: did not receive HSTS header
 junge-selbsthilfe.info: could not connect to host
 junglegoat.xyz: did not receive HSTS header
@@ -3549,17 +3558,16 @@ 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
 kaiyuewu.com: could not connect to host
 kalami.nl: could not connect to host
 kaleidomarketing.com: did not receive HSTS header
-kalian.cz: could not connect to host
 kamcvicit.sk: could not connect to host
 kamikano.com: could not connect to host
 kaneo-gmbh.de: did not receive HSTS header
 kaniklani.co.za: could not connect to host
 kanscooking.org: did not receive HSTS header
 kany.me: did not receive HSTS header
 kanzlei-wirtschaftsrecht.berlin: did not receive HSTS header
 kaohub.com: could not connect to host
@@ -3576,32 +3584,30 @@ katproxy.online: could not connect to ho
 katproxy.site: could not connect to host
 katproxy.tech: could not connect to host
 katproxy.top: did not receive HSTS header
 katyl.info: could not connect to host
 katzen.me: could not connect to host
 kaufkraftkiel.de: could not connect to host
 kausch.at: could not connect to host
 kavinvin.me: could not connect to host
-kawaii.io: could not connect to host
 kawaiiku.com: could not connect to host
 kawaiiku.de: could not connect to host
 kcluster.io: could not connect to host
 kcolford.com: could not connect to host
 kcptun.com: could not connect to host
 kd-plus.pp.ua: could not connect to host
 kdata.it: did not receive HSTS header
 kdm-online.de: did not receive HSTS header
 keeley.gq: could not connect to host
 keeley.ml: could not connect to host
 keeleysam.me: could not connect to host
 keepassa.co: could not connect to host
 keepclean.me: could not connect to host
 keepcoalintheground.org: could not connect to host
-kenvix.com: could not connect to host
 kerangalam.com: did not receive HSTS header
 kerksanders.nl: did not receive HSTS header
 kermadec.blog: could not connect to host
 kermadec.com: could not connect to host
 kermadec.net: could not connect to host
 kernl.us: did not receive HSTS header
 keskeces.com: did not receive HSTS header
 keymaster.lookout.com: did not receive HSTS header
@@ -3699,16 +3705,17 @@ kori.ml: did not receive HSTS header
 koriyoukai.net: did not receive HSTS header
 korni22.org: did not receive HSTS header
 korsanparti.org: could not connect to host
 kostuumstore.nl: could not connect to host
 kotonehoko.net: could not connect to host
 kotovstyle.ru: could not connect to host
 koukni.cz: did not receive HSTS header
 kourpe.online: could not connect to host
+kpebetka.net: could not connect to host
 kprog.net: could not connect to host
 kr.search.yahoo.com: did not receive HSTS header
 kraga.sk: could not connect to host
 kraigwalker.com: did not receive HSTS header
 kralik.xyz: could not connect to host
 kravelindo-adventure.com: could not connect to host
 krayx.com: could not connect to host
 kream.io: did not receive HSTS header
@@ -3718,17 +3725,16 @@ kredite.sale: could not connect to host
 krestanskydarek.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 119"  data: no]
 kriegt.es: did not receive HSTS header
 kristjanrang.eu: did not receive HSTS header
 krizevackapajdasija.hr: could not connect to host
 krizevci.info: did not receive HSTS header
 krmela.com: did not receive HSTS header
 kroetenfuchs.de: could not connect to host
 kroodle.nl: did not receive HSTS header
-kroon.email: could not connect to host
 kropkait.pl: could not connect to host
 krunut.com: did not receive HSTS header
 krypteia.org: could not connect to host
 kryptomech.com: could not connect to host
 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
@@ -3745,16 +3751,17 @@ kuro346.moe: could not connect to host
 kurrietv.nl: did not receive HSTS header
 kurtmclester.com: did not receive HSTS header
 kurz.pw: could not connect to host
 kusaka-abacus.jp: max-age too low: 0
 kuschelmikroben.de: max-age too low: 86400
 kuschelmonster.de: max-age too low: 86400
 kuschelmonstershop.de: max-age too low: 86400
 kuschelviren.de: max-age too low: 86400
+kutukupret.com: could not connect to host
 kweddingplanning.com: did not receive HSTS header
 kwok.tv: could not connect to host
 kwondratsch.com: could not connect to host
 kyanite.co: could not connect to host
 kylapps.com: did not receive HSTS header
 kylinj.com: could not connect to host
 kyochon.fr: could not connect to host
 kz.search.yahoo.com: did not receive HSTS header
@@ -3849,16 +3856,17 @@ leolana.com: could not connect to host
 leon-jaekel.com: could not connect to host
 leonhooijer.nl: could not connect to host
 leopold.email: could not connect to host
 leopotamgroup.com: could not connect to host
 lepont.pl: could not connect to host
 lerner.moscow: did not receive HSTS header
 les-corsaires.net: could not connect to host
 les-voitures-electriques.com: did not receive HSTS header
+lesharris.com: could not connect to host
 lesliekearney.com: did not receive HSTS header
 lesperlesdunet.fr: could not connect to host
 lesquerda.cat: did not receive HSTS header
 letitfly.me: could not connect to host
 letras.mus.br: did not receive HSTS header
 letsmultiplayerplay.com: did not receive HSTS header
 letstox.com: could not connect to host
 letustravel.tk: could not connect to host
@@ -3886,16 +3894,18 @@ lianye5.cc: could not connect to host
 lianye6.cc: could not connect to host
 lianyexiuchang.in: could not connect to host
 liaoshuma.com: could not connect to host
 libanco.com: could not connect to host
 libertyrp.org: could not connect to host
 library.linode.com: did not receive HSTS header
 librechan.net: could not connect to host
 libreduca.com: could not connect to host
+lichess4545.com: did not receive HSTS header
+lichess4545.tv: did not receive HSTS header
 lidl-selection.at: could not connect to host
 lidong.me: could not connect to host
 liemen.net: did not receive HSTS header
 lifecoach.tw: did not receive HSTS header
 lifecoachproviders.com: did not receive HSTS header
 lifeguard.aecom.com: did not receive HSTS header
 lifeinitsownway.com: could not connect to host
 lifeskillsdirect.com: did not receive HSTS header
@@ -3914,20 +3924,18 @@ limalama.eu: max-age too low: 1
 limeyeti.com: could not connect to host
 limiteddata.co.uk: did not receive HSTS header
 limpido.it: could not connect to host
 lincolnwayflorist.com: could not connect to host
 lindberg.io: did not receive HSTS header
 lingros-test.tk: could not connect to host
 linguaquote.com: did not receive HSTS header
 linhaoyi.com: did not receive HSTS header
-link-sanitizer.com: could not connect to host
 link.ba: could not connect to host
 link2serve.com: did not receive HSTS header
-linksanitizer.com: could not connect to host
 linmi.cc: did not receive HSTS header
 linno.me: could not connect to host
 linorman1997.me: could not connect to host
 linux-mint.cz: could not connect to host
 linuxandstuff.de: could not connect to host
 linuxeyecandy.com: could not connect to host
 linuxfixed.it: could not connect to host
 linuxforyou.com: could not connect to host
@@ -4049,28 +4057,28 @@ m-ali.xyz: could not connect to host
 m-rickroll-v.pw: could not connect to host
 m.gparent.org: could not connect to host
 m.nu: did not receive HSTS header
 m0wef.uk: could not connect to host
 m2tc.fr: could not connect to host
 m3-gmbh.de: did not receive HSTS header
 m82labs.com: did not receive HSTS header
 maarten.nyc: could not connect to host
-maartenterpstra.xyz: could not connect to host
 mac-torrents.me: did not receive HSTS header
 macbolo.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
 macsandcheesedreams.com: 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: did not receive HSTS header
 madesoftware.com.br: could not connect to host
+madusecurity.com: could not connect to host
 mafamane.com: could not connect to host
 maff.scot: could not connect to host
 mafiareturns.com: max-age too low: 2592000
 magenx.com: did not receive HSTS header
 magi.systems: could not connect to host
 magia360.com: did not receive HSTS header
 mahamed91.pw: could not connect to host
 mahfouzadedimeji.com: did not receive HSTS header
@@ -4078,20 +4086,21 @@ mail-settings.google.com: did not receiv
 mail.google.com: did not receive HSTS header (error ignored - included regardless)
 mail4you.in: could not connect to host
 mailchuck.com: could not connect to host
 maildragon.com: could not connect to host
 mailgarant.nl: could not connect to host
 mailhost.it: could not connect to host
 mailing-femprendedores.com: did not receive HSTS header
 mailing-jbgg.com: did not receive HSTS header
-mailmag.net: could not connect to host
+mailmag.net: did not receive HSTS header
 main-street-seo.com: did not receive HSTS header
 maintainerheaven.ch: could not connect to host
 majesnix.org: did not receive HSTS header
+makeit-so.de: could not connect to host
 makeitdynamic.com: could not connect to host
 makerstuff.net: did not receive HSTS header
 makeyourlaws.org: could not connect to host
 malena.com.ua: did not receive HSTS header
 malerversand.de: did not receive HSTS header
 malfait.nl: could not connect to host
 malinator.net: could not connect to host
 maljaars-media.nl: could not connect to host
@@ -4116,16 +4125,17 @@ manageprojects.com: did not receive HSTS
 manantial.mx: did not receive HSTS header
 maniadeprazer.com.br: could not connect to host
 manifestbin.com: did not receive HSTS header
 manitasicily.com: did not receive HSTS header
 manningbrothers.com: did not receive HSTS header
 mansion-note.com: did not receive HSTS header
 maomaofuli.vip: could not connect to host
 maple5.com: did not receive HSTS header
+marakovits.net: did not receive HSTS header
 marcelparra.com: could not connect to host
 marchagen.nl: did not receive HSTS header
 marco01809.net: could not connect to host
 marcoececilia.it: did not receive HSTS header
 marcofinke.de: could not connect to host
 marcontrol.com: did not receive HSTS header
 marcosteixeira.tk: could not connect to host
 marcschlagenhauf.de: could not connect to host
@@ -4204,27 +4214,27 @@ maur.cz: did not receive HSTS header
 maurus-automation.de: did not receive HSTS header
 mavisang.cf: could not connect to host
 mawe.red: could not connect to host
 maxibanki.ovh: could not connect to host
 maximov.space: could not connect to host
 maxr1998.de: did not receive HSTS header
 maxserver.com: did not receive HSTS header
 maya.mg: could not connect to host
-mazurlabs.tk: could not connect to host
 mazz-tech.com: could not connect to host
 mca2017.org: did not receive HSTS header
 mcard.vn: did not receive HSTS header
 mcc.re: could not connect to host
 mcdonalds.ru: did not receive HSTS header
 mcga.media: could not connect to host
 mclab.su: could not connect to host
 mclist.it: could not connect to host
 mctherealm.net: could not connect to host
 mdfnet.se: did not receive HSTS header
+mdkr.nl: did not receive HSTS header
 mdosch.de: did not receive HSTS header
 mdscomp.net: did not receive HSTS header
 meamod.com: max-age too low: 0
 meat-education.com: could not connect to host
 mebio.us: did not receive HSTS header
 mecenat-cassous.com: did not receive HSTS header
 mechmk1.me: did not receive HSTS header
 medallia.io: could not connect to host
@@ -4250,16 +4260,17 @@ megaxchange.com: did not receive HSTS he
 meghudson.com: could not connect to host
 meifrench.com: could not connect to host
 meillard-auto-ecole.ch: could not connect to host
 mein-gesundheitsmanager.com: max-age too low: 0
 meincloudspeicher.de: could not connect to host
 meinebo.it: could not connect to host
 melangebrasil.com: could not connect to host
 melearning.university: did not receive HSTS header
+melitopol.co.ua: could not connect to host
 melted.pw: could not connect to host
 memberpress.com: max-age too low: 86400
 members.mayfirst.org: did not receive HSTS header
 memeblast.ninja: could not connect to host
 memory-plus-180.com: could not connect to host
 memorytrace.space: could not connect to host
 menkyo-blog.com: did not receive HSTS header
 mensmaximus.de: did not receive HSTS header
@@ -4295,17 +4306,17 @@ mhdsyarif.com: did not receive HSTS head
 mhealthdemocamp.com: could not connect to host
 mhertel.com: did not receive HSTS header
 mhict.nl: could not connect to host
 mhjuma.com: could not connect to host
 mht-travel.com: could not connect to host
 mhx.pw: could not connect to host
 mi80.com: could not connect to host
 michaeldemuth.com: could not connect to host
-michaelfitzpatrickruth.com: did not receive HSTS header
+michaelfitzpatrickruth.com: could not connect to host
 michaelmorpurgo.com: did not receive HSTS header
 michaelscrivo.com: did not receive HSTS header
 michaelwaite.org: could not connect to host
 michal-kral.cz: could not connect to host
 michalborka.cz: could not connect to host
 michelledonelan.co.uk: did not receive HSTS header
 miconware.de: could not connect to host
 micro-dv.ru: could not connect to host
@@ -4354,16 +4365,17 @@ minecraft-forums.ga: could not connect t
 minecraft-forums.gq: could not connect to host
 minecraftforum.ch: could not connect to host
 minecraftforums.cf: could not connect to host
 minecraftforums.gq: could not connect to host
 minecraftforums.ml: could not connect to host
 minecraftserverz.com: could not connect to host
 minecraftvoter.com: could not connect to host
 mineover.es: could not connect to host
+mingy.ddns.net: could not connect to host
 minh.at: could not connect to host
 mini-piraten.de: did not receive HSTS header
 minikneet.nl: did not receive HSTS header
 minimoo.se: could not connect to host
 minimvc.com: did not receive HSTS header
 minnesotadata.com: could not connect to host
 minora.io: could not connect to host
 minoris.se: could not connect to host
@@ -4440,16 +4452,17 @@ mondar.io: could not connect to host
 mondopoint.com: did not receive HSTS header
 mondwandler.de: could not connect to host
 moneromerchant.com: could not connect to host
 moneycrownmedia.com: did not receive HSTS header
 moneytoday.com: max-age too low: 0
 monika-sokol.de: did not receive HSTS header
 monitaure.io: could not connect to host
 monitman.com: did not receive HSTS header
+monpc-pro.fr: did not receive HSTS header
 monsieurbureau.com: did not receive HSTS header
 monstrus.de: max-age too low: 86400
 montanacures.org: could not connect to host
 montenero.pl: could not connect to host
 montonicms.com: could not connect to host
 moobo.xyz: could not connect to host
 moon.lc: could not connect to host
 moonless.net: could not connect to host
@@ -4714,30 +4727,30 @@ nien.chat: could not connect to host
 nien.org: did not receive HSTS header
 nightsnack.cf: could not connect to host
 nightwinds.tk: could not connect to host
 niho.jp: did not receive HSTS header
 nikcub.com: could not connect to host
 niklas.pw: did not receive HSTS header
 niklaslindblad.se: did not receive HSTS header
 ninchisho-online.com: did not receive HSTS header
-ninespec.com: could not connect to host
 ninhs.org: could not connect to host
 nippler.org: did not receive HSTS header
 nippombashi.net: did not receive HSTS header
 nipponcareers.com: did not receive HSTS header
 nixmag.net: did not receive HSTS header
 nkp-media.de: could not connect to host
 nll.fi: could not connect to host
 nmadda.com: did not receive HSTS header
 nmctest.net: could not connect to host
 nmueller.at: could not connect to host
 nnya.cat: could not connect to host
 no-ip.cz: did not receive HSTS header
 no17sifangjie.cc: could not connect to host
+nobly.de: did not receive HSTS header
 nocallaghan.com: could not connect to host
 noclegi-online.pl: did not receive HSTS header
 noctinus.tk: did not receive HSTS header
 node-core-app.com: could not connect to host
 nodebrewery.com: could not connect to host
 nodetemple.com: could not connect to host
 nodi.at: did not receive HSTS header
 noexpect.org: could not connect to host
@@ -4834,16 +4847,17 @@ odinoffice.no: did not receive HSTS head
 odysseyandco.com: could not connect to host
 oe8.bet: could not connect to host
 ofcourselanguages.com: could not connect to host
 offenedialoge.de: max-age too low: 2592000
 officeclub.com.mx: did not receive HSTS header
 offshore-firma.org: could not connect to host
 offshore-unternehmen.com: could not connect to host
 offshorefirma-gruenden.com: could not connect to host
+oglen.ca: could not connect to host
 ogogoshop.com: could not connect to host
 ohai.su: did not receive HSTS header
 ohling.org: could not connect to host
 ohlmeier.com: could not connect to host
 ohlmeier.net: could not connect to host
 ohlmeier.org: could not connect to host
 ohyooo.com: could not connect to host
 oiepoie.nl: could not connect to host
@@ -4974,17 +4988,16 @@ osticketawesome.com: did not receive HST
 otakuworld.de: could not connect to host
 othercode.nl: could not connect to host
 othermedia.cc: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 119"  data: no]
 otherstuff.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 119"  data: no]
 otichi.com: did not receive HSTS header
 otrsdemo.hu: did not receive HSTS header
 ottospora.nl: could not connect to host
 ourbank.com: did not receive HSTS header
-ousti.sh: did not receive HSTS header
 outdoorproducts.com: did not receive HSTS header
 outreachbuddy.com: could not connect to host
 outsider.im: could not connect to host
 outurnate.com: could not connect to host
 ouvirmusica.com.br: did not receive HSTS header
 ovenapp.io: did not receive HSTS header
 overclockers.ge: could not connect to host
 override.io: could not connect to host
@@ -5007,17 +5020,16 @@ p8r.de: could not connect to host
 pa.search.yahoo.com: did not receive HSTS header
 pablocamino.tk: could not connect to host
 pacelink.de: could not connect to host
 packlane.com: did not receive HSTS header
 pactocore.org: could not connect to host
 paestbin.com: could not connect to host
 pagerate.io: did not receive HSTS header
 pagetoimage.com: could not connect to host
-pahae.de: did not receive HSTS header
 paigeglass.com: did not receive HSTS header
 paino.cloud: could not connect to host
 paintingat.com: could not connect to host
 paisaone.com: did not receive HSTS header
 pajonzeck.de: could not connect to host
 paket.io: did not receive HSTS header
 paku.me: could not connect to host
 palmer.im: could not connect to host
@@ -5132,27 +5144,26 @@ personalizedtouch.co: could not connect 
 perthdevicelab.com: did not receive HSTS header
 pesmyclub.com: max-age too low: 300
 pet-nsk.ru: could not connect to host
 petchart.net: could not connect to host
 petersmark.com: could not connect to host
 pethub.com: did not receive HSTS header
 petit.site: could not connect to host
 petplum.com: could not connect to host
-petrachuk.ru: could not connect to host
 petravdbos.nl: did not receive HSTS header
 petrkajzar.cz: did not receive HSTS header
 petrkrapek.cz: did not receive HSTS header
 petrolplus.ru: did not receive HSTS header
 petrovsky.pro: could not connect to host
 petsittersservices.com: could not connect to host
 pettsy.com: could not connect to host
 pewboards.com: could not connect to host
 pexieapp.com: did not receive HSTS header
-peytonfarrar.com: did not receive HSTS header
+peytonfarrar.com: could not connect to host
 pflegedienst-gratia.de: max-age too low: 300
 pgpm.io: could not connect to host
 pgtb.be: did not receive HSTS header
 phalconist.com: did not receive HSTS header
 pharmgkb.org: could not connect to host
 phdsupply.com: did not receive HSTS header
 phillipgoldfarb.com: could not connect to host
 phillmoore.com: did not receive HSTS header
@@ -5281,17 +5292,16 @@ popkins.ml: could not connect to host
 porno-gif.ru: did not receive HSTS header
 pornstars.me: did not receive HSTS header
 portalm.tk: could not connect to host
 portalplatform.net: could not connect to host
 portofacil.com: did not receive HSTS header
 poshpak.com: max-age too low: 86400
 postback.io: did not receive HSTS header
 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
 potatoheads.net: could not connect to host
 potbar.com: could not connect to host
 potlytics.com: could not connect to host
 potsky.com: did not receive HSTS header
 poussinooz.fr: could not connect to host
 povitria.net: could not connect to host
@@ -5352,17 +5362,16 @@ profusion.io: could not connect to host
 progblog.net: could not connect to host
 progress-technologies.com: could not connect to host
 prohostonline.fi: could not connect to host
 proitconsulting.com.au: could not connect to host
 project-sparks.eu: did not receive HSTS header
 projectascension.io: could not connect to host
 projectdp.net: could not connect to host
 projectmercury.space: could not connect to host
-projekt-umbriel.de: 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
 prosocialmachines.com: could not connect to host
 prosoft.sk: did not receive HSTS header
 prosperident.com: did not receive HSTS header
@@ -5447,17 +5456,16 @@ quickandroid.tools: could not connect to
 quickpayservice.com: could not connect to host
 quizmemes.org: could not connect to host
 quli.nl: did not receive HSTS header
 quotehex.com: could not connect to host
 quotemaster.co.za: could not connect to host
 quranserver.net: could not connect to host
 qvi.st: did not receive HSTS header
 qwaser.fr: could not connect to host
-qweepi.de: could not connect to host
 qwilink.me: did not receive HSTS header
 r-core.ru: could not connect to host
 r-rickroll-u.pw: could not connect to host
 r10n.com: did not receive HSTS header
 r15.me: did not receive HSTS header
 r3bl.me: did not receive HSTS header
 r40.us: could not connect to host
 ra-schaal.de: could not connect to host
@@ -5514,16 +5522,17 @@ rbti.me: could not connect to host
 rc-rp.com: did not receive HSTS header
 rc4.io: could not connect to host
 rcafox.com: could not connect to host
 rcorporation.be: did not receive HSTS header
 rcpcbd.com: could not connect to host
 rcvd.io: did not receive HSTS header
 rdh.asia: could not connect to host
 rdns.im: did not receive HSTS header
+rdyrda.fr: could not connect to host
 re-customer.net: did not receive HSTS header
 reachr.com: could not connect to host
 reader.ga: could not connect to host
 readr.pw: could not connect to host
 reagir43.fr: did not receive HSTS header
 reallyreally.io: could not connect to host
 realmic.net: could not connect to host
 realmofespionage.com: could not connect to host
@@ -5595,17 +5604,17 @@ reqognize.com: could not connect to host
 res-rheingau.de: did not receive HSTS header
 res42.com: could not connect to host
 reserve-online.net: did not receive HSTS header
 residentsinsurance.co.uk: did not receive HSTS header
 resl20.servehttp.com: could not connect to host
 respice.xyz: could not connect to host
 respostas.com.br: did not receive HSTS header
 restchart.com: did not receive HSTS header
-restioson.me: did not receive HSTS header
+restioson.me: could not connect to host
 restrealitaet.de: did not receive HSTS header
 returnofwar.com: could not connect to host
 revapost.ch: could not connect to host
 revealdata.com: did not receive HSTS header
 revello.org: did not receive HSTS header
 reverie.pw: could not connect to host
 reviewjust.com: did not receive HSTS header
 reviews.anime.my: max-age too low: 5184000
@@ -5669,16 +5678,17 @@ rockstarloan.com: max-age too low: 0
 rockz.io: did not receive HSTS header
 rodney.id.au: did not receive HSTS header
 rodneybrooksjr.com: could not connect to host
 rodosto.com: could not connect to host
 roelof.io: could not connect to host
 roeper.party: could not connect to host
 roesemann.email: could not connect to host
 roguelikecenter.fr: did not receive HSTS header
+rointe.online: could not connect to host
 rolandreed.cn: did not receive HSTS header
 rolemaster.net: could not connect to host
 rolroer.co.za: could not connect to host
 romab.com: did not receive HSTS header
 romans-place.me.uk: could not connect to host
 romeoferraris.com: did not receive HSTS header
 romulusapp.com: could not connect to host
 ron2k.za.net: could not connect to host
@@ -5748,16 +5758,17 @@ saabwa.org: did not receive HSTS header
 safelist.eu: did not receive HSTS header
 safematix.com: could not connect to host
 safemovescheme.co.uk: could not connect to host
 safewings-nh.nl: did not receive HSTS header
 sagarhandicraft.com: could not connect to host
 sageth.com: max-age too low: 0
 sah3.net: could not connect to host
 saharalondon.com: did not receive HSTS header
+saikarra.com: could not connect to host
 sail-nyc.com: did not receive HSTS header
 sakaki.anime.my: max-age too low: 5184000
 sakaserver.com: did not receive HSTS header
 sakurabuff.com: could not connect to host
 salamanderpaddlegear.com: max-age too low: 3456000
 salserocafe.com: did not receive HSTS header
 salserototal.com: could not connect to host
 saltedskies.com: could not connect to host
@@ -5841,29 +5852,28 @@ scrambler.in: could not connect to host
 scrapings.net: could not connect to host
 screencaster.io: did not receive HSTS header
 screenresolution.space: could not connect to host
 screensaversplanet.com: could not connect to host
 scribbleserver.com: could not connect to host
 scribe.systems: could not connect to host
 scrion.com: could not connect to host
 script.google.com: did not receive HSTS header (error ignored - included regardless)
-scriptenforcer.net: did not receive HSTS header
+scriptenforcer.net: could not connect to host
 scriptict.nl: could not connect to host
 scrollstory.com: did not receive HSTS header
 sd4u.be: max-age too low: 86400
 sdia.ru: could not connect to host
 sdmoscow.ru: could not connect to host
 sdrobs.com: could not connect to host
 sdsl-speedtest.de: could not connect to host
 seans.cc: did not receive HSTS header
 search-one.de: did not receive HSTS header
 sebastian-bair.de: could not connect to host
 sebastianhampl.de: could not connect to host
-sebi.org: could not connect to host
 sebster.com: did not receive HSTS header
 secandtech.com: could not connect to host
 seccom.ch: did not receive HSTS header
 secnet.ga: could not connect to host
 secondary-survivor.com: could not connect to host
 secondary-survivor.help: could not connect to host
 secondary-survivor.net: could not connect to host
 secondarysurvivor.help: could not connect to host
@@ -5892,16 +5902,17 @@ sedoexpert.nl: could not connect to host
 sedoexperts.nl: could not connect to host
 sedziapilkarski.pl: did not receive HSTS header
 seedboxers.net: could not connect to host
 seefunk.net: did not receive HSTS header
 seele.ca: could not connect to host
 sehenderson.com: did not receive HSTS header
 seiko-dojo.com: could not connect to host
 seiler-bad.de: did not receive HSTS header
+seizoushokoyuubangou.com: did not receive HSTS header
 sektor.team: could not connect to host
 selecadm.name: could not connect to host
 selectary.com: could not connect to host
 selectruckscalltrackingreports.com: could not connect to host
 selfcarecentral.com: max-age too low: 7776000
 selfdefenserx.com: did not receive HSTS header
 selfie-france.fr: could not connect to host
 selldorado.com: could not connect to host
@@ -5951,20 +5962,22 @@ sfsltd.com: did not receive HSTS header
 shadoom.com: did not receive HSTS header
 shadowmorph.info: did not receive HSTS header
 shadowsocks.com.hk: did not receive HSTS header
 shadowsocks.net: could not connect to host
 shadowsocks.wiki: did not receive HSTS header
 shamka.ru: could not connect to host
 shanekoster.net: did not receive HSTS header
 shanesage.com: could not connect to host
+shaobin.wang: could not connect to host
 shapesedinburgh.co.uk: did not receive HSTS header
 shareimg.xyz: could not connect to host
 sharepass.pw: could not connect to host
 sharepic.xyz: could not connect to host
+sharesplitter.com: could not connect to host
 sharevari.com: could not connect to host
 shauncrowley.co.uk: could not connect to host
 shaunwheelhou.se: could not connect to host
 shawnh.net: could not connect to host
 shellj.me: max-age too low: 86400
 shellsec.pw: did not receive HSTS header
 shep.co.il: did not receive HSTS header
 shereallyheals.com: did not receive HSTS header
@@ -6003,16 +6016,17 @@ siammedia.co: could not connect to host
 sianimacion.com: could not connect to host
 sichere-kartenakzeptanz.de: did not receive HSTS header
 siciliadigitale.pro: could not connect to host
 sickfile.com: could not connect to host
 siddhant.me: max-age too low: 0
 siebens.net: could not connect to host
 sifls.com: could not connect to host
 sifreuret.com: could not connect to host
+sijimi.cn: did not receive HSTS header
 sikayetvar.com: did not receive HSTS header
 silaslova-ekb.ru: could not connect to host
 silent.live: could not connect to host
 silentcircle.com: did not receive HSTS header
 silentcircle.org: could not connect to host
 silentlink.io: could not connect to host
 silentundo.org: did not receive HSTS header
 silicagelpackets.ca: did not receive HSTS header
@@ -6025,17 +6039,16 @@ simbihaiti.com: did not receive HSTS hea
 simccorp.com: did not receive HSTS header
 simeon.us: max-age too low: 2592000
 simfri.com: did not receive HSTS header
 simobilklub.si: did not receive HSTS header
 simod.org: could not connect to host
 simon-pokorny.com: did not receive HSTS header
 simon.butcher.name: max-age too low: 2629743
 simongong.net: did not receive HSTS header
-simonkjellberg.com: could not connect to host
 simpan.id: did not receive HSTS header
 simpleai.net: max-age too low: 600
 simplelearner.com: could not connect to host
 simplepractice.com: did not receive HSTS header
 simplixos.org: could not connect to host
 simply-premium.com: did not receive HSTS header
 simplyhelen.de: did not receive HSTS header
 sin30.net: could not connect to host
@@ -6248,16 +6261,17 @@ stadjerspasonline.nl: could not connect 
 stadtbauwerk.at: did not receive HSTS header
 staffjoy.com: did not receive HSTS header
 staffjoystaging.com: could not connect to host
 stahl.xyz: could not connect to host
 stairfallgames.com: could not connect to host
 stalkerhispano.com: max-age too low: 0
 stalkerteam.pl: did not receive HSTS header
 stalschermer.nl: could not connect to host
+stanandjerre.org: could not connect to host
 standardssuck.org: did not receive HSTS header
 standingmist.com: did not receive HSTS header
 starandshield.com: did not receive HSTS header
 starapple.nl: did not receive HSTS header
 starfeeling.net: could not connect to host
 stargatepartners.com: did not receive HSTS header
 starmusic.ga: did not receive HSTS header
 starttraffic.com: did not receive HSTS header
@@ -6352,33 +6366,33 @@ subtitle.rip: could not connect to host
 sudo.li: did not receive HSTS header
 sudokian.io: did not receive HSTS header
 suian.or.jp: max-age too low: 86400
 suite73.org: could not connect to host
 summitbankofkc.com: did not receive HSTS header
 sumoatm.com: did not receive HSTS header
 sumoscout.de: could not connect to host
 suncountrymarine.com: did not receive HSTS header
-sunflyer.cn: did not receive HSTS header
 sunfulong.me: could not connect to host
 sunnyfruit.ru: could not connect to host
 sunshinepress.org: could not connect to host
 sunyanzi.tk: could not connect to host
 suos.io: could not connect to host
 supcro.com: could not connect to host
 super-erotica.ru: could not connect to host
 super-garciniaslim.com: could not connect to host
 super-radiant-skin.com: could not connect to host
 super-ripped-power.com: could not connect to host
 super-slim-coffee.com: could not connect to host
 superbabysitting.ch: could not connect to host
 superbike.tw: could not connect to host
 supereight.net: did not receive HSTS header
 superiorfloridavacation.com: did not receive HSTS header
 superklima.ro: did not receive HSTS header
+superpase.com: could not connect to host
 supersalescontest.nl: did not receive HSTS header
 superschnappchen.de: could not connect to host
 supersecurefancydomain.com: could not connect to host
 supertramp-dafonseca.com: did not receive HSTS header
 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
@@ -6415,17 +6429,17 @@ syncer.jp: did not receive HSTS header
 synchrocube.com: could not connect to host
 syncserve.net: did not receive HSTS header
 syneic.com: did not receive HSTS header
 syno.gq: could not connect to host
 syntheticmotoroil.org: did not receive HSTS header
 syriatalk.biz: could not connect to host
 syriatalk.org: could not connect to host
 syrocon.ch: could not connect to host
-sysadminstory.com: did not receive HSTS header
+sysadminstory.com: could not connect to host
 sysgeek.cn: could not connect to host
 syso.name: could not connect to host
 syspen.space: did not receive HSTS header
 sysrq.tech: could not connect to host
 syss.de: did not receive HSTS header
 systemd.me: could not connect to host
 szaszm.tk: max-age too low: 0
 szunia.com: could not connect to host
@@ -6479,16 +6493,17 @@ tastyyy.co: could not connect to host
 tatilbus.com: did not receive HSTS header
 tatt.io: could not connect to host
 tauchkater.de: could not connect to host
 tavopica.lt: did not receive HSTS header
 taxbench.com: could not connect to host
 taxiindenbosch.nl: did not receive HSTS header
 taxsnaps.co.nz: could not connect to host
 tazz.in: could not connect to host
+tbspace.de: did not receive HSTS header
 tc-bonito.de: did not receive HSTS header
 tc.nz: did not receive HSTS header
 tcao.info: could not connect to host
 tcby45.xyz: could not connect to host
 tcdw.net: did not receive HSTS header
 tcl.ath.cx: did not receive HSTS header
 tcomms.org: max-age too low: 0
 tcp.expert: did not receive HSTS header
@@ -6542,23 +6557,21 @@ telescam.com: could not connect to host
 teletra.ru: could not connect to host
 tellingua.com: did not receive HSTS header
 temehu.com: did not receive HSTS header
 tempcraft.net: could not connect to host
 tempus-aquilae.de: could not connect to host
 tendertool.nl: could not connect to host
 tenerife-villas.com: did not receive HSTS header
 tengroup.com: did not receive HSTS header
-tenmm.com: could not connect to host
 tenni.xyz: could not connect to host
 tensei-slime.com: did not receive HSTS header
 tensionup.com: could not connect to host
 tentins.com: could not connect to host
 teos.online: could not connect to host
-tepid.org: could not connect to host
 terminalvelocity.co.nz: could not connect to host
 terra.by: did not receive HSTS header
 terrax.berlin: could not connect to host
 terrax.info: could not connect to host
 terry.pub: max-age too low: 604800
 testandroid.xyz: could not connect to host
 teufelsystem.de: could not connect to host
 teulon.eu: could not connect to host
@@ -6714,16 +6727,17 @@ tirex.media: did not receive HSTS header
 titanleaf.com: could not connect to host
 titouan.co: did not receive HSTS header
 tittarpuls.se: could not connect to host
 titties.ml: could not connect to host
 tjc.wiki: could not connect to host
 tjullrich.de: could not connect to host
 tkappertjedemetamorfose.nl: could not connect to host
 tkonstantopoulos.tk: could not connect to host
+tlach.cz: did not receive HSTS header
 tlcdn.net: could not connect to host
 tlo.hosting: could not connect to host
 tlo.link: did not receive HSTS header
 tlo.network: could not connect to host
 tls.li: could not connect to host
 tlsbv.nl: did not receive HSTS header
 tlshost.net: could not connect to host
 tm-solutions.eu: did not receive HSTS header
@@ -6756,16 +6770,17 @@ tolud.com: could not connect to host
 tomatenaufdenaugen.de: could not connect to host
 tomeara.net: could not connect to host
 tomevans.io: could not connect to host
 tomharris.tech: did not receive HSTS header
 tomlankhorst.nl: did not receive HSTS header
 tomli.me: could not connect to host
 tommsy.com: did not receive HSTS header
 tommyads.com: could not connect to host
+tomphill.co.uk: could not connect to host
 tonyfantjr.com: could not connect to host
 toomanypillows.com: could not connect to host
 tooolroc.org: could not connect to host
 top-stage.net: could not connect to host
 topdeskdev.net: could not connect to host
 topmarine.se: could not connect to host
 topnewstoday.org: could not connect to host
 topshelfguild.com: could not connect to host
@@ -6892,21 +6907,23 @@ twinkseason.net: could not connect to ho
 twinkseason.org: could not connect to host
 twinkseason.xyz: could not connect to host
 twisata.com: did not receive HSTS header
 twist.party: could not connect to host
 twitter.ax: could not connect to host
 twogo.com: did not receive HSTS header
 twolinepassbrewing.com: could not connect to host
 twolivelife.com: could not connect to host
+twuni.org: could not connect to host
 tx041cap.org: did not receive HSTS header
 txclimbers.com: could not connect to host
 txf.pw: could not connect to host
 ty2u.com: did not receive HSTS header
 tyler.rs: could not connect to host
+tylerdavies.net: could not connect to host
 tyleromeara.com: could not connect to host
 tylian.net: max-age too low: 0
 typingrevolution.com: did not receive HSTS header
 tyrelius.com: could not connect to host
 tyroproducts.eu: did not receive HSTS header
 tzappa.net: could not connect to host
 u-blox.com: max-age too low: 0
 u.nu: could not connect to host
@@ -7016,16 +7033,17 @@ usercare.com: did not receive HSTS heade
 userify.com: did not receive HSTS header
 uslab.io: could not connect to host
 ustr.gov: max-age too low: 86400
 utilitarianism.net: max-age too low: 0
 utleieplassen.no: could not connect to host
 utopiagalaxy.space: could not connect to host
 utopianhomespa.com: did not receive HSTS header
 utopianrealms.org: did not receive HSTS header
+uttnetgroup.fr: did not receive HSTS header
 utumno.ch: did not receive HSTS header
 utvbloggen.se: max-age too low: 604800
 uvarov.pw: did not receive HSTS header
 uwstartups.com: could not connect to host
 uy.search.yahoo.com: did not receive HSTS header
 uyym.com: could not connect to host
 uz.search.yahoo.com: did not receive HSTS header
 uzmandroid.com: did not receive HSTS header
@@ -7093,35 +7111,36 @@ vetdnacenter.com: did not receive HSTS h
 veterinaire-cazeres-foucault.fr: could not connect to host
 vetmgmt.com: could not connect to host
 veto.fish: could not connect to host
 vfree.org: could not connect to host
 vglimg.com: could not connect to host
 vh.net: could not connect to host
 vhost.co.id: could not connect to host
 viadeux.com: could not connect to host
+viasinc.com: did not receive HSTS header
 vicianovi.cz: could not connect to host
 vidbuchanan.co.uk: did not receive HSTS header
 videnskabsklubben.dk: did not receive HSTS header
 videomuz.com: did not receive HSTS header
 videotogel.net: did not receive HSTS header
 videoueberwachung-set.de: did not receive HSTS header
 vidid.net: did not receive HSTS header
 vidister.de: did not receive HSTS header
 vidz.ga: did not receive HSTS header
-vieaw.com: did not receive HSTS header
+vieaw.com: could not connect to host
 vietnamchevrolet.net: did not receive HSTS header
 vietnamphotographytours.com: could not connect to host
 vigilo.cf: could not connect to host
 vigilo.ga: could not connect to host
 vijos.org: did not receive HSTS header
+vikings.net: could not connect to host
 viktor-machnik.de: could not connect to host
 viktorsvantesson.net: did not receive HSTS header
 villenvinkit.com: did not receive HSTS header
-vinagro.sk: could not connect to host
 vinasec.se: could not connect to host
 vincentkooijman.at: did not receive HSTS header
 vincentkooijman.nl: did not receive HSTS header
 vinciconps4.it: could not connect to host
 vinsetchampagne.fr: did not receive HSTS header
 vintageheartcoffee.com: did not receive HSTS header
 vio.no: did not receive HSTS header
 violenceinterrupted.org: did not receive HSTS header
@@ -7135,17 +7154,16 @@ virtualperez.com: could not connect to h
 viserproject.com: could not connect to host
 vision-painting.com: did not receive HSTS header
 visitbroadstairs.com: could not connect to host
 vissanum.com: did not receive HSTS header
 vistaalmar.es: could not connect to host
 vistarait.com: did not receive HSTS header
 visualvotes.co.uk: could not connect to host
 vitagenda.nl: could not connect to host
-vitalamin.de: did not receive HSTS header
 vitalita.cz: did not receive HSTS header
 vitalorange.com: max-age too low: 7776000
 vitoye.com: could not connect to host
 vitta.me: did not receive HSTS header
 viva-french.com: did not receive HSTS header
 vivocloud.com: could not connect to host
 vizeat.com: did not receive HSTS header
 vizional.com: max-age too low: 0
@@ -7204,16 +7222,17 @@ vxstream-sandbox.com: did not receive HS
 vyncke.org: max-age too low: 2678400
 vyzner.cz: could not connect to host
 vzk.io: could not connect to host
 w4a.fr: did not receive HSTS header
 w4xzr.top: could not connect to host
 w4xzr.xyz: could not connect to host
 waaw.tv: did not receive HSTS header
 wachtwoordencheck.nl: could not connect to host
+wahhoi.net: did not receive HSTS header
 waixingrenfuli7.vip: could not connect to host
 wakapp.de: could not connect to host
 walkeryoung.ca: could not connect to host
 wallabag.it: did not receive HSTS header
 wallabag.org: did not receive HSTS header
 wallet.google.com: did not receive HSTS header (error ignored - included regardless)
 wallsblog.dk: could not connect to host
 walnutgaming.co.uk: could not connect to host
@@ -7226,26 +7245,27 @@ wangqiliang.xn--fiqs8s: could not connec
 wangzuan168.cc: did not receive HSTS header
 wanybug.cn: could not connect to host
 wapjt.cn: could not connect to host
 wapt.fr: did not receive HSTS header
 warandpeace.xyz: could not connect to host
 warehost.de: did not receive HSTS header
 warezaddict.com: did not receive HSTS header
 warhistoryonline.com: max-age too low: 0
-warp-radio.com: could not connect to host
-warp-radio.tv: could not connect to host
+warp-radio.com: did not receive HSTS header
+warp-radio.tv: did not receive HSTS header
 warped.com: did not receive HSTS header
 warrencreative.com: did not receive HSTS header
 warsentech.com: could not connect to host
 washingtonviews.com: did not receive HSTS header
 watchium.com: did not receive HSTS header
 waterforlife.net.au: did not receive HSTS header
 watersportmarkt.net: did not receive HSTS header
 watsonhall.uk: could not connect to host
+wattechweb.com: did not receive HSTS header
 wave.is: could not connect to host
 wavefloatrooms.com: did not receive HSTS header
 wavefrontsystemstech.com: could not connect to host
 we-bb.com: could not connect to host
 wear2work.nl: did not receive HSTS header
 weaverhairextensions.nl: could not connect to host
 web-industry.fr: could not connect to host
 web-insider.net: could not connect to host
@@ -7275,17 +7295,17 @@ webnosql.com: could not connect to host
 webperformance.ru: could not connect to host
 webproshosting.tk: could not connect to host
 webpublica.pt: could not connect to host
 webrebels.org: could not connect to host
 webreslist.com: could not connect to host
 webscale.nl: max-age too low: 0
 webstationservice.fr: could not connect to host
 webstellung.com: could not connect to host
-webstory.xyz: could not connect to host
+webstory.xyz: did not receive HSTS header
 webswitch.io: could not connect to host
 webtechgadgetry.com: did not receive HSTS header
 webtiles.co.uk: could not connect to host
 webtobesocial.de: could not connect to host
 webuni.hu: did not receive HSTS header
 webwork.pw: could not connect to host
 webypass.xyz: could not connect to host
 wecanfindit.co.za: could not connect to host
@@ -7294,16 +7314,17 @@ weddingibiza.nl: could not connect to ho
 weekly.fyi: could not connect to host
 wegenaer.nl: could not connect to host
 welkers.org: could not connect to host
 wellastore.ru: did not receive HSTS header
 welpy.com: could not connect to host
 weltmeisterschaft.net: could not connect to host
 weme.eu: could not connect to host
 wendalyncheng.com: did not receive HSTS header
+wenz.io: did not receive HSTS header
 werdeeintimo.de: did not receive HSTS header
 wereldkoffie.eu: could not connect to host
 werkenbijkfc.nl: did not receive HSTS header
 werkplaatsoost.nl: did not receive HSTS header
 werkruimtebottendaal.nl: did not receive HSTS header
 wesleyharris.ca: did not receive HSTS header
 westendzone.com: max-age too low: 0
 westerhoud.nl: did not receive HSTS header
@@ -7345,17 +7366,16 @@ wilfrid-calixte.fr: could not connect to
 willcipriano.com: could not connect to host
 william.si: did not receive HSTS header
 williamsapiens.com: could not connect to host
 willosagiede.com: did not receive HSTS header
 winaes.com: did not receive HSTS header
 winclient.cn: could not connect to host
 windowsphoneblog.it: max-age too low: 0
 winds.cf: could not connect to host
-wine-importer.ru: did not receive HSTS header
 winebid.com: could not connect to host
 winecodeavocado.com: could not connect to host
 winfield.me.uk: did not receive HSTS header
 winged.io: could not connect to host
 wingos.net: could not connect to host
 wingumd.net: could not connect to host
 winpack.cf: could not connect to host
 winpack.eu.org: could not connect to host
@@ -7368,30 +7388,28 @@ wishcert.com: could not connect to host
 withgoogle.com: did not receive HSTS header (error ignored - included regardless)
 withmy.beer: could not connect to host
 withustrading.com: could not connect to host
 withyoutube.com: did not receive HSTS header (error ignored - included regardless)
 wittcher.com: could not connect to host
 wittydonut.com: could not connect to host
 witzemaschine.com: max-age too low: 0
 wiz.biz: could not connect to host
-wjm2038.me: could not connect to host
 wlzhiyin.cn: could not connect to host
 wmcuk.net: could not connect to host
 wmfinanz.com: could not connect to host
 wnmm.nl: could not connect to host
 wobblylang.org: could not connect to host
 wochenentwicklung.com: did not receive HSTS header
 wodice.com: could not connect to host
 wohnungsbau-ludwigsburg.de: did not receive HSTS header
 woima.fi: max-age too low: 604800
 wolfesden.com: could not connect to host
 wolfeyesusa.com: max-age too low: 3456000
 wolfie.ovh: could not connect to host
-wolfwings.us: could not connect to host
 womosale.de: could not connect to host
 wonderbooks.club: could not connect to host
 wonderfall.xyz: could not connect to host
 wonderhost.info: could not connect to host
 wondy.com: could not connect to host
 woodlandschurch.net: max-age too low: 43200
 woodmafia.com.au: max-age too low: 0
 woomu.me: could not connect to host
@@ -7410,21 +7428,21 @@ worshapp.com: could not connect to host
 wow-travel.eu: could not connect to host
 wowapi.org: could not connect to host
 wowinvasion.com: did not receive HSTS header
 wpblog.com.tw: could not connect to host
 wpcarer.pro: could not connect to host
 wpdublin.com: could not connect to host
 wpfortify.com: did not receive HSTS header
 wphostingspot.com: did not receive HSTS header
-wpinter.com: did not receive HSTS header
 wpmetadatastandardsproject.org: could not connect to host
 wpturnedup.com: did not receive HSTS header
 wpunpacked.com: could not connect to host
 wpzhiku.com: did not receive HSTS header
+wrightdoumawedding.com: could not connect to host
 writeapp.me: did not receive HSTS header
 wrldevelopment.com: did not receive HSTS header
 wrwg.ca: could not connect to host
 wsscompany.com.ve: could not connect to host
 wubthecaptain.eu: could not connect to host
 wufu.org: did not receive HSTS header
 wuhengmin.com: could not connect to host
 wundtherapie-schulung.de: could not connect to host
@@ -7439,17 +7457,17 @@ www-1117.com: could not connect to host
 www-39988.com: did not receive HSTS header
 www-507.net: did not receive HSTS header
 www-746.com: could not connect to host
 www-771122.com: did not receive HSTS header
 www-8003.com: did not receive HSTS header
 www-88599.com: did not receive HSTS header
 www-9995.com: did not receive HSTS header
 www-djbet.com: did not receive HSTS header
-www-jinshavip.com: could not connect to host
+www-jinshavip.com: did not receive HSTS header
 www.braintreepayments.com: did not receive HSTS header
 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)
@@ -7460,25 +7478,25 @@ www.ledgerscope.net: could not connect t
 www.logentries.com: did not receive HSTS header
 www.makeyourlaws.org: could not connect to host
 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
 www.sandbox.mydigipass.com: could not connect to host
 www.surfeasy.com: did not receive HSTS header
+www.viasinc.com: did not receive HSTS header
 www.zenpayroll.com: did not receive HSTS header
 www3.info: did not receive HSTS header
 wxukang.cn: could not connect to host
 wybmabiity.com: could not connect to host
 wygluszanie.eu: did not receive HSTS header
 x-power-detox.com: could not connect to host
 x-ripped-hd.com: could not connect to host
 x1616.tk: could not connect to host
-x2c0.net: could not connect to host
 x2w.io: could not connect to host
 x3led.com: could not connect to host
 x509.pub: could not connect to host
 x509.pw: could not connect to host
 xa.search.yahoo.com: did not receive HSTS header
 xandocs.com: could not connect to host
 xat.re: could not connect to host
 xavierbarroso.com: could not connect to host
@@ -7487,17 +7505,17 @@ xcoop.me: could not connect to host
 xecure.zone: did not receive HSTS header
 xehoivn.vn: did not receive HSTS header
 xellos.ga: could not connect to host
 xellos.ml: could not connect to host
 xendo.net: max-age too low: 43200
 xenesisziarovky.sk: could not connect to host
 xeonlab.com: could not connect to host
 xeonlab.de: could not connect to host
-xett.com: could not connect to host
+xett.com: did not receive HSTS header
 xf-liam.com: did not receive HSTS header
 xfive.de: could not connect to host
 xgusto.com: did not receive HSTS header
 xia100.xyz: could not connect to host
 xiaody.me: could not connect to host
 xiaolvmu.com: could not connect to host
 xiaolvmu.me: could not connect to host
 xiaoxiao.im: could not connect to host
@@ -7544,16 +7562,17 @@ xn--werner-schffer-fib.de: could not con
 xn--xdtx3pfzbiw3ar8e7yedqrhui.com: could not connect to host
 xn--yoamomisuasbcn-ynb.com: could not connect to host
 xobox.me: could not connect to host
 xoffy.com: did not receive HSTS header
 xom.party: could not connect to host
 xor-a.net: could not connect to host
 xperiacodes.com: did not receive HSTS header
 xpi.fr: could not connect to host
+xpj.sx: could not connect to host
 xrp.pw: could not connect to host
 xsmobile.de: could not connect to host
 xtom.email: could not connect to host
 xtream-hosting.com: could not connect to host
 xtream-hosting.de: could not connect to host
 xtream-hosting.eu: could not connect to host
 xtreamhosting.eu: could not connect to host
 xtrim.ru: did not receive HSTS header
@@ -7640,16 +7659,17 @@ yutabon.com: could not connect to host
 yuushou.com: max-age too low: 0
 yux.io: did not receive HSTS header
 ywei.org: could not connect to host
 yyyy.xyz: could not connect to host
 yzal.io: could not connect to host
 z3liff.com: could not connect to host
 z3liff.net: could not connect to host
 za.search.yahoo.com: did not receive HSTS header
+zacarias.com.ar: could not connect to host
 zachgibbens.org: could not connect to host
 zadieheimlich.com: did not receive HSTS header
 zahyantechnologies.com: could not connect to host
 zakoncontrol.com: could not connect to host
 zamorano.edu: could not connect to host
 zamos.ru: max-age too low: 0
 zaneweb.org: could not connect to host
 zao.fi: could not connect to host
@@ -7710,17 +7730,16 @@ zjutv.com: could not connect to host
 zk.gd: did not receive HSTS header
 zkillboard.com: did not receive HSTS header
 zking.ga: could not connect to host
 zmsastro.co.za: could not connect to host
 zmy.im: did not receive HSTS header
 zocken.com: did not receive HSTS header
 zoe.vc: could not connect to host
 zohar.link: could not connect to host
-zolotoy-standart.com.ua: did not receive HSTS header
 zomiac.pp.ua: could not connect to host
 zoneminder.com: did not receive HSTS header
 zoo24.de: did not receive HSTS header
 zoofaeth.de: did not receive HSTS header
 zoomingin.net: max-age too low: 5184000
 zoommailing.com: did not receive HSTS header
 zorasvobodova.cz: did not receive HSTS header
 zortium.report: could not connect to host
--- a/security/manager/ssl/nsSTSPreloadList.inc
+++ b/security/manager/ssl/nsSTSPreloadList.inc
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /*****************************************************************************/
 /* This is an automatically generated file. If you're not                    */
 /* nsSiteSecurityService.cpp, you shouldn't be #including it.     */
 /*****************************************************************************/
 
 #include <stdint.h>
-const PRTime gPreloadListExpirationTime = INT64_C(1514048828064000);
+const PRTime gPreloadListExpirationTime = INT64_C(1514135217788000);
 %%
 0-1.party, 1
 0.me.uk, 1
 0005pay.com, 1
 007-preisvergleich.de, 1
 00881919.com, 1
 00f.net, 1
 00wbf.com, 1
@@ -121,17 +121,16 @@ 1a-vermessung.at, 1
 1a-werkstattgeraete.de, 1
 1co-jp.net, 1
 1cover.co.nz, 1
 1cover.com.au, 1
 1e9.nl, 1
 1hourproofreading.com, 1
 1it.click, 1
 1item.co.il, 1
-1js.de, 1
 1kando.com, 0
 1km.ro, 1
 1kmi.co, 1
 1nfr.com, 1
 1nian.vip, 1
 1of16.de, 1
 1on1on1.de, 1
 1on1on1.tv, 1
@@ -206,27 +205,27 @@ 31tv.ru, 1
 321live.nl, 1
 32h.de, 1
 33-km.ru, 1
 33445.com, 1
 33scc.com, 1
 3473-wiki.de, 1
 35792.de, 1
 360ds.co.in, 1
+360live.fr, 1
 360woodworking.com, 1
 365365.com, 1
 365beautyworld.com, 1
 365healthworld.com, 1
 365maya.com, 1
 365skulls.com, 1
 3778vip.com, 1
 379700.com, 1
 393335.ml, 1
 398.info, 1
-3ags.de, 1
 3bakayottu.com, 1
 3bigking.com, 1
 3c-d.de, 1
 3chat.org, 1
 3circlefunding.ch, 1
 3cs.ch, 1
 3dmedium.de, 1
 3dmusiclab.nl, 1
@@ -280,17 +279,16 @@ 4u2ore.net, 1
 4vf.de, 1
 4web-hosting.com, 1
 4winds.pt, 1
 4x.fi, 1
 4x4.lk, 1
 500k.nl, 1
 500p.xyz, 1
 50plusnet.nl, 1
-517vpn.cn, 1
 525.info, 1
 52neptune.com, 1
 5432.cc, 1
 54below.com, 1
 5533445.com, 1
 555xl.com, 1
 55scc.com, 1
 57aromas.com, 1
@@ -1101,17 +1099,16 @@ amdouglas.uk, 1
 ameego.com, 1
 ameego.it, 1
 ameego.net, 1
 ameego.nl, 1
 ameego.org, 1
 amees.me, 1
 ameho.me, 0
 amelandadventure.nl, 1
-amerhd.com, 1
 american.dating, 1
 americanbio.com, 1
 americanfoundationbr.com, 1
 americanmediainstitute.com, 1
 americansportsinstitute.org, 1
 americasbasementcontractor.com, 1
 americkykongres.cz, 1
 amerigroup.com, 1
@@ -1413,17 +1410,16 @@ apila.care, 1
 apila.us, 1
 apis.google.com, 1
 apis.moe, 1
 apisyouwonthate.com, 1
 apk4fun.com, 1
 aplikaceproandroid.cz, 1
 aplpackaging.co.uk, 1
 aplu.fr, 1
-apm.com.tw, 1
 apn-einstellungen.de, 1
 apoil.org, 1
 apoly.de, 1
 aponkral.net, 1
 aposke.com, 1
 aposke.net, 1
 aposke.org, 1
 apothes.is, 1
@@ -1534,17 +1530,16 @@ arcusnova.de, 1
 ardorlabs.se, 1
 ardtrade.ru, 1
 area536.com, 1
 areafiftylan.nl, 1
 areatrend.com, 1
 arendburgers.nl, 1
 arent.kz, 1
 ares-trading.de, 1
-arewedubstepyet.com, 1
 arfad.ch, 1
 arg.zone, 1
 argb.de, 1
 argekultur.at, 1
 argot.com, 1
 argovpay.com, 1
 ariege-pyrenees.net, 1
 arifp.me, 1
@@ -1700,16 +1695,17 @@ asra.gr, 1
 asrob.eu, 0
 assdecoeur.org, 1
 asseenfromthesidecar.org, 1
 assemble-together.org, 1
 assetvault.co.za, 1
 assguidesporrentruy.ch, 1
 assindia.nl, 1
 assistance-personnes-agees.ch, 1
+asspinter.me, 1
 assumptionpj.org, 1
 assurancesmons.be, 1
 asta-bar.de, 0
 astaninki.com, 1
 astec-informatica.com, 1
 astengox.com, 1
 astenretail.com, 1
 astraalivankila.net, 1
@@ -1758,16 +1754,17 @@ atisoft.net.tr, 1
 atisoft.web.tr, 1
 atitude.com, 1
 ativapsicologia.com.br, 1
 atkdesign.pt, 1
 atl-paas.net, 1
 atlantareroof.com, 1
 atlantaspringroll.com, 1
 atlantichomes.com.au, 1
+atlantis-kh.noip.me, 1
 atlantischild.hu, 1
 atlantiswaterproofing.com, 1
 atlas.co, 1
 atlaschiropractic.org, 1
 atlascultural.com, 1
 atlassian.io, 1
 atlassian.net, 1
 atletika.hu, 1
@@ -1792,17 +1789,16 @@ attorney.org.il, 1
 atulhost.com, 1
 atviras.lt, 0
 atypicom.es, 1
 atypicom.fr, 1
 atypicom.it, 1
 atypicom.pt, 1
 atzenchefin.de, 1
 au-be.net, 1
-au2pb.net, 1
 au2pb.org, 1
 aubg.org, 1
 aubio.org, 1
 aubonmanger.fr, 1
 aucubin.de, 1
 audialbuquerqueparts.com, 1
 audiblox.co.za, 1
 audiense.com, 1
@@ -1867,16 +1863,17 @@ autoledky.sk, 1
 automacity.com, 1
 automationpro.me, 1
 automotivegroup-usedcars.be, 1
 automotivemechanic.org, 1
 autoosijek.com, 1
 autoparts.im, 1
 autoparts.sh, 1
 autoparts.wf, 1
+autos-retro-plaisir.com, 1
 autoshinka72.ru, 1
 autosiero.nl, 1
 autoskola.hr, 1
 autoskole.hr, 1
 autostop-occasions.be, 1
 autotechschool.com, 1
 autoterminus-used.be, 1
 autoverzekeringafsluiten.com, 1
@@ -1898,16 +1895,17 @@ avdagic.net, 1
 avdelivers.com, 1
 ave.zone, 1
 aveapps.com, 1
 avedesk.org, 1
 avenueeyecare.com, 1
 averam.net, 1
 averen.co.uk, 1
 avg.club, 1
+avi9526.pp.ua, 1
 aviationstrategy.aero, 1
 avmemo.com, 1
 avmo.pw, 1
 avmoo.com, 1
 avnet.ws, 1
 avonlearningcampus.com, 1
 avotoma.com, 1
 avpres.net, 1
@@ -2982,16 +2980,17 @@ bornhack.dk, 1
 borowski.pw, 1
 borrelioz.com, 1
 borysek.net, 1
 borzoi.com.br, 1
 boschee.net, 1
 boscoyacht.ch, 1
 boss.az, 1
 bostadsportal.se, 1
+bosun.io, 1
 bosworthdental.co.uk, 1
 botserver.de, 1
 bottaerisposta.net, 1
 bottineauneighborhood.org, 1
 bottke.berlin, 1
 bou.lt, 1
 bouah.net, 1
 bouchard-mathieux.com, 1
@@ -3078,38 +3077,40 @@ brandbuilderwebsites.com, 1
 brandcodestyle.com, 1
 brando753.xyz, 1
 brandongomez.me, 1
 brandonhubbard.com, 1
 brandons.site, 1
 brandonwalker.me, 1
 brandtrapselfie.nl, 1
 branw.xyz, 1
+brasal.ma, 1
+brasalcosmetics.com, 1
 brashear.me, 1
 brasilmorar.com, 1
 brasserie-mino.fr, 1
 brasspipedreams.org, 1
 bratislava-airport-taxi.com, 1
 bratteng.me, 0
-bratteng.xyz, 1
 bratvanov.com, 1
 brauingenieur.de, 1
 braunsteinpc.com, 1
 brava.bg, 1
 brave-foods.ch, 1
 brave-foods.com, 1
 brave.com, 1
 brazilian.dating, 1
 brb.city, 1
 brd.ro, 1
 breakingtech.it, 1
 breathingblanket.com, 1
 brecht.ch, 1
 breckle.com.ua, 1
 breda.computer, 1
+bredvid.no, 1
 breechdepot.com, 0
 breeethretail.ru, 1
 breest.net, 1
 breeswish.org, 1
 breeyn.com, 1
 brefy.com, 1
 brege.org, 1
 breitbild-beamer.de, 1
@@ -3243,16 +3244,17 @@ budger.nl, 1
 budgetalk.com, 1
 budntod.com, 1
 budolfs.de, 1
 buehnenbande.ch, 1
 bueltge.de, 1
 buergerdialog.net, 1
 buergerhaushalt.com, 1
 buettgens.net, 1
+buffaloautomation.com, 1
 buffalodrinkinggame.beer, 1
 buffhack.com, 0
 bug.blue, 1
 bugcrowd.com, 1
 bugginslab.co.uk, 1
 bugs.chromium.org, 1
 bugsmashed.com, 1
 bugtrack.co.uk, 1
@@ -3274,17 +3276,16 @@ bul3seas.eu, 1
 bulario.com, 1
 bulbcompare.com, 1
 bulbgenie.com, 1
 buldogueingles.com.br, 1
 bulgarien.guide, 1
 bulkcandystore.com, 1
 bulkingtime.com, 1
 bulktrade.de, 1
-bullbits.com, 1
 bulldog-hosting.de, 1
 bulledair-savons.ch, 1
 bullettags.com, 1
 bullterrier.nu, 1
 bulmastife.com.br, 1
 bumarkamoda.com, 0
 bumshow.ru, 1
 bunadarbankinn.is, 1
@@ -3806,17 +3807,16 @@ cerstve-korenie.sk, 1
 cerstvekorenie.sk, 1
 cert.or.id, 1
 certcenter.ch, 1
 certcenter.co.uk, 1
 certcenter.com, 1
 certcenter.de, 1
 certcenter.fr, 1
 certible.com, 1
-certifi.io, 1
 certificatedetails.com, 1
 certly.io, 1
 certnazionale.it, 1
 certspotter.com, 1
 certspotter.org, 1
 cervejista.com, 1
 cesdb.com, 1
 cesipagano.com, 1
@@ -4414,16 +4414,17 @@ codefoundry.it, 0
 codeine.co.uk, 1
 codeit.guru, 1
 codeit.us, 1
 codelove.de, 1
 codenode.io, 1
 codeplay.org, 1
 codepoints.net, 1
 codepref.com, 1
+codepult.com, 1
 codera.co.uk, 1
 codercross.com, 1
 codercy.com, 1
 codereview.appspot.com, 0
 codereview.chromium.org, 0
 coderhangout.com, 1
 codes.pk, 1
 codesplain.in, 1
@@ -4438,17 +4439,16 @@ codewild.de, 1
 codewiz.xyz, 1
 codeyellow.nl, 1
 codigosddd.com.br, 1
 coding.lv, 1
 coding.net, 1
 codingforspeed.com, 1
 codingrobots.com, 1
 codyevanscomputer.com, 1
-codymoniz.com, 1
 coerthas.com, 1
 coffee-mamenoki.jp, 1
 cogala.eu, 1
 cogent.cc, 1
 cogilog.com, 1
 cogitoltd.com, 1
 cogniflex.com, 1
 cognitivecomputingconsortium.com, 1
@@ -4585,17 +4585,16 @@ complt.xyz, 1
 compsmag.com, 1
 compubench.com, 1
 compucorner.mx, 1
 computehealth.com, 1
 computer-acquisti.com, 1
 computeracademy.co.za, 1
 computerassistance.co.uk, 1
 computerbase.de, 1
-computerhilfe-feucht.de, 1
 computernetwerkwestland.nl, 1
 computerslotopschool.nl, 1
 comssa.org.au, 1
 comunidadmontepinar.es, 1
 comyuno.com, 1
 conaudisa.com, 1
 concentrade.de, 1
 concept-web.ch, 1
@@ -4982,17 +4981,16 @@ csgo77.com, 1
 csgogamers.com, 1
 csgohandouts.com, 1
 csgotwister.com, 1
 csinterstargeneve.ch, 1
 csmainframe.com, 1
 csokolade.hu, 1
 csp.ch, 1
 cspeti.hu, 1
-cspvalidator.org, 1
 css.net, 1
 cssai.eu, 1
 cssaunion.com, 1
 cstkit.com, 0
 cstp-marketing.com, 1
 csuw.net, 1
 csvalpha.nl, 1
 cthomas.work, 1
@@ -5191,17 +5189,16 @@ daallexx.eu, 1
 dachb0den.net, 1
 dachdecker-ranzenberger.de, 1
 dachdeckermeister-egon-weiss.de, 1
 daciaforum.nl, 1
 dadons-laserdiscs.com, 1
 dadrian.io, 1
 daduke.org, 1
 daemen.org, 1
-daemon.xin, 1
 dag-hebergement.fr, 1
 dag-konsult.com, 1
 dahlberg.cologne, 1
 dai.top, 1
 dailyblogged.com, 1
 dailyenglishchallenge.com, 1
 dailyhealthguard.com, 1
 dailykos.com, 1
@@ -5288,16 +5285,17 @@ danw.io, 1
 danwin1210.me, 1
 daoro.net, 1
 daphne.informatik.uni-freiburg.de, 1
 daracokorilo.com, 1
 darbtech.net, 1
 darchoods.net, 0
 darcymarshall.com, 1
 dareyou.be, 1
+darinkotter.com, 1
 darioackermann.ch, 1
 darioturchetti.me, 1
 darisni.me, 1
 dark-vision.cz, 1
 darkag.ovh, 1
 darkcores.net, 1
 darkdestiny.ch, 1
 darkengine.net, 1
@@ -5566,16 +5564,17 @@ deinballon.de, 1
 deinewebsite.de, 1
 deitti.net, 1
 dejan.media, 1
 dejandayoff.com, 1
 dejure.org, 1
 dejw.cz, 1
 delahrzolder.nl, 1
 delbecqvo.be, 1
+delbrouck.ch, 1
 deleidscheflesch.nl, 1
 delfic.org, 1
 delhionlinegifts.com, 1
 deliandiver.org, 1
 deliberatedigital.com, 1
 deliciisanatoase.ro, 1
 deliciousmedia.co.uk, 1
 deloittequant.com, 1
@@ -5707,17 +5706,16 @@ devb.nl, 1
 devct.cz, 1
 devdesco.com, 1
 devdom.io, 1
 devdoodle.net, 1
 devel.cz, 1
 developer.mydigipass.com, 0
 developerfair.com, 1
 developers.facebook.com, 0
-developersclub.website, 1
 developfx.com, 1
 developmentaid.org, 1
 developmentsites.melbourne, 1
 develux.com, 1
 develux.net, 1
 devh.de, 1
 devh.net, 1
 deviant.email, 1
@@ -5774,17 +5772,16 @@ dhhs.gov, 1
 dhl-smart.ch, 1
 dhlinux.org, 1
 dhome.at, 1
 dhuy.net, 1
 diablofan.hopto.org, 0
 diabolic.chat, 1
 diadorafitness.es, 1
 diadorafitness.it, 1
-diagnosia.com, 1
 diagnostix.org, 1
 diagonale-deco.fr, 1
 diamante.ro, 1
 diamondcare.com.br, 1
 diamondpkg.org, 1
 diamorphine.com, 1
 diamsmedia.ch, 1
 dianefriedli.ch, 1
@@ -5794,17 +5791,16 @@ diasdasemana.com, 1
 diasp.cz, 1
 diasp.org, 1
 diasporadialogues.com, 1
 diavo.de, 1
 dibiphp.com, 1
 diccionarioabierto.com, 1
 diccionariodedudas.com, 1
 diceduels.com, 1
-dicgaming.net, 1
 dicionario.org, 1
 dicionariodegirias.com.br, 1
 dicionariodelatim.com.br, 1
 dicionariodenomesproprios.com.br, 1
 dicionariodesimbolos.com.br, 1
 dicionarioetimologico.com.br, 1
 dicionariopopular.com, 1
 dick.red, 1
@@ -5867,17 +5863,16 @@ digitalcuko.com, 1
 digitaldatacenter.net, 1
 digitaldeli.com, 1
 digitaldeli.org, 1
 digitaldeli.tv, 1
 digitaldeli.us, 1
 digitaldeliarchive.com, 1
 digitalehandtekeningen.nl, 1
 digitaleoverheid.nl, 1
-digitalewelten.de, 1
 digitalgov.gov, 1
 digitalhurricane.io, 1
 digitalimpostor.co.uk, 1
 digitallocker.com, 0
 digitalquery.com, 1
 digitalrights.fund, 1
 digitaltechnologies.ltd.uk, 1
 digitalunite.de, 1
@@ -5906,16 +5901,17 @@ dinge.xyz, 1
 dingss.com, 1
 dinmtb.dk, 1
 dino.li, 1
 dinotv.at, 1
 dintillat.fr, 1
 dintrafic.net, 1
 dinube.com, 1
 diodeled.com, 1
+diodo.me, 1
 dionysus.se, 1
 dipl.io, 0
 dipling.de, 1
 dipulse.it, 1
 dir2epub.com, 1
 dir2epub.org, 1
 directebanking.com, 1
 directinsure.in, 1
@@ -6268,16 +6264,17 @@ dreamtechie.com, 1
 dredgepress.com, 1
 dreiweiden.de, 1
 dreizwosechs.de, 1
 dress-cons.com, 1
 drevo-door.cz, 1
 drew.red, 1
 dreweryinc.com, 1
 drewsilcock.co.uk, 1
+drgn.no, 1
 drheibel.com, 1
 driesjtuver.nl, 1
 driftdude.nl, 1
 drighes.com, 1
 drillion.net, 1
 drinkplanet.eu, 1
 drinkvabeer.com, 1
 drino.org, 0
@@ -6305,17 +6302,16 @@ drogueriaelbarco.com, 1
 droidapp.nl, 1
 droidhere.com, 1
 droidim.com, 1
 droidwave.com, 1
 droidwiki.de, 1
 drone-it.net, 1
 dronemediauk.com, 0
 dronepit.dk, 1
-dronexpertos.com, 1
 droni.cz, 1
 dronografia.es, 1
 droomhuis-in-zuid-holland-kopen.nl, 1
 dropbox.com, 1
 dropboxer.net, 1
 dropshare.cloud, 1
 drostschocolates.com, 1
 drpetervoigt.de, 1
@@ -6330,16 +6326,17 @@ drunkscifi.com, 1
 drupal-expert.it, 1
 drupal.org, 1
 drweissbrot.net, 1
 dryan.com, 1
 drybasement.com, 1
 drybasementkansas.com, 1
 drybjed.net, 1
 drycleancoalition.org, 1
+drycreekapiary.com, 1
 drycreekphoto.com, 1
 ds67.de, 1
 dsancomics.com, 1
 dsbrowser.com, 1
 dsebastien.net, 1
 dsektionen.se, 1
 dsm5.com, 1
 dsol.hu, 1
@@ -6605,16 +6602,17 @@ eduardnikolenko.ru, 1
 educationevolving.org, 1
 educationunlimited.com, 1
 educator-one.com, 1
 educators.co.nz, 1
 educourse.ga, 1
 eductf.org, 1
 edudrugs.com, 1
 eduid.se, 1
+eduif.nl, 0
 edumundo.nl, 1
 edusantorini.com, 1
 edv-lehrgang.de, 1
 edvmesstec.de, 1
 edwar.do, 1
 edwards.me.uk, 1
 edwardsnowden.com, 1
 edwardspeyer.com, 1
@@ -6686,17 +6684,16 @@ eilhan.com, 1
 eimacs.com, 1
 eimanavicius.lt, 1
 einar.io, 1
 einaros.is, 1
 einfachbahn.de, 1
 einfachmaldiefressehalten.de, 1
 einheft.info, 1
 einheizpreis.de, 1
-einsatzstellenverwaltung.de, 1
 einsatzstiefel.info, 1
 eintageinzug.de, 1
 eintragsservice24.de, 1
 eipione.com, 1
 eirastudios.co.uk, 0
 eisaev.ru, 1
 eisp.it, 0
 eitler.cx, 1
@@ -6771,16 +6768,17 @@ elglobo.com.mx, 1
 elgosblanc.com, 1
 elhall.pro, 1
 elhall.ru, 1
 elhamadimi.com, 1
 elifesciences.org, 1
 eligible.com, 1
 eligibleapi.com, 1
 eligrey.com, 1
+elinvention.ovh, 1
 eliolita.com, 1
 eliott.be, 0
 elisa.ee, 0
 elisabeth-kostecki.de, 1
 elisabeth-strunz.de, 1
 elisabethkostecki.de, 1
 elite-box.com, 1
 elite-box.org, 1
@@ -7015,17 +7013,16 @@ equitee.co, 1
 er-music.com, 1
 er.tl, 1
 erad.fr, 1
 erasmusplusrooms.com, 1
 erdethamburgeronsdag.no, 1
 erepublik-deutschland.de, 1
 erethon.com, 1
 erf-neuilly.com, 1
-ergo-open.de, 1
 ergovitanet.com.br, 1
 eriador.io, 1
 ericabrahamsen.net, 1
 ericairwin.com, 1
 ericdiao.com, 1
 erichorstmanshof.nl, 1
 ericisaweso.me, 1
 ericjohnltd.com, 1
@@ -7074,16 +7071,17 @@ erwinwensveen.nl, 1
 erythroxylum-coca.com, 1
 es-geenen.de, 1
 es.search.yahoo.com, 0
 esaborit.ddns.net, 1
 esafar.cz, 1
 esagente.com, 1
 esample.info, 1
 esball888.net, 1
+esc.chat, 1
 escael.org, 1
 escapees.com, 1
 escapeplaza.de, 1
 escavador.com, 1
 esclear.de, 1
 escolaengenharia.com.br, 1
 escortdisplay.com, 1
 escortmantra.com, 1
@@ -7146,16 +7144,17 @@ estcequonmetenprodaujourdhui.info, 1
 esteam.se, 1
 esteticanorte.com.br, 1
 estland.guide, 1
 estonoentraenelexamen.com, 1
 estrietoit.com, 0
 eswap.cz, 1
 etaes.eu, 1
 etaoinwu.win, 1
+etath.com, 1
 etaxi.tn, 1
 eteapparel.com, 1
 eteesheet.com, 1
 etelej.com, 0
 etenendrinken.nu, 1
 eternalabyss.ml, 1
 eth-faucet.net, 1
 eth0.nl, 1
@@ -7271,17 +7270,16 @@ everfine.com.tw, 1
 evergladesrestoration.gov, 1
 everhome.de, 1
 everling.lu, 1
 everpcpc.com, 1
 evertonarentwe.com, 1
 everwaking.com, 0
 everyarti.st, 1
 everyday.eu.org, 1
-everygayporn.com, 1
 everymove.org, 1
 everywhere.cloud, 1
 eveseat.net, 1
 eveshaiwu.com, 1
 eveshamglass.co.uk, 1
 evexia.xyz, 1
 evidencebased.net, 1
 evidenceusa.com.br, 1
@@ -7334,17 +7332,16 @@ exhibityour.com, 1
 exiahost.com, 1
 exit9wineandliquor.com, 1
 exmoe.com, 1
 exo.do, 1
 exon.io, 1
 exoscale.ch, 1
 exoticads.com, 1
 exousiakaidunamis.pw, 1
-exp.de, 1
 expancio.com, 1
 expatads.com, 1
 experienceoz.com.au, 1
 expert-korovin.ru, 1
 experteasy.com.au, 1
 experts-en-gestion.fr, 1
 explodie.org, 1
 explodingcamera.com, 1
@@ -7363,16 +7360,17 @@ expowerhps.com, 1
 express-shina.ru, 1
 express-vpn.com, 1
 expressemotion.net, 1
 expresshosting.org, 1
 expressmarket.ru, 1
 expressvpn.com, 1
 expxkcd.com, 1
 exs.lv, 1
+extendwings.com, 1
 extensiblewebmanifesto.org, 1
 extensiblewebreportcard.org, 1
 extensiblewebsummit.org, 1
 extensiontree.com, 1
 extradesktops.com, 1
 extranetpuc.com.br, 1
 extrapagetab.com, 1
 extreme-gaming.de, 1
@@ -7396,16 +7394,17 @@ f-be.com, 1
 f-droid.org, 1
 f-thie.de, 1
 f00.fr, 1
 f1bigpicture.com, 1
 f1classement.com, 1
 f1minute.com, 1
 f42.net, 1
 f43.me, 1
+f5movies.top, 1
 f5nu.com, 1
 fa-works.com, 1
 faber.org.ru, 1
 faberusa.com, 1
 fabian-koeppen.de, 1
 fabianackle.ch, 1
 fabianasantiago.com, 1
 fabianfranke.de, 1
@@ -7735,17 +7734,16 @@ filo.xyz, 1
 filoitoupediou.gr, 1
 filoo.de, 1
 filterlists.com, 1
 finalvpn.com, 1
 financejobs.ch, 1
 financier.io, 1
 financniexperti.sk, 1
 findhoustonseniorcare.com, 1
-findingmyname.com, 1
 finditez.com, 1
 findmybottleshop.com.au, 1
 findthatnude.com, 1
 findyour.diet, 1
 findyourvoice.ca, 1
 fine-services.paris, 1
 finelovedolls.com, 1
 finenet.com.tw, 1
@@ -7903,43 +7901,44 @@ floriankarmen.com, 1
 floriankeller.de, 1
 florianmitrea.uk, 1
 florianschmitt.ca, 1
 florida-prep.org, 1
 floridaderi.ru, 1
 floridafieros.org, 1
 florinapp.com, 1
 florismoo.nl, 1
-florismouwen.com, 1
 florisvdk.net, 1
 floriswesterman.nl, 1
 floseed.fr, 1
 floskelwolke.de, 1
 floth.at, 1
 flowreader.com, 1
 flox.io, 1
 flra.gov, 1
 flucky.xyz, 1
 fluffycloud.de, 1
 fluidmeterusa.com, 1
 flumble.nl, 1
 fluoxetine.net, 1
 flux.by, 1
 fluxent.de, 0
+fluxfingers.net, 1
 fluxforge.com, 1
 fluxoid.com, 1
 flw365365.com, 1
 fly.moe, 1
 flyawayantennas.com, 1
 flybunnyfly.dk, 1
 flyinglocksmiths.com, 0
 flyingrub.me, 1
 flymns.fr, 1
 flynn.io, 1
 flyserver.co.il, 1
+flyss.net, 1
 flyssh.net, 1
 flyt.online, 1
 fm.ie, 1
 fmapplication.com, 1
 fmarchal.fr, 1
 fminsight.net, 1
 fmodoux.biz, 1
 fnb-griffinonline.com, 1
@@ -8280,17 +8279,16 @@ fsm2016.org, 1
 fsradio.eu, 1
 fsvt.ch, 1
 ftang.de, 1
 ftc.gov, 0
 ftccomplaintassistant.gov, 1
 ftcefile.gov, 1
 fteproxy.org, 1
 ftgho.com, 1
-ftpi.ml, 1
 ftrsecure.com, 1
 fuchsy.com, 1
 fuckav.ru, 1
 fuckbilibili.com, 1
 fuckcf.cf, 1
 fucklife.ch, 1
 fudanshi.org, 1
 fuechschen.org, 1
@@ -8567,17 +8565,16 @@ geektopia.es, 1
 geekwhack.org, 1
 geekwithabudget.com, 1
 geekwu.org, 1
 geekzone.co.nz, 1
 geekzone.fr, 1
 geertswei.nl, 1
 gegeco.ch, 1
 geh.li, 1
-gehaowu.com, 1
 gehrke.nrw, 1
 gehsicht.de, 1
 geiser-family.ch, 1
 geiser.io, 1
 gelb-computer.de, 1
 geld-im-blick.de, 1
 geld24.nl, 1
 geldimblick.de, 1
@@ -8822,17 +8819,16 @@ glass.google.com, 1
 glasschmuck-millefiori.de, 1
 glazedmag.fr, 1
 glbg.eu, 1
 gleanview.com, 1
 glenhuntlyapartments.com.au, 1
 glidingshop.cz, 1
 glidingshop.de, 1
 glidingshop.eu, 1
-glitchsys.com, 1
 glittersjabloon.nl, 1
 glloq.org, 1
 glob-coin.com, 1
 global-lights.ma, 1
 global-office.com, 1
 global.hr, 1
 globalchokepoints.org, 1
 globalcomix.com, 1
@@ -9082,16 +9078,18 @@ greengoblindev.com, 1
 greenpeace-magazin.de, 1
 greenpeace.berlin, 1
 greensdictofslang.com, 1
 greensolid.biz, 1
 greenteamtwente.nl, 1
 greger.me, 1
 greggsfoundation.org.uk, 1
 gregmartyn.com, 1
+gregmilton.com, 1
+gregmilton.org, 1
 gregoirow.be, 1
 gregorians.org, 1
 gregorykelleher.com, 1
 gregoryrealestategroup.com, 1
 gregorywiest.com, 1
 greiners.net, 1
 grekland.guide, 1
 grepmaste.rs, 1
@@ -9633,27 +9631,26 @@ hennecke-forstbetrieb.de, 1
 henneke.me, 1
 hennymerkel.com, 1
 henok.eu, 1
 henriksen.is, 1
 henrikwelk.de, 1
 henrock.net, 1
 henry.gg, 1
 henryphan.com, 0
+hentai.design, 1
 hentaimaster.net, 1
 hentschke-bau.de, 1
 hentschke-betonfertigteilwerk.de, 1
 hentschke-invest.de, 1
 heppler.net, 1
 heptafrogs.de, 1
 heptner24.de, 1
 her25.com, 1
-herbandpat.org, 1
 herbert.io, 1
-herbertmouwen.nl, 1
 herbweb.net, 1
 herbweb.org, 1
 herculex.fi, 1
 herds.eu, 1
 herdserv.de, 1
 here.ml, 1
 herebedragons.io, 1
 herecsrymy.cz, 1
@@ -9688,17 +9685,16 @@ hexe.net, 1
 hexed.it, 1
 hexicurity.com, 1
 hexid.me, 1
 hexieshe.com, 1
 hexo.io, 1
 hexobind.com, 1
 hexony.com, 1
 heycms.com, 0
-heyfringe.com, 1
 hg.python.org, 1
 hg0088.vip, 1
 hg718.com, 1
 hg71801.com, 1
 hg71802.com, 1
 hg71803.com, 1
 hg71805.com, 1
 hg71806.com, 1
@@ -9951,16 +9947,17 @@ hospitalhomelottery.org, 1
 hostadvice.com, 1
 hosted-oswa.org, 1
 hosted4u.de, 1
 hostedbgp.net, 1
 hostedtalkgadget.google.com, 1
 hostfission.com, 1
 hostfuture.co.in, 1
 hostgigz.com, 1
+hostingfirst.nl, 1
 hostinghelp.guru, 1
 hostinginnederland.nl, 1
 hostingpunt.be, 1
 hostix.de, 1
 hostma.ma, 1
 hostmijnpagina.nl, 1
 hostmodern.com.au, 1
 hosts.cf, 1
@@ -10339,17 +10336,16 @@ ignitedmindz.in, 1
 igotoffer.com, 0
 igrivi.com, 1
 igsmgmt.com, 1
 iguana.com.ec, 1
 ih8sn0w.com, 1
 ihkk.net, 1
 ihollaback.org, 1
 ihopeit.works, 1
-ihostup.net, 1
 ihotel.io, 1
 ihrhost.com, 1
 ihuanmeng.com, 0
 iiong.com, 1
 iirii.com, 1
 ijoda.com, 1
 ijohan.nl, 1
 ijsclubtilburg.nl, 1
@@ -10742,17 +10738,16 @@ invitescene.com, 1
 invoiced.com, 1
 invoicefinance.com, 1
 invoicefinance.nl, 1
 inwestcorp.se, 1
 inzdr.com, 1
 iocheck.com, 0
 iodice.org, 1
 iodu.re, 1
-ioiart.eu, 1
 iojo.net, 1
 iompost.com, 1
 iomstamps.com, 1
 ionc.ca, 1
 ionlabs.kr, 1
 iossifovlab.com, 1
 iostream.by, 1
 ip-hahn.de, 1
@@ -11018,17 +11013,16 @@ j-navi.com, 1
 j0s.at, 1
 j0s.eu, 1
 j2ee.cz, 1
 j3e.de, 1
 j8y.de, 1
 ja-dyck.de, 1
 ja.md, 1
 jaakkohannikainen.fi, 1
-jaalits.com, 1
 jaan.su, 1
 jaaxypro.com, 1
 jaba.hosting, 1
 jabbas.eu, 1
 jabber.at, 1
 jabberfr.org, 1
 jabberzac.org, 1
 jaberg-rutschi.ch, 1
@@ -11058,17 +11052,16 @@ jahanaisamu.com, 1
 jahner.xyz, 1
 jahofmann.de, 1
 jaimechanaga.com, 1
 jaion.ml, 1
 jaispirit.com, 1
 jaitnetworking.com, 0
 jakarta.dating, 1
 jake.eu.org, 1
-jake.ml, 1
 jake.nom.za, 1
 jakecurtis.de, 1
 jakeguild.com, 1
 jakenbake.com, 1
 jakereynolds.co, 1
 jakerullman.com, 1
 jaketremper.com, 1
 jakincode.army, 1
@@ -11188,16 +11181,17 @@ jcaicedo.com, 1
 jcaicedo.tk, 1
 jccars-occasions.be, 1
 jccrew.org, 1
 jcraft.us, 1
 jcwodan.nl, 1
 jcyz.cf, 1
 jd-group.co.uk, 1
 jd1.de, 1
+jdcdirectsales.com.ph, 1
 jdcgroup.com.ph, 1
 jdh8.org, 1
 jdoi.pw, 1
 jdoiron.me, 1
 jdsf.tk, 1
 jdtic.com, 1
 jdubya.info, 1
 je-vends.fr, 1
@@ -11306,35 +11300,32 @@ jinshuju.net, 1
 jiogo.com, 1
 jira.com, 1
 jirav.com, 1
 jiripudil.cz, 1
 jisaku-homepage.com, 1
 jiveiaktivno.bg, 1
 jixun.moe, 1
 jiyusu.com, 1
-jiyuu-ni.com, 1
-jiyuu-ni.net, 1
 jjf.org.au, 1
 jjj.blog, 1
 jjvanoorschot.nl, 1
 jka.io, 1
 jkchocolate.com, 1
 jkirsche.com, 1
 jkng.eu, 1
 jkrippen.com, 1
 jlhmedia.com, 1
 jlkhosting.com, 1
 jlr-luxembourg.com, 1
 jm-bea.net, 1
 jmarciniak.it, 1
 jmb.lc, 1
 jmbelloteau.com, 1
 jmcleaning.services, 1
-jmedved.com, 1
 jmpmotorsport.co.uk, 1
 jmvbmx.ch, 1
 jmvdigital.com, 1
 jn1.me, 1
 jncde.de, 1
 jncie.de, 1
 jncie.eu, 1
 jncip.de, 1
@@ -11407,16 +11398,17 @@ johnvanhese.nl, 1
 johnverkerk.com, 1
 joi-dhl.ch, 1
 jokescoff.com, 1
 jokewignand.nl, 1
 jollausers.de, 1
 jomo.tv, 1
 jomp16.tk, 1
 jonandnoraswedding.com, 1
+jonarcher.info, 1
 jonas-thelemann.de, 1
 jonaskjodt.com, 1
 jonasmoeller.consulting, 0
 jonasmoeller.de, 0
 jonaswitmer.ch, 1
 jonathan-apps.com, 1
 jonathancarter.org, 1
 jonathandowning.uk, 0
@@ -11534,17 +11526,16 @@ juegosycodigos.mx, 1
 juergen-elbert.de, 1
 juergenhecht.de, 1
 jugendsuenden.info, 1
 juhakoho.com, 1
 juku-info.top, 1
 julegoerke.de, 1
 juliamweber.de, 1
 julian-weigle.de, 1
-julian-witusch.de, 1
 juliangonggrijp.com, 1
 julianickel.de, 1
 julianmeyer.de, 1
 juliansimioni.com, 1
 julianskitchen.ch, 1
 julianvmodesto.com, 1
 julianweigle.de, 1
 juliawebber.co.za, 1
@@ -11653,16 +11644,17 @@ kakao-karten.de, 1
 kakaomilchkuh.de, 1
 kakaravaara.fi, 1
 kaketalk.com, 1
 kakolightingmuseum.or.jp, 1
 kalastus.com, 1
 kalender.com, 1
 kalevlamps.co.uk, 1
 kaliaa.fi, 1
+kalian.cz, 1
 kall.is, 1
 kallies-net.de, 1
 kalmar.com, 1
 kaloix.de, 1
 kaltenbrunner.it, 1
 kalterersee.ch, 1
 kamalame.co, 1
 kamikaichimaru.com, 1
@@ -11763,16 +11755,17 @@ katrinjanke.de, 1
 kattelans.eu, 1
 kattenfun.be, 1
 kattenfun.nl, 1
 kau-boys.com, 1
 kau-boys.de, 1
 kaufberatung.community, 1
 kavik.no, 1
 kavovary-kava.cz, 1
+kawaii.io, 1
 kawaiii.link, 1
 kaweus.de, 1
 kayakabovegroundswimmingpools.com, 1
 kaydan.io, 1
 kayipmurekkep.com, 1
 kayleen.net, 1
 kaylyn.ink, 0
 kayon.cf, 1
@@ -11849,16 +11842,17 @@ kenkoelectric.com, 0
 kennedy.ie, 1
 kenners.org, 1
 kennethaasan.no, 1
 kennethlim.me, 1
 kenny-peck.com, 1
 kenoschwalb.com, 1
 kentacademiestrust.org.uk, 1
 kentec.net, 1
+kenvix.com, 1
 keops-spine.fr, 1
 keops-spine.us, 1
 kepkonyvtar.hu, 1
 kepler-seminar.de, 1
 kerebro.com, 1
 kerem.xyz, 1
 kerforhome.com, 1
 kerijacoby.com, 1
@@ -12230,17 +12224,16 @@ kovals.sk, 1
 kovnsk.net, 1
 kovspace.com, 1
 kowalmik.tk, 1
 kowarschick.de, 1
 koyaanis.com, 1
 kozmik.co, 1
 kozuch.biz, 1
 kpdyer.com, 1
-kpebetka.net, 1
 kpfanworld.com, 0
 kpinvest.eu, 1
 kplasticsurgery.com, 1
 kpmgpublications.ie, 1
 kpn-dnssec.com, 1
 kpop.re, 1
 kpumuk.info, 1
 kpvpn.com, 1
@@ -12282,16 +12275,17 @@ kristikala.nl, 1
 kristinbailey.com, 1
 kristofferkoch.com, 1
 krizek.cc, 1
 krk-media.pl, 0
 krmeni.cz, 1
 kromonos.net, 1
 kronaw.it, 1
 krony.de, 1
+kroon.email, 1
 krouzkyliduska.cz, 1
 kruegerrand-wert.de, 1
 krugermillions.org, 1
 kruin.net, 1
 krupa.net.pl, 0
 krutka.cz, 1
 kruu.de, 1
 kryglik.com, 1
@@ -12358,17 +12352,16 @@ kuroisalva.xyz, 0
 kurona.ga, 1
 kurschies.de, 1
 kursprogramisty.pl, 1
 kurswahl-online.de, 1
 kuruppa.xyz, 1
 kuschku.de, 1
 kusdaryanto.web.id, 1
 kutinsoft.com, 1
-kutukupret.com, 1
 kuwago.io, 1
 kvalita-1a.cz, 1
 kvalitnitesneni.cz, 1
 kvetinymilt.cz, 1
 kvhile.com, 1
 kvn.tf, 1
 kvt.berlin, 1
 kwat.chat, 1
@@ -12782,17 +12775,16 @@ les-pingouins.com, 1
 lesancheslibres.fr, 1
 lesberger.ch, 1
 lesbiansslaves.com, 1
 lesbofight.com, 1
 lescomptoirsdepierrot.com, 1
 lesdouceursdeliyana.com, 1
 leseditionsbraquage.com, 1
 lesformations.net, 1
-lesharris.com, 1
 lesmamy.ch, 1
 lesmontagne.net, 1
 lesnet.co.uk, 1
 lespagesweb.ch, 1
 lespecialiste-pradelexcellence.com, 1
 lesquatredauphins.fr, 1
 lesscloud.com, 1
 lessets-graphiques.com, 1
@@ -12872,18 +12864,16 @@ libreoffice-from-collabora.com, 1
 libreofficefromcollabora.com, 1
 librervac.org, 1
 libscode.com, 0
 libskia.so, 1
 libsodium.org, 1
 libstock.si, 1
 liceserv.com, 1
 lichess.org, 1
-lichess4545.com, 1
-lichess4545.tv, 1
 lichtspot.de, 1
 lichttraeumer.de, 1
 lickmypussy.us, 1
 lickthesalt.com, 1
 lidavidm.me, 1
 liderwalut.pl, 0
 lidl-gewinnspiel.de, 1
 lidl-holidays.com, 1
@@ -12958,21 +12948,23 @@ linearaudio.net, 1
 linearaudio.nl, 1
 lingerie.com.br, 1
 lingeriesilhouette.com, 1
 lingolia.com, 1
 lingotaxi.com, 1
 linguamilla.com, 1
 linguatrip.com, 0
 lingvo-svoboda.ru, 1
+link-sanitizer.com, 1
 linkages.org, 1
 linkenheil.org, 1
 linklocker.co, 1
 linkmaker.co.uk, 1
 linkonaut.net, 1
+linksanitizer.com, 1
 linky.tk, 1
 linkycat.com, 1
 linley.de, 1
 linode.com, 0
 linost.com, 1
 linpx.com, 1
 linqhost.nl, 1
 linss.com, 1
@@ -13421,16 +13413,17 @@ m132.eu, 1
 m2epro.com, 1
 m2os.com, 1
 m4570.xyz, 1
 m4rcus.de, 1
 ma-plancha.ch, 1
 ma2t.com, 1
 maartenderaedemaeker.be, 1
 maartenprovo.be, 1
+maartenterpstra.xyz, 1
 maartenvandekamp.nl, 1
 mabulledu.net, 1
 mac-i-tea.ch, 1
 mac1.net, 1
 macandtonic.com, 1
 macaque.io, 0
 macaws.org, 1
 macchaberrycream.com, 0
@@ -13473,17 +13466,16 @@ madin.ru, 1
 madirc.net, 1
 madmar.ee, 1
 madnetwork.org, 1
 madoka.nu, 1
 madokami.net, 1
 madrants.net, 1
 madreacqua.org, 1
 madtec.de, 1
-madusecurity.com, 1
 mae-berlinistanbul.com, 1
 maedchenflohmarkt.at, 1
 maedchenflohmarkt.de, 1
 maelstrom.ninja, 1
 maestrano.com, 1
 maff.co.uk, 1
 mafia.network, 1
 mafiaforum.de, 1
@@ -13541,17 +13533,16 @@ maisgasolina.com, 1
 maisretorno.com, 1
 maisvitaminas.com.br, 1
 majahoidja.ee, 1
 majaweb.cz, 1
 majemedia.com, 1
 majid.info, 1
 make-pizza.info, 1
 makedin.net, 1
-makeit-so.de, 1
 makenaiyo-fx.com, 1
 makeshiftco.de, 1
 makeuplove.nl, 1
 makeyourank.com, 1
 makinen.ru, 1
 makkusu.photo, 1
 makowitz.cz, 1
 maktoob.search.yahoo.com, 0
@@ -13651,17 +13642,16 @@ maozedong.red, 1
 map4erfurt.de, 1
 map4jena.de, 1
 mapasmundi.com.br, 1
 mapblender.com, 1
 maplanetebeaute.fr, 1
 mapletime.com, 1
 mapresidentielle.fr, 1
 maquinariaspesadas.org, 1
-marakovits.net, 1
 marbinvest.com, 1
 marble.com, 1
 marbogardenlidkoping.se, 1
 marc-schlagenhauf.de, 1
 marcbuehlmann.com, 1
 marcdorka.de, 1
 marceau.ovh, 1
 marcel-preuss.de, 1
@@ -13903,16 +13893,17 @@ maxwell-english.co.jp, 0
 maxwellflynn.com, 1
 may24.tw, 1
 mayerbrownllz.com, 1
 maypolevilla.co.uk, 1
 mayrhofer.eu.org, 1
 mazda-mps.de, 1
 mazda626.net, 1
 maze.fr, 1
+mazurlabs.tk, 1
 mb-is.info, 1
 mbaestlein.de, 1
 mbardot.com, 1
 mbasic.facebook.com, 0
 mbcars.be, 1
 mbconsultancy.nu, 1
 mbdrogenbos-usedcars.be, 1
 mbeo.ch, 1
@@ -13974,17 +13965,16 @@ mcuong.tk, 0
 mcynews.com, 1
 mcyukon.com, 1
 md5file.com, 1
 md5hashing.net, 1
 mdcloudpracticesolutions.com, 1
 mdcloudps.com, 1
 mdek.at, 1
 mdewendt.de, 1
-mdkr.nl, 1
 mdma.net, 1
 mdmed.clinic, 1
 mdns.eu, 1
 mdpraha.cz, 1
 mdwftw.com, 1
 mdx.no, 1
 mdxn.org, 1
 me-center.com, 1
@@ -14098,17 +14088,16 @@ meldcode-assistent.nl, 1
 meledia.com, 1
 melenchatsmelenchiens.fr, 1
 melf.nl, 1
 melhoresdominios.com, 1
 melhoresdominios.net, 1
 melhoresmarcasdenotebook.com.br, 1
 melhorproduto.com.br, 1
 melissaadkins.com, 1
-melitopol.co.ua, 1
 melnessgroup.com, 1
 melnikov.ch, 1
 melodic.com.au, 1
 melodrom.de, 1
 melody-lyrics.com, 1
 melpomene.me, 1
 melted.me, 1
 meltzow.net, 1
@@ -14393,17 +14382,16 @@ minepay.net, 1
 minepic.org, 1
 minepod.fr, 1
 minesouls.fr, 1
 minez-nightswatch.com, 0
 minf3-games.de, 1
 mingo.nl, 1
 mingram.net, 1
 mingwah.ch, 1
-mingy.ddns.net, 1
 mingyueli.com, 1
 minhanossasenhora.com.br, 1
 mini2.fi, 1
 minigolf-reisinger.com, 1
 minikidz.es, 1
 minikneet.com, 1
 minipainting.net, 1
 minis-hip.de, 1
@@ -14652,17 +14640,16 @@ monix.io, 1
 monkeydust.net, 1
 monkeyhill.us, 1
 monloyer.quebec, 1
 monnyonle.hu, 1
 monobank.no, 1
 monolithapps.com, 1
 monolithinteractive.com, 1
 monoseis-monotica.gr, 1
-monpc-pro.fr, 1
 monpermismoto.com, 1
 monpermisvoiture.com, 1
 monsieursavon.ch, 1
 montage-kaika.de, 1
 montagne-tendance.ch, 1
 montand.com, 1
 montanwerk.de, 1
 montarfotoaki.com, 1
@@ -15636,16 +15623,17 @@ nikomo.fi, 0
 nil.gs, 1
 niloxy.com, 1
 nilrem.org, 1
 nimeshjm.com, 1
 ninaundandre.de, 1
 ninchat.com, 1
 nine-hells.net, 0
 ninebennink.com, 1
+ninespec.com, 1
 ning.so, 1
 ninja-galerie.de, 1
 ninjan.co, 1
 ninjaspiders.com, 1
 ninofink.com, 1
 ninthfloor.org, 1
 ninux.ch, 0
 niouininon.eu, 1
@@ -15692,17 +15680,16 @@ nmsnj.com, 1
 nn.cz, 1
 nna774.net, 1
 nnote.net, 1
 nnqc.nl, 1
 no-xice.com, 1
 no.search.yahoo.com, 0
 noagendahr.org, 1
 nobleparkapartments.com.au, 1
-nobly.de, 1
 noc.wang, 1
 nocit.dk, 1
 nocs.cn, 1
 nodari.com.ar, 1
 nodariweb.com.ar, 1
 nodecompat.com, 1
 nodefoo.com, 1
 nodejs.de, 1
@@ -16045,17 +16032,16 @@ offtherails.ie, 1
 ofggolf.com, 1
 oficinadocelular.com.br, 1
 oflow.me, 1
 ofo2.com, 1
 oftamedic.com, 1
 oftn.org, 1
 oge.ch, 1
 ogkw.de, 1
-oglen.ca, 1
 ogocare.com, 1
 oguya.ch, 1
 oh14.de, 1
 ohayosoro.me, 1
 oheila.com, 1
 ohiohealthfortune100.com, 1
 ohnemusik.com, 1
 ohsocool.org, 1
@@ -16394,16 +16380,17 @@ ouaibe.qc.ca, 1
 ouimoove.com, 1
 oulunjujutsu.com, 1
 ourai.ws, 1
 ourchoice2016.com, 1
 ourcloud.at, 1
 ourcodinglives.com, 1
 ourevents.net, 1
 ourwedding.xyz, 1
+ousti.sh, 0
 outdoorfurniture.ie, 1
 outerlimitsdigital.com, 1
 outetc.com, 1
 outgress.com, 1
 outka.xyz, 1
 outline.ski, 1
 outlookonthedesktop.com, 1
 outofcontrol.ca, 1
@@ -16475,16 +16462,17 @@ paf-events.ch, 1
 pagalworld.me, 1
 pagefulloflies.io, 1
 pagewizz.com, 0
 pagiamtzis.com, 1
 pagina.com.mx, 1
 paginapolitica.ro, 1
 pagure.io, 1
 pagure.org, 1
+pahae.de, 1
 pahlawanpulsa.com, 1
 paindata.dk, 1
 painefamily.co.uk, 1
 painosso.org, 1
 paint-it.pink, 1
 paio2-rec.com, 1
 paio2.com, 1
 paizinhovirgula.com, 1
@@ -16891,16 +16879,17 @@ peternagy.ie, 1
 petersontoscano.com, 1
 petite-maison.ch, 1
 petitsfrenchies.com, 1
 petja.me, 0
 petko.me, 1
 petmall.bg, 1
 petplus.com, 1
 petpost.co.nz, 0
+petrachuk.ru, 1
 petrasestakova.cz, 1
 petruzz.net, 1
 pettitcoat.com, 1
 peuf.shop, 1
 pex.digital, 1
 peyote.com, 1
 peyote.org, 1
 pfa.or.jp, 1
@@ -17400,16 +17389,17 @@ postal3.es, 1
 postblue.info, 1
 postbox.life, 1
 postcardpayment.com, 1
 postcode.nl, 1
 postcodegarant.nl, 1
 postdarwinian.com, 1
 postdarwinism.com, 1
 posteo.de, 0
+posterspy.com, 1
 postfinance.ch, 1
 postmatescode.com, 1
 postn.eu, 1
 posttigo.com, 1
 potatiz.com, 1
 potatofrom.space, 1
 potatopro.com, 1
 potbox.com, 1
@@ -17606,16 +17596,17 @@ project.supply, 1
 projectarmy.net, 0
 projectbenson.com, 0
 projectblackbook.us, 1
 projectnom.com, 1
 projectsecretidentity.com, 1
 projectsecretidentity.org, 1
 projectte.ch, 1
 projectunity.io, 1
+projekt-umbriel.de, 1
 projektik.cz, 1
 projektzentrisch.de, 1
 prok.pw, 1
 prokop.ovh, 1
 prolan.pw, 1
 promedicalapplications.com, 1
 prometheanfire.net, 1
 prometheanfire.org, 1
@@ -17931,16 +17922,17 @@ qul.link, 1
 quocdesign.ch, 1
 quotev.com, 1
 quppa.net, 1
 quuz.org, 1
 qvitoo.com, 1
 qwans.nl, 1
 qwant.com, 1
 qwant.fr, 1
+qweepi.de, 1
 qwikdash.com, 1
 qxy.ch, 1
 r-core.org, 1
 r-cut.fr, 1
 r-rwebdesign.com, 1
 r0t.co, 1
 r0uzic.net, 1
 r2d2pc.com, 1
@@ -18102,17 +18094,16 @@ rc-offi.net, 1
 rc-shop.ch, 1
 rc7.ch, 1
 rca.fr, 1
 rchrdsn.uk, 1
 rcnitrotalk.com, 1
 rcraigmurphy.com, 1
 rcx.io, 1
 rdl.at, 0
-rdyrda.fr, 1
 re-wilding.com, 1
 reachrss.com, 1
 reaconverter.com, 1
 react-db.com, 1
 reactivarte.es, 1
 read.sc, 1
 reades.co.uk, 1
 readingandmath.org, 1
@@ -18272,17 +18263,17 @@ reinhard.codes, 1
 reinhardtsgrimma.de, 1
 reinierjonker.nl, 1
 reinoldus.ddns.net, 1
 reinout.nu, 1
 reinouthoornweg.nl, 1
 reishunger.de, 1
 rejahrehim.com, 1
 rekorsanat.com.tr, 1
-relatethesport.com, 1
+relatethesport.com, 0
 relatic.net, 1
 relax.hn, 1
 relaxdom.net, 1
 relaxhavefun.com, 1
 relaxpointhyncice.cz, 1
 relaybox.io, 1
 release-monitoring.org, 1
 reliancebank.bank, 1
@@ -18628,17 +18619,16 @@ rogersvilleumc.org, 1
 rognhaugen.no, 1
 rogue-e.xyz, 1
 roguefinancial.com, 1
 roguesignal.net, 1
 roguetechhub.org, 1
 rohedaten.de, 1
 rohitagr.com, 1
 rohlik.cz, 1
-rointe.online, 1
 roketix.co.uk, 1
 rokki.ch, 1
 rokort.dk, 1
 rokudenashi.de, 1
 roland.io, 1
 rolandkolodziej.com, 1
 rolandslate.com, 1
 rolandszabo.com, 1
@@ -18932,17 +18922,16 @@ sagerus.com, 1
 sagsmarseille.com, 1
 sahar.io, 1
 saharmassachi.com, 1
 said.my.id, 1
 saier.me, 1
 saifoundation.in, 1
 saigonflowers.com, 1
 saigonstar.de, 1
-saikarra.com, 1
 saikouji.tokushima.jp, 1
 sailormoonevents.org, 0
 sainetworks.net, 1
 saintanthonyscorner.com, 1
 sainth.de, 1
 saintsrobotics.com, 1
 saipariwar.com, 1
 saiputra.com, 1
@@ -19347,16 +19336,17 @@ seb-mgl.de, 1
 sebastian-janich.de, 1
 sebastian-kraus.me, 1
 sebastian-lutsch.de, 1
 sebastian-schmidt.me, 1
 sebastian.expert, 1
 sebastianblade.com, 1
 sebastianboegl.de, 1
 sebastiensenechal.com, 1
+sebi.org, 1
 sec-mails.de, 1
 sec-wiki.com, 1
 sec.ec, 1
 sec.gd, 1
 secanje.nl, 1
 secboom.com, 1
 seccomp.ru, 1
 secctexasgiving.org, 0
@@ -19459,17 +19449,16 @@ segurosbalboa.com.ec, 1
 segurosocial.gov, 0
 seguroviagem.srv.br, 1
 sehnenweh.org, 1
 seida.at, 1
 seifried.org, 1
 seinfeldquote.com, 1
 seiryokuzai-ch.com, 1
 seitenwaelzer.de, 1
-seizoushokoyuubangou.com, 1
 sekisonn.com, 1
 selco-himejiminami.com, 1
 selcusters.nl, 1
 selected-properties.com, 1
 selectel.ru, 1
 selectorders.com, 1
 selegiline.com, 1
 selent.me, 1
@@ -19679,28 +19668,26 @@ shanae.nl, 1
 shanetully.com, 1
 shanewadleigh.com, 1
 shang-yu.cn, 1
 shannoneichorn.com, 1
 shansing.cn, 1
 shansing.com, 1
 shansing.net, 1
 shansing.space, 1
-shaobin.wang, 1
 sharanyamunsi.net, 1
 shardsoft.com, 1
 shareeri.com, 1
 sharejoy.cn, 0
 sharekey.com, 1
 shareoffice.ch, 1
 shareoine.com, 1
 sharepointdrive.com, 1
 sharescope.co.uk, 0
 shareselecttools.com, 1
-sharesplitter.com, 1
 sharewbb.com, 1
 shareworx.net, 1
 sharezen.de, 1
 sharu.me, 1
 sharvey.ca, 1
 shasso.com, 1
 shatorin.com, 1
 shaun.net, 1
@@ -19853,17 +19840,16 @@ signix.net, 1
 signoracle.com, 1
 signosquecombinam.com.br, 1
 signslabelstapesandmore.com, 0
 signtul.com, 0
 sigsegv.run, 1
 sigterm.no, 1
 sigterm.sh, 1
 siirtutkusu.com, 1
-sijimi.cn, 0
 sijmenschoon.nl, 1
 sikatehtaat.fi, 1
 sikevux.se, 1
 sikko.biz, 1
 siku-shop.ch, 1
 siku.pro, 1
 silashes.com, 1
 silentexplosion.de, 1
@@ -19943,16 +19929,17 @@ simfed.org, 1
 simlau.net, 1
 simnovo.net, 1
 simoesgoulart.com.br, 1
 simon-hofmann.org, 1
 simon.lc, 1
 simoncommunity.org.uk, 1
 simoncook.org, 1
 simonhirscher.de, 1
+simonkjellberg.com, 1
 simonkjellberg.se, 1
 simonlyabonnement.nl, 1
 simonpaarlberg.com, 1
 simonreich.de, 1
 simonschmitt.ch, 1
 simonsmh.cc, 1
 simonspeich.ch, 1
 simonsreich.de, 1
@@ -20718,17 +20705,16 @@ stalkr.net, 1
 stalkthe.net, 1
 stamboommuller.nl, 1
 stamboomvanderwal.nl, 1
 stamkassa.nl, 1
 stammtisch.domains, 1
 stamonicatourandtravel.com, 1
 stamparmakarije.me, 1
 stampederadon.com, 1
-stanandjerre.org, 1
 standagainstspying.org, 1
 standards.gov, 1
 standoutbooks.com, 1
 star-citizen.wiki, 1
 star-killer.net, 1
 starcafe.me, 1
 starcomproj.com, 1
 stardanceacademy.net, 1
@@ -21050,16 +21036,17 @@ sulek.eu, 1
 sumguy.com, 1
 summa.eu, 0
 summer.ga, 1
 sumthing.com, 1
 sunbritetv.com, 1
 sundanceusa.com, 1
 sundayfundayjapan.com, 1
 suneilpatel.com, 1
+sunflyer.cn, 0
 sunfox.cz, 1
 sungo.wtf, 1
 sunjaydhama.com, 1
 sunsetwx.com, 1
 sunsmartresorts.com, 1
 sunstar.bg, 1
 supa.sexy, 1
 supastuds.com, 1
@@ -21072,17 +21059,16 @@ supercreepsvideo.com, 1
 superguide.com.au, 1
 superhappiness.com, 1
 superhome.com.au, 1
 superkonsult.se, 1
 superlandnetwork.de, 1
 supermarx.nl, 1
 supern0va.net, 1
 supernt.lt, 1
-superpase.com, 1
 supersahnetorten.de, 1
 supersonnig-festival.de, 1
 supersonnigfestival.de, 1
 supersu.kr, 1
 superswingtrainer.com, 1
 supes.io, 1
 supeuro.com, 1
 supinbot.ovh, 0
@@ -21404,17 +21390,16 @@ taylorpearson.me, 1
 taysonvodao.fr, 1
 tazemama.biz, 1
 tazj.in, 0
 tb-devel.de, 1
 tbarter.com, 0
 tbitc.ch, 1
 tbonejs.org, 1
 tbrss.com, 1
-tbspace.de, 1
 tbuchloh.de, 1
 tc-st-leonard.ch, 1
 tcacademy.co.uk, 1
 tcgrepublic.com, 1
 tchebb.me, 1
 tchnics.de, 1
 tchoukball.ch, 1
 tdelmas.eu, 1
@@ -21588,29 +21573,31 @@ tenbos.ch, 1
 tendermaster.com.ua, 1
 tenderstem.co.uk, 1
 tendertime.jp, 1
 tendoryu-aikido.org, 1
 tenenz.com, 1
 tengu.cloud, 1
 tenisservis.eu, 1
 tenkofx.com, 1
+tenmm.com, 1
 tennisadmin.com, 1
 tenpolab.com, 1
 tenseapp.pl, 1
 tenshoku-hanashi.com, 1
 tent.io, 1
 tenta.com, 1
 tentabrowser.com, 1
 tentations-voyages.com, 1
 tenthousandcoffees.com, 1
 tenyx.de, 1
 teodio.cl, 1
 teoleonie.com, 1
 teoskanta.fi, 1
+tepid.org, 1
 tepitus.de, 1
 tequilazor.com, 1
 teracloud.at, 1
 teranacreative.com, 1
 teranga.ch, 1
 teriiphotography.com, 1
 terrab.de, 0
 terracloud.de, 0
@@ -22102,17 +22089,16 @@ tjp.ch, 1
 tjs.me, 1
 tkacz.pro, 1
 tkarstens.de, 0
 tkat.ch, 1
 tkjg.fi, 1
 tkn.tokyo, 1
 tkts.cl, 1
 tkusano.jp, 1
-tlach.cz, 1
 tlehseasyads.com, 1
 tlo.xyz, 1
 tloxygen.com, 1
 tls.builders, 1
 tls.care, 1
 tls1914.org, 1
 tlsrobot.se, 1
 tlthings.net, 1
@@ -22227,17 +22213,16 @@ tomjonsson.se, 1
 tomkunze.de, 1
 tomli.blog, 1
 tomm.yt, 1
 tommic.eu, 1
 tommounsey.com, 1
 tommyweber.de, 1
 tomnatt.com, 1
 tomo.gr, 0
-tomphill.co.uk, 1
 tomrei.com, 1
 tomrichards.net, 1
 tomschlick.com, 1
 tomssl.com, 1
 tomudding.com, 1
 tomudding.nl, 1
 tomvote.com, 1
 tomwassenberg.nl, 1
@@ -22739,26 +22724,24 @@ twodadsgames.com, 1
 twofactorauth.org, 1
 twohuo.com, 1
 twojfaktum.pl, 1
 twolanedesign.com, 1
 twoo.com, 1
 twopif.net, 1
 twotube.ie, 1
 twun.io, 1
-twuni.org, 1
 txdivorce.org, 1
 txi.su, 1
 txm.pl, 1
 tyche.io, 1
 tyil.nl, 1
 tyil.work, 1
 tykoon.com, 1
 tyl.io, 1
-tylerdavies.net, 1
 tylerfreedman.com, 1
 tylerschmidtke.com, 1
 typeblog.net, 1
 typecodes.com, 1
 typehub.net, 1
 typeofweb.com, 1
 typeonejoe.com, 1
 typeria.net, 1
@@ -23070,17 +23053,16 @@ utilityapi.com, 1
 utitreatment.com, 1
 utonia.ch, 1
 utopialgb.org.uk, 1
 utopian-surgery.com, 1
 utopianconcept.com, 1
 utopians.dk, 1
 utopicestudios.com, 1
 utox.io, 1
-uttnetgroup.fr, 0
 utw.me, 1
 uvocorp.com, 1
 uwesander.de, 1
 uwimonacs.org.jm, 1
 uygindir.ml, 1
 v-u-z.ru, 1
 v0rtex.xyz, 1
 v1sit0r.ru, 1
@@ -23292,17 +23274,16 @@ vfn-nrw.de, 1
 vgatest.nl, 1
 vgerak.com, 1
 vgropp.de, 1
 vhummel.nl, 1
 viabemestar.com.br, 1
 viacdn.org, 1
 viafinance.cz, 1
 viaprinto.de, 1
-viasinc.com, 0
 vibrant-america.com, 1
 vicenage.com, 1
 viceversa.xyz, 1
 vician.cz, 1
 viciousviscosity.xyz, 1
 viclab.se, 1
 victorcanera.com, 1
 victordiaz.me, 1
@@ -23342,31 +23323,31 @@ vigo-krankenversicherung.de, 1
 vigo-tarife.de, 1
 vigrey.com, 1
 viikko.eu, 1
 vijay-international.com, 1
 vijverbenodigdheden.nl, 1
 vikasbabyworld.de, 0
 vikashkumar.me, 1
 viking-style.ru, 1
-vikings.net, 1
 viktorprevaric.eu, 1
 vilaydin.com, 1
 vilight.com.br, 1
 villa-romantica-zillertal.at, 1
 villacarmela.com.br, 1
 villainsclothing.com.au, 1
 villasenor.online, 1
 villasforsale-bali.com, 1
 villek.fi, 1
 villenavedornon.fr, 1
 vilog.me, 1
 vima.ch, 1
 vimeo.com, 1
 vimeosucks.nyc, 1
+vinagro.sk, 1
 vinarstvimodryhrozen.cz, 1
 vincentcox.com, 0
 vincentpancol.com, 1
 vincitraining.com, 1
 vineright.com, 1
 vinesauce.info, 1
 vinetalk.net, 1
 vinicius.sl, 1
@@ -23414,16 +23395,17 @@ visistruct.com, 1
 vispaleistexel.nl, 1
 vissersgrootboek.nl, 1
 vistastylebuilder.com, 1
 vistb.me, 1
 visualideas.org, 1
 vitalamin.at, 1
 vitalamin.ch, 1
 vitalamin.com, 1
+vitalamin.de, 1
 vitalismaatjes.nl, 1
 vitalthings.de, 1
 vitalyzhukphoto.com, 1
 vitaminler.com, 1
 vitapingu.de, 1
 vitastic.nl, 1
 viteoscrm.ch, 1
 vitkausk.as, 1
@@ -23575,17 +23557,16 @@ wachter.biz, 1
 wadidi.com, 1
 wadsworth.gallery, 1
 waelisch.de, 1
 waelti.xxx, 1
 wafa4hw.com, 1
 wafairhaven.com.au, 1
 waffle.at, 1
 wafni.com, 1
-wahhoi.net, 1
 wahlman.org, 1
 wahrnehmungswelt.de, 1
 wahrnehmungswelten.de, 1
 waigel.org, 1
 wail.net, 1
 wait.jp, 1
 wait.moe, 1
 waits.io, 1
@@ -23651,17 +23632,16 @@ watchface.watch, 1
 watchinventory.com, 1
 watchstyle.com, 1
 watchweasel.com, 1
 waterfedpole.com, 1
 watermonitor.gov, 1
 watersb.org, 1
 watertrails.io, 1
 watsonwork.me, 1
-wattechweb.com, 1
 wave-ola.es, 1
 wavesboardshop.com, 1
 wavesoftime.com, 1
 wawak.pl, 1
 waxdramatic.com, 1
 waylaydesign.com, 1
 wayne.cloud, 0
 wayohoo.com, 1
@@ -23848,17 +23828,16 @@ weltenhueter.de, 1
 weltentreff.com, 1
 weltverschwoerung.de, 1
 wemakemenus.com, 1
 wemakeonlinereviews.com, 1
 wendigo.pl, 1
 wenger-shop.ch, 1
 wenjs.me, 1
 wenode.net, 1
-wenz.io, 1
 wepay.com, 0
 wepay.in.th, 1
 wer-kommt-her.de, 1
 werally.com, 1
 werbefotograf-leitner.de, 1
 werbefotografie-leitner.de, 1
 werbewelt-tv.de, 1
 werehub.org, 1
@@ -24072,16 +24051,17 @@ windows10insider.com, 1
 windowsnerd.com, 1
 windowstech.it, 1
 windrunner.se, 1
 windscribe.com, 1
 windsock-app.com, 1
 windwoodmedia.com, 1
 windwoodweb.com, 1
 windycitydubfest.com, 1
+wine-importer.ru, 1
 wineworksonline.com, 1
 winghill.com, 0
 winhistory-forum.net, 1
 winmodels.org, 1
 winmodels.ru, 1
 winnersports.co, 1
 winphonemetro.com, 1
 winsome.world, 1
@@ -24125,16 +24105,17 @@ witneywaterpolo.org.uk, 1
 witway.nl, 0
 wiz.at, 1
 wizard.gov, 1
 wizardspire.com, 1
 wizzley.com, 0
 wizzr.nl, 1
 wje-online.de, 1
 wjglerum.nl, 1
+wjm2038.me, 1
 wkennington.com, 1
 wkv.com, 1
 wkz.io, 1
 wlaws.com, 1
 wlci.gov, 1
 wm-talk.net, 1
 wmawri.com, 1
 wmfusercontent.org, 1
@@ -24165,16 +24146,17 @@ wolfenland.net, 1
 wolfgang-braun.info, 1
 wolfgang-kerschbaumer.at, 1
 wolfgang-kerschbaumer.com, 1
 wolfgang-kerschbaumer.net, 1
 wolfgang-ziegler.com, 1
 wolfpa.ws, 1
 wolfram.io, 1
 wolfsden.cz, 1
+wolfwings.us, 1
 wolfy1339.com, 1
 wolkenspeicher.org, 1
 wollekorb.de, 1
 wollwerk.org, 1
 womb.city, 1
 wombats.net, 1
 women-only.net, 1
 womenshairlossproject.com, 1
@@ -24244,16 +24226,17 @@ wp-stack.pro, 1
 wp-tao.com, 1
 wpac.de, 1
 wpandup.org, 1
 wpcharged.nz, 1
 wpdirecto.com, 1
 wpfast.net, 1
 wphostingblog.nl, 1
 wpinfos.de, 1
+wpinter.com, 1
 wpldn.uk, 1
 wpletter.de, 0
 wpmeetup-berlin.de, 1
 wpostats.com, 1
 wprevs.com, 1
 wpruby.com, 1
 wpserp.com, 1
 wpsharks.com, 1
@@ -24266,17 +24249,16 @@ wql.zj.cn, 1
 wr.su, 1
 wrapitup.co.uk, 1
 wrara.org, 1
 wrbunderwriting.com, 1
 wrc-results.com, 1
 wrdcfiles.ca, 1
 wrfu.co.nz, 1
 wrgms.com, 1
-wrightdoumawedding.com, 1
 write-right.net, 1
 writeandedit-for-you.com, 1
 writecustomessay.com, 1
 writemyessay.info, 1
 writemyessays.com, 1
 writemypaperhub.com, 1
 writemytermpapers.com, 1
 writeoff.me, 1
@@ -24387,17 +24369,16 @@ www.simbolo.co.uk, 0
 www.simple.com, 0
 www.theguardian.com, 1
 www.therapynotes.com, 1
 www.tinfoilsecurity.com, 0
 www.torproject.org, 0
 www.twitter.com, 0
 www.united.com, 1
 www.usaa.com, 0
-www.viasinc.com, 1
 www.vino75.com, 0
 www.wepay.com, 0
 www.wordpress.com, 0
 wxcafe.net, 1
 wxh.jp, 1
 wxrlab.com, 1
 wxster.com, 1
 wy6.org, 1
@@ -24413,16 +24394,17 @@ wyzphoto.nl, 1
 wzrd.in, 1
 wzyboy.org, 1
 x-iweb.ru, 1
 x-pertservice.com, 1
 x.io, 1
 x.st, 1
 x0r.be, 1
 x23.eu, 1
+x2c0.net, 1
 x378.ch, 1
 x509.io, 1
 x64architecture.com, 1
 x69.biz, 1
 x69x.net, 1
 xa1.uk, 1
 xalqbank-online.az, 1
 xatr0z.org, 0
@@ -24595,17 +24577,16 @@ xombitgames.com, 1
 xombitmusic.com, 1
 xombra.com, 1
 xotika.tv, 1
 xp2.de, 1
 xpd.se, 1
 xpenology-fr.net, 1
 xperidia.com, 1
 xpj.bet, 1
-xpj.sx, 1
 xplore-dna.net, 1
 xpressprint.com.br, 1
 xps2pdf.co.uk, 1
 xqin.net, 1
 xr.cx, 1
 xrippedhd.com, 1
 xrockx.de, 1
 xroot.org, 1
@@ -24792,17 +24773,17 @@ yospos.org, 1
 yoticonnections.com, 1
 yotilab.com, 1
 yotilabs.com, 1
 yotta-zetta.com, 1
 yotubaiotona.net, 1
 youcancraft.de, 1
 youcanmakeit.at, 1
 youcruit.com, 1
-youdamom.com, 1
+youdamom.com, 0
 youdowell.com, 1
 youdungoofd.com, 1
 youhacked.me, 1
 youhavewords.com, 1
 youkaryote.com, 1
 youkaryote.org, 1
 youkok2.com, 1
 youlend.com, 1
@@ -24905,17 +24886,16 @@ z-vector.com, 1
 z.ai, 1
 z0rro.net, 1
 z1h.de, 1
 z33.ch, 1
 z4k.de, 1
 z99944x.xyz, 1
 zaalleatherwear.nl, 0
 zabszk.net, 1
-zacarias.com.ar, 1
 zacavi.com.br, 1
 zachborboa.com, 1
 zachpeters.org, 1
 zaclys.com, 1
 zadroweb.com, 1
 zafirus.name, 1
 zahe.me, 1
 zaidan.de, 1
@@ -25071,16 +25051,17 @@ zning.net.cn, 1
 zobraz.cz, 1
 zockenbiszumumfallen.de, 1
 zoeller.me, 1
 zohar.shop, 1
 zohar.wang, 0
 zoigl.club, 1
 zojadravai.com, 1
 zolokar.xyz, 1
+zolotoy-standart.com.ua, 1
 zombiesecured.com, 1
 zomerschoen.nl, 1
 zone39.com, 1
 zonecb.com, 1
 zonemaster.fr, 1
 zonemaster.net, 1
 zoners.si, 1
 zonglovani.info, 1
--- a/security/sandbox/linux/moz.build
+++ b/security/sandbox/linux/moz.build
@@ -77,17 +77,17 @@ if CONFIG['MOZ_GMP_SANDBOX']:
         'SandboxOpenedFiles.cpp',
     ]
 
 # This copy of SafeSPrintf doesn't need to avoid the Chromium logging
 # dependency like the one in libxul does, but this way the behavior is
 # consistent.  See also the comment in SandboxLogging.h.
 SOURCES['../chromium/base/strings/safe_sprintf.cc'].flags += ['-DNDEBUG']
 
-if CONFIG['CLANG_CXX']:
+if CONFIG['CLANG_CXX'] or CONFIG['GNU_CXX']:
     # Keep clang from warning about intentional 'switch' fallthrough in icu_utf.cc:
     SOURCES['../chromium/base/third_party/icu/icu_utf.cc'].flags += ['-Wno-implicit-fallthrough']
     SOURCES['../chromium/sandbox/linux/seccomp-bpf/trap.cc'].flags += ['-Wno-unreachable-code-return']
 
 if CONFIG['GNU_CXX']:
     CXXFLAGS += ['-Wno-shadow']
     SOURCES['../chromium/sandbox/linux/services/syscall_wrappers.cc'].flags += [
         '-Wno-empty-body',
--- a/servo/components/layout/animation.rs
+++ b/servo/components/layout/animation.rs
@@ -156,19 +156,20 @@ pub fn recalc_style_for_animations(conte
         if let Some(ref animations) = animations.get(&fragment.node) {
             for animation in animations.iter() {
                 let old_style = fragment.style.clone();
                 update_style_for_animation(&context.style_context,
                                            animation,
                                            &mut fragment.style,
                                            &ServoMetricsProvider);
                 let difference =
-                    RestyleDamage::compute_style_difference(&old_style,
-                                                            &old_style,
-                                                            &fragment.style);
+                    RestyleDamage::compute_style_difference(
+                        &old_style,
+                        &fragment.style,
+                    );
                 damage |= difference.damage;
             }
         }
     });
 
     let base = flow::mut_base(flow);
     base.restyle_damage.insert(damage);
     for kid in base.children.iter_mut() {
--- a/servo/components/layout_thread/dom_wrapper.rs
+++ b/servo/components/layout_thread/dom_wrapper.rs
@@ -439,24 +439,16 @@ impl<'le> TElement for ServoLayoutElemen
             if let Some(ref classes) = self.element.get_classes_for_layout() {
                 for class in *classes {
                     callback(class)
                 }
             }
         }
     }
 
-    #[inline]
-    fn existing_style_for_restyle_damage<'a>(&'a self,
-                                             current_cv: &'a ComputedValues,
-                                             _pseudo_element: Option<&PseudoElement>)
-                                             -> Option<&'a ComputedValues> {
-        Some(current_cv)
-    }
-
     fn has_dirty_descendants(&self) -> bool {
         unsafe { self.as_node().node.get_flag(HAS_DIRTY_DESCENDANTS) }
     }
 
     fn has_snapshot(&self) -> bool {
         unsafe { self.as_node().node.get_flag(HAS_SNAPSHOT) }
     }
 
--- a/servo/components/style/dom.rs
+++ b/servo/components/style/dom.rs
@@ -15,17 +15,17 @@ use atomic_refcell::{AtomicRef, AtomicRe
 use data::ElementData;
 use element_state::ElementState;
 use font_metrics::FontMetricsProvider;
 use media_queries::Device;
 use properties::{AnimationRules, ComputedValues, PropertyDeclarationBlock};
 #[cfg(feature = "gecko")] use properties::animated_properties::AnimationValue;
 #[cfg(feature = "gecko")] use properties::animated_properties::TransitionProperty;
 use rule_tree::CascadeLevel;
-use selector_parser::{AttrValue, ElementExt, PreExistingComputedValues};
+use selector_parser::{AttrValue, ElementExt};
 use selector_parser::{PseudoClassStringArg, PseudoElement};
 use selectors::matching::{ElementSelectorFlags, VisitedHandlingMode};
 use selectors::sink::Push;
 use servo_arc::{Arc, ArcBorrow};
 use shared_lock::Locked;
 use smallvec::VecLike;
 use std::fmt;
 #[cfg(feature = "gecko")] use std::collections::HashMap;
@@ -373,28 +373,16 @@ pub trait TElement : Eq + PartialEq + De
     fn has_attr(&self, namespace: &Namespace, attr: &LocalName) -> bool;
 
     /// The ID for this element.
     fn get_id(&self) -> Option<Atom>;
 
     /// Internal iterator for the classes of this element.
     fn each_class<F>(&self, callback: F) where F: FnMut(&Atom);
 
-    /// Get the pre-existing style to calculate restyle damage (change hints).
-    ///
-    /// This needs to be generic since it varies between Servo and Gecko.
-    ///
-    /// XXX(emilio): It's a bit unfortunate we need to pass the current computed
-    /// values as an argument here, but otherwise Servo would crash due to
-    /// double borrows to return it.
-    fn existing_style_for_restyle_damage<'a>(&'a self,
-                                             current_computed_values: &'a ComputedValues,
-                                             pseudo: Option<&PseudoElement>)
-                                             -> Option<&'a PreExistingComputedValues>;
-
     /// Whether a given element may generate a pseudo-element.
     ///
     /// This is useful to avoid computing, for example, pseudo styles for
     /// `::-first-line` or `::-first-letter`, when we know it won't affect us.
     ///
     /// TODO(emilio, bz): actually implement the logic for it.
     fn may_generate_pseudo(
         &self,
--- a/servo/components/style/gecko/pseudo_element.rs
+++ b/servo/components/style/gecko/pseudo_element.rs
@@ -70,20 +70,32 @@ impl PseudoElement {
     }
 
     /// Creates a pseudo-element from an eager index.
     #[inline]
     pub fn from_eager_index(i: usize) -> Self {
         EAGER_PSEUDOS[i].clone()
     }
 
-    /// Whether this pseudo-element is ::before or ::after.
+    /// Whether the current pseudo element is ::before or ::after.
     #[inline]
     pub fn is_before_or_after(&self) -> bool {
-        matches!(*self, PseudoElement::Before | PseudoElement::After)
+        self.is_before() || self.is_after()
+    }
+
+    /// Whether this pseudo-element is the ::before pseudo.
+    #[inline]
+    pub fn is_before(&self) -> bool {
+        *self == PseudoElement::Before
+    }
+
+    /// Whether this pseudo-element is the ::after pseudo.
+    #[inline]
+    pub fn is_after(&self) -> bool {
+        *self == PseudoElement::After
     }
 
     /// Whether this pseudo-element is ::first-letter.
     #[inline]
     pub fn is_first_letter(&self) -> bool {
         *self == PseudoElement::FirstLetter
     }
 
--- a/servo/components/style/gecko/restyle_damage.rs
+++ b/servo/components/style/gecko/restyle_damage.rs
@@ -1,17 +1,17 @@
 /* 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/. */
 
 //! Gecko's restyle damage computation (aka change hints, aka `nsChangeHint`).
 
 use gecko_bindings::bindings;
 use gecko_bindings::structs;
-use gecko_bindings::structs::{nsChangeHint, nsStyleContext, nsStyleStructID};
+use gecko_bindings::structs::nsChangeHint;
 use matching::{StyleChange, StyleDifference};
 use properties::ComputedValues;
 use std::ops::{BitAnd, BitOr, BitOrAssign, Not};
 
 /// The representation of Gecko's restyle damage is just a wrapper over
 /// `nsChangeHint`.
 #[derive(Clone, Copy, Debug, PartialEq)]
 pub struct GeckoRestyleDamage(nsChangeHint);
@@ -41,59 +41,32 @@ impl GeckoRestyleDamage {
     /// given an old style (in the form of a `nsStyleContext`, and a new style
     /// (in the form of `ComputedValues`).
     ///
     /// Note that we could in theory just get two `ComputedValues` here and diff
     /// them, but Gecko has an interesting optimization when they mark accessed
     /// structs, so they effectively only diff structs that have ever been
     /// accessed from layout.
     pub fn compute_style_difference(
-        source: &nsStyleContext,
         old_style: &ComputedValues,
         new_style: &ComputedValues,
     ) -> StyleDifference {
         let mut any_style_changed: bool = false;
         let hint = unsafe {
-            bindings::Gecko_CalcStyleDifference(old_style,
-                                                new_style,
-                                                source.mBits,
-                                                &mut any_style_changed)
+            bindings::Gecko_CalcStyleDifference(
+                old_style,
+                new_style,
+                structs::NS_STYLE_INHERIT_MASK as u64,
+                &mut any_style_changed
+            )
         };
         let change = if any_style_changed { StyleChange::Changed } else { StyleChange::Unchanged };
         StyleDifference::new(GeckoRestyleDamage(nsChangeHint(hint)), change)
     }
 
-    /// Computes the `StyleDifference` between the two `ComputedValues` objects
-    /// for the case where the old and new style are both `display: none`.
-    ///
-    /// In general we don't need to generate damage for such elements, but we
-    /// do need to generate a frame reconstruction for `-moz-binding` changes,
-    /// so that we can start loading the new binding.
-    pub fn compute_undisplayed_style_difference(
-        old_style: &ComputedValues,
-        new_style: &ComputedValues,
-    ) -> StyleDifference {
-        let mut any_style_changed: bool = false;
-
-        // Just compute the Display struct's difference.
-        let display_struct_bit = 1 << (nsStyleStructID::eStyleStruct_Display as u32);
-        let hint = unsafe {
-            bindings::Gecko_CalcStyleDifference(old_style,
-                                                new_style,
-                                                display_struct_bit,
-                                                &mut any_style_changed)
-        };
-
-        // Only pay attention to a reconstruct change hint.
-        let damage = GeckoRestyleDamage(nsChangeHint(hint)) & Self::reconstruct();
-
-        let change = if damage.is_empty() { StyleChange::Changed } else { StyleChange::Unchanged };
-        StyleDifference::new(damage, change)
-    }
-
     /// Returns true if this restyle damage contains all the damage of |other|.
     pub fn contains(self, other: Self) -> bool {
         self & other == other
     }
 
     /// Gets restyle damage to reconstruct the entire frame, subsuming all
     /// other damage.
     pub fn reconstruct() -> Self {
--- a/servo/components/style/gecko/wrapper.rs
+++ b/servo/components/style/gecko/wrapper.rs
@@ -40,27 +40,26 @@ use gecko_bindings::bindings::Gecko_Elem
 use gecko_bindings::bindings::Gecko_ElementHasCSSAnimations;
 use gecko_bindings::bindings::Gecko_ElementHasCSSTransitions;
 use gecko_bindings::bindings::Gecko_GetActiveLinkAttrDeclarationBlock;
 use gecko_bindings::bindings::Gecko_GetAnimationRule;
 use gecko_bindings::bindings::Gecko_GetExtraContentStyleDeclarations;
 use gecko_bindings::bindings::Gecko_GetHTMLPresentationAttrDeclarationBlock;
 use gecko_bindings::bindings::Gecko_GetSMILOverrideDeclarationBlock;
 use gecko_bindings::bindings::Gecko_GetStyleAttrDeclarationBlock;
-use gecko_bindings::bindings::Gecko_GetStyleContext;
 use gecko_bindings::bindings::Gecko_GetUnvisitedLinkAttrDeclarationBlock;
 use gecko_bindings::bindings::Gecko_GetVisitedLinkAttrDeclarationBlock;
 use gecko_bindings::bindings::Gecko_IsSignificantChild;
 use gecko_bindings::bindings::Gecko_MatchLang;
 use gecko_bindings::bindings::Gecko_MatchStringArgPseudo;
 use gecko_bindings::bindings::Gecko_UnsetDirtyStyleAttr;
 use gecko_bindings::bindings::Gecko_UpdateAnimations;
 use gecko_bindings::structs;
 use gecko_bindings::structs::{RawGeckoElement, RawGeckoNode, RawGeckoXBLBinding};
-use gecko_bindings::structs::{nsIAtom, nsIContent, nsINode_BooleanFlag, nsStyleContext};
+use gecko_bindings::structs::{nsIAtom, nsIContent, nsINode_BooleanFlag};
 use gecko_bindings::structs::ELEMENT_HANDLED_SNAPSHOT;
 use gecko_bindings::structs::ELEMENT_HAS_ANIMATION_ONLY_DIRTY_DESCENDANTS_FOR_SERVO;
 use gecko_bindings::structs::ELEMENT_HAS_DIRTY_DESCENDANTS_FOR_SERVO;
 use gecko_bindings::structs::ELEMENT_HAS_SNAPSHOT;
 use gecko_bindings::structs::EffectCompositor_CascadeLevel as CascadeLevel;
 use gecko_bindings::structs::NODE_DESCENDANTS_NEED_FRAMES;
 use gecko_bindings::structs::nsChangeHint;
 use gecko_bindings::structs::nsIDocument_DocumentTheme as DocumentTheme;
@@ -1015,28 +1014,16 @@ impl<'le> TElement for GeckoElement<'le>
     fn each_class<F>(&self, callback: F)
         where F: FnMut(&Atom)
     {
         snapshot_helpers::each_class(self.0,
                                      callback,
                                      Gecko_ClassOrClassList)
     }
 
-    fn existing_style_for_restyle_damage<'a>(&'a self,
-                                             _existing_values: &'a ComputedValues,
-                                             pseudo: Option<&PseudoElement>)
-                                             -> Option<&'a nsStyleContext> {
-        // TODO(emilio): Migrate this to CSSPseudoElementType.
-        let atom_ptr = pseudo.map_or(ptr::null_mut(), |p| p.atom().as_ptr());
-        unsafe {
-            let context_ptr = Gecko_GetStyleContext(self.0, atom_ptr);
-            context_ptr.as_ref()
-        }
-    }
-
     fn has_snapshot(&self) -> bool {
         self.flags() & (ELEMENT_HAS_SNAPSHOT as u32) != 0
     }
 
     fn handled_snapshot(&self) -> bool {
         self.flags() & (ELEMENT_HANDLED_SNAPSHOT as u32) != 0
     }
 
--- a/servo/components/style/invalidation/element/invalidator.rs
+++ b/servo/components/style/invalidation/element/invalidator.rs
@@ -590,24 +590,37 @@ impl<'a, 'b: 'a, E> TreeStyleInvalidator
                 invalidated_self = true;
             }
             CompoundSelectorMatchingResult::Matched { next_combinator_offset } => {
                 let next_combinator =
                     invalidation.selector.combinator_at(next_combinator_offset);
                 matched = true;
 
                 if matches!(next_combinator, Combinator::PseudoElement) {
+                    // This will usually be the very next component, except for
+                    // the fact that we store compound selectors the other way
+                    // around, so there could also be state pseudo-classes.
                     let pseudo_selector =
                         invalidation.selector
                             .iter_raw_parse_order_from(next_combinator_offset - 1)
+                            .skip_while(|c| matches!(**c, Component::NonTSPseudoClass(..)))
                             .next()
                             .unwrap();
+
                     let pseudo = match *pseudo_selector {
                         Component::PseudoElement(ref pseudo) => pseudo,
-                        _ => unreachable!("Someone seriously messed up selector parsing"),
+                        _ => {
+                            unreachable!(
+                                "Someone seriously messed up selector parsing: \
+                                {:?} at offset {:?}: {:?}",
+                                invalidation.selector,
+                                next_combinator_offset,
+                                pseudo_selector,
+                            )
+                        }
                     };
 
                     // FIXME(emilio): This is not ideal, and could not be
                     // accurate if we ever have stateful element-backed eager
                     // pseudos.
                     //
                     // Ideally, we'd just remove element-backed eager pseudos
                     // altogether, given they work fine without it. Only gotcha
--- a/servo/components/style/matching.rs
+++ b/servo/components/style/matching.rs
@@ -9,17 +9,16 @@
 
 use context::{ElementCascadeInputs, SelectorFlagsMap, SharedStyleContext, StyleContext};
 use data::{ElementData, ElementStyles, RestyleData};
 use dom::TElement;
 use invalidation::element::restyle_hints::{RESTYLE_CSS_ANIMATIONS, RESTYLE_CSS_TRANSITIONS};
 use invalidation::element::restyle_hints::{RESTYLE_SMIL, RESTYLE_STYLE_ATTRIBUTE};
 use invalidation::element::restyle_hints::RestyleHint;
 use properties::ComputedValues;
-use properties::longhands::display::computed_value as display;
 use rule_tree::{CascadeLevel, StrongRuleNode};
 use selector_parser::{PseudoElement, RestyleDamage};
 use selectors::matching::ElementSelectorFlags;
 use servo_arc::{Arc, ArcBorrow};
 use traversal_flags;
 
 /// Represents the result of comparing an element's old and new style.
 pub struct StyleDifference {
@@ -147,60 +146,65 @@ trait PrivateMatchMethods: TElement {
         let style =
             StyleResolverForElement::new(*self, context, RuleInclusion::All)
                 .cascade_style_and_visited_with_default_parents(inputs);
 
         Some(style)
     }
 
     #[cfg(feature = "gecko")]
-    fn needs_animations_update(&self,
-                               context: &mut StyleContext<Self>,
-                               old_values: Option<&Arc<ComputedValues>>,
-                               new_values: &ComputedValues)
-                               -> bool {
+    fn needs_animations_update(
+        &self,
+        context: &mut StyleContext<Self>,
+        old_values: Option<&Arc<ComputedValues>>,
+        new_values: &ComputedValues,
+    ) -> bool {
+        use properties::longhands::display::computed_value as display;
+
         let new_box_style = new_values.get_box();
-        let has_new_animation_style = new_box_style.animation_name_count() >= 1 &&
-                                      new_box_style.animation_name_at(0).0.is_some();
+        let has_new_animation_style = new_box_style.specifies_animations();
         let has_animations = self.has_css_animations();
 
         old_values.map_or(has_new_animation_style, |old| {
             let old_box_style = old.get_box();
             let old_display_style = old_box_style.clone_display();
             let new_display_style = new_box_style.clone_display();
 
             // If the traverse is triggered by CSS rule changes, we need to
             // try to update all CSS animations on the element if the element
             // has CSS animation style regardless of whether the animation is
             // running or not.
             // TODO: We should check which @keyframes changed/added/deleted
             // and update only animations corresponding to those @keyframes.
             (context.shared.traversal_flags.contains(traversal_flags::ForCSSRuleChanges) &&
              has_new_animation_style) ||
-            !old_box_style.animations_equals(&new_box_style) ||
+            !old_box_style.animations_equals(new_box_style) ||
              (old_display_style == display::T::none &&
               new_display_style != display::T::none &&
               has_new_animation_style) ||
              (old_display_style != display::T::none &&
               new_display_style == display::T::none &&
               has_animations)
         })
     }
 
     /// Create a SequentialTask for resolving descendants in a SMIL display property
     /// animation if the display property changed from none.
     #[cfg(feature = "gecko")]
-    fn handle_display_change_for_smil_if_needed(&self,
-                                                context: &mut StyleContext<Self>,
-                                                old_values: Option<&ComputedValues>,
-                                                new_values: &ComputedValues,
-                                                restyle_hints: RestyleHint) {
+    fn handle_display_change_for_smil_if_needed(
+        &self,
+        context: &mut StyleContext<Self>,
+        old_values: Option<&ComputedValues>,
+        new_values: &ComputedValues,
+        restyle_hints: RestyleHint
+    ) {
         use context::DISPLAY_CHANGED_FROM_NONE_FOR_SMIL;
+        use properties::longhands::display::computed_value as display;
 
-        let display_changed_from_none = old_values.as_ref().map_or(false, |old| {
+        let display_changed_from_none = old_values.map_or(false, |old| {
             let old_display_style = old.get_box().clone_display();
             let new_display_style = new_values.get_box().clone_display();
             old_display_style == display::T::none &&
             new_display_style != display::T::none
         });
 
         if display_changed_from_none {
           // When display value is changed from none to other, we need
@@ -664,29 +668,32 @@ pub trait MatchMethods : TElement {
             Some(v) => v,
             None => return ChildCascadeRequirement::MustCascadeChildren,
         };
 
         // ::before and ::after are element-backed in Gecko, so they do the
         // damage calculation for themselves, when there's an actual pseudo.
         let is_existing_before_or_after =
             cfg!(feature = "gecko") &&
-            pseudo.map_or(false, |p| p.is_before_or_after()) &&
-            self.existing_style_for_restyle_damage(old_values, pseudo)
-                .is_some();
+            pseudo.map_or(false, |p| {
+                (p.is_before() && self.before_pseudo_element().is_some()) ||
+                (p.is_after() && self.after_pseudo_element().is_some())
+            });
 
         if is_existing_before_or_after {
             return ChildCascadeRequirement::CanSkipCascade;
         }
 
-        self.accumulate_damage_for(shared_context,
-                                   restyle,
-                                   old_values,
-                                   new_values,
-                                   pseudo)
+        self.accumulate_damage_for(
+            shared_context,
+            restyle,
+            old_values,
+            new_values,
+            pseudo
+        )
     }
 
     /// Updates the rule nodes without re-running selector matching, using just
     /// the rule tree.
     ///
     /// Returns true if an !important rule was replaced.
     fn replace_rules(
         &self,
@@ -816,87 +823,13 @@ pub trait MatchMethods : TElement {
     /// kind of layout or painting operations we'll need.
     fn compute_style_difference(
         &self,
         old_values: &ComputedValues,
         new_values: &ComputedValues,
         pseudo: Option<&PseudoElement>
     ) -> StyleDifference {
         debug_assert!(pseudo.map_or(true, |p| p.is_eager()));
-        if let Some(source) = self.existing_style_for_restyle_damage(old_values, pseudo) {
-            return RestyleDamage::compute_style_difference(source, old_values, new_values)
-        }
-
-        let new_display = new_values.get_box().clone_display();
-        let old_display = old_values.get_box().clone_display();
-
-        let new_style_is_display_none = new_display == display::T::none;
-        let old_style_is_display_none = old_display == display::T::none;
-
-        // If there's no style source, that likely means that Gecko couldn't
-        // find a style context.
-        //
-        // This happens with display:none elements, and not-yet-existing
-        // pseudo-elements.
-        if new_style_is_display_none && old_style_is_display_none {
-            // The style remains display:none.  The only case we need to care
-            // about is if -moz-binding changed, and to generate a reconstruct
-            // so that we can start the binding load.  Otherwise, there is no
-            // need for damage.
-            return RestyleDamage::compute_undisplayed_style_difference(old_values, new_values);
-        }
-
-        if pseudo.map_or(false, |p| p.is_before_or_after()) {
-            // FIXME(bz) This duplicates some of the logic in
-            // PseudoElement::should_exist, but it's not clear how best to share
-            // that logic without redoing the "get the display" work.
-            let old_style_generates_no_pseudo =
-                old_style_is_display_none ||
-                old_values.ineffective_content_property();
-
-            let new_style_generates_no_pseudo =
-                new_style_is_display_none ||
-                new_values.ineffective_content_property();
-
-            if old_style_generates_no_pseudo != new_style_generates_no_pseudo {
-                return StyleDifference::new(RestyleDamage::reconstruct(), StyleChange::Changed)
-            }
-
-            // The pseudo-element will remain undisplayed, so just avoid
-            // triggering any change.
-            //
-            // NOTE(emilio): We will only arrive here for pseudo-elements that
-            // aren't generated (see the is_existing_before_or_after check in
-            // accumulate_damage).
-            //
-            // However, it may be the case that the style of this element would
-            // make us think we need a pseudo, but we don't, like for pseudos in
-            // replaced elements, that's why we need the old != new instead of
-            // just check whether the new style would generate a pseudo.
-            return StyleDifference::new(RestyleDamage::empty(), StyleChange::Unchanged)
-        }
-
-        if pseudo.map_or(false, |p| p.is_first_letter() || p.is_first_line()) {
-            // No one cares about this pseudo, and we've checked above that
-            // we're not switching from a "cares" to a "doesn't care" state
-            // or vice versa.
-            return StyleDifference::new(RestyleDamage::empty(),
-                                        StyleChange::Unchanged)
-        }
-
-        // If we are changing display property we need to accumulate
-        // reconstruction damage for the change.
-        // FIXME: Bug 1378972: This is a workaround for bug 1374175, we should
-        // generate more accurate restyle damage in fallback cases.
-        let needs_reconstruction = new_display != old_display;
-        let damage = if needs_reconstruction {
-            RestyleDamage::reconstruct()
-        } else {
-            RestyleDamage::empty()
-        };
-        // We don't really know if there was a change in any style (since we
-        // didn't actually call compute_style_difference) but we return
-        // StyleChange::Changed conservatively.
-        StyleDifference::new(damage, StyleChange::Changed)
+        RestyleDamage::compute_style_difference(old_values, new_values)
     }
 }
 
 impl<E: TElement> MatchMethods for E {}
--- a/servo/components/style/properties/helpers/animated_properties.mako.rs
+++ b/servo/components/style/properties/helpers/animated_properties.mako.rs
@@ -1335,18 +1335,19 @@ fn build_identity_transform_list(list: &
             TransformOperation::Translate(..) => {
                 result.push(TransformOperation::Translate(LengthOrPercentage::zero(),
                                                           LengthOrPercentage::zero(),
                                                           Au(0)));
             }
             TransformOperation::Scale(..) => {
                 result.push(TransformOperation::Scale(1.0, 1.0, 1.0));
             }
-            TransformOperation::Rotate(..) => {
-                result.push(TransformOperation::Rotate(0.0, 0.0, 1.0, Angle::zero()));
+            TransformOperation::Rotate(x, y, z, a) => {
+                let (x, y, z, _) = get_normalized_vector_and_angle(x, y, z, a);
+                result.push(TransformOperation::Rotate(x, y, z, Angle::zero()));
             }
             TransformOperation::Perspective(..) |
             TransformOperation::AccumulateMatrix { .. } |
             TransformOperation::InterpolateMatrix { .. } => {
                 // Perspective: We convert a perspective function into an equivalent
                 //     ComputedMatrix, and then decompose/interpolate/recompose these matrices.
                 // AccumulateMatrix/InterpolateMatrix: We do interpolation on
                 //     AccumulateMatrix/InterpolateMatrix by reading it as a ComputedMatrix
@@ -1420,21 +1421,19 @@ fn add_weighted_transform_lists(from_lis
                     let iy = add_weighted_with_initial_val(&fy, &ty, self_portion,
                                                            other_portion, &1.0).unwrap();
                     let iz = add_weighted_with_initial_val(&fz, &tz, self_portion,
                                                            other_portion, &1.0).unwrap();
                     result.push(TransformOperation::Scale(ix, iy, iz));
                 }
                 (&TransformOperation::Rotate(fx, fy, fz, fa),
                  &TransformOperation::Rotate(tx, ty, tz, ta)) => {
-                    let norm_f = ((fx * fx) + (fy * fy) + (fz * fz)).sqrt();
-                    let norm_t = ((tx * tx) + (ty * ty) + (tz * tz)).sqrt();
-                    let (fx, fy, fz) = (fx / norm_f, fy / norm_f, fz / norm_f);
-                    let (tx, ty, tz) = (tx / norm_t, ty / norm_t, tz / norm_t);
-                    if fx == tx && fy == ty && fz == tz {
+                    let (fx, fy, fz, fa) = get_normalized_vector_and_angle(fx, fy, fz, fa);
+                    let (tx, ty, tz, ta) = get_normalized_vector_and_angle(tx, ty, tz, ta);
+                    if (fx, fy, fz) == (tx, ty, tz) {
                         let ia = fa.add_weighted(&ta, self_portion, other_portion).unwrap();
                         result.push(TransformOperation::Rotate(fx, fy, fz, ia));
                     } else {
                         let matrix_f = rotate_to_matrix(fx, fy, fz, fa);
                         let matrix_t = rotate_to_matrix(tx, ty, tz, ta);
                         let sum = matrix_f.add_weighted(&matrix_t, self_portion, other_portion)
                                           .unwrap();
 
@@ -1877,18 +1876,18 @@ impl ComputeSquaredDistance for Quaterni
         let distance = self.dot(other).max(-1.0).min(1.0).acos() * 2.0;
         Ok(SquaredDistance::Value(distance * distance))
     }
 }
 
 impl DirectionVector {
     /// Create a DirectionVector.
     #[inline]
-    fn new(x: f64, y: f64, z: f64) -> Self {
-        DirectionVector(Point3D::new(x, y, z))
+    fn new(x: f32, y: f32, z: f32) -> Self {
+        DirectionVector(Point3D::new(x as f64, y as f64, z as f64))
     }
 
     /// Return the normalized direction vector.
     #[inline]
     fn normalize(&mut self) -> bool {
         let len = self.length();
         if len > 0. {
             self.0.x = self.0.x / len;
@@ -1902,16 +1901,29 @@ impl DirectionVector {
 
     /// Get the length of this vector.
     #[inline]
     fn length(&self) -> f64 {
         self.0.to_array().iter().fold(0f64, |sum, v| sum + v * v).sqrt()
     }
 }
 
+/// Return the normalized direction vector and its angle.
+// A direction vector that cannot be normalized, such as [0,0,0], will cause the
+// rotation to not be applied. i.e. Use an identity matrix or rotate3d(0, 0, 1, 0).
+fn get_normalized_vector_and_angle(x: f32, y: f32, z: f32, angle: Angle)
+                                   -> (f32, f32, f32, Angle) {
+    let mut vector = DirectionVector::new(x, y, z);
+    if vector.normalize() {
+        (vector.0.x as f32, vector.0.y as f32, vector.0.z as f32, angle)
+    } else {
+        (0., 0., 1., Angle::zero())
+    }
+}
+
 /// Decompose a 3D matrix.
 /// https://drafts.csswg.org/css-transforms/#decomposing-a-3d-matrix
 fn decompose_3d_matrix(mut matrix: ComputedMatrix) -> Result<MatrixDecomposed3D, ()> {
     // Normalize the matrix.
     if matrix.m44 == 0.0 {
         return Err(());
     }
 
@@ -2534,35 +2546,25 @@ fn compute_transform_lists_squared_dista
             (&TransformOperation::Scale(fx, fy, fz),
              &TransformOperation::Scale(tx, ty, tz)) => {
                 fx.compute_squared_distance(&tx).unwrap_or(zero_distance) +
                     fy.compute_squared_distance(&ty).unwrap_or(zero_distance) +
                     fz.compute_squared_distance(&tz).unwrap_or(zero_distance)
             }
             (&TransformOperation::Rotate(fx, fy, fz, fa),
              &TransformOperation::Rotate(tx, ty, tz, ta)) => {
-                // A direction vector that cannot be normalized, such as [0,0,0], will cause the
-                // rotation to not be applied. i.e. Use an identity matrix or rotate3d(0, 0, 1, 0).
-                let get_normalized_vector_and_angle = |x: f32, y: f32, z: f32, angle: Angle|
-                                                      -> (DirectionVector, Angle) {
-                    let mut vector = DirectionVector::new(x as f64, y as f64, z as f64);
-                    if vector.normalize() {
-                        (vector, angle)
-                    } else {
-                        (DirectionVector::new(0., 0., 1.), Angle::zero())
-                    }
-                };
-
-                let (vector1, angle1) = get_normalized_vector_and_angle(fx, fy, fz, fa);
-                let (vector2, angle2) = get_normalized_vector_and_angle(tx, ty, tz, ta);
-                if vector1 == vector2 {
+                let (fx, fy, fz, angle1) = get_normalized_vector_and_angle(fx, fy, fz, fa);
+                let (tx, ty, tz, angle2) = get_normalized_vector_and_angle(tx, ty, tz, ta);
+                if (fx, fy, fz) == (tx, ty, tz) {
                     angle1.compute_squared_distance(&angle2).unwrap_or(zero_distance)
                 } else {
-                    let q1 = Quaternion::from_direction_and_angle(&vector1, angle1.radians64());
-                    let q2 = Quaternion::from_direction_and_angle(&vector2, angle2.radians64());
+                    let v1 = DirectionVector::new(fx, fy, fz);
+                    let v2 = DirectionVector::new(tx, ty, tz);
+                    let q1 = Quaternion::from_direction_and_angle(&v1, angle1.radians64());
+                    let q2 = Quaternion::from_direction_and_angle(&v2, angle2.radians64());
                     q1.compute_squared_distance(&q2).unwrap_or(zero_distance)
                 }
             }
             (&TransformOperation::Perspective(fd),
              &TransformOperation::Perspective(td)) => {
                 let mut fd_matrix = ComputedMatrix::identity();
                 let mut td_matrix = ComputedMatrix::identity();
                 if fd.0 > 0 {
--- a/servo/components/style/selector_parser.rs
+++ b/servo/components/style/selector_parser.rs
@@ -30,26 +30,16 @@ pub use servo::selector_parser::ServoEle
 pub use gecko::snapshot::GeckoElementSnapshot as Snapshot;
 
 #[cfg(feature = "servo")]
 pub use servo::restyle_damage::ServoRestyleDamage as RestyleDamage;
 
 #[cfg(feature = "gecko")]
 pub use gecko::restyle_damage::GeckoRestyleDamage as RestyleDamage;
 
-/// A type that represents the previous computed values needed for restyle
-/// damage calculation.
-#[cfg(feature = "servo")]
-pub type PreExistingComputedValues = ::properties::ComputedValues;
-
-/// A type that represents the previous computed values needed for restyle
-/// damage calculation.
-#[cfg(feature = "gecko")]
-pub type PreExistingComputedValues = ::gecko_bindings::structs::nsStyleContext;
-
 /// Servo's selector parser.
 #[cfg_attr(feature = "servo", derive(HeapSizeOf))]
 pub struct SelectorParser<'a> {
     /// The origin of the stylesheet we're parsing.
     pub stylesheet_origin: Origin,
     /// The namespace set of the stylesheet.
     pub namespaces: &'a Namespaces,
     /// The extra URL data of the stylesheet, which is used to look up
--- a/servo/components/style/servo/restyle_damage.rs
+++ b/servo/components/style/servo/restyle_damage.rs
@@ -55,36 +55,25 @@ bitflags! {
 
 impl HeapSizeOf for ServoRestyleDamage {
     fn heap_size_of_children(&self) -> usize { 0 }
 }
 
 impl ServoRestyleDamage {
     /// Compute the `StyleDifference` (including the appropriate restyle damage)
     /// for a given style change between `old` and `new`.
-    pub fn compute_style_difference(_source: &ComputedValues,
-                                    old: &ComputedValues,
-                                    new: &ComputedValues)
-                                    -> StyleDifference {
+    pub fn compute_style_difference(
+        old: &ComputedValues,
+        new: &ComputedValues,
+    ) -> StyleDifference {
         let damage = compute_damage(old, new);
         let change = if damage.is_empty() { StyleChange::Unchanged } else { StyleChange::Changed };
         StyleDifference::new(damage, change)
     }
 
-    /// Computes the `StyleDifference` between the two `ComputedValues` objects
-    /// for the case where the old and new style are both `display: none`.
-    ///
-    /// For Servo we never need to generate any damage for such elements.
-    pub fn compute_undisplayed_style_difference(
-        _old_style: &ComputedValues,
-        _new_style: &ComputedValues,
-    ) -> StyleDifference {
-        StyleDifference::new(Self::empty(), StyleChange::Unchanged)
-    }
-
     /// Returns a bitmask that represents a flow that needs to be rebuilt and
     /// reflowed.
     ///
     /// FIXME(bholley): Do we ever actually need this? Shouldn't
     /// RECONSTRUCT_FLOW imply everything else?
     pub fn rebuild_and_reflow() -> ServoRestyleDamage {
         REPAINT | REPOSITION | STORE_OVERFLOW | BUBBLE_ISIZES | REFLOW_OUT_OF_FLOW | REFLOW |
             RECONSTRUCT_FLOW
--- a/servo/components/style/servo/selector_parser.rs
+++ b/servo/components/style/servo/selector_parser.rs
@@ -125,20 +125,32 @@ impl PseudoElement {
     #[inline]
     pub fn from_eager_index(i: usize) -> Self {
         assert!(i < EAGER_PSEUDO_COUNT);
         let result: PseudoElement = unsafe { mem::transmute(i) };
         debug_assert!(result.is_eager());
         result
     }
 
-    /// Whether the current pseudo element is :before or :after.
+    /// Whether the current pseudo element is ::before or ::after.
     #[inline]
     pub fn is_before_or_after(&self) -> bool {
-        matches!(*self, PseudoElement::After | PseudoElement::Before)
+        self.is_before() || self.is_after()
+    }
+
+    /// Whether this pseudo-element is the ::before pseudo.
+    #[inline]
+    pub fn is_before(&self) -> bool {
+        *self == PseudoElement::Before
+    }
+
+    /// Whether this pseudo-element is the ::after pseudo.
+    #[inline]
+    pub fn is_after(&self) -> bool {
+        *self == PseudoElement::After
     }
 
     /// Whether the current pseudo element is :first-letter
     #[inline]
     pub fn is_first_letter(&self) -> bool {
         false
     }
 
--- a/taskcluster/taskgraph/actions/registry.py
+++ b/taskcluster/taskgraph/actions/registry.py
@@ -5,16 +5,17 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 from __future__ import absolute_import, print_function, unicode_literals
 
 import json
 import os
 import inspect
 import re
+from slugid import nice as slugid
 from mozbuild.util import memoize
 from types import FunctionType
 from collections import namedtuple
 from taskgraph import create
 from taskgraph.util.docker import docker_image
 from taskgraph.parameters import Parameters
 
 
@@ -178,30 +179,34 @@ def register_callback_action(name, title
                 return None
 
             match = re.match(r'https://(hg.mozilla.org)/(.*?)/?$', parameters['head_repository'])
             if not match:
                 raise Exception('Unrecognized head_repository')
             repo_scope = 'assume:repo:{}/{}:*'.format(
                 match.group(1), match.group(2))
 
+            task_group_id = os.environ.get('TASK_ID', slugid())
+
             return {
                 'created': {'$fromNow': ''},
                 'deadline': {'$fromNow': '12 hours'},
                 'expires': {'$fromNow': '14 days'},
                 'metadata': {
                     'owner': 'mozilla-taskcluster-maintenance@mozilla.com',
                     'source': '{}raw-file/{}/{}'.format(
                         parameters['head_repository'], parameters['head_rev'], source_path,
                     ),
                     'name': 'Action: {}'.format(title),
                     'description': 'Task executing callback for action.\n\n---\n' + description,
                 },
                 'workerType': 'gecko-{}-decision'.format(parameters['level']),
                 'provisionerId': 'aws-provisioner-v1',
+                'taskGroupId': task_group_id,
+                'schedulerId': 'gecko-level-{}'.format(parameters['level']),
                 'scopes': [
                     repo_scope,
                 ],
                 'tags': {
                     'createdForUser': parameters['owner'],
                     'kind': 'action-callback',
                 },
                 'routes': [
@@ -212,17 +217,17 @@ def register_callback_action(name, title
                 ],
                 'payload': {
                     'env': {
                         'GECKO_BASE_REPOSITORY': 'https://hg.mozilla.org/mozilla-unified',
                         'GECKO_HEAD_REPOSITORY': parameters['head_repository'],
                         'GECKO_HEAD_REF': parameters['head_ref'],
                         'GECKO_HEAD_REV': parameters['head_rev'],
                         'HG_STORE_PATH': '/home/worker/checkouts/hg-store',
-                        'ACTION_TASK_GROUP_ID': {'$eval': 'taskGroupId'},
+                        'ACTION_TASK_GROUP_ID': task_group_id,
                         'ACTION_TASK_ID': {'$json': {'$eval': 'taskId'}},
                         'ACTION_TASK': {'$json': {'$eval': 'task'}},
                         'ACTION_INPUT': {'$json': {'$eval': 'input'}},
                         'ACTION_CALLBACK': cb.__name__,
                         'ACTION_PARAMETERS': {'$json': {'$eval': 'parameters'}},
                     },
                     'cache': {
                         'level-{}-checkouts'.format(parameters['level']):
--- a/taskcluster/taskgraph/actions/retrigger.py
+++ b/taskcluster/taskgraph/actions/retrigger.py
@@ -1,68 +1,73 @@
 # -*- coding: utf-8 -*-
 
 # 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/.
 
 from __future__ import absolute_import, print_function, unicode_literals
 
-from .registry import register_task_action
+import logging
+
+from .util import (
+    create_tasks,
+    find_decision_task
+)
+from .registry import register_callback_action
+from taskgraph.util.taskcluster import get_artifact
+from taskgraph.taskgraph import TaskGraph
+
+logger = logging.getLogger(__name__)
 
 
-@register_task_action(
+@register_callback_action(
     title='Retrigger',
     name='retrigger',
+    symbol='rt',
     description=(
         'Create a clone of the task.\n\n'
-        'This does not update any dependencies or '
-        'cause any downstream tasks to be retriggered.'
     ),
     order=1,
     context=[{}],
+    schema={
+        'type': 'object',
+        'properties': {
+            'downstream': {
+                'type': 'boolean',
+                'description': (
+                    'If true, downstream tasks from this one will be cloned as well. '
+                    'The dependencies will be updated to work with the new task at the root.'
+                ),
+                'default': False,
+            },
+            'times': {
+                'type': 'integer',
+                'default': 1,
+                'minimum': 1,
+                'maximum': 6,
+                'title': 'Times',
+                'description': 'How many times to run each task.',
+            }
+        }
+    }
 )
-def retrigger_task_builder(parameters):
-
-    new_expires = '30 days'
+def retrigger_action(parameters, input, task_group_id, task_id, task):
+    decision_task_id = find_decision_task(parameters)
 
-    return {
-        '$merge': [
-            {'$eval': 'task'},
-            {'created': {'$fromNow': ''}},
-            {'deadline': {'$fromNow': '1 day'}},
-            {'expires': {'$fromNow': new_expires}},
-            {'payload': {
-                '$merge': [
-                    {'$eval': 'task.payload'},
-                    {
-                        '$if': '"artifacts" in task.payload',
-                        'then': {
-                            'artifacts': {
-                                '$if': 'typeof(task.payload.artifacts) == "object"',
-                                'then': {
-                                    '$map': {'$eval': 'task.payload.artifacts'},
-                                    'each(artifact)': {
-                                        '${artifact.key}': {
-                                            '$merge': [
-                                                {'$eval': 'artifact.val'},
-                                                {'expires': {'$fromNow': new_expires}},
-                                            ],
-                                        },
-                                    },
-                                },
-                                'else': {
-                                    '$map': {'$eval': 'task.payload.artifacts'},
-                                    'each(artifact)': {
-                                        '$merge': [
-                                            {'$eval': 'artifact'},
-                                            {'expires': {'$fromNow': new_expires}},
-                                        ],
-                                    },
-                                },
-                            },
-                        },
-                        'else': {},
-                    }
-                ]
-            }}
-        ]
-    }
+    full_task_graph = get_artifact(decision_task_id, "public/full-task-graph.json")
+    _, full_task_graph = TaskGraph.from_json(full_task_graph)
+    label_to_taskid = get_artifact(decision_task_id, "public/label-to-taskid.json")
+
+    label = task['metadata']['name']
+    with_downstream = ' '
+    to_run = [label]
+
+    if input.get('downstream'):
+        to_run = full_task_graph.graph.transitive_closure(set(to_run), reverse=True).nodes
+        to_run = to_run & set(label_to_taskid.keys())
+        with_downstream = ' (with downstream) '
+
+    times = input.get('times', 1)
+    for i in xrange(times):
+        create_tasks(to_run, full_task_graph, label_to_taskid, parameters, decision_task_id)
+
+        logger.info('Scheduled {}{}(time {}/{})'.format(label, with_downstream, i+1, times))
--- a/taskcluster/taskgraph/graph.py
+++ b/taskcluster/taskgraph/graph.py
@@ -35,35 +35,50 @@ class Graph(object):
         self.edges = edges
 
     def __eq__(self, other):
         return self.nodes == other.nodes and self.edges == other.edges
 
     def __repr__(self):
         return "<Graph nodes={!r} edges={!r}>".format(self.nodes, self.edges)
 
-    def transitive_closure(self, nodes):
+    def transitive_closure(self, nodes, reverse=False):
         """
         Return the transitive closure of <nodes>: the graph containing all
         specified nodes as well as any nodes reachable from them, and any
         intervening edges.
+
+        If `reverse` is true, the "reachability" will be reversed and this
+        will return the set of nodes that can reach the specified nodes.
+
+        Example
+        -------
+
+        a ------> b ------> c
+                  |
+                  `-------> d
+
+        transitive_closure([b]).nodes == set([a, b])
+        transitive_closure([c]).nodes == set([c, b, a])
+        transitive_closure([c], reverse=True).nodes == set([c])
+        transitive_closure([b], reverse=True).nodes == set([b, c, d])
         """
         assert isinstance(nodes, set)
         assert nodes <= self.nodes
 
         # generate a new graph by expanding along edges until reaching a fixed
         # point
         new_nodes, new_edges = nodes, set()
         nodes, edges = set(), set()
         while (new_nodes, new_edges) != (nodes, edges):
             nodes, edges = new_nodes, new_edges
             add_edges = set((left, right, name)
                             for (left, right, name) in self.edges
-                            if left in nodes)
-            add_nodes = set(right for (_, right, _) in add_edges)
+                            if (right if reverse else left) in nodes)
+            add_nodes = set((left if reverse else right) for (left, right, _) in add_edges)
             new_nodes = nodes | add_nodes
             new_edges = edges | add_edges
         return Graph(new_nodes, new_edges)
 
     def visit_postorder(self):
         """
         Generate a sequence of nodes in postorder, such that every node is
         visited *after* any nodes it links to.
--- a/toolkit/components/extensions/ext-downloads.js
+++ b/toolkit/components/extensions/ext-downloads.js
@@ -26,16 +26,18 @@ var {
 const DOWNLOAD_ITEM_FIELDS = ["id", "url", "referrer", "filename", "incognito",
                               "danger", "mime", "startTime", "endTime",
                               "estimatedEndTime", "state",
                               "paused", "canResume", "error",
                               "bytesReceived", "totalBytes",
                               "fileSize", "exists",
                               "byExtensionId", "byExtensionName"];
 
+const DOWNLOAD_DATE_FIELDS = ["startTime", "endTime", "estimatedEndTime"];
+
 // Fields that we generate onChanged events for.
 const DOWNLOAD_ITEM_CHANGE_FIELDS = ["endTime", "state", "paused", "canResume",
                                      "error", "exists"];
 
 // From https://fetch.spec.whatwg.org/#forbidden-header-name
 const FORBIDDEN_HEADERS = ["ACCEPT-CHARSET", "ACCEPT-ENCODING",
                            "ACCESS-CONTROL-REQUEST-HEADERS", "ACCESS-CONTROL-REQUEST-METHOD",
                            "CONNECTION", "CONTENT-LENGTH", "COOKIE", "COOKIE2", "DATE", "DNT",
@@ -55,17 +57,24 @@ class DownloadItem {
   get url() { return this.download.source.url; }
   get referrer() { return this.download.source.referrer; }
   get filename() { return this.download.target.path; }
   get incognito() { return this.download.source.isPrivate; }
   get danger() { return "safe"; } // TODO
   get mime() { return this.download.contentType; }
   get startTime() { return this.download.startTime; }
   get endTime() { return null; } // TODO
-  get estimatedEndTime() { return null; } // TODO
+  get estimatedEndTime() {
+    // Based on the code in summarizeDownloads() in DownloadsCommon.jsm
+    if (this.download.hasProgress && this.download.speed > 0) {
+      let sizeLeft = this.download.totalBytes - this.download.currentBytes;
+      let rawTimeLeft = sizeLeft / this.download.speed;
+      return new Date(Date.now() + rawTimeLeft);
+    }
+  }
   get state() {
     if (this.download.succeeded) {
       return "complete";
     }
     if (this.download.canceled) {
       return "interrupted";
     }
     return "in_progress";
@@ -115,18 +124,20 @@ class DownloadItem {
    * @returns {object} A DownloadItem with flat properties,
    *                   suitable for cloning.
    */
   serialize() {
     let obj = {};
     for (let field of DOWNLOAD_ITEM_FIELDS) {
       obj[field] = this[field];
     }
-    if (obj.startTime) {
-      obj.startTime = obj.startTime.toISOString();
+    for (let field of DOWNLOAD_DATE_FIELDS) {
+      if (obj[field]) {
+        obj[field] = obj[field].toISOString();
+      }
     }
     return obj;
   }
 
   // When a change event fires, handlers can look at how an individual
   // field changed by comparing item.fieldname with item.prechange.fieldname.
   // After all handlers have been invoked, this gets called to store the
   // current values of all fields ahead of the next event.
--- a/toolkit/components/extensions/test/xpcshell/test_ext_downloads_misc.js
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_downloads_misc.js
@@ -43,16 +43,23 @@ function handleRequest(request, response
       response.setHeader("Content-Range", `*/${TOTAL_LEN}`, false);
       response.finish();
       return;
     }
 
     response.setStatusLine(request.httpVersion, 206, "Partial Content");
     response.setHeader("Content-Range", `${start}-${end}/${TOTAL_LEN}`, false);
     response.write(TEST_DATA.slice(start, end + 1));
+  } else if (request.queryString.includes("stream")) {
+    response.processAsync();
+    response.setHeader("Content-Length", "10000", false);
+    response.write("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+    setInterval(() => {
+      response.write("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+    }, 50);
   } else {
     response.processAsync();
     response.setHeader("Content-Length", `${TOTAL_LEN}`, false);
     response.write(TEST_DATA.slice(0, PARTIAL_LEN));
   }
 
   do_register_cleanup(() => {
     try {
@@ -212,25 +219,25 @@ function runInExtension(what, ...args) {
   extension.sendMessage(`${what}.request`, ...args);
   return extension.awaitMessage(`${what}.done`);
 }
 
 // This is pretty simplistic, it looks for a progress update for a
 // download of the given url in which the total bytes are exactly equal
 // to the given value.  Unless you know exactly how data will arrive from
 // the server (eg see interruptible.sjs), it probably isn't very useful.
-async function waitForProgress(url, bytes) {
+async function waitForProgress(url, testFn) {
   let list = await Downloads.getList(Downloads.ALL);
 
   return new Promise(resolve => {
     const view = {
       onDownloadChanged(download) {
-        if (download.source.url == url && download.currentBytes == bytes) {
+        if (download.source.url == url && testFn(download.currentBytes)) {
           list.removeView(view);
-          resolve();
+          resolve(download.currentBytes);
         }
       },
     };
     list.addView(view);
   });
 }
 
 add_task(async function setup() {
@@ -288,17 +295,17 @@ add_task(async function test_events() {
 
 add_task(async function test_cancel() {
   let url = getInterruptibleUrl();
   do_print(url);
   let msg = await runInExtension("download", {url});
   equal(msg.status, "success", "download() succeeded");
   const id = msg.result;
 
-  let progressPromise = waitForProgress(url, INT_PARTIAL_LEN);
+  let progressPromise = waitForProgress(url, bytes => bytes == INT_PARTIAL_LEN);
 
   msg = await runInExtension("waitForEvents", [
     {type: "onCreated", data: {id}},
   ]);
   equal(msg.status, "success", "got created and changed events");
 
   await progressPromise;
   do_print(`download reached ${INT_PARTIAL_LEN} bytes`);
@@ -343,16 +350,17 @@ add_task(async function test_cancel() {
   equal(msg.status, "success", "got onChanged events corresponding to cancel()");
 
   msg = await runInExtension("search", {error: "USER_CANCELED"});
   equal(msg.status, "success", "search() succeeded");
   equal(msg.result.length, 1, "search() found 1 download");
   equal(msg.result[0].id, id, "download.id is correct");
   equal(msg.result[0].state, "interrupted", "download.state is correct");
   equal(msg.result[0].paused, false, "download.paused is correct");
+  equal(msg.result[0].estimatedEndTime, null, "download.estimatedEndTime is correct");
   equal(msg.result[0].canResume, false, "download.canResume is correct");
   equal(msg.result[0].error, "USER_CANCELED", "download.error is correct");
   equal(msg.result[0].totalBytes, INT_TOTAL_LEN, "download.totalBytes is correct");
   equal(msg.result[0].exists, false, "download.exists is correct");
 
   msg = await runInExtension("pause", id);
   equal(msg.status, "error", "cannot pause a canceled download");
 
@@ -361,17 +369,17 @@ add_task(async function test_cancel() {
 });
 
 add_task(async function test_pauseresume() {
   let url = getInterruptibleUrl();
   let msg = await runInExtension("download", {url});
   equal(msg.status, "success", "download() succeeded");
   const id = msg.result;
 
-  let progressPromise = waitForProgress(url, INT_PARTIAL_LEN);
+  let progressPromise = waitForProgress(url, bytes => bytes == INT_PARTIAL_LEN);
 
   msg = await runInExtension("waitForEvents", [
     {type: "onCreated", data: {id}},
   ]);
   equal(msg.status, "success", "got created and changed events");
 
   await progressPromise;
   do_print(`download reached ${INT_PARTIAL_LEN} bytes`);
@@ -410,16 +418,17 @@ add_task(async function test_pauseresume
   equal(msg.status, "success", "got onChanged event corresponding to pause");
 
   msg = await runInExtension("search", {paused: true});
   equal(msg.status, "success", "search() succeeded");
   equal(msg.result.length, 1, "search() found 1 download");
   equal(msg.result[0].id, id, "download.id is correct");
   equal(msg.result[0].state, "interrupted", "download.state is correct");
   equal(msg.result[0].paused, true, "download.paused is correct");
+  equal(msg.result[0].estimatedEndTime, null, "download.estimatedEndTime is correct");
   equal(msg.result[0].canResume, true, "download.canResume is correct");
   equal(msg.result[0].error, "USER_CANCELED", "download.error is correct");
   equal(msg.result[0].bytesReceived, INT_PARTIAL_LEN, "download.bytesReceived is correct");
   equal(msg.result[0].totalBytes, INT_TOTAL_LEN, "download.totalBytes is correct");
   equal(msg.result[0].exists, false, "download.exists is correct");
 
   msg = await runInExtension("search", {error: "USER_CANCELED"});
   equal(msg.status, "success", "search() succeeded");
@@ -468,16 +477,17 @@ add_task(async function test_pauseresume
   ]);
   equal(msg.status, "success", "got onChanged events for resume and complete");
 
   msg = await runInExtension("search", {id});
   equal(msg.status, "success", "search() succeeded");
   equal(msg.result.length, 1, "search() found 1 download");
   equal(msg.result[0].state, "complete", "download.state is correct");
   equal(msg.result[0].paused, false, "download.paused is correct");
+  equal(msg.result[0].estimatedEndTime, null, "download.estimatedEndTime is correct");
   equal(msg.result[0].canResume, false, "download.canResume is correct");
   equal(msg.result[0].error, null, "download.error is correct");
   equal(msg.result[0].bytesReceived, INT_TOTAL_LEN, "download.bytesReceived is correct");
   equal(msg.result[0].totalBytes, INT_TOTAL_LEN, "download.totalBytes is correct");
   equal(msg.result[0].exists, true, "download.exists is correct");
 
   msg = await runInExtension("pause", id);
   equal(msg.status, "error", "cannot pause a completed download");
@@ -487,17 +497,17 @@ add_task(async function test_pauseresume
 });
 
 add_task(async function test_pausecancel() {
   let url = getInterruptibleUrl();
   let msg = await runInExtension("download", {url});
   equal(msg.status, "success", "download() succeeded");
   const id = msg.result;
 
-  let progressPromise = waitForProgress(url, INT_PARTIAL_LEN);
+  let progressPromise = waitForProgress(url, bytes => bytes == INT_PARTIAL_LEN);
 
   msg = await runInExtension("waitForEvents", [
     {type: "onCreated", data: {id}},
   ]);
   equal(msg.status, "success", "got created and changed events");
 
   await progressPromise;
   do_print(`download reached ${INT_PARTIAL_LEN} bytes`);
@@ -536,16 +546,17 @@ add_task(async function test_pausecancel
   equal(msg.status, "success", "got onChanged event corresponding to pause");
 
   msg = await runInExtension("search", {paused: true});
   equal(msg.status, "success", "search() succeeded");
   equal(msg.result.length, 1, "search() found 1 download");
   equal(msg.result[0].id, id, "download.id is correct");
   equal(msg.result[0].state, "interrupted", "download.state is correct");
   equal(msg.result[0].paused, true, "download.paused is correct");
+  equal(msg.result[0].estimatedEndTime, null, "download.estimatedEndTime is correct");
   equal(msg.result[0].canResume, true, "download.canResume is correct");
   equal(msg.result[0].error, "USER_CANCELED", "download.error is correct");
   equal(msg.result[0].bytesReceived, INT_PARTIAL_LEN, "download.bytesReceived is correct");
   equal(msg.result[0].totalBytes, INT_TOTAL_LEN, "download.totalBytes is correct");
   equal(msg.result[0].exists, false, "download.exists is correct");
 
   msg = await runInExtension("search", {error: "USER_CANCELED"});
   equal(msg.status, "success", "search() succeeded");
@@ -573,16 +584,17 @@ add_task(async function test_pausecancel
   ]);
   equal(msg.status, "success", "got onChanged event for cancel");
 
   msg = await runInExtension("search", {id});
   equal(msg.status, "success", "search() succeeded");
   equal(msg.result.length, 1, "search() found 1 download");
   equal(msg.result[0].state, "interrupted", "download.state is correct");
   equal(msg.result[0].paused, false, "download.paused is correct");
+  equal(msg.result[0].estimatedEndTime, null, "download.estimatedEndTime is correct");
   equal(msg.result[0].canResume, false, "download.canResume is correct");
   equal(msg.result[0].error, "USER_CANCELED", "download.error is correct");
   equal(msg.result[0].totalBytes, INT_TOTAL_LEN, "download.totalBytes is correct");
   equal(msg.result[0].exists, false, "download.exists is correct");
 });
 
 add_task(async function test_pause_resume_cancel_badargs() {
   let BAD_ID = 1000;
@@ -633,17 +645,17 @@ add_task(async function test_file_remova
 });
 
 add_task(async function test_removal_of_incomplete_download() {
   let url = getInterruptibleUrl();
   let msg = await runInExtension("download", {url});
   equal(msg.status, "success", "download() succeeded");
   const id = msg.result;
 
-  let progressPromise = waitForProgress(url, INT_PARTIAL_LEN);
+  let progressPromise = waitForProgress(url, bytes => bytes == INT_PARTIAL_LEN);
 
   msg = await runInExtension("waitForEvents", [
     {type: "onCreated", data: {id}},
   ]);
   equal(msg.status, "success", "got created and changed events");
 
   await progressPromise;
   do_print(`download reached ${INT_PARTIAL_LEN} bytes`);
@@ -852,11 +864,37 @@ add_task(async function test_getFileIcon
 
   msg = await runInExtension("getFileIcon", id, {size: 128});
   equal(msg.status, "error", "getFileIcon() fails");
   ok(msg.errmsg.includes("Error processing size"), "size is too big");
 
   webNav.close();
 });
 
+add_task(async function test_estimatedendtime() {
+  // Note we are not testing the actual value calculation of estimatedEndTime,
+  // only whether it is null/non-null at the appropriate times.
+
+  let url = `${getInterruptibleUrl()}&stream=1`;
+  let msg = await runInExtension("download", {url});
+  equal(msg.status, "success", "download() succeeded");
+  const id = msg.result;
+
+  let previousBytes = await waitForProgress(url, bytes => bytes > 0);
+  await waitForProgress(url, bytes => bytes > previousBytes);
+
+  msg = await runInExtension("search", {id});
+  equal(msg.status, "success", "search() succeeded");
+  equal(msg.result.length, 1, "search() found 1 download");
+  ok(msg.result[0].estimatedEndTime, "download.estimatedEndTime is correct");
+  ok(msg.result[0].bytesReceived > 0, "download.bytesReceived is correct");
+
+  msg = await runInExtension("cancel", id);
+
+  msg = await runInExtension("search", {id});
+  equal(msg.status, "success", "search() succeeded");
+  equal(msg.result.length, 1, "search() found 1 download");
+  ok(!msg.result[0].estimatedEndTime, "download.estimatedEndTime is correct");
+});
+
 add_task(async function cleanup() {
   await extension.unload();
 });
--- a/toolkit/components/jsoncpp/src/lib_json/moz.build
+++ b/toolkit/components/jsoncpp/src/lib_json/moz.build
@@ -39,11 +39,15 @@ if CONFIG['_MSC_VER']:
 elif CONFIG['GNU_CXX']:
     CXXFLAGS += [
         '-Wno-unused-local-typedefs',
         '-Wno-shadow',
     ]
 
 if CONFIG['CLANG_CXX'] or CONFIG['CLANG_CL']:
     CXXFLAGS += [
-        '-Wno-implicit-fallthrough',
         '-Wno-c++11-narrowing',
     ]
+
+if CONFIG['CLANG_CXX'] or CONFIG['CLANG_CL'] or CONFIG['GNU_CXX']:
+    CXXFLAGS += [
+        '-Wno-implicit-fallthrough',
+    ]
--- a/toolkit/content/aboutTelemetry.css
+++ b/toolkit/content/aboutTelemetry.css
@@ -5,34 +5,36 @@
 @import url("chrome://global/skin/in-content/common.css");
 
 html {
   height: 100%;
 }
 
 body {
   display: flex;
-  align-items: stretch;
   height: 100%;
 }
 
 #categories {
-  min-width: 250px;
   padding-top: 0px;
   overflow-y: auto;
 }
 
 .main-content.search > section > *:not(.data) {
   display: none;
 }
 
+.main-content {
+  flex: 1;
+  font-size: 18px;
+  line-height: 1.6;
+}
+
 #category-raw {
   background-color: var(--in-content-page-background);
-  box-sizing: border-box;
-  min-width: inherit;
   position: absolute;
   bottom: 0;
   left: 0;
 }
 
 .heading {
   display: flex;
   flex-direction: column;
@@ -111,24 +113,16 @@ body {
 .category.selected > .category-subsection {
   display: block;
 }
 
 .category-name {
   pointer-events: none;
 }
 
-.main-content {
-  width: 100%;
-  font-size: 18px;
-  line-height:1.6;
-  z-index: 1;
-  position: relative;
-}
-
 section:not(.active) {
   display: none;
 }
 
 #page-description {
   border: 1px solid threedshadow;
   margin: 0px;
   padding: 10px;
--- a/toolkit/crashreporter/crashreporter.mozbuild
+++ b/toolkit/crashreporter/crashreporter.mozbuild
@@ -25,14 +25,18 @@ elif CONFIG['GNU_CXX']:
         '-Wno-unused-local-typedefs',
         '-Wno-shadow',
         '-Wno-deprecated-declarations',
         '-Wno-bool-compare',
         '-Wno-unused-but-set-variable',
     ]
 
 if CONFIG['CLANG_CXX'] or CONFIG['CLANG_CL']:
-    CXXFLAGS += [
-        '-Wno-implicit-fallthrough',
-        '-Wno-c++11-narrowing',
-    ]
+     CXXFLAGS += [
+         '-Wno-c++11-narrowing',
+     ]
+
+if not CONFIG['_MSC_VER']:
+     CXXFLAGS += [
+         '-Wno-implicit-fallthrough',
+     ]
 
 DEFINES['NO_STABS_SUPPORT'] = True