diff --git a/chromium/background-scripts/background.js b/chromium/background-scripts/background.js
index 6a7be847b8a0..2a1d8769df4d 100644
--- a/chromium/background-scripts/background.js
+++ b/chromium/background-scripts/background.js
@@ -276,6 +276,12 @@ var urlBlacklist = new Set();
// TODO: Remove this code if they ever give us a real counter
var redirectCounter = new Map();
+const cancelUrl = chrome.extension.getURL("/pages/cancel/index.html");
+
+function redirectOnCancel(shouldCancel){
+ return shouldCancel ? {redirectUrl: cancelUrl} : {cancel: false};
+}
+
/**
* Called before a HTTP(s) request. Does the heavy lifting
* Cancels the request/redirects it to HTTPS. URL modification happens in here.
@@ -298,7 +304,7 @@ function onBeforeRequest(details) {
// true if the URL is a http:// connection to a remote canonical host, and not
// a tor hidden service
const shouldCancel = httpNowhereOn &&
- uri.protocol === 'http:' &&
+ (uri.protocol === 'http:' || uri.protocol === 'ftp:') &&
uri.hostname.slice(-6) !== '.onion' &&
uri.hostname !== 'localhost' &&
!/^127(\.[0-9]{1,3}){3}$/.test(uri.hostname) &&
@@ -323,7 +329,7 @@ function onBeforeRequest(details) {
" changed before processing to " + uri.href);
}
if (urlBlacklist.has(uri.href)) {
- return {cancel: shouldCancel};
+ return redirectOnCancel(shouldCancel);
}
if (details.type == "main_frame") {
@@ -337,7 +343,7 @@ function onBeforeRequest(details) {
urlBlacklist.add(uri.href);
rules.settings.domainBlacklist.add(uri.hostname);
util.log(util.WARN, "Domain blacklisted " + uri.hostname);
- return {cancel: shouldCancel};
+ return redirectOnCancel(shouldCancel);
}
// whether to use mozilla's upgradeToSecure BlockingResponse if available
@@ -393,9 +399,15 @@ function onBeforeRequest(details) {
newuristr = newuristr.replace(/^http:/, "https:");
}
}
- if (newuristr && newuristr.substring(0, 5) === "http:") {
- // Abort early if we're about to redirect to HTTP in HTTP Nowhere mode
- return {cancel: true};
+ if (
+ newuristr &&
+ (
+ newuristr.substring(0, 5) === "http:" ||
+ newuristr.substring(0, 4) === "ftp:"
+ )
+ ) {
+ // Abort early if we're about to redirect to HTTP or FTP in HTTP Nowhere mode
+ return {redirectUrl: cancelUrl};
}
}
@@ -407,7 +419,7 @@ function onBeforeRequest(details) {
return {redirectUrl: newuristr};
} else {
util.log(util.INFO, 'onBeforeRequest returning shouldCancel: ' + shouldCancel);
- return {cancel: shouldCancel};
+ return redirectOnCancel(shouldCancel);
}
}
@@ -636,7 +648,7 @@ function onHeadersReceived(details) {
// Registers the handler for requests
// See: https://github.com/EFForg/https-everywhere/issues/10039
-chrome.webRequest.onBeforeRequest.addListener(onBeforeRequest, {urls: ["*://*/*"]}, ["blocking"]);
+chrome.webRequest.onBeforeRequest.addListener(onBeforeRequest, {urls: ["*://*/*", "ftp://*/*"]}, ["blocking"]);
// Try to catch redirect loops on URLs we've redirected to HTTPS.
chrome.webRequest.onBeforeRedirect.addListener(onBeforeRedirect, {urls: ["https://*/*"]});
diff --git a/chromium/background-scripts/update.js b/chromium/background-scripts/update.js
index eb945b2ca516..c2b48b46d293 100644
--- a/chromium/background-scripts/update.js
+++ b/chromium/background-scripts/update.js
@@ -1,32 +1,24 @@
-/* global update_channels */
/* global pako */
-/* global __dirname */
"use strict";
// Determine if we're in the tests. If so, define some necessary components.
-if(typeof(window) == "undefined"){
- const fs = require('fs');
- const WebCrypto = require("node-webcrypto-ossl"),
+if (typeof window === "undefined") {
+ var WebCrypto = require("node-webcrypto-ossl"),
+ crypto = new WebCrypto(),
atob = require("atob"),
btoa = require("btoa"),
- encoding = require('text-encoding');
-
- var window = {
- crypto: new WebCrypto(),
- atob,
- btoa
- };
-
- var update_channels = Function(fs.readFileSync(__dirname + '/update_channels.js').toString() + "return update_channels;")(),
- pako = Function(fs.readFileSync(__dirname + '/../external/pako-1.0.5/pako_inflate.min.js').toString() + "return pako;")(),
- TextDecoder = encoding.TextDecoder,
- chrome = require("sinon-chrome");
+ pako = require('../external/pako-1.0.5/pako_inflate.min.js'),
+ { TextDecoder } = require('text-encoding'),
+ chrome = require("sinon-chrome"),
+ window = { atob, btoa, chrome, crypto, pako, TextDecoder };
}
(function(exports) {
+const { update_channels } = require('./update_channels');
const util = require('./util');
+
let store,
background_callback;
diff --git a/chromium/background-scripts/update_channels.js b/chromium/background-scripts/update_channels.js
index e8032d874c37..8bb21c900619 100644
--- a/chromium/background-scripts/update_channels.js
+++ b/chromium/background-scripts/update_channels.js
@@ -1,13 +1,23 @@
/* exported update_channels */
-"use strict";
+'use strict';
-var update_channels = [{
- name: "EFF (Full)",
+(function (exports) {
+
+exports.update_channels = [{
+ name: 'EFF (Full)',
jwk: {
- kty: "RSA",
- e: "AQAB",
- n: "1cwvFQu3Kw-Pz8bcEFuV5zx0ZheDsc4Tva7Qv6BL90_sDLqCW79Y543nDkPtNVfFH_89pt2kSPp_IcS5XnYiw6zBQeFuILFw5JpvZt14K0s4e025Q9CXfhYKIBKT9PnqihwAacjMa6rQb7RTu7XxVvqxRb3b0vx2CR40LSlYZ8H_KpeaUwq2oz-fyrI6LFTeYvbO3ZuLKeK5xV1a32xeTVMFkIj3LxnQalxq-DRHfj7LRRoTnbRDW4uoDc8aVpLFliuO79jUKbobz4slpiWJ4wjKR_O6OK13HbZUiOSxi8Bms-UqBPOyzbMVpmA7lv_zWdaLu1IVlVXQyLVbbrqI6llRqfHdcJoEl-eC48AofuB-relQtjTEK_hyBf7sPwrbqAarjRjlyEx6Qy5gTXyxM9attfNAeupYR6jm8LKm6TFpfWkyDxUmj_f5pJMBWNTomV74f8iQ2M18_KWMUDCOf80tR0t21Q1iCWdvA3K_KJn05tTLyumlwwlQijMqRkYuao-CX9L3DJIaB3VPYPTSIPUr7oi16agsuamOyiOtlZiRpEvoNg2ksJMZtwnj5xhBQydkdhMW2ZpHDzcLuZlhJYZL_l3_7wuzRM7vpyA9obP92CpZRFJErGZmFxJC93I4U9-0B0wg-sbyMKGJ5j1BWTnibCklDXtWzXtuiz18EgE"
+ kty: 'RSA',
+ e: 'AQAB',
+ n: '1cwvFQu3Kw-Pz8bcEFuV5zx0ZheDsc4Tva7Qv6BL90_sDLqCW79Y543nDkPtNVfFH_89pt2kSPp_IcS5XnYiw6zBQeFuILFw5JpvZt14K0s4' +
+ 'e025Q9CXfhYKIBKT9PnqihwAacjMa6rQb7RTu7XxVvqxRb3b0vx2CR40LSlYZ8H_KpeaUwq2oz-fyrI6LFTeYvbO3ZuLKeK5xV1a32xeTVMF' +
+ 'kIj3LxnQalxq-DRHfj7LRRoTnbRDW4uoDc8aVpLFliuO79jUKbobz4slpiWJ4wjKR_O6OK13HbZUiOSxi8Bms-UqBPOyzbMVpmA7lv_zWdaL' +
+ 'u1IVlVXQyLVbbrqI6llRqfHdcJoEl-eC48AofuB-relQtjTEK_hyBf7sPwrbqAarjRjlyEx6Qy5gTXyxM9attfNAeupYR6jm8LKm6TFpfWky' +
+ 'DxUmj_f5pJMBWNTomV74f8iQ2M18_KWMUDCOf80tR0t21Q1iCWdvA3K_KJn05tTLyumlwwlQijMqRkYuao-CX9L3DJIaB3VPYPTSIPUr7oi1' +
+ '6agsuamOyiOtlZiRpEvoNg2ksJMZtwnj5xhBQydkdhMW2ZpHDzcLuZlhJYZL_l3_7wuzRM7vpyA9obP92CpZRFJErGZmFxJC93I4U9-0B0wg' +
+ '-sbyMKGJ5j1BWTnibCklDXtWzXtuiz18EgE'
},
- update_path_prefix: "https://www.https-rulesets.org/v1/"
+ update_path_prefix: 'https://www.https-rulesets.org/v1/'
}];
+
+})(typeof exports === 'undefined' ? require.scopes.update_channels = {} : exports);
diff --git a/chromium/images/banner-red.png b/chromium/images/banner-red.png
new file mode 100644
index 000000000000..3896f1a66742
Binary files /dev/null and b/chromium/images/banner-red.png differ
diff --git a/chromium/manifest.json b/chromium/manifest.json
index 10b776f062e6..82b2654fb12f 100644
--- a/chromium/manifest.json
+++ b/chromium/manifest.json
@@ -19,6 +19,9 @@
"background-scripts/background.js"
]
},
+ "web_accessible_resources": [
+ "/pages/cancel/index.html"
+ ],
"browser_action": {
"default_icon": {
"38": "images/icons/icon-active-38.png"
@@ -48,7 +51,8 @@
"tabs",
"cookies",
"storage",
- "*://*/*"
+ "*://*/*",
+ "ftp://*/*"
],
"version": "2018.6.21"
-}
\ No newline at end of file
+}
diff --git a/chromium/pages/cancel/index.html b/chromium/pages/cancel/index.html
new file mode 100644
index 000000000000..94a4799fbfbf
--- /dev/null
+++ b/chromium/pages/cancel/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+ ⚠ HTTPS Everywhere ⚠
+
+
+
+
+ 
+
+
+
+
+
diff --git a/chromium/pages/cancel/style.css b/chromium/pages/cancel/style.css
new file mode 100644
index 000000000000..80ec5b34a725
--- /dev/null
+++ b/chromium/pages/cancel/style.css
@@ -0,0 +1,20 @@
+body{
+ margin-top: 6em;
+ left: 50%;
+ position: relative;
+ overflow: hidden;
+}
+
+h1 img{
+ position: relative;
+ left: -289px;
+}
+
+p{
+ width: 600px;
+ position: relative;
+ left: -300px;
+ font-size: 12pt;
+ font-family: sans-serif;
+ line-height: 150%;
+}
diff --git a/chromium/pages/cancel/ux.js b/chromium/pages/cancel/ux.js
new file mode 100644
index 000000000000..d7475ddb0d38
--- /dev/null
+++ b/chromium/pages/cancel/ux.js
@@ -0,0 +1,21 @@
+"use strict";
+
+let observer;
+document.addEventListener("DOMContentLoaded", () => {
+ const explainer = document.querySelector("[data-i18n=cancel_he_blocking_explainer]");
+ observer = new MutationObserver(() => {replaceLink(explainer)});
+ if (explainer.innerText.length > 0) {
+ replaceLink(explainer);
+ } else {
+ observer.observe(explainer, {childList: true});
+ }
+});
+
+function replaceLink(explainer){
+ observer.disconnect();
+ const linkText = chrome.i18n.getMessage("cancel_he_blocking_network");
+ const link = document.createElement("a");
+ link.href = "https://en.wikipedia.org/wiki/Downgrade_attack";
+ link.innerText = linkText;
+ explainer.innerHTML = explainer.innerHTML.replace(linkText, link.outerHTML);
+}
diff --git a/chromium/test/update_test.js b/chromium/test/update_test.js
index a2976279e71a..56ba04f5431d 100644
--- a/chromium/test/update_test.js
+++ b/chromium/test/update_test.js
@@ -9,8 +9,8 @@ const assert = require('chai').assert,
sinon = require('sinon');
const fs = require('fs'),
- update_channels = Function(fs.readFileSync(__dirname + '/../background-scripts/update_channels.js').toString() + "return update_channels;")(),
- pako = Function(fs.readFileSync(__dirname + '/../external/pako-1.0.5/pako_inflate.min.js').toString() + "return pako;")();
+ { update_channels } = require('../background-scripts/update_channels'),
+ pako = require('../external/pako-1.0.5/pako_inflate.min.js');
util.setDefaultLogLevel(util.WARN);
diff --git a/make.sh b/make.sh
index a3a45706cf38..df32969ac17d 100755
--- a/make.sh
+++ b/make.sh
@@ -84,9 +84,9 @@ fi
# If the --remove-update-channels flag is set, remove all out-of-band update channels
if [ "$1" == "--remove-update-channels" -o "$2" == "--remove-update-channels" -o "$3" == "--remove-update-channels" ]; then
echo "Flag --remove-update-channels specified. Removing all out-of-band update channels."
- echo "update_channels = [];" >> pkg/crx/background-scripts/update_channels.js
- echo "update_channels = [];" >> pkg/xpi-amo/background-scripts/update_channels.js
- echo "update_channels = [];" >> pkg/xpi-eff/background-scripts/update_channels.js
+ echo "require.scopes.update_channels.update_channels = [];" >> pkg/crx/background-scripts/update_channels.js
+ echo "require.scopes.update_channels.update_channels = [];" >> pkg/xpi-amo/background-scripts/update_channels.js
+ echo "require.scopes.update_channels.update_channels = [];" >> pkg/xpi-eff/background-scripts/update_channels.js
fi
if [ -n "$BRANCH" ] ; then
diff --git a/src/chrome/content/rules/1.0.0.1.xml b/src/chrome/content/rules/1.0.0.1.xml
index bee7b6185de4..1d46eeb11c6b 100644
--- a/src/chrome/content/rules/1.0.0.1.xml
+++ b/src/chrome/content/rules/1.0.0.1.xml
@@ -1,16 +1,12 @@
-
+
-
-
+
diff --git a/src/chrome/content/rules/1.1.1.1.xml b/src/chrome/content/rules/1.1.1.1.xml
index ec070e1f4417..c6249f83c425 100644
--- a/src/chrome/content/rules/1.1.1.1.xml
+++ b/src/chrome/content/rules/1.1.1.1.xml
@@ -1,16 +1,12 @@
-
+
-
-
+
diff --git a/src/chrome/content/rules/ARICR.org.xml b/src/chrome/content/rules/ARICR.org.xml
new file mode 100644
index 000000000000..693dadf7679a
--- /dev/null
+++ b/src/chrome/content/rules/ARICR.org.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Adbooth.net.xml b/src/chrome/content/rules/Adbooth.net.xml
index 89334c06fafd..df8e79b7ea0b 100644
--- a/src/chrome/content/rules/Adbooth.net.xml
+++ b/src/chrome/content/rules/Adbooth.net.xml
@@ -38,7 +38,7 @@
+ to="https://cdn.adbooth.net/" />
diff --git a/src/chrome/content/rules/Adk2.xml b/src/chrome/content/rules/Adk2.xml
index 73d62b51d56e..5b965923439c 100644
--- a/src/chrome/content/rules/Adk2.xml
+++ b/src/chrome/content/rules/Adk2.xml
@@ -36,6 +36,6 @@ Fetch error: http://adk2.com/ => https://adk2.com/: (60, 'SSL certificate proble
+ to="https://cdn.adk2.com/" />
diff --git a/src/chrome/content/rules/Adspdbl.com.xml b/src/chrome/content/rules/Adspdbl.com.xml
index 5b35b381bbc4..f5cde3f06f21 100644
--- a/src/chrome/content/rules/Adspdbl.com.xml
+++ b/src/chrome/content/rules/Adspdbl.com.xml
@@ -17,7 +17,6 @@
-
+
diff --git a/src/chrome/content/rules/Advertising.com.xml b/src/chrome/content/rules/Advertising.com.xml
index a67a3a6389db..437a2074dd10 100644
--- a/src/chrome/content/rules/Advertising.com.xml
+++ b/src/chrome/content/rules/Advertising.com.xml
@@ -1,80 +1,215 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
diff --git a/src/chrome/content/rules/Altex.ro.xml b/src/chrome/content/rules/Altex.ro.xml
index 46b9bc00cd10..ffe531a703d8 100644
--- a/src/chrome/content/rules/Altex.ro.xml
+++ b/src/chrome/content/rules/Altex.ro.xml
@@ -55,10 +55,6 @@ Fetch error: http://cdn.altex.ro/ => https://d2qpxedcu5ji30.cloudfront.net/: (28
-
-
-
+
diff --git a/src/chrome/content/rules/Asterisk.xml b/src/chrome/content/rules/Asterisk.xml
index 674af4ee8c0a..8aeed593f280 100644
--- a/src/chrome/content/rules/Asterisk.xml
+++ b/src/chrome/content/rules/Asterisk.xml
@@ -1,61 +1,45 @@
-
-
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Authorize.com.xml b/src/chrome/content/rules/Authorize.com.xml
new file mode 100644
index 000000000000..032289f48bcd
--- /dev/null
+++ b/src/chrome/content/rules/Authorize.com.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Authorize.net.xml b/src/chrome/content/rules/Authorize.net.xml
index f246b2b0183b..a2392bd45850 100644
--- a/src/chrome/content/rules/Authorize.net.xml
+++ b/src/chrome/content/rules/Authorize.net.xml
@@ -1,48 +1,44 @@
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
diff --git a/src/chrome/content/rules/BBacon.org.xml b/src/chrome/content/rules/BBacon.org.xml
new file mode 100644
index 000000000000..d06ac5637e64
--- /dev/null
+++ b/src/chrome/content/rules/BBacon.org.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/BKGE.de.xml b/src/chrome/content/rules/BKGE.de.xml
new file mode 100644
index 000000000000..45f43dec68a6
--- /dev/null
+++ b/src/chrome/content/rules/BKGE.de.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Bash.im.xml b/src/chrome/content/rules/Bash.im.xml
new file mode 100644
index 000000000000..5f5057be0c64
--- /dev/null
+++ b/src/chrome/content/rules/Bash.im.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/BiB.bund.de.xml b/src/chrome/content/rules/BiB.bund.de.xml
new file mode 100644
index 000000000000..c423e07fb595
--- /dev/null
+++ b/src/chrome/content/rules/BiB.bund.de.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/BilBasen.dk.xml b/src/chrome/content/rules/BilBasen.dk.xml
new file mode 100644
index 000000000000..e486a9d196fc
--- /dev/null
+++ b/src/chrome/content/rules/BilBasen.dk.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Blogtrottr.com.xml b/src/chrome/content/rules/Blogtrottr.com.xml
index 52940954b558..499870d5055b 100644
--- a/src/chrome/content/rules/Blogtrottr.com.xml
+++ b/src/chrome/content/rules/Blogtrottr.com.xml
@@ -3,14 +3,19 @@
- blog.blogtrottr.com
Invalid certificate:
- - li.blogtrottr.com
+ - li.blogtrottr.com, equivalent to p.liadm.com
-->
+
+
+
+
diff --git a/src/chrome/content/rules/Booklooker.de.xml b/src/chrome/content/rules/Booklooker.de.xml
index d099131bd574..e55cf210b7b6 100644
--- a/src/chrome/content/rules/Booklooker.de.xml
+++ b/src/chrome/content/rules/Booklooker.de.xml
@@ -1,9 +1,20 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
+
diff --git a/src/chrome/content/rules/CFWGroup.ca.xml b/src/chrome/content/rules/CFWGroup.ca.xml
new file mode 100644
index 000000000000..8e2119009047
--- /dev/null
+++ b/src/chrome/content/rules/CFWGroup.ca.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/CKSource.com.xml b/src/chrome/content/rules/CKSource.com.xml
index 1e0dd092c171..7a6b777f43ce 100644
--- a/src/chrome/content/rules/CKSource.com.xml
+++ b/src/chrome/content/rules/CKSource.com.xml
@@ -53,10 +53,6 @@
-
-
-
diff --git a/src/chrome/content/rules/Catalystapp.co.xml b/src/chrome/content/rules/Catalystapp.co.xml
new file mode 100644
index 000000000000..2e75e0cbbac9
--- /dev/null
+++ b/src/chrome/content/rules/Catalystapp.co.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Circle_of_Moms.xml b/src/chrome/content/rules/Circle_of_Moms.xml
index 5ee1c0813676..87ace5b26574 100644
--- a/src/chrome/content/rules/Circle_of_Moms.xml
+++ b/src/chrome/content/rules/Circle_of_Moms.xml
@@ -30,9 +30,9 @@ Fetch error: http://circleofmoms.com/ => https://www.circleofmoms.com/: Cycle de
to="https://www.circleofmoms.com/" />
+ to="https://imagelib4.circleofmoms.com/" />
+ to="https://images3.circleofmoms.com/" />
diff --git a/src/chrome/content/rules/CloudFlare_Challenge.com.xml b/src/chrome/content/rules/CloudFlare_Challenge.com.xml
deleted file mode 100644
index dc0c6ff18a01..000000000000
--- a/src/chrome/content/rules/CloudFlare_Challenge.com.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/CloudFlare-DNS.com.xml b/src/chrome/content/rules/Cloudflare-DNS.com.xml
similarity index 51%
rename from src/chrome/content/rules/CloudFlare-DNS.com.xml
rename to src/chrome/content/rules/Cloudflare-DNS.com.xml
index facdc44d9ea2..919d9786003a 100644
--- a/src/chrome/content/rules/CloudFlare-DNS.com.xml
+++ b/src/chrome/content/rules/Cloudflare-DNS.com.xml
@@ -1,22 +1,16 @@
-
-
+
-
-
-
+
diff --git a/src/chrome/content/rules/CloudFlare.xml b/src/chrome/content/rules/Cloudflare.com.xml
similarity index 70%
rename from src/chrome/content/rules/CloudFlare.xml
rename to src/chrome/content/rules/Cloudflare.com.xml
index b221142b72be..4fa236ad9217 100644
--- a/src/chrome/content/rules/CloudFlare.xml
+++ b/src/chrome/content/rules/Cloudflare.com.xml
@@ -1,29 +1,14 @@
-
-
+
@@ -32,12 +17,14 @@
+
+
@@ -50,11 +37,7 @@
-
-
-
-
+
diff --git a/src/chrome/content/rules/Cloudflarestatus.com.xml b/src/chrome/content/rules/CloudflareStatus.com.xml
similarity index 58%
rename from src/chrome/content/rules/Cloudflarestatus.com.xml
rename to src/chrome/content/rules/CloudflareStatus.com.xml
index c91723d045c9..fc232a6e6ea9 100644
--- a/src/chrome/content/rules/Cloudflarestatus.com.xml
+++ b/src/chrome/content/rules/CloudflareStatus.com.xml
@@ -1,9 +1,12 @@
-
-
+
+
diff --git a/src/chrome/content/rules/CmCDN.net.xml b/src/chrome/content/rules/CmCDN.net.xml
index a5e59ef2c16c..7357663eb18c 100644
--- a/src/chrome/content/rules/CmCDN.net.xml
+++ b/src/chrome/content/rules/CmCDN.net.xml
@@ -33,7 +33,7 @@ Fetch error: http://s.cmcdn.net/ => https://d1gyuuidj3lauh.cloudfront.net/: (6,
+ to="https://media.cmcdn.net/" />
diff --git a/src/chrome/content/rules/Coles.com.au.xml b/src/chrome/content/rules/Coles.com.au.xml
new file mode 100644
index 000000000000..0c500145845e
--- /dev/null
+++ b/src/chrome/content/rules/Coles.com.au.xml
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/ComiXology.com.xml b/src/chrome/content/rules/ComiXology.com.xml
index 4c013ff0572b..ecd09546deb0 100644
--- a/src/chrome/content/rules/ComiXology.com.xml
+++ b/src/chrome/content/rules/ComiXology.com.xml
@@ -86,9 +86,6 @@
-
-
diff --git a/src/chrome/content/rules/Conde_Nast.co.uk.xml b/src/chrome/content/rules/Conde_Nast.co.uk.xml
index 2c039465d217..5dbfefdd9a59 100644
--- a/src/chrome/content/rules/Conde_Nast.co.uk.xml
+++ b/src/chrome/content/rules/Conde_Nast.co.uk.xml
@@ -11,14 +11,8 @@
- cnda.condenast.co.uk
- - dvcpqzrjfwvhx.cloudfront.net
-
- - cdni.condenast.co.uk
-
-
Problematic subdomains:
- - cdni.condenast.co.uk (mismatched, 403 when rewritten to dvcpqzrjfwvhx.cloudfront.net)
- cnda.condenast.co.uk (mismatched, CN: *.cloudfront.net)
-->
@@ -26,14 +20,8 @@
-
-
-
-
-
+
diff --git a/src/chrome/content/rules/Connexity.net.xml b/src/chrome/content/rules/Connexity.net.xml
index c6d6a5eeb1dc..7f4d88f8d538 100644
--- a/src/chrome/content/rules/Connexity.net.xml
+++ b/src/chrome/content/rules/Connexity.net.xml
@@ -1,38 +1,39 @@
-
-
+
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
diff --git a/src/chrome/content/rules/Convert-JPG-to-PDF.net.xml b/src/chrome/content/rules/Convert-JPG-to-PDF.net.xml
new file mode 100644
index 000000000000..5bc3e77fc139
--- /dev/null
+++ b/src/chrome/content/rules/Convert-JPG-to-PDF.net.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Coreboot.xml b/src/chrome/content/rules/Coreboot.xml
index 80f01d3fadcc..afce2a2dde23 100644
--- a/src/chrome/content/rules/Coreboot.xml
+++ b/src/chrome/content/rules/Coreboot.xml
@@ -1,41 +1,32 @@
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
-
-
-
-
+
diff --git a/src/chrome/content/rules/Couchbase.xml b/src/chrome/content/rules/Couchbase.xml
index 66776a839d09..fbcc385725c6 100644
--- a/src/chrome/content/rules/Couchbase.xml
+++ b/src/chrome/content/rules/Couchbase.xml
@@ -39,6 +39,6 @@ Fetch error: http://couchbase.com/ => https://couchbase.com/: Cycle detected - U
to="https://na-a.marketo.com/" />
+ to="https://packages.couchbase.com/" />
diff --git a/src/chrome/content/rules/Customersaas.com.xml b/src/chrome/content/rules/Customersaas.com.xml
index 44b80e8d0496..b8bb88286fb4 100644
--- a/src/chrome/content/rules/Customersaas.com.xml
+++ b/src/chrome/content/rules/Customersaas.com.xml
@@ -14,13 +14,10 @@
-->
-
+
+
-
-
-
+
diff --git a/src/chrome/content/rules/Cxt.ms.xml b/src/chrome/content/rules/Cxt.ms.xml
index 9e72e1cd24d7..03f0b92dd78e 100644
--- a/src/chrome/content/rules/Cxt.ms.xml
+++ b/src/chrome/content/rules/Cxt.ms.xml
@@ -8,13 +8,10 @@
-->
-
+
+
-
-
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/DealerRater.com.xml b/src/chrome/content/rules/DealerRater.com.xml
index 1131ba584227..d0e5b38232bf 100644
--- a/src/chrome/content/rules/DealerRater.com.xml
+++ b/src/chrome/content/rules/DealerRater.com.xml
@@ -1,36 +1,15 @@
-
+
-
-
-
-
-
-
-
-
+
+
-
+
diff --git a/src/chrome/content/rules/Dell.xml b/src/chrome/content/rules/Dell.xml
index d35b5afb594f..118d1bfdf0a6 100644
--- a/src/chrome/content/rules/Dell.xml
+++ b/src/chrome/content/rules/Dell.xml
@@ -99,6 +99,8 @@
+
+
diff --git a/src/chrome/content/rules/Desk.com.xml b/src/chrome/content/rules/Desk.com.xml
index 7d2f1609e949..4f1f31389701 100644
--- a/src/chrome/content/rules/Desk.com.xml
+++ b/src/chrome/content/rules/Desk.com.xml
@@ -73,7 +73,7 @@ Fetch error: http://assistly.com/ => https://assistly.com/: (51, "SSL: no altern
to="https://d218iqt4mo6adh.cloudfront.net/" />
+ to="https://webassets.desk.com/" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Dianomi.xml b/src/chrome/content/rules/Dianomi.xml
deleted file mode 100644
index 3dafb7d14562..000000000000
--- a/src/chrome/content/rules/Dianomi.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Direct_Mail_Mac.com.xml b/src/chrome/content/rules/Direct_Mail_Mac.com.xml
index 0a28770ca58f..8e7da96244db 100644
--- a/src/chrome/content/rules/Direct_Mail_Mac.com.xml
+++ b/src/chrome/content/rules/Direct_Mail_Mac.com.xml
@@ -27,7 +27,6 @@
-
+
diff --git a/src/chrome/content/rules/Divshot.xml b/src/chrome/content/rules/Divshot.xml
index 868469e0fcd9..d9753e8ac1a6 100644
--- a/src/chrome/content/rules/Divshot.xml
+++ b/src/chrome/content/rules/Divshot.xml
@@ -19,6 +19,6 @@
to="https://$1divshot.com/" />
+ to="https://a1.divshot.com/" />
diff --git a/src/chrome/content/rules/EFinancialCareers.xml b/src/chrome/content/rules/EFinancialCareers.xml
index 776cab007f07..7117881be2b1 100644
--- a/src/chrome/content/rules/EFinancialCareers.xml
+++ b/src/chrome/content/rules/EFinancialCareers.xml
@@ -84,10 +84,6 @@ Fetch error: http://news-cdn.efinancialcareers.com/ => https://d2p98mys7gexzy.cl
-
-
-
+
diff --git a/src/chrome/content/rules/EducateAutism.com.xml b/src/chrome/content/rules/EducateAutism.com.xml
new file mode 100644
index 000000000000..3bcc9eb8d423
--- /dev/null
+++ b/src/chrome/content/rules/EducateAutism.com.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Elgas.com.au.xml b/src/chrome/content/rules/Elgas.com.au.xml
new file mode 100644
index 000000000000..0a0a6bdc03a8
--- /dev/null
+++ b/src/chrome/content/rules/Elgas.com.au.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Evidon.xml b/src/chrome/content/rules/Evidon.xml
index 86ed497143cc..d46afade8462 100644
--- a/src/chrome/content/rules/Evidon.xml
+++ b/src/chrome/content/rules/Evidon.xml
@@ -2,40 +2,55 @@
Other Evidon related rulesets:
+ Ghostery.com.xml
-
- Non-functional hosts in *betteradvertising.com
- SSL peer certificate was not OK:
- - cdn.betteradvertising.com
-
- Peer certificate cannot be authenticated with given CA certificates:
- - my.betteradvertising.com
-
-
- Non-functional hosts in *betrad.com
- Peer certificate cannot be authenticated with given CA certificates:
- - betrad.com
- - www.betrad.com
-
-
- Non-functional hosts in *evidon.com
- SSL peer certificate was not OK:
- - cdn.evidon.com
-
- Peer certificate cannot be authenticated with given CA certificates:
- - blog.evidon.com
- - my.evidon.com
-
+ Self-signed cert:
+ - betteradvertising.com
+ - www.betteradvertising.com
+ - betrad.com
+ - www.betrad.com
+ - blog.evidon.com
+
+ Cert expired:
+ - my.betteradvertising.com
+ - ads.evidon.com
+ - my.evidon.com
+
+ Cert mismatch:
+ - cdn.betteradvertising.com
+ - cdn.evidon.com
+ - em.evidon.com
+
+ Connection refused:
+ - graphite.evidon.com
-->
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Exactag.xml b/src/chrome/content/rules/Exactag.xml
index 778c09b853dc..740b7e182817 100644
--- a/src/chrome/content/rules/Exactag.xml
+++ b/src/chrome/content/rules/Exactag.xml
@@ -1,24 +1,44 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/FSharp.org.xml b/src/chrome/content/rules/FSharp.org.xml
new file mode 100644
index 000000000000..38c4613a7275
--- /dev/null
+++ b/src/chrome/content/rules/FSharp.org.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Filemobile.xml b/src/chrome/content/rules/Filemobile.xml
index 939cd3892f67..9c98fcabec4e 100644
--- a/src/chrome/content/rules/Filemobile.xml
+++ b/src/chrome/content/rules/Filemobile.xml
@@ -43,9 +43,6 @@
-
-
diff --git a/src/chrome/content/rules/Fine_Art_America.xml b/src/chrome/content/rules/Fine_Art_America.xml
index 12080a6af946..5202dae43dba 100644
--- a/src/chrome/content/rules/Fine_Art_America.xml
+++ b/src/chrome/content/rules/Fine_Art_America.xml
@@ -55,10 +55,6 @@
-
-
-
diff --git a/src/chrome/content/rules/Firefox.com.xml b/src/chrome/content/rules/Firefox.com.xml
index 7ae362c0b943..dea849b61639 100644
--- a/src/chrome/content/rules/Firefox.com.xml
+++ b/src/chrome/content/rules/Firefox.com.xml
@@ -1,6 +1,9 @@
@@ -18,12 +21,19 @@
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Forensics.ca.xml b/src/chrome/content/rules/Forensics.ca.xml
new file mode 100644
index 000000000000..11d78239dd21
--- /dev/null
+++ b/src/chrome/content/rules/Forensics.ca.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Freshdesk.xml b/src/chrome/content/rules/Freshdesk.xml
index 033c81028dcd..5d45e0b860d2 100644
--- a/src/chrome/content/rules/Freshdesk.xml
+++ b/src/chrome/content/rules/Freshdesk.xml
@@ -23,7 +23,7 @@
+ to="https://assets.freshdesk.com/" />
diff --git a/src/chrome/content/rules/FrostWire.xml b/src/chrome/content/rules/FrostWire.xml
index 01556662e070..91f5a6353816 100644
--- a/src/chrome/content/rules/FrostWire.xml
+++ b/src/chrome/content/rules/FrostWire.xml
@@ -2,7 +2,6 @@
-
+
diff --git a/src/chrome/content/rules/Full_Signal.xml b/src/chrome/content/rules/Full_Signal.xml
index 5cd3f12ef96f..bcba7564f327 100644
--- a/src/chrome/content/rules/Full_Signal.xml
+++ b/src/chrome/content/rules/Full_Signal.xml
@@ -16,7 +16,6 @@
-
+
diff --git a/src/chrome/content/rules/GCaptain.com.xml b/src/chrome/content/rules/GCaptain.com.xml
index 4efcfebc9872..f84d7b3a8bc2 100644
--- a/src/chrome/content/rules/GCaptain.com.xml
+++ b/src/chrome/content/rules/GCaptain.com.xml
@@ -69,9 +69,6 @@ Non-2xx HTTP code: http://cfs1.gcaptain.com/ (200) => https://d2m8pnbf2v4ae2.clo
-
-
diff --git a/src/chrome/content/rules/GetGlue.xml b/src/chrome/content/rules/GetGlue.xml
index 996cc7291b96..65f6feb3205b 100644
--- a/src/chrome/content/rules/GetGlue.xml
+++ b/src/chrome/content/rules/GetGlue.xml
@@ -19,6 +19,6 @@ Fetch error: http://getglue.com/ => https://getglue.com/: (51, "SSL: no alternat
to="https://$1getglue.com/" />
+ to="https://widgets.getglue.com/" />
\ No newline at end of file
diff --git a/src/chrome/content/rules/GumGum.xml b/src/chrome/content/rules/GumGum.xml
index 9b2f6e91848c..b4d3b015ff7c 100644
--- a/src/chrome/content/rules/GumGum.xml
+++ b/src/chrome/content/rules/GumGum.xml
@@ -31,6 +31,6 @@
to="https://$1.gumgum.com/" />
+ to="https://c.gumgum.com/" />
diff --git a/src/chrome/content/rules/HDM-Stuttgart.de.xml b/src/chrome/content/rules/HDM-Stuttgart.de.xml
new file mode 100644
index 000000000000..5a7c9f2ab8b0
--- /dev/null
+++ b/src/chrome/content/rules/HDM-Stuttgart.de.xml
@@ -0,0 +1,226 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/HubSpot.com.xml b/src/chrome/content/rules/HubSpot.com.xml
index 20e13c12c517..f9150dd885ab 100644
--- a/src/chrome/content/rules/HubSpot.com.xml
+++ b/src/chrome/content/rules/HubSpot.com.xml
@@ -46,7 +46,6 @@
-
@@ -54,10 +53,6 @@
-
-
-
+
diff --git a/src/chrome/content/rules/Huffington-Post.xml b/src/chrome/content/rules/Huffington-Post.xml
index e20dcbc5f9c8..ecf70c5c78e4 100644
--- a/src/chrome/content/rules/Huffington-Post.xml
+++ b/src/chrome/content/rules/Huffington-Post.xml
@@ -120,7 +120,7 @@
+ to="https://big.assets.huffingtonpost.com/" />
diff --git a/src/chrome/content/rules/ICPDR.org.xml b/src/chrome/content/rules/ICPDR.org.xml
new file mode 100644
index 000000000000..53a35ada0826
--- /dev/null
+++ b/src/chrome/content/rules/ICPDR.org.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/IDG.com.au.xml b/src/chrome/content/rules/IDG.com.au.xml
index 98d3402d6821..92f2878b403b 100644
--- a/src/chrome/content/rules/IDG.com.au.xml
+++ b/src/chrome/content/rules/IDG.com.au.xml
@@ -36,7 +36,7 @@ Fetch error: http://computerworld.com.au/ => https://computerworld.com.au/: (51,
+ to="https://demo.idg.com.au/" />
diff --git a/src/chrome/content/rules/IT_Toolbox.com.xml b/src/chrome/content/rules/IT_Toolbox.com.xml
index 7a1c86c218f6..4ef9f442ccfc 100644
--- a/src/chrome/content/rules/IT_Toolbox.com.xml
+++ b/src/chrome/content/rules/IT_Toolbox.com.xml
@@ -21,7 +21,8 @@
-->
-
+
+
-
-
-
+
diff --git a/src/chrome/content/rules/IndiaMART.xml b/src/chrome/content/rules/IndiaMART.xml
index e7e4f56faba9..e9327d48def0 100644
--- a/src/chrome/content/rules/IndiaMART.xml
+++ b/src/chrome/content/rules/IndiaMART.xml
@@ -33,23 +33,13 @@
-->
-
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
diff --git a/src/chrome/content/rules/InkFrog.com.xml b/src/chrome/content/rules/InkFrog.com.xml
index 0bcfadc4ce8d..808e4843b960 100644
--- a/src/chrome/content/rules/InkFrog.com.xml
+++ b/src/chrome/content/rules/InkFrog.com.xml
@@ -16,7 +16,7 @@
- img ¹
- imgs ²
- thmb ¹
- - thumbnails ²
+ - thumbnails (expired)
¹ Works, expired 2013-04-24
² Cloudfront
@@ -44,12 +44,7 @@
-
-
-
+ to="https://imgs.inkfrog.com/" />
diff --git a/src/chrome/content/rules/Internet_Video_Archive.com.xml b/src/chrome/content/rules/Internet_Video_Archive.com.xml
index a424d17b8921..16e46bd06bb5 100644
--- a/src/chrome/content/rules/Internet_Video_Archive.com.xml
+++ b/src/chrome/content/rules/Internet_Video_Archive.com.xml
@@ -9,7 +9,6 @@
-
+
diff --git a/src/chrome/content/rules/Iono.fm.xml b/src/chrome/content/rules/Iono.fm.xml
index 0f68dd55c5a7..a3df11cb2914 100644
--- a/src/chrome/content/rules/Iono.fm.xml
+++ b/src/chrome/content/rules/Iono.fm.xml
@@ -42,10 +42,6 @@
-
-
-
+
diff --git a/src/chrome/content/rules/Jawbone.com.xml b/src/chrome/content/rules/Jawbone.com.xml
index b46be5103ec4..0ea3617a3706 100644
--- a/src/chrome/content/rules/Jawbone.com.xml
+++ b/src/chrome/content/rules/Jawbone.com.xml
@@ -9,6 +9,10 @@
- forums
+ Non-functional hosts:
+ Timeout:
+ - jawbone.com
+
Partially covered subdomains:
@@ -47,7 +51,6 @@
-->
-
@@ -55,10 +58,10 @@
-
+ to="https://content.jawbone.com/" />
-
\ No newline at end of file
+
diff --git a/src/chrome/content/rules/LesFurets.com.xml b/src/chrome/content/rules/LesFurets.com.xml
index 529373e37953..92401787111e 100644
--- a/src/chrome/content/rules/LesFurets.com.xml
+++ b/src/chrome/content/rules/LesFurets.com.xml
@@ -16,7 +16,6 @@
-
+
diff --git a/src/chrome/content/rules/London_Review_of_Books.xml b/src/chrome/content/rules/London_Review_of_Books.xml
index 1ed524173fdc..4a54d0665b34 100644
--- a/src/chrome/content/rules/London_Review_of_Books.xml
+++ b/src/chrome/content/rules/London_Review_of_Books.xml
@@ -25,6 +25,6 @@
to="https://www.lrb.co.uk/$1" />
+ to="https://cdn.lrb.co.uk/" />
\ No newline at end of file
diff --git a/src/chrome/content/rules/Luadns.com.xml b/src/chrome/content/rules/Luadns.com.xml
new file mode 100644
index 000000000000..1c4162230449
--- /dev/null
+++ b/src/chrome/content/rules/Luadns.com.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Lubuntu.me.xml b/src/chrome/content/rules/Lubuntu.me.xml
new file mode 100644
index 000000000000..b2aafcbe4220
--- /dev/null
+++ b/src/chrome/content/rules/Lubuntu.me.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/MESO-Rx.xml b/src/chrome/content/rules/MESO-Rx.xml
index 27e830d48415..27a8ff9a4343 100644
--- a/src/chrome/content/rules/MESO-Rx.xml
+++ b/src/chrome/content/rules/MESO-Rx.xml
@@ -46,9 +46,6 @@ Non-2xx HTTP code: http://www.thinksteroids.com/ (200) => https://www.thinkstero
-
-
diff --git a/src/chrome/content/rules/MailChimp.xml b/src/chrome/content/rules/MailChimp.xml
index 17d2dc159ed2..1d91c415d91e 100644
--- a/src/chrome/content/rules/MailChimp.xml
+++ b/src/chrome/content/rules/MailChimp.xml
@@ -159,10 +159,6 @@
-
-
-
+
diff --git a/src/chrome/content/rules/Mass_Relevance.xml b/src/chrome/content/rules/Mass_Relevance.xml
index 35a8681bb5ed..c70dd421690f 100644
--- a/src/chrome/content/rules/Mass_Relevance.xml
+++ b/src/chrome/content/rules/Mass_Relevance.xml
@@ -32,7 +32,7 @@
to="https://$1massrelevance.com/" />
+ to="https://up.massrelevance.com/" />
diff --git a/src/chrome/content/rules/MediaMatters.org.xml b/src/chrome/content/rules/MediaMatters.org.xml
index fd3d13156fed..543f31e17677 100644
--- a/src/chrome/content/rules/MediaMatters.org.xml
+++ b/src/chrome/content/rules/MediaMatters.org.xml
@@ -56,7 +56,7 @@
to="https://dnqv4na4axyak.cloudfront.net/static/" />
+ to="https://cloudfront.mediamatters.org/" />
diff --git a/src/chrome/content/rules/MesonBuild.com.xml b/src/chrome/content/rules/MesonBuild.com.xml
new file mode 100644
index 000000000000..3cdf8c7fdb2c
--- /dev/null
+++ b/src/chrome/content/rules/MesonBuild.com.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/MikroTik.com.xml b/src/chrome/content/rules/MikroTik.com.xml
index 986405ec9c0f..b68be85faa59 100644
--- a/src/chrome/content/rules/MikroTik.com.xml
+++ b/src/chrome/content/rules/MikroTik.com.xml
@@ -71,13 +71,11 @@
-
+
-
+
diff --git a/src/chrome/content/rules/Mingw-w64.org.xml b/src/chrome/content/rules/Mingw-w64.org.xml
new file mode 100644
index 000000000000..11d3b35d6b8d
--- /dev/null
+++ b/src/chrome/content/rules/Mingw-w64.org.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Minted.xml b/src/chrome/content/rules/Minted.xml
index 3f67f5c64778..144a3e1a9a4d 100644
--- a/src/chrome/content/rules/Minted.xml
+++ b/src/chrome/content/rules/Minted.xml
@@ -60,12 +60,12 @@
to="https://www.minted.com/" />
+ to="https://cdn3.minted.com/" />
+ to="https://cdn4.minted.com/" />
+ to="https://cdn5.minted.com/" />
\ No newline at end of file
diff --git a/src/chrome/content/rules/Mobypicture.xml b/src/chrome/content/rules/Mobypicture.xml
index 1b2053271bc2..07cf1990c7f1 100644
--- a/src/chrome/content/rules/Mobypicture.xml
+++ b/src/chrome/content/rules/Mobypicture.xml
@@ -96,6 +96,6 @@ Fetch error: http://mobypicture.com/ => https://mobypicture.com/: (60, 'SSL cert
to="https://d3l076gtvxuom7.cloudfront.net/" />
+ to="https://vid.mobypicture.com/" />
diff --git a/src/chrome/content/rules/Modoee.com.xml b/src/chrome/content/rules/Modoee.com.xml
new file mode 100644
index 000000000000..5cc20ffb593c
--- /dev/null
+++ b/src/chrome/content/rules/Modoee.com.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Mono-project.xml b/src/chrome/content/rules/Mono-project.xml
new file mode 100644
index 000000000000..faf4cb29c6b2
--- /dev/null
+++ b/src/chrome/content/rules/Mono-project.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Mxptint.net.xml b/src/chrome/content/rules/Mxptint.net.xml
index 82345085fee9..40ae8e9a8dc5 100644
--- a/src/chrome/content/rules/Mxptint.net.xml
+++ b/src/chrome/content/rules/Mxptint.net.xml
@@ -1,31 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
-
diff --git a/src/chrome/content/rules/My_Aloe_Cleanse.com.xml b/src/chrome/content/rules/My_Aloe_Cleanse.com.xml
deleted file mode 100644
index b083ceaa8e57..000000000000
--- a/src/chrome/content/rules/My_Aloe_Cleanse.com.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/NBCUDigitalAdOps.com.xml b/src/chrome/content/rules/NBCUDigitalAdOps.com.xml
new file mode 100644
index 000000000000..c703e7676c28
--- /dev/null
+++ b/src/chrome/content/rules/NBCUDigitalAdOps.com.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/NBCUniversal_Media.xml b/src/chrome/content/rules/NBCUniversal_Media.xml
deleted file mode 100644
index 67aee24fae49..000000000000
--- a/src/chrome/content/rules/NBCUniversal_Media.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/News-Corporation-mismatches.xml b/src/chrome/content/rules/News-Corporation-mismatches.xml
index 2ad858aa6f6b..e312feb41152 100644
--- a/src/chrome/content/rules/News-Corporation-mismatches.xml
+++ b/src/chrome/content/rules/News-Corporation-mismatches.xml
@@ -8,61 +8,26 @@
(www.)edgesuite.net/404.fox(business|news).com/
-->
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/src/chrome/content/rules/No_Starch_Press.xml b/src/chrome/content/rules/No_Starch_Press.xml
index 8f8300c1d3ad..a089369cf305 100644
--- a/src/chrome/content/rules/No_Starch_Press.xml
+++ b/src/chrome/content/rules/No_Starch_Press.xml
@@ -46,6 +46,6 @@
to="https://mail.google.com/a/nostarch.com" />
+ to="https://media.nostarch.com/" />
diff --git a/src/chrome/content/rules/Officeworks.com.au.xml b/src/chrome/content/rules/Officeworks.com.au.xml
new file mode 100644
index 000000000000..88a0388e806f
--- /dev/null
+++ b/src/chrome/content/rules/Officeworks.com.au.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Officeworks.xml b/src/chrome/content/rules/Officeworks.xml
deleted file mode 100644
index df71f9c8ae15..000000000000
--- a/src/chrome/content/rules/Officeworks.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/PBase.xml b/src/chrome/content/rules/PBase.xml
index 06847d92144d..00a09b223f62 100644
--- a/src/chrome/content/rules/PBase.xml
+++ b/src/chrome/content/rules/PBase.xml
@@ -25,6 +25,6 @@
to="https://secure2.pbase.com/" />
+ to="https://ap1.pbase.com/" />
diff --git a/src/chrome/content/rules/PC_Booster.xml b/src/chrome/content/rules/PC_Booster.xml
index ed30e91907f1..711748a27371 100644
--- a/src/chrome/content/rules/PC_Booster.xml
+++ b/src/chrome/content/rules/PC_Booster.xml
@@ -19,6 +19,6 @@
to="https://$1pcbooster.com/" />
+ to="https://files.pcbooster.com/" />
diff --git a/src/chrome/content/rules/PRX.xml b/src/chrome/content/rules/PRX.xml
index 086fc3f07882..0aae40d31e6d 100644
--- a/src/chrome/content/rules/PRX.xml
+++ b/src/chrome/content/rules/PRX.xml
@@ -28,6 +28,6 @@
to="https://$1prx.org/" />
+ to="https://assets1.prx.org/" />
diff --git a/src/chrome/content/rules/PSX-Extreme.xml b/src/chrome/content/rules/PSX-Extreme.xml
index 6566219e071f..68c7e2923cf2 100644
--- a/src/chrome/content/rules/PSX-Extreme.xml
+++ b/src/chrome/content/rules/PSX-Extreme.xml
@@ -10,7 +10,6 @@
-
+
diff --git a/src/chrome/content/rules/Panthema.net.xml b/src/chrome/content/rules/Panthema.net.xml
new file mode 100644
index 000000000000..b60e0710a186
--- /dev/null
+++ b/src/chrome/content/rules/Panthema.net.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Pardot.xml b/src/chrome/content/rules/Pardot.xml
index d1f62a32afb7..b9f49f2d2c1f 100644
--- a/src/chrome/content/rules/Pardot.xml
+++ b/src/chrome/content/rules/Pardot.xml
@@ -86,9 +86,6 @@ Fetch error: http://help.pardot.com/ => https://help.pardot.com/: (51, "SSL: no
-
-
diff --git a/src/chrome/content/rules/PepperJam_Exchange.xml b/src/chrome/content/rules/PepperJam_Exchange.xml
index 5148dbf9a21b..e934a9be1ed7 100644
--- a/src/chrome/content/rules/PepperJam_Exchange.xml
+++ b/src/chrome/content/rules/PepperJam_Exchange.xml
@@ -25,6 +25,6 @@
to="https://$1pepperjamnetwork.com/" />
+ to="https://media.pepperjamnetwork.com/" />
diff --git a/src/chrome/content/rules/PhotoShelter.xml b/src/chrome/content/rules/PhotoShelter.xml
index 06c521adaa12..d9e662b95e5b 100644
--- a/src/chrome/content/rules/PhotoShelter.xml
+++ b/src/chrome/content/rules/PhotoShelter.xml
@@ -1,43 +1,33 @@
-
+
-
-
-
+
+
-
-
-
+
+
-
-
+
+
+
+
diff --git a/src/chrome/content/rules/Piriform.xml b/src/chrome/content/rules/Piriform.xml
index 1a5737991308..cf440587fab8 100644
--- a/src/chrome/content/rules/Piriform.xml
+++ b/src/chrome/content/rules/Piriform.xml
@@ -73,13 +73,13 @@
+ to="https://s1.pir.fm/" />
+ to="https://download.piriform.com/" />
diff --git a/src/chrome/content/rules/PolitiFact.xml b/src/chrome/content/rules/PolitiFact.xml
index 801dd7a348a3..96d8e807ed89 100644
--- a/src/chrome/content/rules/PolitiFact.xml
+++ b/src/chrome/content/rules/PolitiFact.xml
@@ -22,6 +22,6 @@
to="https://stpetersburgtimes.122.2o7.net/" />
+ to="https://static.politifact.com/" />
diff --git a/src/chrome/content/rules/PowerDNS.com.xml b/src/chrome/content/rules/PowerDNS.com.xml
index 45c2472bc9bf..36d9bf0f1f47 100644
--- a/src/chrome/content/rules/PowerDNS.com.xml
+++ b/src/chrome/content/rules/PowerDNS.com.xml
@@ -1,21 +1,28 @@
-
-
+
+
+
+
+
-
-
-
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/QQ.xml b/src/chrome/content/rules/QQ.xml
index 237c5fc26ad2..0140667f31e4 100644
--- a/src/chrome/content/rules/QQ.xml
+++ b/src/chrome/content/rules/QQ.xml
@@ -9,6 +9,7 @@
500:
- misc.3g
- pushdata
+ - open.t.qq.com
Refused:
- trace
@@ -218,6 +219,7 @@
+
@@ -243,11 +245,6 @@
-
-
-
-
-
@@ -292,10 +289,12 @@
-
+
+
+
@@ -345,8 +344,7 @@
-
-
+
diff --git a/src/chrome/content/rules/QuantCount.xml b/src/chrome/content/rules/QuantCount.xml
new file mode 100644
index 000000000000..0e245421ebce
--- /dev/null
+++ b/src/chrome/content/rules/QuantCount.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/Quantcast.xml b/src/chrome/content/rules/Quantcast.xml
index db517d19c1ef..084b7f7e089f 100644
--- a/src/chrome/content/rules/Quantcast.xml
+++ b/src/chrome/content/rules/Quantcast.xml
@@ -2,18 +2,61 @@
Other Quantcast rulesets:
- Quantserve.com.xml
-
+ - QuantCount.xml
+
+ Redirect to plain:
+ - edirect.qapi.quantcast.com
+ - onedrive.redirect.qapi.quantcast.com
+ - outlook-calendar.redirect.qapi.quantcast.com
+ - outlook-mail.redirect.qapi.quantcast.com
+ - outlook-people.redirect.qapi.quantcast.com
+ - outlook-tasks.redirect.qapi.quantcast.com
+ - test.redirect.qapi.quantcast.com
+
+ Connection refused:
+ - adtest-raw.quantcast.com
+ - adtest.quantcast.com
+ - autodiscover.quantcast.com
+
+ Cert mismatch:
+ - branding.quantcast.com
+ - developer.quantcast.com
+ - em.quantcast.com
+ - go.quantcast.com
+ - help.quantcast.com
+
+ Timeout:
+ - obm.quantcast.com
-->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
diff --git a/src/chrome/content/rules/Quantserve.com.xml b/src/chrome/content/rules/Quantserve.com.xml
index 3e8e287b1623..dc305c3cb4c3 100644
--- a/src/chrome/content/rules/Quantserve.com.xml
+++ b/src/chrome/content/rules/Quantserve.com.xml
@@ -1,5 +1,5 @@
-
-
-
+
+
+
+
+
+
+
+
-
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
-
-
-
+
diff --git a/src/chrome/content/rules/Robin_Rabard.xml b/src/chrome/content/rules/Robin_Rabard.xml
deleted file mode 100644
index ff6cf8fefe65..000000000000
--- a/src/chrome/content/rules/Robin_Rabard.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/chrome/content/rules/Rogers-Bank.xml b/src/chrome/content/rules/Rogers-Bank.xml
new file mode 100644
index 000000000000..75d2f1a9b918
--- /dev/null
+++ b/src/chrome/content/rules/Rogers-Bank.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Rovio.com.xml b/src/chrome/content/rules/Rovio.com.xml
index fceceeb839b0..a737aaf3aa47 100644
--- a/src/chrome/content/rules/Rovio.com.xml
+++ b/src/chrome/content/rules/Rovio.com.xml
@@ -64,9 +64,6 @@
-
-
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Rudix.org.xml b/src/chrome/content/rules/Rudix.org.xml
new file mode 100644
index 000000000000..9bcd75d74d16
--- /dev/null
+++ b/src/chrome/content/rules/Rudix.org.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/SB-Nation.xml b/src/chrome/content/rules/SB-Nation.xml
index 0f27a527cf0d..f2fbbd1d8312 100644
--- a/src/chrome/content/rules/SB-Nation.xml
+++ b/src/chrome/content/rules/SB-Nation.xml
@@ -45,10 +45,6 @@
-->
-
-
-
+
diff --git a/src/chrome/content/rules/SMF_for_Free.xml b/src/chrome/content/rules/SMF_for_Free.xml
index 4ba7178ee9c1..6b5d38f6d3af 100644
--- a/src/chrome/content/rules/SMF_for_Free.xml
+++ b/src/chrome/content/rules/SMF_for_Free.xml
@@ -20,7 +20,7 @@
+ to="https://cdn.smfboards.com/" />
diff --git a/src/chrome/content/rules/STA-Travel.at.xml b/src/chrome/content/rules/STA-Travel.at.xml
new file mode 100644
index 000000000000..81e55ed017ac
--- /dev/null
+++ b/src/chrome/content/rules/STA-Travel.at.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/STA-Travel.ch.xml b/src/chrome/content/rules/STA-Travel.ch.xml
new file mode 100644
index 000000000000..fc8611babd21
--- /dev/null
+++ b/src/chrome/content/rules/STA-Travel.ch.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/STA-Travel.co.nz.xml b/src/chrome/content/rules/STA-Travel.co.nz.xml
new file mode 100644
index 000000000000..83ead9f632cb
--- /dev/null
+++ b/src/chrome/content/rules/STA-Travel.co.nz.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/STA-Travel.co.th.xml b/src/chrome/content/rules/STA-Travel.co.th.xml
new file mode 100644
index 000000000000..9094db564b32
--- /dev/null
+++ b/src/chrome/content/rules/STA-Travel.co.th.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/STA-Travel.co.za.xml b/src/chrome/content/rules/STA-Travel.co.za.xml
new file mode 100644
index 000000000000..fc63a93e6cf2
--- /dev/null
+++ b/src/chrome/content/rules/STA-Travel.co.za.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/STA-Travel.com.au.xml b/src/chrome/content/rules/STA-Travel.com.au.xml
new file mode 100644
index 000000000000..0b0a3803c626
--- /dev/null
+++ b/src/chrome/content/rules/STA-Travel.com.au.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/STA-Travel.com.sg.xml b/src/chrome/content/rules/STA-Travel.com.sg.xml
new file mode 100644
index 000000000000..9fdc7d485666
--- /dev/null
+++ b/src/chrome/content/rules/STA-Travel.com.sg.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/STA-Travel.de.xml b/src/chrome/content/rules/STA-Travel.de.xml
new file mode 100644
index 000000000000..0756444bf02c
--- /dev/null
+++ b/src/chrome/content/rules/STA-Travel.de.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Sailthru.xml b/src/chrome/content/rules/Sailthru.xml
index df92a978c667..954e12a8894c 100644
--- a/src/chrome/content/rules/Sailthru.xml
+++ b/src/chrome/content/rules/Sailthru.xml
@@ -111,9 +111,6 @@ Fetch error: http://me.sailthru.com/ => https://www.sailthru.com/: Too many redi
-
-
diff --git a/src/chrome/content/rules/Scoop.it.xml b/src/chrome/content/rules/Scoop.it.xml
index 42519c6a0c2c..a5fbb315c05f 100644
--- a/src/chrome/content/rules/Scoop.it.xml
+++ b/src/chrome/content/rules/Scoop.it.xml
@@ -30,6 +30,6 @@
to="https://www.scoop.it/$1" />
+ to="https://img.scoop.it/" />
\ No newline at end of file
diff --git a/src/chrome/content/rules/ShareASale.com.xml b/src/chrome/content/rules/ShareASale.com.xml
index 26f7ce02da18..29e1c276f48c 100644
--- a/src/chrome/content/rules/ShareASale.com.xml
+++ b/src/chrome/content/rules/ShareASale.com.xml
@@ -48,10 +48,6 @@
-
-
-
+
diff --git a/src/chrome/content/rules/Shmoop.com.xml b/src/chrome/content/rules/Shmoop.com.xml
index db934ea84b91..3ace8a775a90 100644
--- a/src/chrome/content/rules/Shmoop.com.xml
+++ b/src/chrome/content/rules/Shmoop.com.xml
@@ -23,6 +23,6 @@
to="https://www.shmoop.com/" />
+ to="https://media1.shmoop.com/" />
diff --git a/src/chrome/content/rules/Showcase.ca.xml b/src/chrome/content/rules/Showcase.ca.xml
index de456e96c907..91efaebf58d3 100644
--- a/src/chrome/content/rules/Showcase.ca.xml
+++ b/src/chrome/content/rules/Showcase.ca.xml
@@ -60,7 +60,6 @@
-
+
diff --git a/src/chrome/content/rules/Slippedisc.com.xml b/src/chrome/content/rules/Slippedisc.com.xml
new file mode 100644
index 000000000000..4a408a30d155
--- /dev/null
+++ b/src/chrome/content/rules/Slippedisc.com.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/SmartURL.it.xml b/src/chrome/content/rules/SmartURL.it.xml
new file mode 100644
index 000000000000..72429ec56e31
--- /dev/null
+++ b/src/chrome/content/rules/SmartURL.it.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Smdg.ca.xml b/src/chrome/content/rules/Smdg.ca.xml
index 99b3b72c910f..c2ba73160ffa 100644
--- a/src/chrome/content/rules/Smdg.ca.xml
+++ b/src/chrome/content/rules/Smdg.ca.xml
@@ -14,7 +14,6 @@
-
+
diff --git a/src/chrome/content/rules/SodaHead.com.xml b/src/chrome/content/rules/SodaHead.com.xml
index fe3abd9cc029..9f54451dee9c 100644
--- a/src/chrome/content/rules/SodaHead.com.xml
+++ b/src/chrome/content/rules/SodaHead.com.xml
@@ -32,7 +32,7 @@ Fetch error: http://sodahead.com/ => https://sodahead.com/: (51, "SSL: no altern
to="https://$1sodahead.com/" />
+ to="https://images.sodahead.com/" />
diff --git a/src/chrome/content/rules/Sonobi.com.xml b/src/chrome/content/rules/Sonobi.com.xml
index 7614db7642f3..fa0ec8262a12 100644
--- a/src/chrome/content/rules/Sonobi.com.xml
+++ b/src/chrome/content/rules/Sonobi.com.xml
@@ -1,31 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
-
diff --git a/src/chrome/content/rules/Stadt-bremerhaven.de.xml b/src/chrome/content/rules/Stadt-bremerhaven.de.xml
index ade726a63980..1523f67cec80 100644
--- a/src/chrome/content/rules/Stadt-bremerhaven.de.xml
+++ b/src/chrome/content/rules/Stadt-bremerhaven.de.xml
@@ -1,19 +1,7 @@
-
-
-
-
+
-
+
-
-
+
diff --git a/src/chrome/content/rules/Stubhub.co.uk.xml b/src/chrome/content/rules/Stubhub.co.uk.xml
new file mode 100644
index 000000000000..708ffc9bb3b2
--- /dev/null
+++ b/src/chrome/content/rules/Stubhub.co.uk.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Stubhub.com.xml b/src/chrome/content/rules/Stubhub.com.xml
new file mode 100644
index 000000000000..3fcfd7bcdf35
--- /dev/null
+++ b/src/chrome/content/rules/Stubhub.com.xml
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Stubhub.de.xml b/src/chrome/content/rules/Stubhub.de.xml
new file mode 100644
index 000000000000..385bd400b94a
--- /dev/null
+++ b/src/chrome/content/rules/Stubhub.de.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Stubhub.xml b/src/chrome/content/rules/Stubhub.xml
deleted file mode 100644
index 0892cfe29f09..000000000000
--- a/src/chrome/content/rules/Stubhub.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/Sussan.com.au.xml b/src/chrome/content/rules/Sussan.com.au.xml
index edc5516d448c..7e4a45c96e8d 100644
--- a/src/chrome/content/rules/Sussan.com.au.xml
+++ b/src/chrome/content/rules/Sussan.com.au.xml
@@ -38,12 +38,10 @@
-
+
-
+
diff --git a/src/chrome/content/rules/Target.com.au.xml b/src/chrome/content/rules/Target.com.au.xml
new file mode 100644
index 000000000000..014283e18c50
--- /dev/null
+++ b/src/chrome/content/rules/Target.com.au.xml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/TeacherCast.net.xml b/src/chrome/content/rules/TeacherCast.net.xml
new file mode 100644
index 000000000000..f7a37a2b89df
--- /dev/null
+++ b/src/chrome/content/rules/TeacherCast.net.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/TechWeb.xml b/src/chrome/content/rules/TechWeb.xml
index 90f433b88fba..aa7c9eb35be7 100644
--- a/src/chrome/content/rules/TechWeb.xml
+++ b/src/chrome/content/rules/TechWeb.xml
@@ -65,7 +65,7 @@ Fetch error: http://techwebonlineevents.com/ => https://www.techwebonlineevents.
+ to="https://img.lightreading.com/" />
diff --git a/src/chrome/content/rules/Telstra.com.xml b/src/chrome/content/rules/Telstra.com.xml
new file mode 100644
index 000000000000..c10a0c67b389
--- /dev/null
+++ b/src/chrome/content/rules/Telstra.com.xml
@@ -0,0 +1,674 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/TheResumator.com.xml b/src/chrome/content/rules/TheResumator.com.xml
index 776581d39ffa..ee7a38ee52ea 100644
--- a/src/chrome/content/rules/TheResumator.com.xml
+++ b/src/chrome/content/rules/TheResumator.com.xml
@@ -21,7 +21,7 @@
to="https://$1theresumator.com/" />
+ to="https://assets.theresumator.com/" />
diff --git a/src/chrome/content/rules/Thesn.net.xml b/src/chrome/content/rules/Thesn.net.xml
index 75396253ffde..142f81e96558 100644
--- a/src/chrome/content/rules/Thesn.net.xml
+++ b/src/chrome/content/rules/Thesn.net.xml
@@ -14,7 +14,6 @@
-
+
diff --git a/src/chrome/content/rules/TranslateThi.is.xml b/src/chrome/content/rules/TranslateThi.is.xml
index 02fcafcbf510..ce263f59eb94 100644
--- a/src/chrome/content/rules/TranslateThi.is.xml
+++ b/src/chrome/content/rules/TranslateThi.is.xml
@@ -18,7 +18,6 @@ Non-2xx HTTP code: http://x.translateth.is/ (200) => https://s3.amazonaws.com/x.
-
+
\ No newline at end of file
diff --git a/src/chrome/content/rules/TrialPay.xml b/src/chrome/content/rules/TrialPay.xml
index b920d4ab0ec6..50d796d3fcbc 100644
--- a/src/chrome/content/rules/TrialPay.xml
+++ b/src/chrome/content/rules/TrialPay.xml
@@ -23,6 +23,6 @@
to="https://www.trialpay.com/" />
+ to="https://assets.trialpay.com/" />
diff --git a/src/chrome/content/rules/TurboSquid.xml b/src/chrome/content/rules/TurboSquid.xml
index 489e8972c607..915658634a69 100644
--- a/src/chrome/content/rules/TurboSquid.xml
+++ b/src/chrome/content/rules/TurboSquid.xml
@@ -20,6 +20,6 @@ Fetch error: http://turbosquid.com/ => https://turbosquid.com/: Cycle detected -
to="https://$1turbosquid.com/" />
+ to="https://sitefiles.turbosquid.com/" />
diff --git a/src/chrome/content/rules/UnwiredLtd.com.xml b/src/chrome/content/rules/UnwiredLtd.com.xml
new file mode 100644
index 000000000000..562f42df321d
--- /dev/null
+++ b/src/chrome/content/rules/UnwiredLtd.com.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/VelocityFrequentFlyer.com.xml b/src/chrome/content/rules/VelocityFrequentFlyer.com.xml
new file mode 100644
index 000000000000..2c590cb26459
--- /dev/null
+++ b/src/chrome/content/rules/VelocityFrequentFlyer.com.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Velvet_Cache.org.xml b/src/chrome/content/rules/Velvet_Cache.org.xml
index 9b42dafd032e..7170fe464a30 100644
--- a/src/chrome/content/rules/Velvet_Cache.org.xml
+++ b/src/chrome/content/rules/Velvet_Cache.org.xml
@@ -12,7 +12,6 @@
-
+
diff --git a/src/chrome/content/rules/Verwaltung_Online.xml b/src/chrome/content/rules/Verwaltung_Online.xml
index 92b2f7f63baf..66947363b6d0 100644
--- a/src/chrome/content/rules/Verwaltung_Online.xml
+++ b/src/chrome/content/rules/Verwaltung_Online.xml
@@ -14,6 +14,7 @@
- BEV.bund.de.xml
- bfe.bund.de.xml
- BGR.bund.de.xml
+ - BiB.bund.de.xml
- BMVg.de.xml
- bstu.bund.de.xml
- Bundesamt_fuer_Kartographie_und_Geodaesie.xml
diff --git a/src/chrome/content/rules/Vid.ly.xml b/src/chrome/content/rules/Vid.ly.xml
index 4e1704191f32..3fcb6225729c 100644
--- a/src/chrome/content/rules/Vid.ly.xml
+++ b/src/chrome/content/rules/Vid.ly.xml
@@ -34,9 +34,9 @@
to="https://$1vid.ly/" />
+ to="https://cf.cdn.vid.ly/" />
+ to="https://s.vid.ly/" />
diff --git a/src/chrome/content/rules/VirginAustralia.xml b/src/chrome/content/rules/VirginAustralia.xml
index c782f534175f..f2fa04cd6c20 100644
--- a/src/chrome/content/rules/VirginAustralia.xml
+++ b/src/chrome/content/rules/VirginAustralia.xml
@@ -1,9 +1,135 @@
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/Visitestonia.com.xml b/src/chrome/content/rules/Visitestonia.com.xml
index 290b77d3b8e1..5da6b6a6cab7 100644
--- a/src/chrome/content/rules/Visitestonia.com.xml
+++ b/src/chrome/content/rules/Visitestonia.com.xml
@@ -48,7 +48,7 @@
to="https://$1visitestonia.com/" />
+ to="https://cache.visitestonia.com/" />
diff --git a/src/chrome/content/rules/Vzaar.xml b/src/chrome/content/rules/Vzaar.xml
index 62b91103a830..d6dddb84a2fa 100644
--- a/src/chrome/content/rules/Vzaar.xml
+++ b/src/chrome/content/rules/Vzaar.xml
@@ -38,10 +38,6 @@ Fetch error: http://mtoza.vzaar.com/ => https://mtoza.vzaar.com/: (6, 'Could not
-
-
-
+
diff --git a/src/chrome/content/rules/Whiskey-Media.xml b/src/chrome/content/rules/Whiskey-Media.xml
index f69887479bdc..df02cb5ac1f8 100644
--- a/src/chrome/content/rules/Whiskey-Media.xml
+++ b/src/chrome/content/rules/Whiskey-Media.xml
@@ -41,6 +41,6 @@ Fetch error: http://media.corp.whiskeymedia.com/ => https://s3.amazonaws.com/med
to="https://s3.amazonaws.com/media.$1.com/" />
+ to="https://files.tested.com/" />
diff --git a/src/chrome/content/rules/WolverineWorldwide.com.xml b/src/chrome/content/rules/WolverineWorldwide.com.xml
new file mode 100644
index 000000000000..1e5f79cd72fc
--- /dev/null
+++ b/src/chrome/content/rules/WolverineWorldwide.com.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/XFCE.org.xml b/src/chrome/content/rules/XFCE.org.xml
index c4c5d00fc6c1..3b15805ddbb4 100644
--- a/src/chrome/content/rules/XFCE.org.xml
+++ b/src/chrome/content/rules/XFCE.org.xml
@@ -1,50 +1,48 @@
+
+
+
+
+
diff --git a/src/chrome/content/rules/Xignite.xml b/src/chrome/content/rules/Xignite.xml
index 69eaff27283b..810fc91d20cd 100644
--- a/src/chrome/content/rules/Xignite.xml
+++ b/src/chrome/content/rules/Xignite.xml
@@ -64,10 +64,6 @@
-
-
-
+
diff --git a/src/chrome/content/rules/ZDbb.net.xml b/src/chrome/content/rules/ZDbb.net.xml
index 019e6a2a453a..69ab3479a002 100644
--- a/src/chrome/content/rules/ZDbb.net.xml
+++ b/src/chrome/content/rules/ZDbb.net.xml
@@ -29,10 +29,6 @@
-
-
-
+
diff --git a/src/chrome/content/rules/aastocks.com.xml b/src/chrome/content/rules/aastocks.com.xml
index 87c88bca396b..b88376097dc3 100644
--- a/src/chrome/content/rules/aastocks.com.xml
+++ b/src/chrome/content/rules/aastocks.com.xml
@@ -29,6 +29,7 @@
- fx.aastocks.com
- payment.aastocks.com
- tldata.aastocks.com
+ - video.aastocks.com
- ws2.aastocks.com
- wss-uat.aastocks.com
- wss1.aastocks.com
@@ -74,12 +75,14 @@
-->
+
+
diff --git a/src/chrome/content/rules/arewee10syet.com.xml b/src/chrome/content/rules/arewee10syet.com.xml
deleted file mode 100644
index 55bd1abf27a5..000000000000
--- a/src/chrome/content/rules/arewee10syet.com.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/chrome/content/rules/cloudmailer.space.xml b/src/chrome/content/rules/cloudmailer.space.xml
new file mode 100644
index 000000000000..a508351c977a
--- /dev/null
+++ b/src/chrome/content/rules/cloudmailer.space.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/expreview.com.xml b/src/chrome/content/rules/expreview.com.xml
new file mode 100644
index 000000000000..3e893448573a
--- /dev/null
+++ b/src/chrome/content/rules/expreview.com.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/fuzeqna.com.xml b/src/chrome/content/rules/fuzeqna.com.xml
new file mode 100644
index 000000000000..4d4741663a5f
--- /dev/null
+++ b/src/chrome/content/rules/fuzeqna.com.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/chrome/content/rules/lightreading.com.xml b/src/chrome/content/rules/lightreading.com.xml
index 94184d3b1c99..020b9d9ad0de 100644
--- a/src/chrome/content/rules/lightreading.com.xml
+++ b/src/chrome/content/rules/lightreading.com.xml
@@ -68,12 +68,10 @@
-
+
-
+
diff --git a/src/chrome/content/rules/masterpasswordapp.com.xml b/src/chrome/content/rules/masterpasswordapp.com.xml
new file mode 100644
index 000000000000..58bf0ee71989
--- /dev/null
+++ b/src/chrome/content/rules/masterpasswordapp.com.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/nlx.org.xml b/src/chrome/content/rules/nlx.org.xml
index fad60d3d5831..161ea19cf42d 100644
--- a/src/chrome/content/rules/nlx.org.xml
+++ b/src/chrome/content/rules/nlx.org.xml
@@ -53,7 +53,7 @@
+ to="https://de.nlx.org/" />
diff --git a/src/chrome/content/rules/pronoun.is.xml b/src/chrome/content/rules/pronoun.is.xml
new file mode 100644
index 000000000000..439d9722ba63
--- /dev/null
+++ b/src/chrome/content/rules/pronoun.is.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/scmagazine.com.xml b/src/chrome/content/rules/scmagazine.com.xml
index ed2d41a37466..da18871b72a7 100644
--- a/src/chrome/content/rules/scmagazine.com.xml
+++ b/src/chrome/content/rules/scmagazine.com.xml
@@ -59,9 +59,6 @@
-
-
+
+
+
+
+
+
+
+
diff --git a/src/chrome/content/rules/yr.no.xml b/src/chrome/content/rules/yr.no.xml
index f2ef88885cd4..063a1d62dd0d 100644
--- a/src/chrome/content/rules/yr.no.xml
+++ b/src/chrome/content/rules/yr.no.xml
@@ -1,44 +1,38 @@
-
+
-
-
+ -->
-
-
diff --git a/src/chrome/locale/en/https-everywhere.dtd b/src/chrome/locale/en/https-everywhere.dtd
index 1e71f2b42efe..4c77104a3d75 100644
--- a/src/chrome/locale/en/https-everywhere.dtd
+++ b/src/chrome/locale/en/https-everywhere.dtd
@@ -25,6 +25,9 @@
+
+
+
diff --git a/utils/ruleset-whitelist.csv b/utils/ruleset-whitelist.csv
index be1f17d26998..8ad2fcd1cedd 100644
--- a/utils/ruleset-whitelist.csv
+++ b/utils/ruleset-whitelist.csv
@@ -61,7 +61,7 @@ fc7c90d849f4bb81243211a9562b2c2b9a56cd5bbbdfe376a1c891c0c3fce0e2,1,1,0,Activisio
07f5d75d4bb24e06bad963d545c2685ba90ed6b75bbb747d15734146fbc71666,1,1,0,Ad4Game.xml
fb0ca273f18259e6a3a5fa830d5935ac5031be61d471a2cc0c6aeecdaea13698,1,1,0,Adallom.com.xml
c781e81a341599aecb674a36f114512b59f5f7930fc309097a456c71e28db902,1,1,0,Adaptavist.com.xml
-79ecbb418c39e3d0dd20ddb11402b52c352a8a4285754d2decdabe3d9239e8fe,1,1,0,Adbooth.net.xml
+fed8a5934be4d65b1cd705d73f435794b28e646c2e6aef72cca8642a451bd155,1,0,0,Adbooth.net.xml
58bab8c45b010c8e4f1b26a3752150319cc93fba598aeb28997ea551164b68e5,1,1,0,AdButler.xml
6c704e7633a84752e7d46297f9077c027c9507dfc3ccdbcdd65612c44fdbfcaf,1,1,0,Addison.com.hk.xml
7e07fe570f87f45fad1782566e2b13d2990371f8e62d275445705160b998007a,1,1,0,Addison_Lee.xml
@@ -714,7 +714,7 @@ d7baeaa6bec397bdc80535854950e1df5da6e87e37f1d852df3fab12c5764f42,1,1,0,CoreMotiv
96a1e4d8a7a151bf30f2ce5bdbcb762f5322add6297e6a17c1d26ede3953146a,1,1,0,COSMOS_magazine.xml
d1698155b22b3b7f5f0ca643cea078451d79ab6779f6f261d8ca54805b3db3e9,0,1,0,Costco.xml
2468f6840c6141631608ec3bf75e9fb94e1704cfd757a0f331ef2d89376cf59e,1,1,0,Cotera.xml
-14f57a9f712732f4a7d072faea9dd8debb34ac651083459dadd90d2f7b611d3f,1,1,0,Couchbase.xml
+80eef43f077304055293c67afa215fccefe31871fe3a6712dd42fcc35c20857e,1,0,0,Couchbase.xml
51e4dfd5e80d3187c34dbae64ea978a12df199da807108618c0db357d608742f,1,1,0,CouncilofAustralianGovernments.xml
f66c96d6bf5531963d61883ead19002adca60f493e55c25a7636cba436b79918,1,1,0,Council_of_Europe.xml
559b645ee0a32f92fa47772553993a3e839dba0b30267610ac4dd967c96d0fa1,1,1,0,Council_on_Foreign_Relations.xml
@@ -828,7 +828,7 @@ a500306d72637bae78a1d0b371b9a8f10da6859172ac4827c61b76729cee86f4,1,0,0,Delaware_
45795b36ce0a095278fa9b311648ccb7f94051ed1f755235fb6e378a766c5e26,1,1,0,Delaware_Today.com.xml
4686fb4dd00fdb9a389a6b9da295ceeb432f9c119fd2a14f2f1f327d2d41fafd,0,1,0,Delico.se.xml
891c7562e59b43178bbc09fbe6af5da6175df8e9d5806280f639e1e04fcb4fc6,0,1,0,Dell.com-falsemixed.xml
-3f23e34d929e7043ad94ff77af5260d54242cedb03fedfc09e51d360b5b697d1,0,1,0,Dell.xml
+f9bcbd54d68162ce2489d604abe244d8d3313c4f17c19031358131e7a5a6e7b5,0,1,0,Dell.xml
875695dc9d32681fe988b14271f2cf6ef76cec70f4da0f81e13e8d6572b3a0cf,1,0,0,Demdex.net.xml
4d76501ee8caee0a5161167058233598eb9fcb502a19f4a492f944e5f042a616,1,1,0,Democrat_and_Chronicle.xml
ac394cda45cfe2f76348a565b822a97b95a5aa3b9a9d8183e14388fc44ed86d2,1,1,0,Denh.am.xml
@@ -1202,7 +1202,7 @@ d0da63b8cfb124503218f5d2fc8e2f6de394eec88e65d7f44dc5b9e346f235ae,1,1,0,Freelansi
cf851867f58cb76f64fdcdc2204f3c7d25f19485183165c810abe31a5ed0e77d,0,1,0,FreeWheel-problematic.xml
ca17252eb72c6f0b2056e8e4af0f2adfa73302c3c21aa229200a7abc19b14e35,0,1,0,Freight_Calculator_Australia.xml
66d7ab2943eba6c35563a87d17ad66b850b5ca1c7fc354f3df7271d33eecaade,1,1,0,FreshBooks.xml
-be60c615333e182ce3979e404ab1fe04d9f73a1c60259c59f1daed9cf520dec0,1,1,0,Freshdesk.xml
+26494fd72a6b4139c50d53b96950f667a933d498e41fd4dd83b444bbf87d27cc,1,0,0,Freshdesk.xml
261de79a38338955d2dc593db32764dd61a0b73fd196a3255b89239fa4b569c6,0,1,0,Freshmilk.de.xml
b4b923a800b65263a42c953b35b397142e56767dcd84a89a77b2888ac9845053,1,1,0,Freshmilk.tv.xml
1bc4e86cbfde644d76b06a2d42e53d2d3ad77aa44357b51fc3cda52cc13398f2,0,1,0,FriBID.se.xml
@@ -1270,7 +1270,7 @@ ef42dcaec37676c59c30cdec3be63707681e45be25541e713cd6e97f789b4110,1,1,0,General-E
902dd3bf0a3c6f3f594fac3abc660020512b61b0264a9766edb6701cb0d593dc,1,0,0,German-Academic-Exchange-Service.xml
5832e8eb6587f76dab2b5c1757c83dd84685b6abbbda41e2908c18b0ece70541,1,1,0,GetChute.xml
c0f3f31c0b90e1f5915a5700a29f250f34cb67060b0c8a32ca50c2f5c23c30d8,1,1,0,Getclicky.xml
-4cbecbcb6231060cbbb5c37e41e69291b60e45a245e6813cb5f5894de780af11,1,1,0,GetGlue.xml
+c4db3c0f59185477a2be0fe54d80f7955068f8eb4cccc4b8344d98d534d8624e,1,0,0,GetGlue.xml
94366f38ea5c1910166134df0df239e157918cbfd3c116aae7466e0d14d0af6a,1,1,0,GetHarvest.com.xml
60f24d3087fa3342353b77b0c57ee7af994613a5847772ee5047821942d71867,1,1,0,Get.It.xml
10a621bf9199c08e61706800651e79887f7d9ab2eff080fe2c6cb96b6f18d664,1,1,0,GetResponse.com.xml
@@ -2457,7 +2457,7 @@ a130c2186838ac25cf952bcc67cca009371321b3acbe4fc721309b72aad7027c,0,1,0,Pegelf.de
d32196850dffa1814571345636359745e555a8ccd3ca87b50a1ef380380292ed,1,0,0,Penton_Media.xml
c701f76f6f266e844c32dc5290854d98e913ea2c5006495b203d27a915336213,0,1,0,People.com-problematic.xml
166164dcf3c3d6d1e3762fbb94fecde448c60817a32fbda5dcea58510bab18a5,1,1,0,Peoples_Choice_Awards.xml
-4f739239b0b8c6773946ca4faf240e443e09ac76ea98e300f81e45be2d32bbee,1,1,0,PepperJam_Exchange.xml
+1650d0bdbdb83980d71d82b03a9fe04f044b7334fa1274f05cfecb264b9b67a7,1,0,0,PepperJam_Exchange.xml
0bfcf99110e28c27fac8359fa56d2d15eb9a6bc51b7f19c801f48d848eaff667,0,1,0,Perfect_Market.com-problematic.xml
7b78550930456bd1f52a35ff060fcf4bd5600361784386ac7b055825567697d1,0,1,0,Perfect_Sense_Digital.xml
900c3a50d140a65f8eeffd335f0dfa3a879cda47460d82d990a5e3f2c74d9e2c,1,1,0,Performance-Horizon-Group.xml
@@ -2528,7 +2528,7 @@ de183d823652107d6817148ef14f0624ab67e95e1440808e1f12a41e1d52c324,1,1,0,Pogo.xml
b18aaa63b24e4333450a6523704e29e485506972e8fc4be497e890e79ecef4bf,1,0,0,PoliceUK.xml
ed360bd7adf7254dcf2698e30ca35858cbf4cb1e37d305ed814aa2b0781de9c7,0,1,0,Polisforbundet.se.xml
8a694f9c1bef8cd1ce70799ac5df18b9394b1745015d1e1158f6dc8a723a7e46,0,1,0,Political_Wire.com.xml
-43181b1b84a18736b971fd4cf9fbca2035adf94aee0ae9653867e767aa753f82,1,1,0,PolitiFact.xml
+4c090da2a98d905e95ed63e20101249c8ddbef85970b29fbc8fa4f4aae9bfd9b,1,0,0,PolitiFact.xml
fd7bac449610576bf5a1d87e2277ca130fc15ad1f557c6eb5679ca615b5ccc30,1,1,0,Polldaddy.xml
848cbae8bb8a671970b1bd5597d466ef0342bfa39ab0ebe89e31527cda1eb383,1,1,0,Polytechnic-University-of-Catalonia.xml
dd309ed575e2ecbc07475735c3c4f7809acaf572582657ac7537aa116ca38a91,1,0,0,polyvore.com.xml
@@ -3110,6 +3110,7 @@ eba2548ed57c1957bdeb0b8f24da2d477e526e0cc00435edd5e2a32640c01754,0,1,0,tanx.com.
1bc78da98c0a9dd3deef3d253bace5b2f67371d3aeb7d34181ec3fc516bac37d,1,1,0,Tarasic.com.tw.xml
6944277ec988e47878a9e1a7cc8a7f6436496b66e16f6c35235ec00c973900f3,1,1,0,Target_Performance.xml
a8687053c02430a7161492d975a61c779c42f21172db6d16edca34d5a32fa4fe,1,1,0,Target.xml
+0e6ce89f0541412c0ae5576d1962471a403777ef0a83778557ed87af872db0b6,0,1,0,Target.com.au.xml
e4d80cc754656ada5ba1f98779688c87f5fb61a08791f713ceea95d6cb84b2d9,1,1,0,TAU.ac.il.xml
cfb76e4e7478c507dc48b61f51bdc71ed2176927fed165af863dfdba2d2dd270,0,1,0,Tau_Day.com.xml
2239d41720f1c8fd08f8210ca202d9649e5fc4d4ff215f22be7a2be0108a082a,0,1,0,Tcodevelopment.com.xml
@@ -3769,3 +3770,30 @@ e0aa84f8ba58a339cabda74594b507c6427a9856a57b1ee3232c7f38ab80751a,1,1,1,Yimg.com.
ccf17e77a962a90d0134a342bbf02a2c48fceaa22672205030959e5eabbb54d1,1,1,1,YouVersion.xml
95c9dd36a1b9d28f39272c9da9349eed53f7a3b8a1504e8f6729f67a0ab2a03a,0,1,1,yWorks.com.xml
8f7914e006046e349b25fb919f40317c87fdd9ce249931917c24e48ab12247fb,0,1,0,InsideUniversal.xml
+8b4243a706b9cd7a8fad10abcecd9396956fb69e63c38386be315b6ff1e398d9,1,0,0,Circle_of_Moms.xml
+aac3c8313ce0052960bc14d79592b1eb5724febcfa01c891947fe3b0d2a2af16,1,0,0,DealerRater.com.xml
+c25fa208046939b5089b74302440aeb9883a2ac74193e3a530379cb005a5ca97,1,0,0,Divshot.xml
+4b7a3d92d394b2418743eb0c48bcaa7ac4313fc153c78d128614d2ed00844ebb,1,0,0,GumGum.xml
+46f666f62d0e78584eda4aad79f38dfd748e680255102f694b47967186be111d,1,0,0,IDG.com.au.xml
+47715cdff23f75edd22073135a2dfd3025a97667676e7d7c295e19e73fe03829,1,0,0,IndiaMART.xml
+4460c30aa45a43dd73186be400dcee4dc687e1adb06c5063727749107510276a,1,0,0,InkFrog.com.xml
+da21df8c250190b6952512cbff2a130645fe0fe5e2700b6c4754f924c5b4cdde,1,0,0,Jawbone.com.xml
+be5773037fd1eb2bf6930ddf6709beb05508b7994d5421be0f56b43da927237d,1,0,0,London_Review_of_Books.xml
+0632beb9d9a8352ccf4e5abf6f4d129079e6be6a8fd030b89b240b9e3e5002ca,1,0,0,MailChimp.xml
+1630ccf34939b95ed2a59cc6109b39a80d511d387edc7e3f7af315a3a5576b8a,1,0,0,Mass_Relevance.xml
+beb706df86b2bd492cbd070ed470e63b74f7b79fb2290599dca29595d8b78ce0,1,0,0,MediaMatters.org.xml
+440e0583d47b13bdb10e7c95be4309a1adb5068c927aaa62d5085bc4a120b08f,1,0,0,Minted.xml
+6bd3287e1120e992be981839dcb3387a0ae9f5309d7bb0228fa060918b3a8d34,1,0,0,No_Starch_Press.xml
+d6aef6221d0c4ce6ec6eb34a38676233a2efc71c34fa262197c00d8f3cc5df32,1,0,0,PBase.xml
+4548f451dcb7c00ebe62a4c9800fbbc5e95129ebc6180c4af1450d5b73a4c549,1,0,0,PC_Booster.xml
+bc02c8bf7232080c0699626c0c53e6cae9cb36425ae65df1a1a50bc9c6781fed,1,0,0,PRX.xml
+c70d49c6b84e1ee69e50df56a67cb881ac20609e8ad518c4d3df21aabb69bff7,1,0,0,Piriform.xml
+6c3d96b7e739b4b9a319e64168eb7600a742f34a313821c44808c1ac1707f414,1,0,0,ResellerRatings.xml
+a2f689bf8b087130bbde41e9c82b88aa713d859ebd0a705d48ab613619c7dc62,1,0,0,SMF_for_Free.xml
+ea668b24d05b442466719aed1a61abe76ade2b491190da60100a5b7870468923,1,0,0,Scoop.it.xml
+504a89448177c01d9b09b02e7b35b96311d917a38e4fbc6167629f426685cb89,1,0,0,Shmoop.com.xml
+398707f5013376b20a3ea329e82ee6e7a476ab7f07f00dc79456c805f0237858,1,0,0,TheResumator.com.xml
+f406dd59927cfcdeef97c872936d7992a69efc338b364e345e66e184b783ada9,1,0,0,TrialPay.xml
+95ca52acb80fa9a4424435816ce11308792558f6fd0462217a293da823023e2c,1,0,0,TurboSquid.xml
+d69038e1cfbb797db8504fe6e2035ddd45fab6d12b64295b1f62858d4cfc4e13,1,0,0,Vid.ly.xml
+8c6c49d9fa4828861698a701ccf7d5b2d486969c0462e9562a05a2e9d355eb9b,1,0,0,Visitestonia.com.xml
diff --git a/utils/trivialize-cdn-rules/.gitignore b/utils/trivialize-cdn-rules/.gitignore
new file mode 100644
index 000000000000..ad46b30886fa
--- /dev/null
+++ b/utils/trivialize-cdn-rules/.gitignore
@@ -0,0 +1,61 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# TypeScript v1 declaration files
+typings/
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
+
+# next.js build output
+.next
diff --git a/utils/trivialize-cdn-rules/index.js b/utils/trivialize-cdn-rules/index.js
new file mode 100644
index 000000000000..61532757588a
--- /dev/null
+++ b/utils/trivialize-cdn-rules/index.js
@@ -0,0 +1,159 @@
+'use strict';
+
+const util = require('util');
+const path = require('path');
+
+const fs = require('graceful-fs');
+const xml2js = require('xml2js');
+const request = require('sync-request');
+const chalk = require('chalk');
+
+const readdir = util.promisify(fs.readdir);
+const readFile = util.promisify(fs.readFile);
+const parseXML = util.promisify(xml2js.parseString);
+
+const rulesDir = 'src/chrome/content/rules/'
+
+const log = (level, filename, message) => {
+ switch(level) {
+ case 'WARN':
+ console.warn(chalk.yellow(`[${level}]: ${chalk.bold(filename)}: ${message}`));
+ break;
+ case 'INFO':
+ console.info(chalk.green(`[${level}]: ${chalk.bold(filename)}: ${message}`));
+ break;
+ case 'FAIL':
+ default:
+ console.error(chalk.red(`[${level}]: ${chalk.bold(filename)}: ${message}`));
+ break;
+ }
+}
+
+const supportedCDNsRegexs = [
+ { // Cloudfront.net
+ fromRe: /^\^http(?:s\?)?:\/\/((([\\a-z0-9äö_-]+)\.)*([\\a-z0-9äö-]+))\/$/,
+ toRe: /^https:\/\/\w+\.cloudfront\.net\/$/,
+ },
+ { // 2o7.net
+ fromRe: /^\^http(?:s\?)?:\/\/((([\\a-z0-9äö_-]+)\.)*([\\a-z0-9äö-]+))\/$/,
+ toRe: /^https:\/\/[\w-]+\.122\.2o7\.net\/$/,
+ },
+ { // amazonaws.com
+ fromRe: /^\^http(?:s\?)?:\/\/((([\\a-z0-9äö_-]+)\.)*([\\a-z0-9äö-]+))\/$/,
+ toRe: /^https:\/\/s3\.amazonaws\.com\//,
+ }
+]
+
+const escapeRegExp = (str) => {
+ return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
+}
+
+const isSecureConnectionOkay = (host) => {
+ // FIXME: terrible performance...
+ let response = request('GET', `https://${host}/`, {
+ headers: {
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0'
+ },
+ timeout: 3000,
+ socketTimeout: 3000,
+ maxRedirects: 5,
+ });
+ if (response) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+const trivializeGenericRewrites = async (fstat, content, rules) => {
+ return new Promise((resolve, reject) => {
+ let rewrittenAtLeastOnce = false;
+ let originalContent = content;
+
+ for (const rule of rules) {
+ for (const supportedCDNsRegex of supportedCDNsRegexs) {
+ if (supportedCDNsRegex.fromRe.test(rule.from) && supportedCDNsRegex.toRe.test(rule.to)) {
+ let host = rule.from.replace(supportedCDNsRegex.fromRe, '$1').replace(/\\\./g, '.');
+
+ if (host !== null && isSecureConnectionOkay(host)) {
+ // TODO: replace rule here...
+ const ruleRe = `\n([\t ]*)[\t ]*\n`;
+ const ruleRegex = new RegExp(ruleRe, 'g');
+
+ if (ruleRegex.test(content)) {
+ content = content.replace(ruleRegex, `\n$1\n`)
+ if (originalContent != content) {
+ rewrittenAtLeastOnce = true;
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ if (rewrittenAtLeastOnce) {
+ try {
+ fs.writeFileSync(fstat.fullname, content, { encoding: 'utf8' });
+ resolve(rewrittenAtLeastOnce);
+ } catch (error) {
+ reject(error);
+ }
+ } else {
+ resolve(rewrittenAtLeastOnce);
+ }
+ });
+}
+
+const trivializeCDNRewrites = async (fstat) => {
+ return new Promise((resolve, reject) => {
+ (async () => { // async wrapper for await keyword...
+ let content = await readFile(fstat.fullname, { encoding: 'utf8' }).catch(error => reject(error));
+ let $ = await parseXML(content).catch(error => reject(error));
+ let rules = $.ruleset.rule.map(rule => rule.$);
+ let rewrittenAtLeastOnce = false;
+
+ await trivializeGenericRewrites(fstat, content, rules)
+ .then(rewritten => {
+ if (rewritten) {
+ rewrittenAtLeastOnce = true;
+ }
+ })
+ .catch(error => {
+ reject(error);
+ })
+
+ // TODO: Add support for more CDNs
+ resolve(rewrittenAtLeastOnce);
+ })();
+ })
+}
+
+(async () => {
+ await readdir(rulesDir)
+ .then(filenames => {
+ return filenames.filter(filename => filename.endsWith('.xml'));
+ })
+ .then(filenames => {
+ return filenames.map(filename => ({
+ fullname: path.join(rulesDir, filename),
+ filename
+ }))
+ })
+ .then(async (fstats) => {
+ return Promise.all(fstats.map(fstat => {
+ return trivializeCDNRewrites(fstat)
+ .then(rewritten => {
+ if (rewritten) {
+ log('INFO', fstat.filename, 'trivialized')
+ }
+ })
+ .catch(error => {
+ log('FAIL', fstat.filename, error);
+ })
+ }))
+ })
+ .catch(error => {
+ log('FAIL', "::Promise.all::", error);
+ })
+})();
diff --git a/utils/trivialize-cdn-rules/package-lock.json b/utils/trivialize-cdn-rules/package-lock.json
new file mode 100644
index 000000000000..67e15744d176
--- /dev/null
+++ b/utils/trivialize-cdn-rules/package-lock.json
@@ -0,0 +1,586 @@
+{
+ "name": "trivialize-cdn-rules",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@types/concat-stream": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.0.tgz",
+ "integrity": "sha1-OU2+C7X+5Gs42JZzXoto7yOQ0A0=",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/form-data": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz",
+ "integrity": "sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/node": {
+ "version": "9.6.23",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.23.tgz",
+ "integrity": "sha512-d2SJJpwkiPudEQ3+9ysANN2Nvz4QJKUPoe/WL5zyQzI0RaEeZWH5K5xjvUIGszTItHQpFPdH+u51f6G/LkS8Cg=="
+ },
+ "@types/qs": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.5.1.tgz",
+ "integrity": "sha512-mNhVdZHdtKHMMxbqzNK3RzkBcN1cux3AvuCYGTvjEIQT2uheH3eCAyYsbMbh2Bq8nXkeOWs1kyDiF7geWRFQ4Q=="
+ },
+ "ajv": {
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "requires": {
+ "co": "^4.6.0",
+ "fast-deep-equal": "^1.0.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.3.0"
+ }
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
+ },
+ "asn1": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
+ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
+ },
+ "aws4": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
+ "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w=="
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "optional": true,
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "buffer-from": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz",
+ "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ=="
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
+ },
+ "color-convert": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz",
+ "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.1"
+ }
+ },
+ "color-name": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz",
+ "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=",
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
+ "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+ },
+ "ecc-jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
+ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+ "optional": true,
+ "requires": {
+ "jsbn": "~0.1.0"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "extend": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
+ },
+ "fast-deep-equal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
+ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ="
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
+ },
+ "form-data": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
+ "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "get-port": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
+ "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw="
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
+ },
+ "har-validator": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
+ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
+ "requires": {
+ "ajv": "^5.1.0",
+ "har-schema": "^2.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "http-basic": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-7.0.0.tgz",
+ "integrity": "sha1-gvClBr6UJzLsje6+6A50bvVzbbo=",
+ "requires": {
+ "@types/concat-stream": "^1.6.0",
+ "@types/node": "^9.4.1",
+ "caseless": "~0.12.0",
+ "concat-stream": "^1.4.6",
+ "http-response-object": "^3.0.1",
+ "parse-cache-control": "^1.0.1"
+ }
+ },
+ "http-response-object": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.1.tgz",
+ "integrity": "sha512-6L0Fkd6TozA8kFSfh9Widst0wfza3U1Ex2RjJ6zNDK0vR1U1auUR6jY4Nn2Xl7CCy0ikFmxW1XcspVpb9RvwTg==",
+ "requires": {
+ "@types/node": "^9.3.0"
+ }
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "optional": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+ },
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
+ "mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ=="
+ },
+ "mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "requires": {
+ "mime-db": "~1.33.0"
+ }
+ },
+ "oauth-sign": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+ "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
+ },
+ "parse-cache-control": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz",
+ "integrity": "sha1-juqz5U+laSD+Fro493+iGqzC104="
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
+ },
+ "promise": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.1.tgz",
+ "integrity": "sha1-5F1osAoXZHttpxG/he1u1HII9FA=",
+ "requires": {
+ "asap": "~2.0.3"
+ }
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+ },
+ "qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "request": {
+ "version": "2.87.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
+ "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.6.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.5",
+ "extend": "~3.0.1",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.1",
+ "har-validator": "~5.0.3",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.17",
+ "oauth-sign": "~0.8.2",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.1",
+ "safe-buffer": "^5.1.1",
+ "tough-cookie": "~2.3.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.1.0"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
+ "sshpk": {
+ "version": "1.14.2",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
+ "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "sync-request": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.0.0.tgz",
+ "integrity": "sha512-jGNIAlCi9iU4X3Dm4oQnNQshDD3h0/1A7r79LyqjbjUnj69sX6mShAXlhRXgImsfVKtTcnra1jfzabdZvp+Lmw==",
+ "requires": {
+ "http-response-object": "^3.0.1",
+ "sync-rpc": "^1.2.1",
+ "then-request": "^6.0.0"
+ }
+ },
+ "sync-rpc": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.4.tgz",
+ "integrity": "sha512-Iug+t1ICVFenUcTnDu8WXFnT+k8IVoLKGh8VA3eXUtl2Rt9SjKX3YEv33OenABqpTPL9QEaHv1+CNn2LK8vMow==",
+ "requires": {
+ "get-port": "^3.1.0"
+ }
+ },
+ "then-request": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.0.tgz",
+ "integrity": "sha512-xA+7uEMc+jsQIoyySJ93Ad08Kuqnik7u6jLS5hR91Z3smAoCfL3M8/MqMlobAa9gzBfO9pA88A/AntfepkkMJQ==",
+ "requires": {
+ "@types/concat-stream": "^1.6.0",
+ "@types/form-data": "0.0.33",
+ "@types/node": "^8.0.0",
+ "@types/qs": "^6.2.31",
+ "caseless": "~0.12.0",
+ "concat-stream": "^1.6.0",
+ "form-data": "^2.2.0",
+ "http-basic": "^7.0.0",
+ "http-response-object": "^3.0.1",
+ "promise": "^8.0.0",
+ "qs": "^6.4.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "8.10.21",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.21.tgz",
+ "integrity": "sha512-87XkD9qDXm8fIax+5y7drx84cXsu34ZZqfB7Cial3Q/2lxSoJ/+DRaWckkCbxP41wFSIrrb939VhzaNxj4eY1w=="
+ }
+ }
+ },
+ "tough-cookie": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
+ "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
+ "requires": {
+ "punycode": "^1.4.1"
+ }
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "optional": true
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "uuid": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "xml2js": {
+ "version": "0.4.19",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
+ "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
+ "requires": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~9.0.1"
+ }
+ },
+ "xmlbuilder": {
+ "version": "9.0.7",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
+ "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
+ }
+ }
+}
diff --git a/utils/trivialize-cdn-rules/package.json b/utils/trivialize-cdn-rules/package.json
new file mode 100644
index 000000000000..26d7d48be5d2
--- /dev/null
+++ b/utils/trivialize-cdn-rules/package.json
@@ -0,0 +1,20 @@
+{
+ "name": "trivialize-cdn-rules",
+ "version": "1.0.0",
+ "main": "index.js",
+ "dependencies": {
+ "graceful-fs": "^4.1.11",
+ "request": "^2.87.0",
+ "sync-request": "^6.0.0",
+ "xml2js": "^0.4.19"
+ },
+ "devDependencies": {
+ "chalk": "^2.4.1"
+ },
+ "scripts": {
+ "start": "node index.js"
+ },
+ "keywords": [],
+ "author": "Chan Chak Shing",
+ "description": ""
+}
diff --git a/utils/trivialize-rules/explode-regexp.js b/utils/trivialize-rules/explode-regexp.js
index 0aa3c7477c8d..c034f195a837 100644
--- a/utils/trivialize-rules/explode-regexp.js
+++ b/utils/trivialize-rules/explode-regexp.js
@@ -14,13 +14,12 @@ function explodeRegExp(re, callback) {
let [first, ...rest] = items;
if (first.repeat) {
- let repeat = first.repeat;
+ let { repeat, ...firstSub } = first;
if (repeat.max !== 1) throw new UnsupportedRegExp(first.raw);
- delete first.repeat;
if (repeat.min === 0) {
buildUrls(str, rest);
}
- return buildUrls(str, items);
+ return buildUrls(str, [ firstSub, ...rest ]);
}
switch (first.type) {