diff --git a/.eslintrc.yml b/.eslintrc.yml
index 1742cd8f..2bcb1248 100644
--- a/.eslintrc.yml
+++ b/.eslintrc.yml
@@ -36,7 +36,6 @@ rules:
   no-array-constructor: error
   no-bitwise: error
   no-caller: error
-  no-console: off
   no-eval: error
   no-implied-eval: error
   no-iterator: error
diff --git a/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
similarity index 100%
rename from CODE_OF_CONDUCT.md
rename to .github/CODE_OF_CONDUCT.md
diff --git a/.github/ISSUE_TEMPLATE/broken-site-report.md b/.github/ISSUE_TEMPLATE/broken-site-report.md
new file mode 100644
index 00000000..ade57fbb
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/broken-site-report.md
@@ -0,0 +1,19 @@
+---
+name: Report a broken site
+about: Is Privacy Badger breaking something somewhere? We'd like to get it fixed!
+
+---
+
+#### What is your browser and browser version?
+
+#### What is broken and where?
+
+#### What is the "culprit" domain?
+Please follow the debug instructions to identify which domain breaks stuff when blocked:
+https://github.com/EFForg/privacybadger/wiki/Find-out-why-Privacy-Badger-is-blocking-a-domain
+
+#### What is your debug output for this domain?
+To get the debug output, please see the instructions link above.
+```
+Paste debug output here.
+```
diff --git a/.github/SECURITY.md b/.github/SECURITY.md
new file mode 100644
index 00000000..79d2be9d
--- /dev/null
+++ b/.github/SECURITY.md
@@ -0,0 +1,5 @@
+# Security Policy
+
+## Reporting a Vulnerability
+
+Security vulnerabilities can be reported privately to vulnerabilities@eff.org. Please see our [Security Vulnerability Disclosure Program](https://www.eff.org/security) for the GPG key and more information.
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..19d5adbe
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,51 @@
+*.py[cod]
+
+# C extensions
+*.so
+
+# Packages
+*.egg
+*.egg-info
+dist
+build
+eggs
+parts
+bin
+var
+sdist
+develop-eggs
+.installed.cfg
+lib64
+__pycache__
+
+# Dynamic libraries
+*.dylib
+
+# JSHydra
+buildtools/jshydra/mozilla/js
+
+# Vim swap files
+*.sw*
+
+# Mac DS_Store
+*.DS_Store
+
+node_modules
+
+tests/.cache
+tests/.pytest_cache
+.pytest_cache
+
+*.xpi
+.chrome-profile
+
+.idea
+
+#Eclipse project stuff
+.settings/
+.project
+
+web-ext-artifacts
+pkg
+release-utils/config.sh
+release-utils/xpi
diff --git a/.travis.yml b/.travis.yml
index 9c2ef5a4..85078e90 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -26,10 +26,6 @@ jobs:
     - env: INFO="firefox nightly" BROWSER=firefox
       addons:
         firefox: latest-nightly
-  allow_failures:
-    - env: INFO="firefox nightly" BROWSER=firefox
-      addons:
-        firefox: latest-nightly
 before_script: travis_retry ./scripts/setup_travis.sh
 script: . ./scripts/run_travis.sh
 services:
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index f1a46a86..67d8f4a5 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,23 +1,20 @@
 # Contributing to Privacy Badger
 
-Welcome dear contributor! There are many ways to help Privacy Badger:
+Welcome and thank you for your interest in contributing to Privacy Badger!
+
+Here are the ways you could help:
 
 * Did we break a site? We want to fix it,
   so we wrote a [guide to fixing broken sites](/doc/fixing-broken-sites.md).
-* Want to help translate Privacy Badger? Please see our [guide to translating Privacy Badger](/doc/Translation.md).
+* To help translate Privacy Badger, please see our [guide for translators](/doc/Translation.md).
 * To review issues we would like help with, visit our
   ["good first issue"](https://github.com/EFForg/privacybadger/labels/good%20first%20issue)
   and
   ["help wanted"](https://github.com/EFForg/privacybadger/labels/help%20wanted)
   labels.
 * When making changes to Privacy Badger's code, please consult our [developer](/doc/develop.md) and [automated testing](/doc/tests.md) guides.
-* Security vulnerabilities can be reported privately to
-  [vulnerabilities@eff.org](mailto:vulnerabilities@eff.org). Please see our
-  [Security Vulnerability Disclosure Program](https://www.eff.org/security)
-  for the GPG key and more information.
+* To report security vulnerabilities, please see our [security policy document](/.github/SECURITY.md).
 
 When interacting with us, please remember to follow [EFF's Public Projects Code of Conduct](https://www.eff.org/pages/eppcode).
 
-If you find something confusing or frustrating, please [let us know](mailto:extension-devs@eff.org)! We believe in making Privacy Badger better by making it easier for you to contribute.
-
-Thank you!
+If you find something confusing or frustrating, please let us know us by [opening an issue](https://github.com/EFForg/privacybadger/issues/new/choose), or via [email](mailto:extension-devs@eff.org).
diff --git a/LICENSE b/LICENSE
index 8cef74aa..ae3fde10 100644
--- a/LICENSE
+++ b/LICENSE
@@ -34,12 +34,10 @@ Copyright JS Foundation and other contributors
 Released under the MIT license
 https://jquery.org/license
 
-Underscore.js
-http://underscorejs.org
-(c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
-Underscore may be freely distributed under the MIT license.
-
 jQuery UI
+https://jqueryui.com/download/
+Includes: widget.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, unique-id.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/tabs.js
+Theme: Smoothness
 Copyright jQuery Foundation and other contributors
 Licensed MIT
 
@@ -77,10 +75,11 @@ file, You can obtain one at http://mozilla.org/MPL/2.0/.
 Alternatively, this code may be distributed or
 otherwise used under the terms of GPL v3
 
-Incorporating code from Punycode.js
-http://mths.be/punycode
-Copyright 2011 Mathias Bynens <http://mathiasbynens.be/>
-Licensed MIT
+Incorporating "surrogate"/"dummy"/"neutered" scripts from uBlock Origin
+https://github.com/gorhill/ublock
+https://github.com/uBlockOrigin/uAssets/
+Copyright (C) 2014-present Raymond Hill
+Licensed GPLv3
 
 Tooltipster
 http://iamceege.github.io/tooltipster/
@@ -111,6 +110,11 @@ Licensed CC BY-SA 3.0: https://creativecommons.org/licenses/by-sa/3.0/
 Stylesheet version 2.3.2
 Licensed GPL: http://www.gnu.org/licenses/gpl.html
 
+List of CNAME domains (basis for src/data/cname_domains.json)
+https://github.com/AdguardTeam/cname-trackers
+Copyright 2021 Adguard Software Ltd
+Licensed MIT
+
 
 TEXT OF GPLv3
 =============
diff --git a/Makefile b/Makefile
index 10cc956b..0753f2e9 100644
--- a/Makefile
+++ b/Makefile
@@ -7,9 +7,15 @@ updatepsl:
 updateseed:
 	scripts/updateseeddata.sh
 
+apply_effdntlist:
+	scripts/apply_effdntlist.py src/data/seed.json
+
 updategoogle:
 	scripts/updategoogle.sh
 
+updatecnames:
+	scripts/updatecnames.sh
+
 todo:
 	grep -rn 'TODO' src
 
@@ -32,4 +38,4 @@ runff:
 runfn:
 	./node_modules/.bin/web-ext run --start-url "about:debugging#/runtime/this-firefox" -s src/ -f nightly
 
-.PHONY: lint updatepsl updateseed updategoogle todo tx runch runff runfn
+.PHONY: lint updatepsl updateseed apply_effdntlist updategoogle updatecnames todo tx runch runff runfn
diff --git a/README.md b/README.md
index 947cedf7..ec4f2b48 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,10 @@
-Privacy Badger [![Build Status](https://travis-ci.org/EFForg/privacybadger.svg?branch=master)](https://travis-ci.org/EFForg/privacybadger)
+Privacy Badger [![Build Status](https://travis-ci.com/EFForg/privacybadger.svg?branch=master)](https://travis-ci.com/EFForg/privacybadger)
 ===================
-Privacy Badger is a browser extension that automatically learns to block invisible trackers. Instead of keeping lists of what to block, Privacy Badger learns by watching which domains appear to be tracking you as you browse the Web.
+Privacy Badger is a browser extension that automatically learns to block invisible trackers. Instead of keeping lists of what to block, Privacy Badger automatically discovers trackers based on their behavior.
 
-Privacy Badger sends the [Do Not Track signal](https://www.eff.org/issues/do-not-track) with your browsing. If trackers ignore your wishes, your Badger will learn to block them. Privacy Badger starts blocking once it sees the same tracker on three different websites.
+Privacy Badger sends the [Global Privacy Control](https://globalprivacycontrol.org/) signal to opt you out of data sharing and selling, and the [Do Not Track](https://www.eff.org/issues/do-not-track) signal to tell companies not to track you. If trackers ignore your wishes, Privacy Badger will learn to block them.
 
-Besides automatic tracker blocking, Privacy Badger removes outgoing link click tracking on [Facebook](https://www.eff.org/deeplinks/2018/05/privacy-badger-rolls-out-new-ways-fight-facebook-tracking) and [Google](https://www.eff.org/deeplinks/2018/10/privacy-badger-now-fights-more-sneaky-google-tracking), with more privacy protections on the way.
+Besides automatic tracker blocking, Privacy Badger comes with privacy features like [click-to-activate replacements](https://privacybadger.org/#How-does-Privacy-Badger-handle-social-media-widgets) for potentially useful trackers (video players, comments widgets, etc.), and link cleaning on [Facebook](https://www.eff.org/deeplinks/2018/05/privacy-badger-rolls-out-new-ways-fight-facebook-tracking) and [Google](https://www.eff.org/deeplinks/2018/10/privacy-badger-now-fights-more-sneaky-google-tracking).
 
 To learn more, see [the FAQ on Privacy Badger's homepage](https://privacybadger.org/#faq).
 
diff --git a/doc/Changelog b/doc/Changelog
index 6e36b14b..632cf6c0 100644
--- a/doc/Changelog
+++ b/doc/Changelog
@@ -1,12 +1,75 @@
 Privacy Badger Release Notes
 ============================
+
+2021.11.23
+* Improved widget replacement system to better handle Google reCAPTCHA.
+Privacy Badger replaces potentially useful widgets with placeholders.
+These replacements protect privacy while letting you restore the original
+widget whenever you want it or need it for the page to function.
+* Improved tracking script surrogation system to work across more websites.
+Script surrogates protect privacy while avoiding site breakages.
+* Fixed display of non-tracking domains
+* Added more widget replacement placeholders and fixed various site breakages
+* Improved translations (Dutch, Finnish, Greek, Persian, Brazilian Portuguese,
+European Portuguese, Swedish)
+
+2021.8.17
+Bug fix release to fix link clicking on various websites:
+https://github.com/EFForg/privacybadger/commit/e1f32a343ec8b9647e361cfff1ea0b82e169fa19
+
+2021.8.11
+* Improved buttons in the popup: Disable and Report are larger and use less
+text, Donate is now a link
+* Removed "Prevent WebRTC from leaking local IP address" from the options
+page. If you previously enabled this setting, it remains available for now.
+However, the setting is now deprecated and will be removed in a future update.
+To learn more, visit https://github.com/EFForg/privacybadger/issues/2782
+* Improved dark theme in Chrome
+* Fixed various site breakages
+* Improved translations (Simplified Chinese, Esperanto, French, German, Greek,
+Hebrew, Italian, Polish, Spanish, Swedish, Ukrainian)
+
+2021.6.8
+* Disabled Google's Federated Learning of Cohorts (FLoC). To learn more, visit
+https://www.eff.org/deeplinks/2021/03/googles-floc-terrible-idea
+* Improved tracker detection and blocking by looking up known CNAME tracker
+aliases. Thanks to AdGuard for providing the CNAME DNS data behind this
+feature.
+* You can now see in the popup when first-party protections
+such as link unwrapping are active on the site you are on
+* Fixed various site breakages
+* Added Greek and Hungarian translations
+* Improved translations (Simplified Chinese, Esperanto, Hebrew, Korean,
+European Portuguese, Turkish, Swedish)
+
+2021.2.2
+* Added a dark theme. To see it, enable dark mode in operating system
+or device preferences.
+* Added a section to the Widget Replacement tab on the options page to manage
+the list of widgets that were set to be always allowed on certain sites
+* Disabled network prefetching/preloading to improve privacy
+* Added replacements for Dailymotion and OK.ru video player widgets
+* Fixed various site breakages
+* Improved translations (Simplified Chinese, Czech, French, Hebrew)
+
+2020.12.10
+* Added a direct link to widget content to replacements for widgets like
+YouTube, Vimeo, SoundCloud and Spotify. You can click this link to watch
+a video (for example) without sharing the page you are on with the video
+provider.
+* Fixed "fbclid" tracking parameter removal on Facebook
+* Enabled Google Search link unwrapping on Firefox for Android
+* Fixed various site breakages
+* Improved translations (Dutch, Esperanto, French, German, Hebrew, Polish,
+Russian, Swedish, Turkish, Ukrainian)
+
 2020.10.7
 * Disabled learning (by default) to address privacy concerns.
 Visit https://www.eff.org/badger-evolution to learn more.
 * Added support for Global Privacy Control, a new specification that
 lets you tell companies you'd like to opt out of data sharing and selling.
 Visit https://globalprivacycontrol.org/ to learn more.
-* Added a new section to the options page to display the browser settings
+* Added a section to the options page to display the browser settings
 that Privacy Badger overrides for privacy reasons
 * Fixed various site breakages
 * Improved translations (Simplified Chinese, Dutch, Finnish, Hebrew, Italian,
@@ -220,7 +283,7 @@ discovering and reporting this vulnerability.
 * Improved handling of disabled sites with wildcards
 * Added t.co link replacement to user profiles on Twitter
 * Linked to EFF software privacy policy from the new user welcome page
-* Updated to latest dummy Google Tag Manager script from uBlock Origin
+* Updated to latest dummy Google Publisher Tag script from uBlock Origin
 to avoid "failed to redirect a network request" warnings in Chrome
 * Fixed various site breakages
 * Improved translations (Simplified Chinese, Dutch, Esperanto, German,
@@ -268,8 +331,8 @@ checking navigator.doNotTrack with JavaScript
 * Fixed popup in Private Browsing windows in Firefox
 * Fixed certain kinds of site breakages (such as visual issues with charts)
 not going away even after disabling Privacy Badger on the site
-* Updated to latest dummy Google Tag Manager script from uBlock Origin to
-avoid "failed to redirect a network request" warnings in Chrome
+* Updated to latest dummy Google Publisher Tag script from uBlock Origin
+to avoid "failed to redirect a network request" warnings in Chrome
 * Fixed various site breakages
 * Improved translations (Bulgarian, Traditional Chinese, German, Italian,
 Swedish)
@@ -364,7 +427,7 @@ unobfuscated URLs on twitter.com
 * Added option to disable Do Not Track policy checking
 * Restricted DNT policy checking from sending cookies
 * Fixed tooltips for DNT-compliant domains in popup
-* Fixed localStorage tracking sometimes being attributed to unrelated domains
+* Fixed local storage tracking sometimes being attributed to unrelated domains
 * Improved translations (Swedish, Ukrainian)
 
 2017.5.9
@@ -386,8 +449,6 @@ mitigate CPU issues.
 * Fix broken site (sharepoint.com)
 
 2017.3.28
-* New Translations (Czech)
-* Translation Updates
 * Fix bug in DNT policy re-checking code
 * Rate limit DNT checking to one request per second
 * Fix issue with multiple DNT checks at once for a single domain
@@ -395,75 +456,75 @@ mitigate CPU issues.
 * Fix popup width issue
 * Fix DNT hash updating issue
 * Fix toggle switch issue
-* Automated tests now also run on Firefox
+* New translation: Czech
+* Translation updates
 * Other minor bugfixes and broken site fixes
+* Automated tests now also run on Firefox
 
 2017.3.22
-* AMO (Firefox) only release.
-* Fix cookie tracking detection in Firefox.
+Firefox only release
+* Fix cookie tracking detection in Firefox
 
 2017.1.26.1
-* AMO only release
-* Fixes an error in the build scripts which reintroduced a firefox bug for AMO users
+Firefox only release
+* Fix an error in the build scripts
+that reintroduced a Firefox bug for AMO users
 
 2017.1.26
 * Huge speed improvements for settings import and on startup
-* Fixes no content blocking bug (firefox) 
+* Fix no content blocking bug (Firefox)
 * Several fixes for broken websites
 * Translations fixes
-* New Translation: Nordic
-* New Translation: Traditional Chineese (Taiwan)
-* New Translation: Serbian
-* Bugfix: Crash on browsers without WebRTC
-* Bugfix: narrow poup if icon is in the menu (firefox) 
-* Bugfix: Import/Export now uses utf-8 and can handle non english character
-sets
+* New translation: Nordic
+* New translation: Traditional Chinese (Taiwan)
+* New translation: Serbian
+* Fix crash on browsers without WebRTC
+* Fix narrow popup if icon is in the menu (Firefox)
+* Import/Export now uses utf-8 and can handle non English character sets
 * Enhancement: Convert icons to SVG
-* Enhancement: Script surrogate for google analytics, gigya, and more...
-* KNOWN ISSUE: Chrome will now display a message "Not downloaded from chrome
+* Enhancement: Script surrogate for Google Analytics, Gigya, and more...
 
 2016.12.15.1 (2.0.2)
-* BUGFIX: Chrome browsers no longer display privacy badger as (corrupted)
-* BUGFIX: Fixes lockup issue on some versions of firefox
-* BUGFIX: Fixes issue where privacy badger panel gets cut off 
-* BUGFIX: Fixes a non implmeneted API in firefox which was causing numerous
-sites to break. 
-* KNOWN ISSUE: Chrome will now display a message "Not downloaded from chrome
-store". This is a known side effect of a workaround for a different bug. 
+* Chrome browsers no longer display Privacy Badger as corrupted
+* Fix lockup issue on some versions of Firefox
+* Fix issue where Privacy Badger panel gets cut off
+* Fix a non implemented API in Firefox which caused numerous sites to break
+* KNOWN ISSUE: Chrome will now display a message "Not downloaded from Chrome
+store". This is a known side effect of a workaround for a different bug.
 
 2016.12.8.1 (2.0.1)
 * BUGFIX: Sanitize origin and action in popup
 
 2016.12.8 (2.0)
-* BUGFIX: Fix ublock origin warnings 
+* BUGFIX: Fix uBlock Origin warnings
 * BUGFIX: Remove need for download permission
 
 2016.12.7.2 (2.0RC1)
 * Huge speed improvements
-* Multiprocess Compatible (E10S) for firefox
-* Breaks many fewer websites
+* Multiprocess Compatible (E10S) for Firefox
+* Breaks far fewer websites
 * Many small bugfixes
 * Import and Export your data
 * Block WebRTC from leaking your IP address
 * Forget data in incognito mode
-* block html5 "ping" tracking
-* Translation fixes 
+* Block HTML5 "ping" tracking
+* Translation fixes
 * (Developers) Firefox and Chrome versions now share one code base!
 
 2016.9.7 (1.13)
 * Add exceptions for multi domain first parties
-* Fix google drive download issue
-* Fix wikipedia login issue
-* Fix youtube comments and notifications issues
+* Fix Google Drive download issue
+* Fix Wikipedia login issue
+* Fix YouTube comments and notifications issues
 * Several other broken site fixes
 * Hopefully a fix for the "corrupted extension" issue
 
 2016.8.29 (1.12)
 * UI Tweaks
-* Remove last adblock plus code
+* Remove last Adblock Plus code
 * Feature: remove domains from list
 * Refactor incognito mode handling
-* Compatibile with firefox web extensions
+* Compatible with Firefox WebExtensions
 
 2016.5.24 (1.11)
 * Fix build error
@@ -474,77 +535,77 @@ store". This is a known side effect of a workaround for a different bug.
 
 2016.5.16 (1.9)
 * Remove Adblock Plus Engine
-* Switch to using storage.js and chrome storage API
+* Switch to using storage.js and extensions storage API
 * Massive refactoring of code
 * Huge speed improvements
-* Fixes bug where privacy badger "forgets" settings
-* Fixes first run tab opening on every startup
-* Fix waiting for privacy badger bug
+* Fix bug where Privacy Badger "forgets" settings
+* Fix first run tab opening on every startup
+* Fix waiting for Privacy Badger bug
 * Fix high CPU usage bug
-* Uses separate data store for incognito mode
-* Ads selenium test to run pbtest.org sweet
-* Fixes weird subdomain handling edge case
-* Fixes bug where pages stop loading sometimes
+* Use separate data store for incognito mode
+* Add Selenium test to run pbtest.org suite
+* Fix weird subdomain handling edge case
+* Fix bug where pages stop loading sometimes
 
 2015.4.6 (1.8)
-* Fix "waiting for privacy badger bug"
+* Fix "waiting for Privacy Badger bug"
 * Huge speed improvement
 
 2015.4.6 (1.7)
 * Fix crash when closing options page
-* Add EFF Donate Button
+* Add EFF Donate button
 * New popup to nag user to go through tutorial
 
 2015.3.2 (1.0.6)
-* New feature: Search within blocked domain list
-* Replace soundcloud widget with a click to play button
+* Add searching to list of tracking domains on the options page
+* Replace SoundCloud widget with a click to play button
 * Misc. bug fixes and translation improvements
 
 2015.12.3 (1.0.4)
 * Lots of site bug fixes
-* Chinese Translation
-* Spanish Translation
-* italian translation
+* Chinese translation
+* Spanish translation
+* Italian translation
 * UI Overhaul
 * Update Swedish locale
 * Typo fixes
 * Numerous bug fixes
-* Added support for disabled sites with wildcards
+* Add support for disabled sites with wildcards
 * Red badge now reflects the number of domains blocked or cookieblocked
 instead of all third parties.
 * Tooltips show full domain name
 
 2015.8.14 (1.0.1)
-* Fixes a bug where slider settings for a base domain wouldn't take effect
-* Fixes 'this extension is slowing down chrome' errors
+* Fix a bug where slider settings for a base domain wouldn't take effect
+* Fix "This extension is slowing down Chrome" errors
 
 2015.8.5 (1.0)
 * 1.0 release
 * Bugfixes from 2015.7.24 (0.99)
-* Detects Canvas Fingerprinting
-* Detect Local Storage Supercookies
+* Detect canvas fingerprinting
+* Detect HTML5 local storage supercookies
 * Improved UI
-* Options page for overriding privacy badger settings
-* Report Broken Site button 
-* Many Bugfixes (see github)
-* Translations into swedish, french and german
+* Options page for overriding Privacy Badger settings
+* Report Broken Site button
+* Many other misc. bugfixes
+* Translations into Swedish, French and German
 
 2015.7.24 (0.99)
 * Release candidate for version 1.0!
 
 2015.4.1
-* Miscellanious bugfixes 
+* Miscellanious bugfixes
 * Improvements to heuristic
 
 2014.9.16
-* Adds lots of tests including selenium tests.
-* Adds lots of domains to the cookie block list.
-* Fixes bug with downloading cookie block list.
-* Fixes other minor stylistic bugs.
+* Add lots of tests including Selenium tests
+* Add lots of domains to the cookie block list
+* Fix bug with downloading cookie block list
+* Fix other minor stylistic bugs
 
 2014.7.17
 * Created dialog to allow users to unblock certain third parties on certain
-* sites for addedd functionality.  E.g. disqus comments, facebook comments, etc.
+sites for added functionality. E.g. Disqus comments, Facebook comments, etc.
 * Added lots of domains to cookie block list.
-* do not show domains that do not appear to be trackers in the popup
-* added missing google+ button override
+* Do not show domains that do not appear to be trackers in the popup
+* Added missing Google+ button override
diff --git a/doc/DESIGN-AND-ROADMAP.md b/doc/DESIGN-AND-ROADMAP.md
index ca96989f..45e7975d 100644
--- a/doc/DESIGN-AND-ROADMAP.md
+++ b/doc/DESIGN-AND-ROADMAP.md
@@ -72,69 +72,66 @@ Privacy Badger:
 
 #### Further Details
 
-# :warning: THIS SECTION IS OUTDATED AND NEEDS TO BE REWRITTEN :warning:
+Learning from cookies happens in [`heuristicblocking.js`](../src/js/heuristicblocking.js) [*sic*].
 
-Data Structures:
+Privacy Badger also learns from [fingerprinting](../src/js/contentscripts/fingerprinting.js) and [HTML5 local storage "supercookies"](../src/js/contentscripts/supercookie.js).
 
-- action_map = { 'google.com': blocked, 'fonts.google.com': 'cookieblocked', 'apis.fonts.google.com': 'user_cookieblock', 'foo.tracker.net': 'allow', 'tracker.net': 'DNT', }
-- snitch_map = {google.com: array('cooperq.com', 'noah.com', 'eff.org'), tracker.net: array(a.com, b.com, c.com)}
-- dnt_domains = array('tracker.net', 'dnt.eff.org')
-- settings = {social_widgets = true, ...}
-- cookie_block_list = "{'fonts.google.com': true, 'maps.google.com', true}"
+Request blocking/modification happens in [`webrequest.js`](../src/js/webrequest.js).
 
+##### Data Structures:
 
-On Request():
+`action_map` is an object keyed by fully qualified domain names of third parties (potential trackers). The value for each key is another object containing at least one (`heuristicAction`) and up to four entries:
 
-      if privacy badger is not enabled for the tab domain then return
-      if fqdn is not a third party then return
+- `heuristicAction`: one of `""` (no tracking seen), `"allow"` (Privacy Badger has not yet made a decision to block), `"cookieblock"`, `"block"`
+- `userAction`: one of `"user_allow"`, `"user_cookieblock"`, `"user_block"`. Set if the user moves the slider for the corresponding third party FQDN.
+- `dnt`: `true` or `false`
+- `nextUpdateTime`: an integer timestamp of the earliest time we should recheck for presence of EFF's DNT Policy
 
-      action = check_action(fqdn) (described below)
+For example:
 
-      if action is block then cancel request
-      if action is cookie_block then strip headers
-      if fqdn is nontracking (i.e check_action returned nothing) then do nothing
-      if action is noaction or any user override then async_check_tracking
-      if action is allow && count == 2 then blocking_check_tracking
-        if check_tracking changed action then call check_action again
-        else do_nothing
-
-      async_check_dnt(fqdn)
-
-check_action(fqdn): returns action
-
-      related_domains = array()
-      best_action = 'noaction'
-
-      for $domain in range(fqdn ... etld+1)
-        if action_map contains $domain
-          related_domains.shift($domain)
-
-        for each domain in related domains
-          if score(domain.action) > score(best_action)
-            best_action = domain.action
-
-        return best_action
+```json
+{
+    "google.com": {
+        "heuristicAction": "block",
+        "nextUpdateTime": 1602051816434
+    },
+    "fonts.google.com": {
+        "heuristicAction": "cookieblock"
+    },
+    "accounts.google.com": {
+        "heuristicAction": "cookieblock",
+        "userAction": "user_allow"
+    },
+    "maybe.a.tracker.example.net": {
+        "heuristicAction": "allow"
+    },
+    "privacy.respectful.example.com": {
+        "dnt": true,
+        "heuristicAction": "",
+        "nextUpdateTime": 1602130658236
+    }
+}
+```
 
-check_tracking(fqdn): return boolean
+`snitch_map` is an object keyed by [eTLD+1](https://en.wikipedia.org/wiki/Public_Suffix_List) (no subdomains!) domain names of third parties (potential trackers). The values are arrays of eTLD+1 domain names of first parties (sites you visit directly) that the corresponding third party was seen perform tracking on. For example:
 
-      var base_domain = etld+1(fqdn)
+```json
+{
+    "google-analytics.com": [
+        "linkedin.com",
+        "theguardian.com",
+        "godaddy.com"
+    ]
+}
+```
 
-      if has_cookie or has_supercookie or has_fingerprinting
-        if snitch_map doesn't have base domain add it
-        if snitch_map doesn't have first party add it
-        if snitch_map.base_domain.len >= 3
-          add base domain to action map as blocked
-          add all chlidren of base_domain and self from yellow list to action map
-          return true
 
 ##### What is an "origin" for Privacy Badger?
 
 Privacy Badger has two notions of origin.  One is the [effective top level
 domain](https://wiki.mozilla.org/Public_Suffix_List) plus one level of
 subdomain (eTLD+1), computed using
-[getBaseDomain](https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIEffectiveTLDService)
-(which is built-in to Firefox; in Chrome we [ship a
-copy](https://github.com/EFForg/privacybadger/blob/8e8ad9838b74b6d13354163f78d362ca60dd44f9/src/lib/basedomain.js#L75).
+[`getBaseDomain()`](https://github.com/EFForg/privacybadger/blob/8e8ad9838b74b6d13354163f78d362ca60dd44f9/src/lib/basedomain.js#L75).
 The accounting for which origins are trackers or not is performed by looking
 up how many first party fully qualified domain names (FQDNs) have been tracked by each
 of these eTLD + 1 origins.  This is a conservative choice, which avoids the
@@ -147,33 +144,6 @@ Users are able to override Privacy Badger's decision for any given FQDN if they
 do not wish to block something that is otherwise blocked (or block something
 that is not blocked).
 
-To illustrate this, suppose the site <tt>tracking.co.uk</tt> was embedded on
-every site on the Web, but each embed came from a randomly selected subdomain
-<tt>a.tracking.co.uk</tt>, <tt>b.tracking.co.uk</tt>,
-<tt>c.tracking.co.uk</tt>, etc.  Suppose the user visits
-<tt>www.news-example.com</tt> and <tt>search.jobs-example.info</tt>.
-
-The accounting data structure <tt>seenThirdParties</tt> would come to include:
-
-```
-{
-  ...
-  "tracking.co.uk" : {
-    "news-example.com"  : true,
-    "jobs-example.info" : true,
-  }
-  ...
-}
-```
-
-Now suppose the user visits a third site, <tt>clickbait.nonprofit.org</tt>,
-and is tracked by <tt>q.tracking.co.uk</tt> on that site.  The
-seenThirdParties data structure will have a third entry added to it, meeting
-the threshold of three first party origins and defining
-<tt>tracking.co.uk</tt> as a tracking eTLD+1.  At this point
-<tt>tracking.co.uk</tt> will be added to the block list. Any future requests to
-<tt>tracking.co.uk</tt>, or any of its subdomains, will be blocked.
-The user can manually unblock specific subdomains as necessary via the popup menu.
 
 ##### What is a "low entropy" cookie?
 
diff --git a/doc/Translation.md b/doc/Translation.md
index 6292b076..02116c56 100644
--- a/doc/Translation.md
+++ b/doc/Translation.md
@@ -1,21 +1,31 @@
 # Translating Privacy Badger
 
-We need your help in translating Privacy Badger to every possible language!
+We need your help in translating Privacy Badger to [every possible language](https://developer.chrome.com/docs/webstore/i18n/?csw=1#choosing-locales-to-support)!
 
-When translating you should always use the source (American English) locale as
-the reference. You can also use existing translations from other languages to
-help you in case of doubt, but you should always consider the English version
-as the correct one.
+You can contribute directly on GitHub, or you could [join us on Transifex](https://www.transifex.com/eff/privacy-badger/), a localization platform. (We may [migrate from Transifex to potentially Weblate](https://github.com/EFForg/privacybadger/issues/2591#issuecomment-616816017) in the future.)
 
+See below for miscellaneous notes as well as instructions for contributing via GitHub.
 
-#### A note about adding translation strings in PRs
+## Notes
 
-While working on a Privacy Badger enhancement, you might need to add one or
+- When translating you should always use
+the [source (American English) locale](../src/_locales/en_US/messages.json)
+as the reference. You can use existing translations from other languages
+to help you in case of doubt, but you should always consider the English
+version as the correct one.
+
+
+- While working on a Privacy Badger pull request, you might need to add one or
 more localized strings. You only need to add new strings to the source
 (`en_US`) locale. There is no need to manually add untranslated copies of new
 messages to all other locales. This will be taken care of later by a Privacy
 Badger maintainer.
 
+- To learn about outstanding translations-related issues, and to
+see how translations have been handled in the past, take a look
+at issues and pull requests marked with
+the [translations label](https://github.com/EFForg/privacybadger/issues?utf8=%E2%9C%93&q=label%3Atranslations%20).
+
 
 ## Working with translations on GitHub
 
@@ -41,7 +51,7 @@ user intro page"). You should not translate it.
 
 To contribute on GitHub, first check the status of your local language
 translation: if you don't see a folder with your
-[local language code](https://developer.chrome.com/webstore/i18n?csw=1#localeTable),
+[local language code](https://developer.chrome.com/docs/webstore/i18n/?csw=1#choosing-locales-to-support),
 the translation for that language is missing. In this case you should follow
 the instructions below to set up the JSON file for your language. If the
 translation for your language is already there, you can contribute by checking
@@ -54,7 +64,7 @@ To add a new language on GitHub, follow these steps:
 
 1. Fork this repository
 2. Inside your fork, create a folder in `src/_locales/` and name it
-with your [local language code](https://developer.chrome.com/webstore/i18n?csw=1#localeTable)
+with your [local language code](https://developer.chrome.com/docs/webstore/i18n/?csw=1#choosing-locales-to-support)
 3. Copy the `src/_locales/en_US/messages.json` file to the folder you created
 4. Start translating each message to your language by replacing the
 English strings with the translated ones
@@ -80,13 +90,6 @@ A quick/hacky way to change Privacy Badger's locale is to temporarily copy the l
 
 The proper way would be to launch the browser in your desired locale.
 
-For Chrome, it might be as easy as [launching it from the command line with `LANGUAGE=fr` (for example) in front of the executable](https://stackoverflow.com/questions/24992240/start-google-chrome-with-a-specific-locale-using-a-command-line-argument).
+For Chrome, it might be as simple as [launching it from the command line with `LANGUAGE=fr` (for example) in front of the executable](https://stackoverflow.com/questions/24992240/start-google-chrome-with-a-specific-locale-using-a-command-line-argument).
 
 Firefox requires [downloading a language pack](https://addons.mozilla.org/en-US/firefox/language-tools/) and [setting it as your locale from about:config](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Internationalization#Testing_out_your_extension).
-
-
-## Other information
-
-To learn about outstanding translations-related issues, and to
-see how translations have been handled in the past, take a look
-at issues and pull requests marked with the [translations label](https://github.com/EFForg/privacybadger/issues?utf8=%E2%9C%93&q=label%3Atranslations%20).
diff --git a/doc/admin-deployment.md b/doc/admin-deployment.md
index 41c1d0e0..f78f14b3 100644
--- a/doc/admin-deployment.md
+++ b/doc/admin-deployment.md
@@ -1,13 +1,13 @@
 # Privacy Badger enterprise deployment and configuration
 
-Administrators can configure Privacy Badger on managed devices by setting up a policy.
+System administrators can configure Privacy Badger on managed devices by setting up an enterprise policy.
 
 You can find the full list of available settings in [Privacy Badger's managed storage schema](/src/data/schema.json). Please [let us know](https://privacybadger.org/#I-found-a-bug%21-What-do-I-do-now) if you'd like to set something that isn't yet supported.
 
-Note that Privacy Badger currently reads and applies settings from [managed storage](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage/managed) on startup. To see your policy take effect on a managed device, first restart that device's browser.
+:warning: Note that Privacy Badger currently reads and applies settings from [managed storage](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage/managed) on startup. To see your policy take effect on a managed device, **first restart that device's browser**. :warning:
 
 
-## Firefox setup
+## Firefox
 
 1. Locate and if necessary create the [managed storage manifests folder](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests#Manifest_location). Note that on Windows you need to create a registry key that points to the manifest's location.
 2. Copy the [sample managed storage manifest for Firefox](/doc/jid1-MnnxcxisBPnSXQ@jetpack.json) to this folder.
@@ -18,16 +18,38 @@ If your Privacy Badgers were installed from [Privacy Badger's homepage](https://
 4. Similarly, update the `"name"` property in the manifest to `"jid1-MnnxcxisBPnSXQ-eff@jetpack"`.
 
 
-## Chrome/Chromium setup
+## Chrome/Chromium
 
-Please review the [Configuring Apps and Extensions by Policy](http://www.chromium.org/administrators/configuring-policy-for-extensions) document.
+Review Chromium's [Documentation for Administrators](https://www.chromium.org/administrators/) documents, in particular [Configuring Apps and Extensions by Policy](http://www.chromium.org/administrators/configuring-policy-for-extensions).
 
-Notes for Chrome OS and Linux follow.
+See below for platform-specific tips.
+
+### Chrome on Windows
+
+Policy entries live at the following registry path:
+
+```
+HKEY_LOCAL_MACHINE\Software\Policies\Google\Chrome\3rdparty\extensions\pkehgijcmpdhfbdbbnkijodmdjhbjlgp\policy
+```
+
+Use `REG_DWORD` for boolean values.
+
+For example, to prevent the new user welcome page from launching upon Privacy Badger installation, create a `showIntroPage` entry set to a `REG_DWORD` value of `0`.
+
+
+### Chrome on Linux
+
+1. Locate and if necessary create the [managed policies folder for Chrome or Chromium](http://www.chromium.org/administrators/configuring-policy-for-extensions).
+2. Copy the [sample managed storage manifest for Chrome](/doc/sample-managed-storage-manifest-chrome.json) to this folder.
+3. Rename the manifest file to whatever you like (perhaps `privacy-badger-admin-settings.json`).
+4. Update the extension ID inside the manifest if you are not using official Privacy Badger releases from Chrome Web Store.
 
 ### Chrome OS
 
 The following example JSON policy disables Privacy Badger on `example.com`. This means Privacy Badger will be disabled when you visit any `example.com` page.
 
+This policy also prevents the new user welcome page from launching upon Privacy Badger installation.
+
 ```json
 {
     "disabledSites": {
@@ -41,9 +63,11 @@ The following example JSON policy disables Privacy Badger on `example.com`. This
 }
 ```
 
-### Linux
 
-1. Locate and if necessary create the [managed policies folder for Chrome or Chromium](http://www.chromium.org/administrators/configuring-policy-for-extensions).
-2. Copy the [sample managed storage manifest for Chrome](/doc/sample-managed-storage-manifest-chrome.json) to this folder.
-3. Rename the manifest file to whatever you like (perhaps `privacy-badger-admin-settings.json`).
-4. Update the extension ID inside the manifest if you are not using official Privacy Badger releases from Chrome Web Store.
+## Edge
+
+Same as [Chrome on Windows](#chrome-on-windows) but with a different registry path:
+
+```
+HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge\3rdparty\Extensions\mkejgcgkdlddbggjhhflekkondicpnop\policy
+```
diff --git a/doc/develop.md b/doc/develop.md
index cd28b16d..a6e2b8e8 100644
--- a/doc/develop.md
+++ b/doc/develop.md
@@ -5,9 +5,9 @@ To make changes to Privacy Badger, you have to first load the extension from a s
 
 ## Install from source
 
-To install Privacy Badger from source in Chrome, visit `chrome://extensions`, enable "Developer mode", click "Load unpacked" and select the [`src`](src/) subdirectory inside your copy of the Privacy Badger source code.
+To install Privacy Badger from source in Chrome, visit `chrome://extensions`, enable "Developer mode", click "Load unpacked" and select the [`src`](../src/) subdirectory inside your copy of the Privacy Badger source code.
 
-In Firefox, visit `about:debugging`, click "Load Temporary Add-on" and select the [`src/manifest.json`](src/manifest.json) file. Note that this only installs the extension temporarily; it will be removed when you close Firefox.
+In Firefox, visit `about:debugging`, click "Load Temporary Add-on" and select the [`src/manifest.json`](../src/manifest.json) file. Note that this only installs the extension temporarily; it will be removed when you close Firefox.
 
 To install Privacy Badger from source in Firefox for Android, please see [Mozilla's guide to developing extensions for Firefox for Android](https://extensionworkshop.com/documentation/develop/developing-extensions-for-firefox-for-android/) and [`web-ext` documentation](https://extensionworkshop.com/documentation/develop/getting-started-with-web-ext/#testing-in-firefox-for-android).
 
diff --git a/doc/permissions.md b/doc/permissions.md
index 1211b2a1..e520ee5e 100644
--- a/doc/permissions.md
+++ b/doc/permissions.md
@@ -1,12 +1,15 @@
 # Permissions
 
-This document explains the need for each [extension permission](https://developer.chrome.com/extensions/declare_permissions) declared in Privacy Badger's [extension manifest](/src/manifest.json).
+This document explains the need for each [extension permission](https://developer.chrome.com/docs/extensions/mv3/declare_permissions/) declared in Privacy Badger's [extension manifest](/src/manifest.json).
 
 ## Privacy
-The Privacy API lets extensions modify browser-wide privacy settings. Privacy Badger uses it to disable a setting that lets Chrome send third-party requests to resolve errors, and to turns off link tracking via the HTML ping attribute. We also give users the option to change their WebRTC privacy level in order to prevent leaking local network address information.
+The Privacy API lets extensions modify browser-wide privacy settings. Privacy Badger uses the Privacy API to disable:
 
-## Cookies
-Privacy Badger needs access to the cookies API in order to detect and correct a common error where Cloudflare domains are identified as trackers and blocked.
+- [hyperlink auditing](https://www.bleepingcomputer.com/news/software/major-browsers-to-prevent-disabling-of-click-tracking-privacy-risk/), an [HTML feature](https://html.spec.whatwg.org/multipage/links.html#hyperlink-auditing) meant to optimize and normalize click tracking on the Web
+- [prefetching](https://developer.mozilla.org/en-US/docs/Web/HTTP/Link_prefetching_FAQ) (network predictions), as it presents a poor tradeoff between privacy and perceived browsing performance
+- suggestions for similar pages when a page can't be found, as this Chrome feature sends visited web addresses to Google
+
+In addition, Privacy Badger allows users to set a stricter WebRTC IP handling policy in order to prevent leaking local network address information.
 
 ## Storage
 The storage API lets extensions store information that persists after the browser is closed. Privacy Badger uses it to save user settings and information it has learned about trackers.
diff --git a/doc/tests.md b/doc/tests.md
index b03c4a32..abf0ebfa 100644
--- a/doc/tests.md
+++ b/doc/tests.md
@@ -8,7 +8,7 @@ We have a few different types of tests:
 
 ## Travis CI
 
-Every pull request runs the full suite of functional and unit tests on [Travis CI](https://travis-ci.org/). We test on latest stable Chrome and Firefox releases, as well as on Chrome Beta, Firefox Beta and Firefox ESR.
+Every pull request runs the full suite of functional and unit tests on [Travis CI](https://travis-ci.com/). We test on latest stable Chrome and Firefox releases, as well as on Chrome Beta, Firefox Beta and Firefox ESR.
 
 See [`.travis.yml`](/.travis.yml) for Travis configuration, [`scripts/setup_travis.sh`](/scripts/setup_travis.sh) for test setup, and [`scripts/run_travis.sh`](/scripts/run_travis.sh) for test execution procedures.
 
diff --git a/package-lock.json b/package-lock.json
index deba7a3e..beff825b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,71 +1,6894 @@
 {
   "name": "privacy-badger-dev-tools",
   "version": "0.0.1",
-  "lockfileVersion": 1,
+  "lockfileVersion": 2,
   "requires": true,
-  "dependencies": {
-    "@babel/code-frame": {
+  "packages": {
+    "": {
+      "name": "privacy-badger-dev-tools",
+      "version": "0.0.1",
+      "dependencies": {
+        "eslint": "~7.32.0"
+      },
+      "devDependencies": {
+        "jquery": "3.5.1",
+        "jquery-smooth-scroll": "2.2.0",
+        "jquery-ui": "1.13.0",
+        "jquery-ui-iconfont": "2.3.2",
+        "qunit": "2.9.2",
+        "select2": "4.0.11",
+        "sinon": "2.0.0",
+        "tooltipster": "4.2.6",
+        "web-ext": "~6.5.0"
+      }
+    },
+    "node_modules/@babel/code-frame": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
+      "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/highlight": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.15.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
+      "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
+      "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.14.5",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/runtime": {
+      "version": "7.13.9",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.9.tgz",
+      "integrity": "sha512-aY2kU+xgJ3dJ1eU6FMB9EH8dIe8dmusF1xEku52joLvw6eAFN0AI+WxCLDnpev2LEejWBAy2sBvBOBAjI3zmvA==",
+      "dev": true,
+      "dependencies": {
+        "regenerator-runtime": "^0.13.4"
+      }
+    },
+    "node_modules/@devicefarmer/adbkit": {
+      "version": "2.11.3",
+      "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit/-/adbkit-2.11.3.tgz",
+      "integrity": "sha512-rsgWREAvSRQjdP9/3GoAV6Tq+o97haywgbTfCgt5yUqiDpaaq3hlH9FTo9XsdG8x+Jd0VQ9nTC2IXsDu8JGRSA==",
+      "dev": true,
+      "dependencies": {
+        "@devicefarmer/adbkit-logcat": "^1.1.0",
+        "@devicefarmer/adbkit-monkey": "~1.0.1",
+        "bluebird": "~2.9.24",
+        "commander": "^2.3.0",
+        "debug": "~2.6.3",
+        "node-forge": "^0.10.0",
+        "split": "~0.3.3"
+      },
+      "bin": {
+        "adbkit": "bin/adbkit"
+      },
+      "engines": {
+        "node": ">= 0.10.4"
+      }
+    },
+    "node_modules/@devicefarmer/adbkit-logcat": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit-logcat/-/adbkit-logcat-1.1.0.tgz",
+      "integrity": "sha512-K90P5gUXM/w+yzLvJIRQ+tJooNU6ipUPPQkljtPJ0laR66TGtpt4Gqsjm0n9dPHK1W5KGgU1R5wnCd6RTSlPNA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.10.4"
+      }
+    },
+    "node_modules/@devicefarmer/adbkit-monkey": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit-monkey/-/adbkit-monkey-1.0.1.tgz",
+      "integrity": "sha512-HilPrVrCosYWqSyjfpDtaaN1kJwdlBpS+IAflP3z+e7nsEgk3JGJf1Vg0NgHJooTf5HDfXSyZqMVg+5jvXCK0g==",
+      "dev": true,
+      "dependencies": {
+        "async": "~0.2.9"
+      },
+      "engines": {
+        "node": ">= 0.10.4"
+      }
+    },
+    "node_modules/@devicefarmer/adbkit/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/@devicefarmer/adbkit/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "node_modules/@eslint/eslintrc": {
+      "version": "0.4.3",
+      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
+      "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
+      "dependencies": {
+        "ajv": "^6.12.4",
+        "debug": "^4.1.1",
+        "espree": "^7.3.0",
+        "globals": "^13.9.0",
+        "ignore": "^4.0.6",
+        "import-fresh": "^3.2.1",
+        "js-yaml": "^3.13.1",
+        "minimatch": "^3.0.4",
+        "strip-json-comments": "^3.1.1"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      }
+    },
+    "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@humanwhocodes/config-array": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
+      "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
+      "dependencies": {
+        "@humanwhocodes/object-schema": "^1.2.0",
+        "debug": "^4.1.1",
+        "minimatch": "^3.0.4"
+      },
+      "engines": {
+        "node": ">=10.10.0"
+      }
+    },
+    "node_modules/@humanwhocodes/object-schema": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz",
+      "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w=="
+    },
+    "node_modules/@mdn/browser-compat-data": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.0.5.tgz",
+      "integrity": "sha512-KPSNaHUl5aikqsQU7LpBntFzaPbhm5OJxD88Wv00OKDc4wudyid2wDFqLeb7VcYT9x5bND8PPFloWdK5DY0pHA==",
+      "dev": true
+    },
+    "node_modules/@sindresorhus/is": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz",
+      "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@szmarczak/http-timer": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
+      "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
+      "dev": true,
+      "dependencies": {
+        "defer-to-connect": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@types/decompress": {
+      "version": "4.2.4",
+      "resolved": "https://registry.npmjs.org/@types/decompress/-/decompress-4.2.4.tgz",
+      "integrity": "sha512-/C8kTMRTNiNuWGl5nEyKbPiMv6HA+0RbEXzFhFBEzASM6+oa4tJro9b8nj7eRlOFfuLdzUU+DS/GPDlvvzMOhA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/download": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/@types/download/-/download-8.0.1.tgz",
+      "integrity": "sha512-t5DjMD6Y1DxjXtEHl7Kt+nQn9rOmVLYD8p4Swrcc5QpgyqyqR2gXTIK6RwwMnNeFJ+ZIiIW789fQKzCrK7AOFA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/decompress": "*",
+        "@types/got": "^8",
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/got": {
+      "version": "8.3.6",
+      "resolved": "https://registry.npmjs.org/@types/got/-/got-8.3.6.tgz",
+      "integrity": "sha512-nvLlj+831dhdm4LR2Ly+HTpdLyBaMynoOr6wpIxS19d/bPeHQxFU5XQ6Gp6ohBpxvCWZM1uHQIC2+ySRH1rGrQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/minimatch": {
+      "version": "3.0.5",
+      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
+      "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
+      "dev": true
+    },
+    "node_modules/@types/node": {
+      "version": "16.11.4",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.4.tgz",
+      "integrity": "sha512-TMgXmy0v2xWyuCSCJM6NCna2snndD8yvQF67J29ipdzMcsPa9u+o0tjF5+EQNdhcuZplYuouYqpc4zcd5I6amQ==",
+      "dev": true
+    },
+    "node_modules/@types/yauzl": {
+      "version": "2.9.2",
+      "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz",
+      "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/accepts": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+      "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "mime-types": "~2.1.24",
+        "negotiator": "0.6.2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/acorn": {
+      "version": "7.4.1",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/acorn-jsx": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+      "peerDependencies": {
+        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+      }
+    },
+    "node_modules/addons-linter": {
+      "version": "3.20.0",
+      "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-3.20.0.tgz",
+      "integrity": "sha512-rHaahIZ34HSL1D7ZYCMs/QQPOp0pAnsOMqtNSy/zDSrkgVtlCQvSeMpx1a3ZnE2pGRVHjMIO506KWUmrN1lPRw==",
+      "dev": true,
+      "dependencies": {
+        "@mdn/browser-compat-data": "4.0.5",
+        "addons-moz-compare": "1.2.0",
+        "addons-scanner-utils": "5.0.0",
+        "ajv": "6.12.6",
+        "ajv-merge-patch": "4.1.0",
+        "chalk": "4.1.2",
+        "cheerio": "1.0.0-rc.10",
+        "columnify": "1.5.4",
+        "common-tags": "1.8.0",
+        "deepmerge": "4.2.2",
+        "dispensary": "0.62.0",
+        "eslint": "7.32.0",
+        "eslint-plugin-no-unsanitized": "3.1.5",
+        "eslint-visitor-keys": "3.0.0",
+        "espree": "9.0.0",
+        "esprima": "4.0.1",
+        "fluent-syntax": "0.13.0",
+        "glob": "7.2.0",
+        "image-size": "1.0.0",
+        "is-mergeable-object": "1.1.1",
+        "jed": "1.1.1",
+        "os-locale": "5.0.0",
+        "pino": "6.13.3",
+        "postcss": "8.3.9",
+        "relaxed-json": "1.0.3",
+        "semver": "7.3.5",
+        "source-map-support": "0.5.20",
+        "tosource": "1.0.0",
+        "upath": "2.0.1",
+        "yargs": "17.2.1",
+        "yauzl": "2.10.0"
+      },
+      "bin": {
+        "addons-linter": "bin/addons-linter"
+      },
+      "engines": {
+        "node": ">=12.21.0"
+      }
+    },
+    "node_modules/addons-linter/node_modules/acorn": {
+      "version": "8.5.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz",
+      "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==",
+      "dev": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/addons-linter/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/addons-linter/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/addons-linter/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/addons-linter/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "node_modules/addons-linter/node_modules/eslint-visitor-keys": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz",
+      "integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==",
+      "dev": true,
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      }
+    },
+    "node_modules/addons-linter/node_modules/espree": {
+      "version": "9.0.0",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz",
+      "integrity": "sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==",
+      "dev": true,
+      "dependencies": {
+        "acorn": "^8.5.0",
+        "acorn-jsx": "^5.3.1",
+        "eslint-visitor-keys": "^3.0.0"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      }
+    },
+    "node_modules/addons-linter/node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/addons-linter/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/addons-linter/node_modules/yargs": {
+      "version": "17.2.1",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz",
+      "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==",
+      "dev": true,
+      "dependencies": {
+        "cliui": "^7.0.2",
+        "escalade": "^3.1.1",
+        "get-caller-file": "^2.0.5",
+        "require-directory": "^2.1.1",
+        "string-width": "^4.2.0",
+        "y18n": "^5.0.5",
+        "yargs-parser": "^20.2.2"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/addons-moz-compare": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/addons-moz-compare/-/addons-moz-compare-1.2.0.tgz",
+      "integrity": "sha512-COG8qk2/dubPqabfcoJW4E7pm2EQDI43iMrHnhlobvq/uRMEzx/PYJ1KaUZ97Vgg44R3QdRG5CvDsTRbMUHcDw==",
+      "dev": true
+    },
+    "node_modules/addons-scanner-utils": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-5.0.0.tgz",
+      "integrity": "sha512-uENKmGryUeR07I1c8RonDZY/bkAG+zKfZ3T61JFusgY5wiARQJ5+8hI33m8sctXxPopjfxiIjHsG/g7cQzn4Yw==",
+      "dev": true,
+      "dependencies": {
+        "@types/yauzl": "2.9.2",
+        "common-tags": "1.8.0",
+        "first-chunk-stream": "3.0.0",
+        "strip-bom-stream": "4.0.0",
+        "upath": "2.0.1",
+        "yauzl": "2.10.0"
+      },
+      "peerDependencies": {
+        "@types/download": "8.0.1",
+        "body-parser": "1.19.0",
+        "download": "8.0.0",
+        "express": "4.17.1",
+        "safe-compare": "1.1.4"
+      }
+    },
+    "node_modules/adm-zip": {
+      "version": "0.5.9",
+      "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.9.tgz",
+      "integrity": "sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.0"
+      }
+    },
+    "node_modules/ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/ajv-merge-patch": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/ajv-merge-patch/-/ajv-merge-patch-4.1.0.tgz",
+      "integrity": "sha512-0mAYXMSauA8RZ7r+B4+EAOYcZEcO9OK5EiQCR7W7Cv4E44pJj56ZnkKLJ9/PAcOc0dT+LlV9fdDcq2TxVJfOYw==",
+      "dev": true,
+      "dependencies": {
+        "fast-json-patch": "^2.0.6",
+        "json-merge-patch": "^0.2.3"
+      },
+      "peerDependencies": {
+        "ajv": ">=6.0.0"
+      }
+    },
+    "node_modules/ansi-align": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
+      "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
+      "dev": true,
+      "dependencies": {
+        "string-width": "^4.1.0"
+      }
+    },
+    "node_modules/ansi-colors": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+      "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/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==",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/any-promise": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+      "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=",
+      "dev": true
+    },
+    "node_modules/archive-type": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz",
+      "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "file-type": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/archive-type/node_modules/file-type": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz",
+      "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dependencies": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "node_modules/array-differ": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz",
+      "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/array-filter": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
+      "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
+      "dev": true
+    },
+    "node_modules/array-flatten": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/array-map": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+      "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
+      "dev": true
+    },
+    "node_modules/array-reduce": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
+      "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
+      "dev": true
+    },
+    "node_modules/array-union": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/arrify": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
+      "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/asn1": {
+      "version": "0.2.4",
+      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+      "dev": true,
+      "dependencies": {
+        "safer-buffer": "~2.1.0"
+      }
+    },
+    "node_modules/assert-plus": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/astral-regex": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+      "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/async": {
+      "version": "0.2.10",
+      "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+      "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
+      "dev": true
+    },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+      "dev": true
+    },
+    "node_modules/at-least-node": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+      "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
+    "node_modules/atomic-sleep": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
+      "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/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=",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/aws4": {
+      "version": "1.11.0",
+      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
+      "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
+      "dev": true
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+    },
+    "node_modules/base64-js": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "peer": true
+    },
+    "node_modules/bcrypt-pbkdf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+      "dev": true,
+      "dependencies": {
+        "tweetnacl": "^0.14.3"
+      }
+    },
+    "node_modules/bl": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
+      "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "readable-stream": "^2.3.5",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "node_modules/bluebird": {
+      "version": "2.9.34",
+      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz",
+      "integrity": "sha1-L3tOyAIWMoqf3evfacjUlC/v99g=",
+      "dev": true
+    },
+    "node_modules/body-parser": {
+      "version": "1.19.0",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+      "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "bytes": "3.1.0",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "on-finished": "~2.3.0",
+        "qs": "6.7.0",
+        "raw-body": "2.4.0",
+        "type-is": "~1.6.17"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/body-parser/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/body-parser/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/boolbase": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+      "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+      "dev": true
+    },
+    "node_modules/boxen": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz",
+      "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==",
+      "dev": true,
+      "dependencies": {
+        "ansi-align": "^3.0.0",
+        "camelcase": "^6.2.0",
+        "chalk": "^4.1.0",
+        "cli-boxes": "^2.2.1",
+        "string-width": "^4.2.2",
+        "type-fest": "^0.20.2",
+        "widest-line": "^3.1.0",
+        "wrap-ansi": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/boxen/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/boxen/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/boxen/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/boxen/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "node_modules/boxen/node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/boxen/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/buffer": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "peer": true,
+      "dependencies": {
+        "base64-js": "^1.3.1",
+        "ieee754": "^1.1.13"
+      }
+    },
+    "node_modules/buffer-alloc": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+      "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "buffer-alloc-unsafe": "^1.1.0",
+        "buffer-fill": "^1.0.0"
+      }
+    },
+    "node_modules/buffer-alloc-unsafe": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+      "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/buffer-crc32": {
+      "version": "0.2.13",
+      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+      "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/buffer-equal-constant-time": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+      "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=",
+      "dev": true
+    },
+    "node_modules/buffer-fill": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+      "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/buffer-from": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+      "dev": true
+    },
+    "node_modules/bunyan": {
+      "version": "1.8.15",
+      "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz",
+      "integrity": "sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==",
+      "dev": true,
+      "engines": [
+        "node >=0.10.0"
+      ],
+      "bin": {
+        "bunyan": "bin/bunyan"
+      },
+      "optionalDependencies": {
+        "dtrace-provider": "~0.8",
+        "moment": "^2.19.3",
+        "mv": "~2",
+        "safe-json-stringify": "~1"
+      }
+    },
+    "node_modules/bytes": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+      "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/cacheable-request": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz",
+      "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "clone-response": "1.0.2",
+        "get-stream": "3.0.0",
+        "http-cache-semantics": "3.8.1",
+        "keyv": "3.0.0",
+        "lowercase-keys": "1.0.0",
+        "normalize-url": "2.0.1",
+        "responselike": "1.0.2"
+      }
+    },
+    "node_modules/cacheable-request/node_modules/get-stream": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+      "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cacheable-request/node_modules/keyv": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz",
+      "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "json-buffer": "3.0.0"
+      }
+    },
+    "node_modules/cacheable-request/node_modules/lowercase-keys": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
+      "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/call-bind": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/camelcase": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
+      "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/caseless": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+      "dev": true
+    },
+    "node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cheerio": {
+      "version": "1.0.0-rc.10",
+      "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
+      "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
+      "dev": true,
+      "dependencies": {
+        "cheerio-select": "^1.5.0",
+        "dom-serializer": "^1.3.2",
+        "domhandler": "^4.2.0",
+        "htmlparser2": "^6.1.0",
+        "parse5": "^6.0.1",
+        "parse5-htmlparser2-tree-adapter": "^6.0.1",
+        "tslib": "^2.2.0"
+      },
+      "engines": {
+        "node": ">= 6"
+      },
+      "funding": {
+        "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
+      }
+    },
+    "node_modules/cheerio-select": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz",
+      "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==",
+      "dev": true,
+      "dependencies": {
+        "css-select": "^4.1.3",
+        "css-what": "^5.0.1",
+        "domelementtype": "^2.2.0",
+        "domhandler": "^4.2.0",
+        "domutils": "^2.7.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/chrome-launcher": {
+      "version": "0.14.0",
+      "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.14.0.tgz",
+      "integrity": "sha512-W//HpflaW6qBGrmuskup7g+XJZN6w03ko9QSIe5CtcTal2u0up5SeReK3Ll1Why4Ey8dPkv8XSodZyHPnGbVHQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*",
+        "escape-string-regexp": "^4.0.0",
+        "is-wsl": "^2.2.0",
+        "lighthouse-logger": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=12.13.0"
+      }
+    },
+    "node_modules/chrome-launcher/node_modules/escape-string-regexp": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/ci-info": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+      "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+      "dev": true
+    },
+    "node_modules/cli-boxes": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
+      "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/cliui": {
+      "version": "7.0.4",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+      "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+      "dev": true,
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^7.0.0"
+      }
+    },
+    "node_modules/clone": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+      "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/clone-response": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
+      "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
+      "dev": true,
+      "dependencies": {
+        "mimic-response": "^1.0.0"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+    },
+    "node_modules/columnify": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz",
+      "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=",
+      "dev": true,
+      "dependencies": {
+        "strip-ansi": "^3.0.0",
+        "wcwidth": "^1.0.0"
+      }
+    },
+    "node_modules/columnify/node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/columnify/node_modules/strip-ansi": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "dev": true,
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/commander": {
+      "version": "2.12.2",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz",
+      "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==",
+      "dev": true
+    },
+    "node_modules/common-tags": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz",
+      "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+    },
+    "node_modules/concat-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+      "dev": true,
+      "engines": [
+        "node >= 0.8"
+      ],
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
+    "node_modules/configstore": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
+      "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
+      "dev": true,
+      "dependencies": {
+        "dot-prop": "^5.2.0",
+        "graceful-fs": "^4.1.2",
+        "make-dir": "^3.0.0",
+        "unique-string": "^2.0.0",
+        "write-file-atomic": "^3.0.0",
+        "xdg-basedir": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/configstore/node_modules/make-dir": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+      "dev": true,
+      "dependencies": {
+        "semver": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/configstore/node_modules/semver": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/content-disposition": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+      "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "safe-buffer": "5.1.2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/content-type": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/cookie": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+      "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/cookie-signature": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/core-js": {
+      "version": "3.18.0",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.0.tgz",
+      "integrity": "sha512-WJeQqq6jOYgVgg4NrXKL0KLQhi0CT4ZOCvFL+3CQ5o7I6J8HkT5wd53EadMfqTDp1so/MT1J+w2ujhWcCJtN7w==",
+      "dev": true,
+      "hasInstallScript": true,
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/core-js"
+      }
+    },
+    "node_modules/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=",
+      "dev": true
+    },
+    "node_modules/cross-spawn": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+      "dependencies": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/crypto-random-string": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+      "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/css-select": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
+      "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
+      "dev": true,
+      "dependencies": {
+        "boolbase": "^1.0.0",
+        "css-what": "^5.0.0",
+        "domhandler": "^4.2.0",
+        "domutils": "^2.6.0",
+        "nth-check": "^2.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/css-what": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz",
+      "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/dashdash": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+      "dev": true,
+      "dependencies": {
+        "assert-plus": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/debounce": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz",
+      "integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg==",
+      "dev": true
+    },
+    "node_modules/debug": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+      "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/decamelize": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.0.tgz",
+      "integrity": "sha512-U75DcT5hrio3KNtvdULAWnLiAPbFUC4191ldxMmj4FA/mRuBnmDwU0boNfPyFRhnan+Jm+haLeSn3P0afcBn4w==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/decode-uri-component": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/decompress": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz",
+      "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "decompress-tar": "^4.0.0",
+        "decompress-tarbz2": "^4.0.0",
+        "decompress-targz": "^4.0.0",
+        "decompress-unzip": "^4.0.1",
+        "graceful-fs": "^4.1.10",
+        "make-dir": "^1.0.0",
+        "pify": "^2.3.0",
+        "strip-dirs": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/decompress-response": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+      "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
+      "dev": true,
+      "dependencies": {
+        "mimic-response": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/decompress-tar": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz",
+      "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "file-type": "^5.2.0",
+        "is-stream": "^1.1.0",
+        "tar-stream": "^1.5.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/decompress-tar/node_modules/file-type": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
+      "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/decompress-tarbz2": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz",
+      "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "decompress-tar": "^4.1.0",
+        "file-type": "^6.1.0",
+        "is-stream": "^1.1.0",
+        "seek-bzip": "^1.0.5",
+        "unbzip2-stream": "^1.0.9"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/decompress-tarbz2/node_modules/file-type": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz",
+      "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/decompress-targz": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz",
+      "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "decompress-tar": "^4.1.1",
+        "file-type": "^5.2.0",
+        "is-stream": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/decompress-targz/node_modules/file-type": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
+      "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/decompress-unzip": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz",
+      "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "file-type": "^3.8.0",
+        "get-stream": "^2.2.0",
+        "pify": "^2.3.0",
+        "yauzl": "^2.4.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/decompress-unzip/node_modules/file-type": {
+      "version": "3.9.0",
+      "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
+      "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/decompress-unzip/node_modules/get-stream": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
+      "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "object-assign": "^4.0.1",
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/decompress-unzip/node_modules/pify": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/decompress/node_modules/make-dir": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+      "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "pify": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/decompress/node_modules/make-dir/node_modules/pify": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+      "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/decompress/node_modules/pify": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/deep-equal": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
+      "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
+      "dev": true,
+      "dependencies": {
+        "is-arguments": "^1.0.4",
+        "is-date-object": "^1.0.1",
+        "is-regex": "^1.0.4",
+        "object-is": "^1.0.1",
+        "object-keys": "^1.1.1",
+        "regexp.prototype.flags": "^1.2.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/deep-extend": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+      "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/deep-is": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
+    },
+    "node_modules/deepcopy": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-2.1.0.tgz",
+      "integrity": "sha512-8cZeTb1ZKC3bdSCP6XOM1IsTczIO73fdqtwa2B0N15eAz7gmyhQo+mc5gnFuulsgN3vIQYmTgbmQVKalH1dKvQ==",
+      "dev": true,
+      "dependencies": {
+        "type-detect": "^4.0.8"
+      }
+    },
+    "node_modules/deepmerge": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
+      "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/defaults": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
+      "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+      "dev": true,
+      "dependencies": {
+        "clone": "^1.0.2"
+      }
+    },
+    "node_modules/defer-to-connect": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
+      "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
+      "dev": true
+    },
+    "node_modules/define-properties": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+      "dev": true,
+      "dependencies": {
+        "object-keys": "^1.0.12"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/depd": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/destroy": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/diff": {
+      "version": "3.5.0",
+      "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+      "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.3.1"
+      }
+    },
+    "node_modules/dispensary": {
+      "version": "0.62.0",
+      "resolved": "https://registry.npmjs.org/dispensary/-/dispensary-0.62.0.tgz",
+      "integrity": "sha512-x8vqPX7owhzDp3Y6t/iOuTuNoWx5hlZKITlzlybETsZoY05cYDubGpwt0soLfRLAWLuxX1lq0lTc/vXtk/CDCw==",
+      "dev": true,
+      "dependencies": {
+        "async": "~3.2.0",
+        "natural-compare-lite": "~1.4.0",
+        "pino": "~6.11.0",
+        "request": "~2.88.0",
+        "sha.js": "~2.4.4",
+        "source-map-support": "~0.5.4",
+        "yargs": "~16.2.0"
+      },
+      "bin": {
+        "dispensary": "bin/dispensary"
+      },
+      "engines": {
+        "node": ">= 10.0.0"
+      }
+    },
+    "node_modules/dispensary/node_modules/async": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz",
+      "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==",
+      "dev": true
+    },
+    "node_modules/dispensary/node_modules/pino": {
+      "version": "6.11.3",
+      "resolved": "https://registry.npmjs.org/pino/-/pino-6.11.3.tgz",
+      "integrity": "sha512-drPtqkkSf0ufx2gaea3TryFiBHdNIdXKf5LN0hTM82SXI4xVIve2wLwNg92e1MT6m3jASLu6VO7eGY6+mmGeyw==",
+      "dev": true,
+      "dependencies": {
+        "fast-redact": "^3.0.0",
+        "fast-safe-stringify": "^2.0.7",
+        "flatstr": "^1.0.12",
+        "pino-std-serializers": "^3.1.0",
+        "quick-format-unescaped": "^4.0.3",
+        "sonic-boom": "^1.0.2"
+      },
+      "bin": {
+        "pino": "bin.js"
+      }
+    },
+    "node_modules/doctrine": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+      "dependencies": {
+        "esutils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/dom-serializer": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
+      "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
+      "dev": true,
+      "dependencies": {
+        "domelementtype": "^2.0.1",
+        "domhandler": "^4.2.0",
+        "entities": "^2.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+      }
+    },
+    "node_modules/domelementtype": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+      "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ]
+    },
+    "node_modules/domhandler": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz",
+      "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==",
+      "dev": true,
+      "dependencies": {
+        "domelementtype": "^2.2.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domhandler?sponsor=1"
+      }
+    },
+    "node_modules/domutils": {
+      "version": "2.8.0",
+      "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+      "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+      "dev": true,
+      "dependencies": {
+        "dom-serializer": "^1.0.1",
+        "domelementtype": "^2.2.0",
+        "domhandler": "^4.2.0"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domutils?sponsor=1"
+      }
+    },
+    "node_modules/dot-prop": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+      "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+      "dev": true,
+      "dependencies": {
+        "is-obj": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/download": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/download/-/download-8.0.0.tgz",
+      "integrity": "sha512-ASRY5QhDk7FK+XrQtQyvhpDKanLluEEQtWl/J7Lxuf/b+i8RYh997QeXvL85xitrmRKVlx9c7eTrcRdq2GS4eA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "archive-type": "^4.0.0",
+        "content-disposition": "^0.5.2",
+        "decompress": "^4.2.1",
+        "ext-name": "^5.0.0",
+        "file-type": "^11.1.0",
+        "filenamify": "^3.0.0",
+        "get-stream": "^4.1.0",
+        "got": "^8.3.1",
+        "make-dir": "^2.1.0",
+        "p-event": "^2.1.0",
+        "pify": "^4.0.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/dtrace-provider": {
+      "version": "0.8.8",
+      "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz",
+      "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "dependencies": {
+        "nan": "^2.14.0"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/duplexer3": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+      "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
+      "dev": true
+    },
+    "node_modules/ecc-jsbn": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+      "dev": true,
+      "dependencies": {
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.1.0"
+      }
+    },
+    "node_modules/ecdsa-sig-formatter": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+      "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+      "dev": true,
+      "dependencies": {
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+    },
+    "node_modules/encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/end-of-stream": {
+      "version": "1.4.4",
+      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+      "dev": true,
+      "dependencies": {
+        "once": "^1.4.0"
+      }
+    },
+    "node_modules/enquirer": {
+      "version": "2.3.6",
+      "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
+      "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+      "dependencies": {
+        "ansi-colors": "^4.1.1"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/entities": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+      "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
+    "node_modules/error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+      "dev": true,
+      "dependencies": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "node_modules/es6-error": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
+      "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
+      "dev": true
+    },
+    "node_modules/es6-promisify": {
       "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
-      "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
-      "requires": {
-        "@babel/highlight": "^7.0.0"
+      "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz",
+      "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/escalade": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/escape-goat": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
+      "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/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=",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/eslint": {
+      "version": "7.32.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
+      "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
+      "dependencies": {
+        "@babel/code-frame": "7.12.11",
+        "@eslint/eslintrc": "^0.4.3",
+        "@humanwhocodes/config-array": "^0.5.0",
+        "ajv": "^6.10.0",
+        "chalk": "^4.0.0",
+        "cross-spawn": "^7.0.2",
+        "debug": "^4.0.1",
+        "doctrine": "^3.0.0",
+        "enquirer": "^2.3.5",
+        "escape-string-regexp": "^4.0.0",
+        "eslint-scope": "^5.1.1",
+        "eslint-utils": "^2.1.0",
+        "eslint-visitor-keys": "^2.0.0",
+        "espree": "^7.3.1",
+        "esquery": "^1.4.0",
+        "esutils": "^2.0.2",
+        "fast-deep-equal": "^3.1.3",
+        "file-entry-cache": "^6.0.1",
+        "functional-red-black-tree": "^1.0.1",
+        "glob-parent": "^5.1.2",
+        "globals": "^13.6.0",
+        "ignore": "^4.0.6",
+        "import-fresh": "^3.0.0",
+        "imurmurhash": "^0.1.4",
+        "is-glob": "^4.0.0",
+        "js-yaml": "^3.13.1",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.4.1",
+        "lodash.merge": "^4.6.2",
+        "minimatch": "^3.0.4",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.9.1",
+        "progress": "^2.0.0",
+        "regexpp": "^3.1.0",
+        "semver": "^7.2.1",
+        "strip-ansi": "^6.0.0",
+        "strip-json-comments": "^3.1.0",
+        "table": "^6.0.9",
+        "text-table": "^0.2.0",
+        "v8-compile-cache": "^2.0.3"
+      },
+      "bin": {
+        "eslint": "bin/eslint.js"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/eslint-plugin-no-unsanitized": {
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-3.1.5.tgz",
+      "integrity": "sha512-s/6w++p1590h/H/dE2Wo660bOkaM/3OEK14Y7xm1UT0bafxkKw1Cq0ksjxkxLdH/WWd014DlsLKuD6CyNrR2Dw==",
+      "dev": true,
+      "peerDependencies": {
+        "eslint": "^5 || ^6 || ^7"
+      }
+    },
+    "node_modules/eslint-scope": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+      "dependencies": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^4.1.1"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/eslint-utils": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
+      "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
+      "dependencies": {
+        "eslint-visitor-keys": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/mysticatea"
+      }
+    },
+    "node_modules/eslint-visitor-keys": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+      "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/eslint/node_modules/@babel/code-frame": {
+      "version": "7.12.11",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
+      "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
+      "dependencies": {
+        "@babel/highlight": "^7.10.4"
+      }
+    },
+    "node_modules/eslint/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/eslint/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/eslint/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/eslint/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+    },
+    "node_modules/eslint/node_modules/escape-string-regexp": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/eslint/node_modules/eslint-visitor-keys": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+      "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/eslint/node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/eslint/node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/eslint/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/espree": {
+      "version": "7.3.1",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
+      "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
+      "dependencies": {
+        "acorn": "^7.4.0",
+        "acorn-jsx": "^5.3.1",
+        "eslint-visitor-keys": "^1.3.0"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      }
+    },
+    "node_modules/esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "bin": {
+        "esparse": "bin/esparse.js",
+        "esvalidate": "bin/esvalidate.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/esquery": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+      "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+      "dependencies": {
+        "estraverse": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/esquery/node_modules/estraverse": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+      "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+      "dependencies": {
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esrecurse/node_modules/estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/estraverse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/etag": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/event-to-promise": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.8.0.tgz",
+      "integrity": "sha1-S4TxF3K28l93Uvx02XFTGsb1tiY=",
+      "deprecated": "Use promise-toolbox/fromEvent instead",
+      "dev": true
+    },
+    "node_modules/execa": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
+      "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
+      "dev": true,
+      "dependencies": {
+        "cross-spawn": "^7.0.0",
+        "get-stream": "^5.0.0",
+        "human-signals": "^1.1.1",
+        "is-stream": "^2.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^4.0.0",
+        "onetime": "^5.1.0",
+        "signal-exit": "^3.0.2",
+        "strip-final-newline": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/execa?sponsor=1"
+      }
+    },
+    "node_modules/execa/node_modules/get-stream": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+      "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+      "dev": true,
+      "dependencies": {
+        "pump": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/execa/node_modules/is-stream": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/express": {
+      "version": "4.17.1",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "accepts": "~1.3.7",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.19.0",
+        "content-disposition": "0.5.3",
+        "content-type": "~1.0.4",
+        "cookie": "0.4.0",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "~1.1.2",
+        "fresh": "0.5.2",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.5",
+        "qs": "6.7.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.1.2",
+        "send": "0.17.1",
+        "serve-static": "1.14.1",
+        "setprototypeof": "1.1.1",
+        "statuses": "~1.5.0",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/express/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/express/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/express/node_modules/path-to-regexp": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/ext-list": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
+      "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "mime-db": "^1.28.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/ext-name": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz",
+      "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ext-list": "^2.0.0",
+        "sort-keys-length": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/extend": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+      "dev": true
+    },
+    "node_modules/extsprintf": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+      "dev": true,
+      "engines": [
+        "node >=0.6.0"
+      ]
+    },
+    "node_modules/fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+    },
+    "node_modules/fast-json-patch": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-2.2.1.tgz",
+      "integrity": "sha512-4j5uBaTnsYAV5ebkidvxiLUYOwjQ+JSFljeqfTxCrH9bDmlCQaOJFS84oDJ2rAXZq2yskmk3ORfoP9DCwqFNig==",
+      "dev": true,
+      "dependencies": {
+        "fast-deep-equal": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/fast-json-patch/node_modules/fast-deep-equal": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+      "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+      "dev": true
+    },
+    "node_modules/fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+    },
+    "node_modules/fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
+    },
+    "node_modules/fast-redact": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.0.2.tgz",
+      "integrity": "sha512-YN+CYfCVRVMUZOUPeinHNKgytM1wPI/C/UCLEi56EsY2dwwvI00kIJHJoI7pMVqGoMew8SMZ2SSfHKHULHXDsg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/fast-safe-stringify": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
+      "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
+      "dev": true
+    },
+    "node_modules/fastify-warning": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/fastify-warning/-/fastify-warning-0.2.0.tgz",
+      "integrity": "sha512-s1EQguBw/9qtc1p/WTY4eq9WMRIACkj+HTcOIK1in4MV5aFaQC9ZCIt0dJ7pr5bIf4lPpHvAtP2ywpTNgs7hqw==",
+      "dev": true
+    },
+    "node_modules/fd-slicer": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+      "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
+      "dev": true,
+      "dependencies": {
+        "pend": "~1.2.0"
+      }
+    },
+    "node_modules/file-entry-cache": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+      "dependencies": {
+        "flat-cache": "^3.0.4"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      }
+    },
+    "node_modules/file-type": {
+      "version": "11.1.0",
+      "resolved": "https://registry.npmjs.org/file-type/-/file-type-11.1.0.tgz",
+      "integrity": "sha512-rM0UO7Qm9K7TWTtA6AShI/t7H5BPjDeGVDaNyg9BjHAj3PysKy7+8C8D137R88jnR3rFJZQB/tFgydl5sN5m7g==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/filename-reserved-regex": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
+      "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/filenamify": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-3.0.0.tgz",
+      "integrity": "sha512-5EFZ//MsvJgXjBAFJ+Bh2YaCTRF/VP1YOmGrgt+KJ4SFRLjI87EIdwLLuT6wQX0I4F9W41xutobzczjsOKlI/g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "filename-reserved-regex": "^2.0.0",
+        "strip-outer": "^1.0.0",
+        "trim-repeated": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/finalhandler": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "statuses": "~1.5.0",
+        "unpipe": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/finalhandler/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/finalhandler/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/firefox-profile": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.2.1.tgz",
+      "integrity": "sha512-KyA5ruS7V1nXpaHlJrKPW1jkoc9bq/WKquaKuca/ETembuxcBQPEPpxAp0biwjQCPf3sBslN/heZLdfa5Eotzg==",
+      "dev": true,
+      "dependencies": {
+        "adm-zip": "~0.5.x",
+        "fs-extra": "~9.0.1",
+        "ini": "~2.0.0",
+        "minimist": "^1.2.5",
+        "xml2js": "~0.4.23"
+      },
+      "bin": {
+        "firefox-profile": "lib/cli.js"
+      }
+    },
+    "node_modules/firefox-profile/node_modules/fs-extra": {
+      "version": "9.0.1",
+      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz",
+      "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==",
+      "dev": true,
+      "dependencies": {
+        "at-least-node": "^1.0.0",
+        "graceful-fs": "^4.2.0",
+        "jsonfile": "^6.0.1",
+        "universalify": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/first-chunk-stream": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-3.0.0.tgz",
+      "integrity": "sha512-LNRvR4hr/S8cXXkIY5pTgVP7L3tq6LlYWcg9nWBuW7o1NMxKZo6oOVa/6GIekMGI0Iw7uC+HWimMe9u/VAeKqw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/flat-cache": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+      "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+      "dependencies": {
+        "flatted": "^3.1.0",
+        "rimraf": "^3.0.2"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      }
+    },
+    "node_modules/flatstr": {
+      "version": "1.0.12",
+      "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz",
+      "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==",
+      "dev": true
+    },
+    "node_modules/flatted": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz",
+      "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA=="
+    },
+    "node_modules/fluent-syntax": {
+      "version": "0.13.0",
+      "resolved": "https://registry.npmjs.org/fluent-syntax/-/fluent-syntax-0.13.0.tgz",
+      "integrity": "sha512-0Bk1AsliuYB550zr4JV9AYhsETsD3ELXUQzdXGJfIc1Ni/ukAfBdQInDhVMYJUaT2QxoamNslwkYF7MlOrPUwg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.9.0"
+      }
+    },
+    "node_modules/forever-agent": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/form-data": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+      "dev": true,
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.6",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 0.12"
+      }
+    },
+    "node_modules/formatio": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz",
+      "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=",
+      "deprecated": "This package is unmaintained. Use @sinonjs/formatio instead",
+      "dev": true,
+      "dependencies": {
+        "samsam": "1.x"
+      }
+    },
+    "node_modules/forwarded": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/fresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/from2": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+      "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0"
+      }
+    },
+    "node_modules/fs-constants": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+      "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/fs-extra": {
+      "version": "9.1.0",
+      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+      "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+      "dev": true,
+      "dependencies": {
+        "at-least-node": "^1.0.0",
+        "graceful-fs": "^4.2.0",
+        "jsonfile": "^6.0.1",
+        "universalify": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/fs-extra/node_modules/universalify": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+      "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 10.0.0"
+      }
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+      "dev": true
+    },
+    "node_modules/functional-red-black-tree": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+      "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc="
+    },
+    "node_modules/fx-runner": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.1.0.tgz",
+      "integrity": "sha512-v/Eo69DDFW30zPdvjCYVXddjVvLy2xGeRbg0S18bPd8kEc0q9VsDoDkjyOxY5lTZsAqcQGy0OWjs3HCfRVBNSg==",
+      "dev": true,
+      "dependencies": {
+        "commander": "2.9.0",
+        "shell-quote": "1.6.1",
+        "spawn-sync": "1.0.15",
+        "when": "3.7.7",
+        "which": "1.2.4",
+        "winreg": "0.0.12"
+      },
+      "bin": {
+        "fx-runner": "bin/fx-runner"
+      }
+    },
+    "node_modules/fx-runner/node_modules/commander": {
+      "version": "2.9.0",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
+      "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
+      "dev": true,
+      "dependencies": {
+        "graceful-readlink": ">= 1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.6.x"
+      }
+    },
+    "node_modules/fx-runner/node_modules/isexe": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz",
+      "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=",
+      "dev": true
+    },
+    "node_modules/fx-runner/node_modules/which": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/which/-/which-1.2.4.tgz",
+      "integrity": "sha1-FVf5YIBgTlsRs1meufRbUKnv1yI=",
+      "dev": true,
+      "dependencies": {
+        "is-absolute": "^0.1.7",
+        "isexe": "^1.1.1"
+      },
+      "bin": {
+        "which": "bin/which"
+      }
+    },
+    "node_modules/get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+      "dev": true,
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
+      }
+    },
+    "node_modules/get-intrinsic": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+      "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/get-stream": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+      "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+      "dev": true,
+      "dependencies": {
+        "pump": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/getpass": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+      "dev": true,
+      "dependencies": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "node_modules/glob": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+      "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/glob-to-regexp": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+      "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+      "dev": true
+    },
+    "node_modules/global-dirs": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz",
+      "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==",
+      "dev": true,
+      "dependencies": {
+        "ini": "2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/globals": {
+      "version": "13.11.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz",
+      "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==",
+      "dependencies": {
+        "type-fest": "^0.20.2"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/got": {
+      "version": "8.3.2",
+      "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz",
+      "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@sindresorhus/is": "^0.7.0",
+        "cacheable-request": "^2.1.1",
+        "decompress-response": "^3.3.0",
+        "duplexer3": "^0.1.4",
+        "get-stream": "^3.0.0",
+        "into-stream": "^3.1.0",
+        "is-retry-allowed": "^1.1.0",
+        "isurl": "^1.0.0-alpha5",
+        "lowercase-keys": "^1.0.0",
+        "mimic-response": "^1.0.0",
+        "p-cancelable": "^0.4.0",
+        "p-timeout": "^2.0.1",
+        "pify": "^3.0.0",
+        "safe-buffer": "^5.1.1",
+        "timed-out": "^4.0.1",
+        "url-parse-lax": "^3.0.0",
+        "url-to-options": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/got/node_modules/get-stream": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+      "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/got/node_modules/pify": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+      "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/graceful-fs": {
+      "version": "4.2.8",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
+      "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
+      "dev": true
+    },
+    "node_modules/graceful-readlink": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
+      "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
+      "dev": true
+    },
+    "node_modules/growly": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
+      "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=",
+      "dev": true
+    },
+    "node_modules/har-schema": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/har-validator": {
+      "version": "5.1.5",
+      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
+      "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
+      "deprecated": "this library is no longer supported",
+      "dev": true,
+      "dependencies": {
+        "ajv": "^6.12.3",
+        "har-schema": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/has-symbol-support-x": {
+      "version": "1.4.2",
+      "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz",
+      "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/has-symbols": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
+      "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-to-string-tag-x": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz",
+      "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-symbol-support-x": "^1.4.1"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/has-tostringtag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+      "dev": true,
+      "dependencies": {
+        "has-symbols": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-yarn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
+      "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/htmlparser2": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+      "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+      "dev": true,
+      "funding": [
+        "https://github.com/fb55/htmlparser2?sponsor=1",
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ],
+      "dependencies": {
+        "domelementtype": "^2.0.1",
+        "domhandler": "^4.0.0",
+        "domutils": "^2.5.2",
+        "entities": "^2.0.0"
+      }
+    },
+    "node_modules/http-cache-semantics": {
+      "version": "3.8.1",
+      "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
+      "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/http-errors": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+      "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.1",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/http-errors/node_modules/inherits": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/http-signature": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+      "dev": true,
+      "dependencies": {
+        "assert-plus": "^1.0.0",
+        "jsprim": "^1.2.2",
+        "sshpk": "^1.7.0"
+      },
+      "engines": {
+        "node": ">=0.8",
+        "npm": ">=1.3.7"
+      }
+    },
+    "node_modules/human-signals": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
+      "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.12.0"
+      }
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/ieee754": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "peer": true
+    },
+    "node_modules/ignore": {
+      "version": "4.0.6",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+      "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/image-size": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.0.tgz",
+      "integrity": "sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw==",
+      "dev": true,
+      "dependencies": {
+        "queue": "6.0.2"
+      },
+      "bin": {
+        "image-size": "bin/image-size.js"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/immediate": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+      "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=",
+      "dev": true
+    },
+    "node_modules/import-fresh": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+      "dependencies": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/import-fresh/node_modules/resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-lazy": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
+      "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+      "engines": {
+        "node": ">=0.8.19"
+      }
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+    },
+    "node_modules/ini": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+      "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/into-stream": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
+      "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "from2": "^2.1.1",
+        "p-is-promise": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/invert-kv": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz",
+      "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/invert-kv?sponsor=1"
+      }
+    },
+    "node_modules/ipaddr.js": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/is-absolute": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz",
+      "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=",
+      "dev": true,
+      "dependencies": {
+        "is-relative": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-arguments": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+      "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+      "dev": true
+    },
+    "node_modules/is-ci": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+      "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+      "dev": true,
+      "dependencies": {
+        "ci-info": "^2.0.0"
+      },
+      "bin": {
+        "is-ci": "bin.js"
+      }
+    },
+    "node_modules/is-date-object": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+      "dev": true,
+      "dependencies": {
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-docker": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+      "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+      "dev": true,
+      "bin": {
+        "is-docker": "cli.js"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-installed-globally": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
+      "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
+      "dev": true,
+      "dependencies": {
+        "global-dirs": "^3.0.0",
+        "is-path-inside": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-mergeable-object": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/is-mergeable-object/-/is-mergeable-object-1.1.1.tgz",
+      "integrity": "sha512-CPduJfuGg8h8vW74WOxHtHmtQutyQBzR+3MjQ6iDHIYdbOnm1YC7jv43SqCoU8OPGTJD4nibmiryA4kmogbGrA==",
+      "dev": true
+    },
+    "node_modules/is-natural-number": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz",
+      "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/is-npm": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz",
+      "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-obj": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+      "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-object": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz",
+      "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==",
+      "dev": true,
+      "peer": true,
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-path-inside": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-plain-obj": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+      "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-regex": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/is-relative": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz",
+      "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-retry-allowed": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
+      "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-typedarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+      "dev": true
+    },
+    "node_modules/is-utf8": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+      "dev": true
+    },
+    "node_modules/is-wsl": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+      "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+      "dev": true,
+      "dependencies": {
+        "is-docker": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-yarn-global": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
+      "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==",
+      "dev": true
+    },
+    "node_modules/isarray": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+      "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+      "dev": true
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+    },
+    "node_modules/isstream": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+      "dev": true
+    },
+    "node_modules/isurl": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz",
+      "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-to-string-tag-x": "^1.2.0",
+        "is-object": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/jed": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz",
+      "integrity": "sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ=",
+      "dev": true
+    },
+    "node_modules/jquery": {
+      "version": "3.5.1",
+      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz",
+      "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==",
+      "dev": true
+    },
+    "node_modules/jquery-smooth-scroll": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/jquery-smooth-scroll/-/jquery-smooth-scroll-2.2.0.tgz",
+      "integrity": "sha1-h9wa3YQWi39Gazza7rgcgD/SKio=",
+      "dev": true,
+      "dependencies": {
+        "jquery": ">=1.7.0"
+      }
+    },
+    "node_modules/jquery-ui": {
+      "version": "1.13.0",
+      "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.0.tgz",
+      "integrity": "sha512-Osf7ECXNTYHtKBkn9xzbIf9kifNrBhfywFEKxOeB/OVctVmLlouV9mfc2qXCp6uyO4Pn72PXKOnj09qXetopCw==",
+      "dev": true,
+      "dependencies": {
+        "jquery": ">=1.8.0 <4.0.0"
+      }
+    },
+    "node_modules/jquery-ui-iconfont": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/jquery-ui-iconfont/-/jquery-ui-iconfont-2.3.2.tgz",
+      "integrity": "sha1-WwhjzM6U281q3qJCdgWZjdaNNJY=",
+      "dev": true
+    },
+    "node_modules/js-reporters": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/js-reporters/-/js-reporters-1.2.1.tgz",
+      "integrity": "sha1-+IxgjjJKM3OpW8xFrTBeXJecRZs=",
+      "dev": true
+    },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+    },
+    "node_modules/js-yaml": {
+      "version": "3.14.1",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+      "dependencies": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/jsbn": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+      "dev": true
+    },
+    "node_modules/json-buffer": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
+      "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
+      "dev": true
+    },
+    "node_modules/json-merge-patch": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/json-merge-patch/-/json-merge-patch-0.2.3.tgz",
+      "integrity": "sha1-+ixrWvh9p3uuKWalidUuI+2B/kA=",
+      "dev": true,
+      "dependencies": {
+        "deep-equal": "^1.0.0"
+      }
+    },
+    "node_modules/json-parse-even-better-errors": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+      "dev": true
+    },
+    "node_modules/json-schema": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+      "dev": true
+    },
+    "node_modules/json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+    },
+    "node_modules/json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+      "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE="
+    },
+    "node_modules/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=",
+      "dev": true
+    },
+    "node_modules/jsonfile": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+      "dev": true,
+      "dependencies": {
+        "universalify": "^2.0.0"
+      },
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "node_modules/jsonfile/node_modules/universalify": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+      "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 10.0.0"
+      }
+    },
+    "node_modules/jsonify": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+      "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/jsonwebtoken": {
+      "version": "8.5.1",
+      "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
+      "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
+      "dev": true,
+      "dependencies": {
+        "jws": "^3.2.2",
+        "lodash.includes": "^4.3.0",
+        "lodash.isboolean": "^3.0.3",
+        "lodash.isinteger": "^4.0.4",
+        "lodash.isnumber": "^3.0.3",
+        "lodash.isplainobject": "^4.0.6",
+        "lodash.isstring": "^4.0.1",
+        "lodash.once": "^4.0.0",
+        "ms": "^2.1.1",
+        "semver": "^5.6.0"
+      },
+      "engines": {
+        "node": ">=4",
+        "npm": ">=1.4.28"
+      }
+    },
+    "node_modules/jsonwebtoken/node_modules/semver": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/jsprim": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+      "dev": true,
+      "engines": [
+        "node >=0.6.0"
+      ],
+      "dependencies": {
+        "assert-plus": "1.0.0",
+        "extsprintf": "1.3.0",
+        "json-schema": "0.2.3",
+        "verror": "1.10.0"
+      }
+    },
+    "node_modules/jszip": {
+      "version": "3.7.1",
+      "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz",
+      "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==",
+      "dev": true,
+      "dependencies": {
+        "lie": "~3.3.0",
+        "pako": "~1.0.2",
+        "readable-stream": "~2.3.6",
+        "set-immediate-shim": "~1.0.1"
+      }
+    },
+    "node_modules/jwa": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
+      "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
+      "dev": true,
+      "dependencies": {
+        "buffer-equal-constant-time": "1.0.1",
+        "ecdsa-sig-formatter": "1.0.11",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/jws": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+      "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
+      "dev": true,
+      "dependencies": {
+        "jwa": "^1.4.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/keyv": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
+      "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
+      "dev": true,
+      "dependencies": {
+        "json-buffer": "3.0.0"
+      }
+    },
+    "node_modules/latest-version": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
+      "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
+      "dev": true,
+      "dependencies": {
+        "package-json": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lcid": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/lcid/-/lcid-3.1.1.tgz",
+      "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==",
+      "dev": true,
+      "dependencies": {
+        "invert-kv": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/levn": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+      "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+      "dependencies": {
+        "prelude-ls": "^1.2.1",
+        "type-check": "~0.4.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/lie": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+      "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+      "dev": true,
+      "dependencies": {
+        "immediate": "~3.0.5"
+      }
+    },
+    "node_modules/lighthouse-logger": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz",
+      "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^2.6.9",
+        "marky": "^1.2.2"
+      }
+    },
+    "node_modules/lighthouse-logger/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/lighthouse-logger/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "node_modules/lines-and-columns": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
+      "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
+      "dev": true
+    },
+    "node_modules/lodash.clonedeep": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+      "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
+    },
+    "node_modules/lodash.includes": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+      "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=",
+      "dev": true
+    },
+    "node_modules/lodash.isboolean": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+      "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=",
+      "dev": true
+    },
+    "node_modules/lodash.isinteger": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+      "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=",
+      "dev": true
+    },
+    "node_modules/lodash.isnumber": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+      "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=",
+      "dev": true
+    },
+    "node_modules/lodash.isplainobject": {
+      "version": "4.0.6",
+      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+      "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
+      "dev": true
+    },
+    "node_modules/lodash.isstring": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+      "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=",
+      "dev": true
+    },
+    "node_modules/lodash.merge": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
+    },
+    "node_modules/lodash.once": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+      "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=",
+      "dev": true
+    },
+    "node_modules/lodash.truncate": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+      "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM="
+    },
+    "node_modules/lolex": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz",
+      "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=",
+      "dev": true
+    },
+    "node_modules/lowercase-keys": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+      "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/make-dir": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+      "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "pify": "^4.0.1",
+        "semver": "^5.6.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/make-dir/node_modules/semver": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+      "dev": true,
+      "peer": true,
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/map-age-cleaner": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+      "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+      "dev": true,
+      "dependencies": {
+        "p-defer": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/marky": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.2.tgz",
+      "integrity": "sha512-k1dB2HNeaNyORco8ulVEhctyEGkKHb2YWAhDsxeFlW2nROIirsctBYzKwwS3Vza+sKTS1zO4Z+n9/+9WbGLIxQ==",
+      "dev": true
+    },
+    "node_modules/media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mem": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/mem/-/mem-5.1.1.tgz",
+      "integrity": "sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==",
+      "dev": true,
+      "dependencies": {
+        "map-age-cleaner": "^0.1.3",
+        "mimic-fn": "^2.1.0",
+        "p-is-promise": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/mem/node_modules/p-is-promise": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
+      "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/merge-stream": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+      "dev": true
+    },
+    "node_modules/methods": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "dev": true,
+      "peer": true,
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/mime-db": {
+      "version": "1.50.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz",
+      "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.33",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz",
+      "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==",
+      "dev": true,
+      "dependencies": {
+        "mime-db": "1.50.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mimic-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/mimic-response": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+      "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/minimist": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+      "dev": true
+    },
+    "node_modules/mkdirp": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "minimist": "^1.2.5"
+      },
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      }
+    },
+    "node_modules/moment": {
+      "version": "2.29.1",
+      "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
+      "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==",
+      "dev": true,
+      "optional": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+    },
+    "node_modules/multimatch": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz",
+      "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==",
+      "dev": true,
+      "dependencies": {
+        "@types/minimatch": "^3.0.3",
+        "array-differ": "^3.0.0",
+        "array-union": "^2.1.0",
+        "arrify": "^2.0.1",
+        "minimatch": "^3.0.4"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/mv": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz",
+      "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "mkdirp": "~0.5.1",
+        "ncp": "~2.0.0",
+        "rimraf": "~2.4.0"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/mv/node_modules/glob": {
+      "version": "6.0.4",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+      "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "2 || 3",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/mv/node_modules/rimraf": {
+      "version": "2.4.5",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz",
+      "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "glob": "^6.0.1"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/mz": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+      "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+      "dev": true,
+      "dependencies": {
+        "any-promise": "^1.0.0",
+        "object-assign": "^4.0.1",
+        "thenify-all": "^1.0.0"
+      }
+    },
+    "node_modules/nan": {
+      "version": "2.15.0",
+      "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz",
+      "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==",
+      "dev": true,
+      "optional": true
+    },
+    "node_modules/nanoid": {
+      "version": "3.1.30",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz",
+      "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==",
+      "dev": true,
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/native-promise-only": {
+      "version": "0.8.1",
+      "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz",
+      "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=",
+      "dev": true
+    },
+    "node_modules/natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc="
+    },
+    "node_modules/natural-compare-lite": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
+      "integrity": "sha1-F7CVgZiJef3a/gIB6TG6kzyWy7Q=",
+      "dev": true
+    },
+    "node_modules/ncp": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
+      "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
+      "dev": true,
+      "optional": true,
+      "bin": {
+        "ncp": "bin/ncp"
+      }
+    },
+    "node_modules/negotiator": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+      "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/node-forge": {
+      "version": "0.10.0",
+      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
+      "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "node_modules/node-notifier": {
+      "version": "9.0.0",
+      "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.0.tgz",
+      "integrity": "sha512-SkwNwGnMMlSPrcoeH4CSo9XyWe72acAHEJGDdPdB+CyBVHsIYaTQ4U/1wk3URsyzC75xZLg2vzU2YaALlqDF1Q==",
+      "dev": true,
+      "dependencies": {
+        "growly": "^1.3.0",
+        "is-wsl": "^2.2.0",
+        "semver": "^7.3.2",
+        "shellwords": "^0.1.1",
+        "uuid": "^8.3.0",
+        "which": "^2.0.2"
+      }
+    },
+    "node_modules/node-notifier/node_modules/uuid": {
+      "version": "8.3.2",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+      "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+      "dev": true,
+      "bin": {
+        "uuid": "dist/bin/uuid"
+      }
+    },
+    "node_modules/node-watch": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.6.0.tgz",
+      "integrity": "sha512-XAgTL05z75ptd7JSVejH1a2Dm1zmXYhuDr9l230Qk6Z7/7GPcnAs/UyJJ4ggsXSvWil8iOzwQLW0zuGUvHpG8g==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/normalize-url": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz",
+      "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "prepend-http": "^2.0.0",
+        "query-string": "^5.0.1",
+        "sort-keys": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/npm-run-path": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/nth-check": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
+      "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
+      "dev": true,
+      "dependencies": {
+        "boolbase": "^1.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/nth-check?sponsor=1"
+      }
+    },
+    "node_modules/oauth-sign": {
+      "version": "0.9.0",
+      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-is": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/on-finished": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ee-first": "1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/onetime": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+      "dev": true,
+      "dependencies": {
+        "mimic-fn": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/open": {
+      "version": "7.4.2",
+      "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
+      "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
+      "dev": true,
+      "dependencies": {
+        "is-docker": "^2.0.0",
+        "is-wsl": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/optionator": {
+      "version": "0.9.1",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
+      "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+      "dependencies": {
+        "deep-is": "^0.1.3",
+        "fast-levenshtein": "^2.0.6",
+        "levn": "^0.4.1",
+        "prelude-ls": "^1.2.1",
+        "type-check": "^0.4.0",
+        "word-wrap": "^1.2.3"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/os-locale": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-5.0.0.tgz",
+      "integrity": "sha512-tqZcNEDAIZKBEPnHPlVDvKrp7NzgLi7jRmhKiUoa2NUmhl13FtkAGLUVR+ZsYvApBQdBfYm43A4tXXQ4IrYLBA==",
+      "dev": true,
+      "dependencies": {
+        "execa": "^4.0.0",
+        "lcid": "^3.0.0",
+        "mem": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/os-shim": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz",
+      "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/p-cancelable": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz",
+      "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/p-defer": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+      "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/p-event": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz",
+      "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "p-timeout": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/p-finally": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/p-is-promise": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
+      "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/p-timeout": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz",
+      "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "p-finally": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/package-json": {
+      "version": "6.5.0",
+      "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
+      "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
+      "dev": true,
+      "dependencies": {
+        "got": "^9.6.0",
+        "registry-auth-token": "^4.0.0",
+        "registry-url": "^5.0.0",
+        "semver": "^6.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/package-json/node_modules/@sindresorhus/is": {
+      "version": "0.14.0",
+      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
+      "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/package-json/node_modules/cacheable-request": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
+      "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
+      "dev": true,
+      "dependencies": {
+        "clone-response": "^1.0.2",
+        "get-stream": "^5.1.0",
+        "http-cache-semantics": "^4.0.0",
+        "keyv": "^3.0.0",
+        "lowercase-keys": "^2.0.0",
+        "normalize-url": "^4.1.0",
+        "responselike": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/package-json/node_modules/cacheable-request/node_modules/get-stream": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+      "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+      "dev": true,
+      "dependencies": {
+        "pump": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/package-json/node_modules/cacheable-request/node_modules/lowercase-keys": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+      "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/package-json/node_modules/got": {
+      "version": "9.6.0",
+      "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
+      "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
+      "dev": true,
+      "dependencies": {
+        "@sindresorhus/is": "^0.14.0",
+        "@szmarczak/http-timer": "^1.1.2",
+        "cacheable-request": "^6.0.0",
+        "decompress-response": "^3.3.0",
+        "duplexer3": "^0.1.4",
+        "get-stream": "^4.1.0",
+        "lowercase-keys": "^1.0.1",
+        "mimic-response": "^1.0.1",
+        "p-cancelable": "^1.0.0",
+        "to-readable-stream": "^1.0.0",
+        "url-parse-lax": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/package-json/node_modules/http-cache-semantics": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
+      "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
+      "dev": true
+    },
+    "node_modules/package-json/node_modules/normalize-url": {
+      "version": "4.5.1",
+      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
+      "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/package-json/node_modules/p-cancelable": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
+      "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/package-json/node_modules/semver": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/pako": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+      "dev": true
+    },
+    "node_modules/parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "dependencies": {
+        "callsites": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parent-module/node_modules/callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parse-json": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+      "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "error-ex": "^1.3.1",
+        "json-parse-even-better-errors": "^2.3.0",
+        "lines-and-columns": "^1.1.6"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/parse5": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+      "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+      "dev": true
+    },
+    "node_modules/parse5-htmlparser2-tree-adapter": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+      "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+      "dev": true,
+      "dependencies": {
+        "parse5": "^6.0.1"
+      }
+    },
+    "node_modules/parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-key": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-parse": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+      "dev": true
+    },
+    "node_modules/path-to-regexp": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
+      "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
+      "dev": true,
+      "dependencies": {
+        "isarray": "0.0.1"
+      }
+    },
+    "node_modules/pend": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+      "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+      "dev": true
+    },
+    "node_modules/performance-now": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+      "dev": true
+    },
+    "node_modules/picocolors": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+      "dev": true
+    },
+    "node_modules/pify": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/pinkie": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pinkie-promise": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "pinkie": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pino": {
+      "version": "6.13.3",
+      "resolved": "https://registry.npmjs.org/pino/-/pino-6.13.3.tgz",
+      "integrity": "sha512-tJy6qVgkh9MwNgqX1/oYi3ehfl2Y9H0uHyEEMsBe74KinESIjdMrMQDWpcZPpPicg3VV35d/GLQZmo4QgU2Xkg==",
+      "dev": true,
+      "dependencies": {
+        "fast-redact": "^3.0.0",
+        "fast-safe-stringify": "^2.0.8",
+        "fastify-warning": "^0.2.0",
+        "flatstr": "^1.0.12",
+        "pino-std-serializers": "^3.1.0",
+        "quick-format-unescaped": "^4.0.3",
+        "sonic-boom": "^1.0.2"
+      },
+      "bin": {
+        "pino": "bin.js"
+      }
+    },
+    "node_modules/pino-std-serializers": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz",
+      "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==",
+      "dev": true
+    },
+    "node_modules/postcss": {
+      "version": "8.3.9",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz",
+      "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==",
+      "dev": true,
+      "dependencies": {
+        "nanoid": "^3.1.28",
+        "picocolors": "^0.2.1",
+        "source-map-js": "^0.6.2"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/postcss/"
+      }
+    },
+    "node_modules/prelude-ls": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+      "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/prepend-http": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+      "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/process-nextick-args": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+      "dev": true
+    },
+    "node_modules/progress": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+      "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/proxy-addr": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+      "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "forwarded": "0.2.0",
+        "ipaddr.js": "1.9.1"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/psl": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
+      "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
+      "dev": true
+    },
+    "node_modules/pump": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+      "dev": true,
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "node_modules/punycode": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/pupa": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
+      "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
+      "dev": true,
+      "dependencies": {
+        "escape-goat": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/qs": {
+      "version": "6.7.0",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+      "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/query-string": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz",
+      "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "decode-uri-component": "^0.2.0",
+        "object-assign": "^4.1.0",
+        "strict-uri-encode": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/queue": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
+      "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
+      "dev": true,
+      "dependencies": {
+        "inherits": "~2.0.3"
+      }
+    },
+    "node_modules/quick-format-unescaped": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
+      "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==",
+      "dev": true
+    },
+    "node_modules/qunit": {
+      "version": "2.9.2",
+      "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.9.2.tgz",
+      "integrity": "sha512-wTOYHnioWHcx5wa85Wl15IE7D6zTZe2CQlsodS14yj7s2FZ3MviRnQluspBZsueIDEO7doiuzKlv05yfky1R7w==",
+      "dev": true,
+      "dependencies": {
+        "commander": "2.12.2",
+        "js-reporters": "1.2.1",
+        "minimatch": "3.0.4",
+        "node-watch": "0.6.0",
+        "resolve": "1.9.0"
+      },
+      "bin": {
+        "qunit": "bin/qunit.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/range-parser": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/raw-body": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
+      "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "bytes": "3.1.0",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/rc": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+      "dev": true,
+      "dependencies": {
+        "deep-extend": "^0.6.0",
+        "ini": "~1.3.0",
+        "minimist": "^1.2.0",
+        "strip-json-comments": "~2.0.1"
+      },
+      "bin": {
+        "rc": "cli.js"
+      }
+    },
+    "node_modules/rc/node_modules/ini": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+      "dev": true
+    },
+    "node_modules/readable-stream": {
+      "version": "2.3.7",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+      "dev": true,
+      "dependencies": {
+        "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"
+      }
+    },
+    "node_modules/readable-stream/node_modules/isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+      "dev": true
+    },
+    "node_modules/regenerator-runtime": {
+      "version": "0.13.9",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+      "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==",
+      "dev": true
+    },
+    "node_modules/regexp.prototype.flags": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz",
+      "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/regexpp": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
+      "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/mysticatea"
+      }
+    },
+    "node_modules/registry-auth-token": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz",
+      "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==",
+      "dev": true,
+      "dependencies": {
+        "rc": "^1.2.8"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/registry-url": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
+      "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
+      "dev": true,
+      "dependencies": {
+        "rc": "^1.2.8"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/relaxed-json": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/relaxed-json/-/relaxed-json-1.0.3.tgz",
+      "integrity": "sha512-b7wGPo7o2KE/g7SqkJDDbav6zmrEeP4TK2VpITU72J/M949TLe/23y/ZHJo+pskcGM52xIfFoT9hydwmgr1AEg==",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^2.4.2",
+        "commander": "^2.6.0"
+      },
+      "bin": {
+        "rjson": "bin/rjson.js"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/request": {
+      "version": "2.88.2",
+      "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
+      "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
+      "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
+      "dev": true,
+      "dependencies": {
+        "aws-sign2": "~0.7.0",
+        "aws4": "^1.8.0",
+        "caseless": "~0.12.0",
+        "combined-stream": "~1.0.6",
+        "extend": "~3.0.2",
+        "forever-agent": "~0.6.1",
+        "form-data": "~2.3.2",
+        "har-validator": "~5.1.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.19",
+        "oauth-sign": "~0.9.0",
+        "performance-now": "^2.1.0",
+        "qs": "~6.5.2",
+        "safe-buffer": "^5.1.2",
+        "tough-cookie": "~2.5.0",
+        "tunnel-agent": "^0.6.0",
+        "uuid": "^3.3.2"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/request/node_modules/qs": {
+      "version": "6.5.2",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/require-from-string": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+      "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/resolve": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz",
+      "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==",
+      "dev": true,
+      "dependencies": {
+        "path-parse": "^1.0.6"
+      }
+    },
+    "node_modules/responselike": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
+      "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
+      "dev": true,
+      "dependencies": {
+        "lowercase-keys": "^1.0.0"
+      }
+    },
+    "node_modules/rimraf": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/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==",
+      "dev": true
+    },
+    "node_modules/safe-compare": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/safe-compare/-/safe-compare-1.1.4.tgz",
+      "integrity": "sha512-b9wZ986HHCo/HbKrRpBJb2kqXMK9CEWIE1egeEvZsYn69ay3kdfl9nG3RyOcR+jInTDf7a86WQ1d4VJX7goSSQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "buffer-alloc": "^1.2.0"
+      }
+    },
+    "node_modules/safe-json-stringify": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz",
+      "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==",
+      "dev": true,
+      "optional": true
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "dev": true
+    },
+    "node_modules/samsam": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz",
+      "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==",
+      "deprecated": "This package has been deprecated in favour of @sinonjs/samsam",
+      "dev": true
+    },
+    "node_modules/sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+      "dev": true
+    },
+    "node_modules/seek-bzip": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz",
+      "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "commander": "^2.8.1"
+      },
+      "bin": {
+        "seek-bunzip": "bin/seek-bunzip",
+        "seek-table": "bin/seek-bzip-table"
+      }
+    },
+    "node_modules/select2": {
+      "version": "4.0.11",
+      "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.11.tgz",
+      "integrity": "sha512-8Z/yd43F5EMOkz2Mo+aE7nOx2i8nSuxGZVFkbeyCklkU+WTwCa+xdZqG+IPgZ75lkEkLD+X+f8vEG9aKBxISqA==",
+      "dev": true
+    },
+    "node_modules/semver": {
+      "version": "7.3.5",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+      "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/semver-diff": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
+      "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
+      "dev": true,
+      "dependencies": {
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/semver-diff/node_modules/semver": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/send": {
+      "version": "0.17.1",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "destroy": "~1.0.4",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "~1.7.2",
+        "mime": "1.6.0",
+        "ms": "2.1.1",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.1",
+        "statuses": "~1.5.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/send/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/send/node_modules/debug/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/send/node_modules/ms": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+      "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/serve-static": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.17.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/set-immediate-shim": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
+      "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/setprototypeof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+      "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/sha.js": {
+      "version": "2.4.11",
+      "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+      "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+      "dev": true,
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      },
+      "bin": {
+        "sha.js": "bin.js"
+      }
+    },
+    "node_modules/shebang-command": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+      "dependencies": {
+        "shebang-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/shebang-regex": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/shell-quote": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
+      "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
+      "dev": true,
+      "dependencies": {
+        "array-filter": "~0.0.0",
+        "array-map": "~0.0.0",
+        "array-reduce": "~0.0.0",
+        "jsonify": "~0.0.0"
+      }
+    },
+    "node_modules/shellwords": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
+      "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
+      "dev": true
+    },
+    "node_modules/sign-addon": {
+      "version": "3.9.0",
+      "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-3.9.0.tgz",
+      "integrity": "sha512-a8IzM3jNPSHcf2wSkhLgME4QrIe+rKTb8y/qYwGGzby5ktODAH+WBsKIgGZ9p5d2mpppPwbNEsA+YzcL117bbA==",
+      "dev": true,
+      "dependencies": {
+        "common-tags": "1.8.0",
+        "core-js": "3.18.0",
+        "deepcopy": "2.1.0",
+        "es6-error": "4.1.1",
+        "es6-promisify": "7.0.0",
+        "jsonwebtoken": "8.5.1",
+        "mz": "2.7.0",
+        "request": "2.88.2",
+        "source-map-support": "0.5.20",
+        "stream-to-promise": "3.0.0"
+      }
+    },
+    "node_modules/signal-exit": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.4.tgz",
+      "integrity": "sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==",
+      "dev": true
+    },
+    "node_modules/sinon": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.0.0.tgz",
+      "integrity": "sha1-SDN/pIkGnlMK1+L0TwewrpPTeyQ=",
+      "dev": true,
+      "dependencies": {
+        "diff": "^3.1.0",
+        "formatio": "1.2.0",
+        "lolex": "^1.6.0",
+        "native-promise-only": "^0.8.1",
+        "path-to-regexp": "^1.7.0",
+        "samsam": "^1.1.3",
+        "text-encoding": "0.6.4",
+        "type-detect": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=0.1.103"
+      }
+    },
+    "node_modules/slice-ansi": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+      "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "astral-regex": "^2.0.0",
+        "is-fullwidth-code-point": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+      }
+    },
+    "node_modules/slice-ansi/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/slice-ansi/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/slice-ansi/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+    },
+    "node_modules/sonic-boom": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz",
+      "integrity": "sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==",
+      "dev": true,
+      "dependencies": {
+        "atomic-sleep": "^1.0.0",
+        "flatstr": "^1.0.12"
+      }
+    },
+    "node_modules/sort-keys": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
+      "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "is-plain-obj": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/sort-keys-length": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz",
+      "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "sort-keys": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sort-keys-length/node_modules/sort-keys": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
+      "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "is-plain-obj": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-js": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz",
+      "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-support": {
+      "version": "0.5.20",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz",
+      "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==",
+      "dev": true,
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      }
+    },
+    "node_modules/spawn-sync": {
+      "version": "1.0.15",
+      "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz",
+      "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=",
+      "dev": true,
+      "hasInstallScript": true,
+      "dependencies": {
+        "concat-stream": "^1.4.7",
+        "os-shim": "^0.1.2"
+      }
+    },
+    "node_modules/split": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
+      "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
+      "dev": true,
+      "dependencies": {
+        "through": "2"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+    },
+    "node_modules/sshpk": {
+      "version": "1.16.1",
+      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+      "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
+      "dev": true,
+      "dependencies": {
+        "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"
+      },
+      "bin": {
+        "sshpk-conv": "bin/sshpk-conv",
+        "sshpk-sign": "bin/sshpk-sign",
+        "sshpk-verify": "bin/sshpk-verify"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/statuses": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/stream-to-array": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz",
+      "integrity": "sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M=",
+      "dev": true,
+      "dependencies": {
+        "any-promise": "^1.1.0"
+      }
+    },
+    "node_modules/stream-to-promise": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/stream-to-promise/-/stream-to-promise-3.0.0.tgz",
+      "integrity": "sha512-h+7wLeFiYegOdgTfTxjRsrT7/Op7grnKEIHWgaO1RTHwcwk7xRreMr3S8XpDfDMesSxzgM2V4CxNCFAGo6ssnA==",
+      "dev": true,
+      "dependencies": {
+        "any-promise": "~1.3.0",
+        "end-of-stream": "~1.4.1",
+        "stream-to-array": "~2.3.0"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/strict-uri-encode": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+      "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/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==",
+      "dev": true,
+      "dependencies": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-bom": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+      "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-bom-buf": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-2.0.0.tgz",
+      "integrity": "sha512-gLFNHucd6gzb8jMsl5QmZ3QgnUJmp7qn4uUSHNwEXumAp7YizoGYw19ZUVfuq4aBOQUtyn2k8X/CwzWB73W2lQ==",
+      "dev": true,
+      "dependencies": {
+        "is-utf8": "^0.2.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-bom-stream": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-4.0.0.tgz",
+      "integrity": "sha512-0ApK3iAkHv6WbgLICw/J4nhwHeDZsBxIIsOD+gHgZICL6SeJ0S9f/WZqemka9cjkTyMN5geId6e8U5WGFAn3cQ==",
+      "dev": true,
+      "dependencies": {
+        "first-chunk-stream": "^3.0.0",
+        "strip-bom-buf": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-dirs": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz",
+      "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "is-natural-number": "^4.0.1"
+      }
+    },
+    "node_modules/strip-final-newline": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+      "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/strip-json-comments": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/strip-outer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
+      "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "escape-string-regexp": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/table": {
+      "version": "6.7.2",
+      "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz",
+      "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==",
+      "dependencies": {
+        "ajv": "^8.0.1",
+        "lodash.clonedeep": "^4.5.0",
+        "lodash.truncate": "^4.4.2",
+        "slice-ansi": "^4.0.0",
+        "string-width": "^4.2.3",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
+    "node_modules/table/node_modules/ajv": {
+      "version": "8.6.3",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz",
+      "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==",
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "json-schema-traverse": "^1.0.0",
+        "require-from-string": "^2.0.2",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/table/node_modules/json-schema-traverse": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+      "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+    },
+    "node_modules/tar-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
+      "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "bl": "^1.0.0",
+        "buffer-alloc": "^1.2.0",
+        "end-of-stream": "^1.0.0",
+        "fs-constants": "^1.0.0",
+        "readable-stream": "^2.3.0",
+        "to-buffer": "^1.1.1",
+        "xtend": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/text-encoding": {
+      "version": "0.6.4",
+      "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz",
+      "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=",
+      "deprecated": "no longer maintained",
+      "dev": true
+    },
+    "node_modules/text-table": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+      "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ="
+    },
+    "node_modules/thenify": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+      "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+      "dev": true,
+      "dependencies": {
+        "any-promise": "^1.0.0"
+      }
+    },
+    "node_modules/thenify-all": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+      "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=",
+      "dev": true,
+      "dependencies": {
+        "thenify": ">= 3.1.0 < 4"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+      "dev": true
+    },
+    "node_modules/timed-out": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
+      "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/to-buffer": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
+      "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/to-readable-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
+      "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/toidentifier": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/tooltipster": {
+      "version": "4.2.6",
+      "resolved": "https://registry.npmjs.org/tooltipster/-/tooltipster-4.2.6.tgz",
+      "integrity": "sha1-+/ej9bQL2D6BV04o2WZ8+CZnvHk=",
+      "dev": true,
+      "peerDependencies": {
+        "jquery": ">=1.11.0"
+      }
+    },
+    "node_modules/tosource": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/tosource/-/tosource-1.0.0.tgz",
+      "integrity": "sha1-QtiN0RZhi88A1hBt1URvNCeQL/E=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/tough-cookie": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
+      "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+      "dev": true,
+      "dependencies": {
+        "psl": "^1.1.28",
+        "punycode": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/trim-repeated": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
+      "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "escape-string-regexp": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/tslib": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
+      "dev": true
+    },
+    "node_modules/tunnel-agent": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+      "dev": true,
+      "dependencies": {
+        "safe-buffer": "^5.0.1"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/tweetnacl": {
+      "version": "0.14.5",
+      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+      "dev": true
+    },
+    "node_modules/type-check": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+      "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+      "dependencies": {
+        "prelude-ls": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/type-detect": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+      "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/type-fest": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+      "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/typedarray": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+      "dev": true
+    },
+    "node_modules/typedarray-to-buffer": {
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+      "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+      "dev": true,
+      "dependencies": {
+        "is-typedarray": "^1.0.0"
+      }
+    },
+    "node_modules/unbzip2-stream": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
+      "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "buffer": "^5.2.1",
+        "through": "^2.3.8"
+      }
+    },
+    "node_modules/unique-string": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+      "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+      "dev": true,
+      "dependencies": {
+        "crypto-random-string": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/universalify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
+      "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
+      "dev": true,
+      "engines": {
+        "node": ">= 10.0.0"
+      }
+    },
+    "node_modules/unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/upath": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz",
+      "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==",
+      "dev": true,
+      "engines": {
+        "node": ">=4",
+        "yarn": "*"
+      }
+    },
+    "node_modules/update-notifier": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz",
+      "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==",
+      "dev": true,
+      "dependencies": {
+        "boxen": "^5.0.0",
+        "chalk": "^4.1.0",
+        "configstore": "^5.0.1",
+        "has-yarn": "^2.1.0",
+        "import-lazy": "^2.1.0",
+        "is-ci": "^2.0.0",
+        "is-installed-globally": "^0.4.0",
+        "is-npm": "^5.0.0",
+        "is-yarn-global": "^0.3.0",
+        "latest-version": "^5.1.0",
+        "pupa": "^2.1.1",
+        "semver": "^7.3.4",
+        "semver-diff": "^3.1.1",
+        "xdg-basedir": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/yeoman/update-notifier?sponsor=1"
+      }
+    },
+    "node_modules/update-notifier/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/update-notifier/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/update-notifier/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/update-notifier/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "node_modules/update-notifier/node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/update-notifier/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+      "dependencies": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "node_modules/url-parse-lax": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
+      "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
+      "dev": true,
+      "dependencies": {
+        "prepend-http": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
       }
     },
-    "@babel/highlight": {
+    "node_modules/url-to-options": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz",
+      "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+      "dev": true
+    },
+    "node_modules/utils-merge": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/uuid": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+      "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+      "deprecated": "Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.",
+      "dev": true,
+      "bin": {
+        "uuid": "bin/uuid"
+      }
+    },
+    "node_modules/v8-compile-cache": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+      "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA=="
+    },
+    "node_modules/vary": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/verror": {
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+      "dev": true,
+      "engines": [
+        "node >=0.6.0"
+      ],
+      "dependencies": {
+        "assert-plus": "^1.0.0",
+        "core-util-is": "1.0.2",
+        "extsprintf": "^1.2.0"
+      }
+    },
+    "node_modules/watchpack": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz",
+      "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==",
+      "dev": true,
+      "dependencies": {
+        "glob-to-regexp": "^0.4.1",
+        "graceful-fs": "^4.1.2"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/wcwidth": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+      "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+      "dev": true,
+      "dependencies": {
+        "defaults": "^1.0.3"
+      }
+    },
+    "node_modules/web-ext": {
+      "version": "6.5.0",
+      "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-6.5.0.tgz",
+      "integrity": "sha512-71DE73YkxKEyiy1O5Ei5Uy1ZCT0tOPriPWIkH3g+mpnd52Gr1u2buexpq2upATekhc1Mu87d9EmRqXg2Kqhszw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/runtime": "7.13.9",
+        "@devicefarmer/adbkit": "2.11.3",
+        "addons-linter": "3.20.0",
+        "bunyan": "1.8.15",
+        "camelcase": "6.2.0",
+        "chrome-launcher": "0.14.0",
+        "debounce": "1.2.0",
+        "decamelize": "5.0.0",
+        "es6-error": "4.1.1",
+        "event-to-promise": "0.8.0",
+        "firefox-profile": "4.2.1",
+        "fs-extra": "9.1.0",
+        "fx-runner": "1.1.0",
+        "import-fresh": "3.3.0",
+        "mkdirp": "1.0.4",
+        "multimatch": "5.0.0",
+        "mz": "2.7.0",
+        "node-notifier": "9.0.0",
+        "open": "7.4.2",
+        "parse-json": "5.2.0",
+        "sign-addon": "3.9.0",
+        "source-map-support": "0.5.20",
+        "strip-bom": "4.0.0",
+        "strip-json-comments": "3.1.1",
+        "tmp": "0.2.1",
+        "update-notifier": "5.1.0",
+        "watchpack": "2.1.1",
+        "ws": "7.4.6",
+        "yargs": "16.2.0",
+        "zip-dir": "2.0.0"
+      },
+      "bin": {
+        "web-ext": "bin/web-ext"
+      },
+      "engines": {
+        "node": ">=12.0.0",
+        "npm": ">=6.9.0"
+      }
+    },
+    "node_modules/web-ext/node_modules/mkdirp": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+      "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+      "dev": true,
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/web-ext/node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/web-ext/node_modules/tmp": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+      "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+      "dev": true,
+      "dependencies": {
+        "rimraf": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8.17.0"
+      }
+    },
+    "node_modules/when": {
+      "version": "3.7.7",
+      "resolved": "https://registry.npmjs.org/when/-/when-3.7.7.tgz",
+      "integrity": "sha1-q6A/w7tzbWyIsJHQE9io5ZDYRxg=",
+      "dev": true
+    },
+    "node_modules/which": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/widest-line": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
+      "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
+      "dev": true,
+      "dependencies": {
+        "string-width": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/winreg": {
+      "version": "0.0.12",
+      "resolved": "https://registry.npmjs.org/winreg/-/winreg-0.0.12.tgz",
+      "integrity": "sha1-BxBVVLoanQiXklHRKUdb/64wBrc=",
+      "dev": true
+    },
+    "node_modules/word-wrap": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/wrap-ansi": {
       "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
-      "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
-      "requires": {
-        "chalk": "^2.0.0",
-        "esutils": "^2.0.2",
-        "js-tokens": "^4.0.0"
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+      "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
       },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
       "dependencies": {
-        "js-tokens": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-          "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+    },
+    "node_modules/write-file-atomic": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+      "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+      "dev": true,
+      "dependencies": {
+        "imurmurhash": "^0.1.4",
+        "is-typedarray": "^1.0.0",
+        "signal-exit": "^3.0.2",
+        "typedarray-to-buffer": "^3.1.5"
+      }
+    },
+    "node_modules/ws": {
+      "version": "7.4.6",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
+      "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.3.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": "^5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
         }
       }
     },
-    "@babel/polyfill": {
-      "version": "7.11.5",
-      "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.11.5.tgz",
-      "integrity": "sha512-FunXnE0Sgpd61pKSj2OSOs1D44rKTD3pGOfGilZ6LGrrIH0QEtJlTjqOqdF8Bs98JmjfGhni2BBkTfv9KcKJ9g==",
+    "node_modules/xdg-basedir": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
+      "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
       "dev": true,
-      "requires": {
-        "core-js": "^2.6.5",
-        "regenerator-runtime": "^0.13.4"
+      "engines": {
+        "node": ">=8"
       }
     },
-    "@babel/runtime": {
-      "version": "7.11.2",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz",
-      "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==",
+    "node_modules/xml2js": {
+      "version": "0.4.23",
+      "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
+      "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
       "dev": true,
-      "requires": {
-        "regenerator-runtime": "^0.13.4"
+      "dependencies": {
+        "sax": ">=0.6.0",
+        "xmlbuilder": "~11.0.0"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/xmlbuilder": {
+      "version": "11.0.1",
+      "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+      "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.4"
+      }
+    },
+    "node_modules/y18n": {
+      "version": "5.0.8",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+      "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+    },
+    "node_modules/yargs": {
+      "version": "16.2.0",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+      "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+      "dev": true,
+      "dependencies": {
+        "cliui": "^7.0.2",
+        "escalade": "^3.1.1",
+        "get-caller-file": "^2.0.5",
+        "require-directory": "^2.1.1",
+        "string-width": "^4.2.0",
+        "y18n": "^5.0.5",
+        "yargs-parser": "^20.2.2"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yargs-parser": {
+      "version": "20.2.9",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+      "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yauzl": {
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+      "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
+      "dev": true,
+      "dependencies": {
+        "buffer-crc32": "~0.2.3",
+        "fd-slicer": "~1.1.0"
+      }
+    },
+    "node_modules/zip-dir": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-2.0.0.tgz",
+      "integrity": "sha512-uhlsJZWz26FLYXOD6WVuq+fIcZ3aBPGo/cFdiLlv3KNwpa52IF3ISV8fLhQLiqVu5No3VhlqlgthN6gehil1Dg==",
+      "dev": true,
+      "dependencies": {
+        "async": "^3.2.0",
+        "jszip": "^3.2.2"
       }
     },
-    "@cliqz-oss/firefox-client": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/@cliqz-oss/firefox-client/-/firefox-client-0.3.1.tgz",
-      "integrity": "sha512-RO+Tops/wGnBzWoZYkCraqyh2JqOejqJq5/a4b54HhmjTNSKdUPwAOK17EGg/zPb0nWqkuB7QyZsI9bo+ev8Kw==",
+    "node_modules/zip-dir/node_modules/async": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz",
+      "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==",
+      "dev": true
+    }
+  },
+  "dependencies": {
+    "@babel/code-frame": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
+      "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
       "dev": true,
       "requires": {
-        "colors": "0.5.x",
-        "js-select": "~0.6.0"
+        "@babel/highlight": "^7.14.5"
       }
     },
-    "@cliqz-oss/node-firefox-connect": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/@cliqz-oss/node-firefox-connect/-/node-firefox-connect-1.2.1.tgz",
-      "integrity": "sha512-O/IyiB5pfztCdmxQZg0/xeq5w+YiP3gtJz8d4We2EpLPKzbDVjOrtfLKYgVfm6Ya6mbvDge1uLkSRwaoVCWKnA==",
+    "@babel/helper-validator-identifier": {
+      "version": "7.15.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
+      "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w=="
+    },
+    "@babel/highlight": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
+      "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
+      "requires": {
+        "@babel/helper-validator-identifier": "^7.14.5",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      }
+    },
+    "@babel/runtime": {
+      "version": "7.13.9",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.9.tgz",
+      "integrity": "sha512-aY2kU+xgJ3dJ1eU6FMB9EH8dIe8dmusF1xEku52joLvw6eAFN0AI+WxCLDnpev2LEejWBAy2sBvBOBAjI3zmvA==",
       "dev": true,
       "requires": {
-        "@cliqz-oss/firefox-client": "0.3.1",
-        "es6-promise": "^2.0.1"
+        "regenerator-runtime": "^0.13.4"
       }
     },
     "@devicefarmer/adbkit": {
@@ -81,6 +6904,23 @@
         "debug": "~2.6.3",
         "node-forge": "^0.10.0",
         "split": "~0.3.3"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
       }
     },
     "@devicefarmer/adbkit-logcat": {
@@ -99,52 +6939,56 @@
       }
     },
     "@eslint/eslintrc": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz",
-      "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==",
-      "dev": true,
+      "version": "0.4.3",
+      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
+      "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
       "requires": {
         "ajv": "^6.12.4",
         "debug": "^4.1.1",
         "espree": "^7.3.0",
-        "globals": "^12.1.0",
+        "globals": "^13.9.0",
         "ignore": "^4.0.6",
         "import-fresh": "^3.2.1",
         "js-yaml": "^3.13.1",
-        "lodash": "^4.17.19",
         "minimatch": "^3.0.4",
         "strip-json-comments": "^3.1.1"
       },
       "dependencies": {
-        "debug": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
-          "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
-          "dev": true,
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-          "dev": true
-        },
         "strip-json-comments": {
           "version": "3.1.1",
           "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
-          "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
-          "dev": true
+          "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
         }
       }
     },
-    "@sindresorhus/is": {
-      "version": "0.14.0",
-      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
-      "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
+    "@humanwhocodes/config-array": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
+      "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
+      "requires": {
+        "@humanwhocodes/object-schema": "^1.2.0",
+        "debug": "^4.1.1",
+        "minimatch": "^3.0.4"
+      }
+    },
+    "@humanwhocodes/object-schema": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz",
+      "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w=="
+    },
+    "@mdn/browser-compat-data": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.0.5.tgz",
+      "integrity": "sha512-KPSNaHUl5aikqsQU7LpBntFzaPbhm5OJxD88Wv00OKDc4wudyid2wDFqLeb7VcYT9x5bND8PPFloWdK5DY0pHA==",
       "dev": true
     },
+    "@sindresorhus/is": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz",
+      "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==",
+      "dev": true,
+      "peer": true
+    },
     "@szmarczak/http-timer": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
@@ -154,384 +6998,239 @@
         "defer-to-connect": "^1.0.1"
       }
     },
+    "@types/decompress": {
+      "version": "4.2.4",
+      "resolved": "https://registry.npmjs.org/@types/decompress/-/decompress-4.2.4.tgz",
+      "integrity": "sha512-/C8kTMRTNiNuWGl5nEyKbPiMv6HA+0RbEXzFhFBEzASM6+oa4tJro9b8nj7eRlOFfuLdzUU+DS/GPDlvvzMOhA==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "@types/download": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/@types/download/-/download-8.0.1.tgz",
+      "integrity": "sha512-t5DjMD6Y1DxjXtEHl7Kt+nQn9rOmVLYD8p4Swrcc5QpgyqyqR2gXTIK6RwwMnNeFJ+ZIiIW789fQKzCrK7AOFA==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@types/decompress": "*",
+        "@types/got": "^8",
+        "@types/node": "*"
+      }
+    },
+    "@types/got": {
+      "version": "8.3.6",
+      "resolved": "https://registry.npmjs.org/@types/got/-/got-8.3.6.tgz",
+      "integrity": "sha512-nvLlj+831dhdm4LR2Ly+HTpdLyBaMynoOr6wpIxS19d/bPeHQxFU5XQ6Gp6ohBpxvCWZM1uHQIC2+ySRH1rGrQ==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "@types/node": "*"
+      }
+    },
     "@types/minimatch": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
-      "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
+      "version": "3.0.5",
+      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
+      "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
       "dev": true
     },
     "@types/node": {
-      "version": "14.11.2",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.2.tgz",
-      "integrity": "sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA==",
+      "version": "16.11.4",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.4.tgz",
+      "integrity": "sha512-TMgXmy0v2xWyuCSCJM6NCna2snndD8yvQF67J29ipdzMcsPa9u+o0tjF5+EQNdhcuZplYuouYqpc4zcd5I6amQ==",
       "dev": true
     },
-    "JSONSelect": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/JSONSelect/-/JSONSelect-0.2.1.tgz",
-      "integrity": "sha1-QVQYpSbTP+MddLTe+jyDbUhewgM=",
-      "dev": true
+    "@types/yauzl": {
+      "version": "2.9.2",
+      "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz",
+      "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "accepts": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+      "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "mime-types": "~2.1.24",
+        "negotiator": "0.6.2"
+      }
     },
     "acorn": {
       "version": "7.4.1",
       "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
-      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
-      "dev": true
+      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
     },
     "acorn-jsx": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz",
-      "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==",
-      "dev": true
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+      "requires": {}
     },
     "addons-linter": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-2.7.0.tgz",
-      "integrity": "sha512-kH+0fAKSc461PnCyYQ0/SeKcxEQ2zxCZwG2GB6xjvfkMiMAwwic87VP62Cffc8H/zHEfYuT8uFmy42ayH5mqEQ==",
+      "version": "3.20.0",
+      "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-3.20.0.tgz",
+      "integrity": "sha512-rHaahIZ34HSL1D7ZYCMs/QQPOp0pAnsOMqtNSy/zDSrkgVtlCQvSeMpx1a3ZnE2pGRVHjMIO506KWUmrN1lPRw==",
       "dev": true,
       "requires": {
-        "@babel/runtime": "7.11.2",
-        "ajv": "6.12.5",
+        "@mdn/browser-compat-data": "4.0.5",
+        "addons-moz-compare": "1.2.0",
+        "addons-scanner-utils": "5.0.0",
+        "ajv": "6.12.6",
         "ajv-merge-patch": "4.1.0",
-        "chalk": "4.1.0",
-        "cheerio": "1.0.0-rc.3",
+        "chalk": "4.1.2",
+        "cheerio": "1.0.0-rc.10",
         "columnify": "1.5.4",
         "common-tags": "1.8.0",
         "deepmerge": "4.2.2",
-        "dispensary": "0.57.0",
-        "es6-promisify": "6.1.1",
-        "eslint": "7.9.0",
-        "eslint-plugin-no-unsanitized": "3.1.2",
-        "eslint-visitor-keys": "2.0.0",
-        "espree": "7.3.0",
+        "dispensary": "0.62.0",
+        "eslint": "7.32.0",
+        "eslint-plugin-no-unsanitized": "3.1.5",
+        "eslint-visitor-keys": "3.0.0",
+        "espree": "9.0.0",
         "esprima": "4.0.1",
-        "first-chunk-stream": "4.0.0",
         "fluent-syntax": "0.13.0",
-        "fsevents": "2.1.3",
-        "glob": "7.1.6",
+        "glob": "7.2.0",
+        "image-size": "1.0.0",
         "is-mergeable-object": "1.1.1",
         "jed": "1.1.1",
-        "mdn-browser-compat-data": "1.0.39",
         "os-locale": "5.0.0",
-        "pino": "6.6.1",
-        "postcss": "7.0.35",
-        "probe-image-size": "5.0.0",
+        "pino": "6.13.3",
+        "postcss": "8.3.9",
         "relaxed-json": "1.0.3",
-        "semver": "7.3.2",
-        "source-map-support": "0.5.19",
-        "strip-bom-stream": "4.0.0",
+        "semver": "7.3.5",
+        "source-map-support": "0.5.20",
         "tosource": "1.0.0",
-        "upath": "1.2.0",
-        "whatwg-url": "8.2.2",
-        "yargs": "15.4.1",
+        "upath": "2.0.1",
+        "yargs": "17.2.1",
         "yauzl": "2.10.0"
       },
       "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
-          "dev": true
-        },
-        "chalk": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
-          "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "debug": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
-          "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
-          "dev": true,
-          "requires": {
-            "ms": "2.1.2"
-          }
-        },
-        "emoji-regex": {
-          "version": "7.0.3",
-          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-          "dev": true
-        },
-        "eslint": {
-          "version": "7.9.0",
-          "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.9.0.tgz",
-          "integrity": "sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.0.0",
-            "@eslint/eslintrc": "^0.1.3",
-            "ajv": "^6.10.0",
-            "chalk": "^4.0.0",
-            "cross-spawn": "^7.0.2",
-            "debug": "^4.0.1",
-            "doctrine": "^3.0.0",
-            "enquirer": "^2.3.5",
-            "eslint-scope": "^5.1.0",
-            "eslint-utils": "^2.1.0",
-            "eslint-visitor-keys": "^1.3.0",
-            "espree": "^7.3.0",
-            "esquery": "^1.2.0",
-            "esutils": "^2.0.2",
-            "file-entry-cache": "^5.0.1",
-            "functional-red-black-tree": "^1.0.1",
-            "glob-parent": "^5.0.0",
-            "globals": "^12.1.0",
-            "ignore": "^4.0.6",
-            "import-fresh": "^3.0.0",
-            "imurmurhash": "^0.1.4",
-            "is-glob": "^4.0.0",
-            "js-yaml": "^3.13.1",
-            "json-stable-stringify-without-jsonify": "^1.0.1",
-            "levn": "^0.4.1",
-            "lodash": "^4.17.19",
-            "minimatch": "^3.0.4",
-            "natural-compare": "^1.4.0",
-            "optionator": "^0.9.1",
-            "progress": "^2.0.0",
-            "regexpp": "^3.1.0",
-            "semver": "^7.2.1",
-            "strip-ansi": "^6.0.0",
-            "strip-json-comments": "^3.1.0",
-            "table": "^5.2.3",
-            "text-table": "^0.2.0",
-            "v8-compile-cache": "^2.0.3"
-          },
-          "dependencies": {
-            "eslint-visitor-keys": {
-              "version": "1.3.0",
-              "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
-              "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
-              "dev": true
-            }
-          }
-        },
-        "eslint-scope": {
-          "version": "5.1.1",
-          "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
-          "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
-          "dev": true,
-          "requires": {
-            "esrecurse": "^4.3.0",
-            "estraverse": "^4.1.1"
-          }
-        },
-        "eslint-utils": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
-          "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
-          "dev": true,
-          "requires": {
-            "eslint-visitor-keys": "^1.1.0"
-          },
-          "dependencies": {
-            "eslint-visitor-keys": {
-              "version": "1.3.0",
-              "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
-              "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
-              "dev": true
-            }
-          }
-        },
-        "eslint-visitor-keys": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz",
-          "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==",
-          "dev": true
-        },
-        "esprima": {
-          "version": "4.0.1",
-          "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-          "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+        "acorn": {
+          "version": "8.5.0",
+          "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz",
+          "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==",
           "dev": true
         },
-        "esrecurse": {
+        "ansi-styles": {
           "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-          "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
           "dev": true,
           "requires": {
-            "estraverse": "^5.2.0"
-          },
-          "dependencies": {
-            "estraverse": {
-              "version": "5.2.0",
-              "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
-              "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
-              "dev": true
-            }
+            "color-convert": "^2.0.1"
           }
         },
-        "file-entry-cache": {
-          "version": "5.0.1",
-          "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
-          "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
           "dev": true,
           "requires": {
-            "flat-cache": "^2.0.1"
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
           }
         },
-        "flat-cache": {
+        "color-convert": {
           "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
-          "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
-          "dev": true,
-          "requires": {
-            "flatted": "^2.0.0",
-            "rimraf": "2.6.3",
-            "write": "1.0.3"
-          }
-        },
-        "glob": {
-          "version": "7.1.6",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
-          "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
-          "dev": true,
-          "requires": {
-            "fs.realpath": "^1.0.0",
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "^3.0.4",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        },
-        "levn": {
-          "version": "0.4.1",
-          "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
-          "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
           "dev": true,
           "requires": {
-            "prelude-ls": "^1.2.1",
-            "type-check": "~0.4.0"
+            "color-name": "~1.1.4"
           }
         },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
           "dev": true
         },
-        "optionator": {
-          "version": "0.9.1",
-          "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
-          "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
-          "dev": true,
-          "requires": {
-            "deep-is": "^0.1.3",
-            "fast-levenshtein": "^2.0.6",
-            "levn": "^0.4.1",
-            "prelude-ls": "^1.2.1",
-            "type-check": "^0.4.0",
-            "word-wrap": "^1.2.3"
-          }
-        },
-        "prelude-ls": {
-          "version": "1.2.1",
-          "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
-          "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+        "eslint-visitor-keys": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz",
+          "integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==",
           "dev": true
         },
-        "rimraf": {
-          "version": "2.6.3",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
-          "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
-          "dev": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        },
-        "string-width": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^7.0.1",
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^5.1.0"
-          },
-          "dependencies": {
-            "ansi-regex": {
-              "version": "4.1.0",
-              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-              "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-              "dev": true
-            },
-            "strip-ansi": {
-              "version": "5.2.0",
-              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-              "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-              "dev": true,
-              "requires": {
-                "ansi-regex": "^4.1.0"
-              }
-            }
-          }
-        },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+        "espree": {
+          "version": "9.0.0",
+          "resolved": "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz",
+          "integrity": "sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==",
           "dev": true,
           "requires": {
-            "ansi-regex": "^5.0.0"
+            "acorn": "^8.5.0",
+            "acorn-jsx": "^5.3.1",
+            "eslint-visitor-keys": "^3.0.0"
           }
         },
-        "strip-json-comments": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
-          "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
           "dev": true
         },
-        "table": {
-          "version": "5.4.6",
-          "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
-          "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.10.2",
-            "lodash": "^4.17.14",
-            "slice-ansi": "^2.1.0",
-            "string-width": "^3.0.0"
-          }
-        },
-        "type-check": {
-          "version": "0.4.0",
-          "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
-          "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
           "dev": true,
           "requires": {
-            "prelude-ls": "^1.2.1"
+            "has-flag": "^4.0.0"
           }
         },
-        "write": {
-          "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
-          "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+        "yargs": {
+          "version": "17.2.1",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz",
+          "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==",
           "dev": true,
           "requires": {
-            "mkdirp": "^0.5.1"
+            "cliui": "^7.0.2",
+            "escalade": "^3.1.1",
+            "get-caller-file": "^2.0.5",
+            "require-directory": "^2.1.1",
+            "string-width": "^4.2.0",
+            "y18n": "^5.0.5",
+            "yargs-parser": "^20.2.2"
           }
         }
       }
     },
+    "addons-moz-compare": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/addons-moz-compare/-/addons-moz-compare-1.2.0.tgz",
+      "integrity": "sha512-COG8qk2/dubPqabfcoJW4E7pm2EQDI43iMrHnhlobvq/uRMEzx/PYJ1KaUZ97Vgg44R3QdRG5CvDsTRbMUHcDw==",
+      "dev": true
+    },
+    "addons-scanner-utils": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-5.0.0.tgz",
+      "integrity": "sha512-uENKmGryUeR07I1c8RonDZY/bkAG+zKfZ3T61JFusgY5wiARQJ5+8hI33m8sctXxPopjfxiIjHsG/g7cQzn4Yw==",
+      "dev": true,
+      "requires": {
+        "@types/yauzl": "2.9.2",
+        "common-tags": "1.8.0",
+        "first-chunk-stream": "3.0.0",
+        "strip-bom-stream": "4.0.0",
+        "upath": "2.0.1",
+        "yauzl": "2.10.0"
+      }
+    },
     "adm-zip": {
-      "version": "0.4.16",
-      "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz",
-      "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==",
+      "version": "0.5.9",
+      "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.9.tgz",
+      "integrity": "sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg==",
       "dev": true
     },
     "ajv": {
-      "version": "6.12.5",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz",
-      "integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==",
-      "dev": true,
+      "version": "6.12.6",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
       "requires": {
         "fast-deep-equal": "^3.1.1",
         "fast-json-stable-stringify": "^2.0.0",
@@ -541,239 +7240,74 @@
     },
     "ajv-merge-patch": {
       "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/ajv-merge-patch/-/ajv-merge-patch-4.1.0.tgz",
-      "integrity": "sha512-0mAYXMSauA8RZ7r+B4+EAOYcZEcO9OK5EiQCR7W7Cv4E44pJj56ZnkKLJ9/PAcOc0dT+LlV9fdDcq2TxVJfOYw==",
-      "dev": true,
-      "requires": {
-        "fast-json-patch": "^2.0.6",
-        "json-merge-patch": "^0.2.3"
-      }
-    },
-    "ansi-align": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz",
-      "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==",
-      "dev": true,
-      "requires": {
-        "string-width": "^3.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-          "dev": true
-        },
-        "emoji-regex": {
-          "version": "7.0.3",
-          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-          "dev": true
-        },
-        "string-width": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^7.0.1",
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^5.1.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          }
-        }
-      }
-    },
-    "ansi-colors": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
-      "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
-      "dev": true
-    },
-    "ansi-escapes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz",
-      "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ=="
-    },
-    "ansi-regex": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-      "dev": true
-    },
-    "ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dev": true,
-      "requires": {
-        "color-convert": "^2.0.1"
-      },
-      "dependencies": {
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true
-        }
-      }
-    },
-    "any-promise": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
-      "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=",
-      "dev": true
-    },
-    "anymatch": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
-      "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+      "resolved": "https://registry.npmjs.org/ajv-merge-patch/-/ajv-merge-patch-4.1.0.tgz",
+      "integrity": "sha512-0mAYXMSauA8RZ7r+B4+EAOYcZEcO9OK5EiQCR7W7Cv4E44pJj56ZnkKLJ9/PAcOc0dT+LlV9fdDcq2TxVJfOYw==",
       "dev": true,
-      "optional": true,
       "requires": {
-        "normalize-path": "^3.0.0",
-        "picomatch": "^2.0.4"
+        "fast-json-patch": "^2.0.6",
+        "json-merge-patch": "^0.2.3"
       }
     },
-    "archiver": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.0.2.tgz",
-      "integrity": "sha512-Tq3yV/T4wxBsD2Wign8W9VQKhaUxzzRmjEiSoOK0SLqPgDP/N1TKdYyBeIEu56T4I9iO4fKTTR0mN9NWkBA0sg==",
+    "ansi-align": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
+      "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
       "dev": true,
       "requires": {
-        "archiver-utils": "^2.1.0",
-        "async": "^3.2.0",
-        "buffer-crc32": "^0.2.1",
-        "readable-stream": "^3.6.0",
-        "readdir-glob": "^1.0.0",
-        "tar-stream": "^2.1.4",
-        "zip-stream": "^4.0.0"
-      },
-      "dependencies": {
-        "async": {
-          "version": "3.2.0",
-          "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
-          "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==",
-          "dev": true
-        }
+        "string-width": "^4.1.0"
       }
     },
-    "archiver-utils": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz",
-      "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==",
+    "ansi-colors": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+      "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA=="
+    },
+    "ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+    },
+    "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==",
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "any-promise": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+      "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=",
+      "dev": true
+    },
+    "archive-type": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz",
+      "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=",
       "dev": true,
+      "peer": true,
       "requires": {
-        "glob": "^7.1.4",
-        "graceful-fs": "^4.2.0",
-        "lazystream": "^1.0.0",
-        "lodash.defaults": "^4.2.0",
-        "lodash.difference": "^4.5.0",
-        "lodash.flatten": "^4.4.0",
-        "lodash.isplainobject": "^4.0.6",
-        "lodash.union": "^4.6.0",
-        "normalize-path": "^3.0.0",
-        "readable-stream": "^2.0.0"
+        "file-type": "^4.2.0"
       },
       "dependencies": {
-        "glob": {
-          "version": "7.1.6",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
-          "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
-          "dev": true,
-          "requires": {
-            "fs.realpath": "^1.0.0",
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "^3.0.4",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        },
-        "graceful-fs": {
-          "version": "4.2.4",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
-          "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
-          "dev": true
-        },
-        "readable-stream": {
-          "version": "2.3.7",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-          "dev": true,
-          "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"
-          }
-        },
-        "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==",
-          "dev": true
-        },
-        "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==",
+        "file-type": {
+          "version": "4.4.0",
+          "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz",
+          "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=",
           "dev": true,
-          "requires": {
-            "safe-buffer": "~5.1.0"
-          }
+          "peer": true
         }
       }
     },
     "argparse": {
-      "version": "1.0.9",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
-      "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
       "requires": {
         "sprintf-js": "~1.0.2"
       }
     },
-    "arr-diff": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
-      "dev": true,
-      "optional": true
-    },
-    "arr-flatten": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
-      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
-      "dev": true,
-      "optional": true
-    },
-    "arr-union": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
-      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
-      "dev": true,
-      "optional": true
-    },
     "array-differ": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz",
@@ -786,6 +7320,13 @@
       "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
       "dev": true
     },
+    "array-flatten": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+      "dev": true,
+      "peer": true
+    },
     "array-map": {
       "version": "0.0.0",
       "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
@@ -799,29 +7340,16 @@
       "dev": true
     },
     "array-union": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
-      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
-      "requires": {
-        "array-uniq": "^1.0.1"
-      }
-    },
-    "array-uniq": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
-      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
-    },
-    "array-unique": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
-      "dev": true,
-      "optional": true
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+      "dev": true
     },
     "arrify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
-      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
+      "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
+      "dev": true
     },
     "asn1": {
       "version": "0.2.4",
@@ -838,17 +7366,10 @@
       "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
       "dev": true
     },
-    "assign-symbols": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
-      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
-      "dev": true,
-      "optional": true
-    },
     "astral-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
-      "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg=="
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+      "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ=="
     },
     "async": {
       "version": "0.2.10",
@@ -856,13 +7377,6 @@
       "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
       "dev": true
     },
-    "async-each": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
-      "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
-      "dev": true,
-      "optional": true
-    },
     "asynckit": {
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@@ -875,13 +7389,6 @@
       "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
       "dev": true
     },
-    "atob": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
-      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
-      "dev": true,
-      "optional": true
-    },
     "atomic-sleep": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
@@ -895,81 +7402,22 @@
       "dev": true
     },
     "aws4": {
-      "version": "1.10.1",
-      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz",
-      "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==",
+      "version": "1.11.0",
+      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
+      "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
       "dev": true
     },
     "balanced-match": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
-    },
-    "base": {
-      "version": "0.11.2",
-      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
-      "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "cache-base": "^1.0.1",
-        "class-utils": "^0.3.5",
-        "component-emitter": "^1.2.1",
-        "define-property": "^1.0.0",
-        "isobject": "^3.0.1",
-        "mixin-deep": "^1.2.0",
-        "pascalcase": "^0.1.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
     },
     "base64-js": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
-      "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
-      "dev": true
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+      "dev": true,
+      "peer": true
     },
     "bcrypt-pbkdf": {
       "version": "1.0.2",
@@ -980,30 +7428,15 @@
         "tweetnacl": "^0.14.3"
       }
     },
-    "binary-extensions": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
-      "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==",
-      "dev": true,
-      "optional": true
-    },
     "bl": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz",
-      "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==",
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
+      "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
       "dev": true,
+      "peer": true,
       "requires": {
-        "buffer": "^5.5.0",
-        "inherits": "^2.0.4",
-        "readable-stream": "^3.4.0"
-      },
-      "dependencies": {
-        "inherits": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-          "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-          "dev": true
-        }
+        "readable-stream": "^2.3.5",
+        "safe-buffer": "^5.1.1"
       }
     },
     "bluebird": {
@@ -1012,6 +7445,44 @@
       "integrity": "sha1-L3tOyAIWMoqf3evfacjUlC/v99g=",
       "dev": true
     },
+    "body-parser": {
+      "version": "1.19.0",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+      "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "bytes": "3.1.0",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "on-finished": "~2.3.0",
+        "qs": "6.7.0",
+        "raw-body": "2.4.0",
+        "type-is": "~1.6.17"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "peer": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true,
+          "peer": true
+        }
+      }
+    },
     "boolbase": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
@@ -1019,100 +7490,110 @@
       "dev": true
     },
     "boxen": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz",
-      "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==",
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz",
+      "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==",
       "dev": true,
       "requires": {
         "ansi-align": "^3.0.0",
-        "camelcase": "^5.3.1",
-        "chalk": "^3.0.0",
-        "cli-boxes": "^2.2.0",
-        "string-width": "^4.1.0",
-        "term-size": "^2.1.0",
-        "type-fest": "^0.8.1",
-        "widest-line": "^3.1.0"
+        "camelcase": "^6.2.0",
+        "chalk": "^4.1.0",
+        "cli-boxes": "^2.2.1",
+        "string-width": "^4.2.2",
+        "type-fest": "^0.20.2",
+        "widest-line": "^3.1.0",
+        "wrap-ansi": "^7.0.0"
       },
       "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
-          "dev": true
-        },
-        "camelcase": {
-          "version": "5.3.1",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-          "dev": true
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
         },
         "chalk": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
           "dev": true,
           "requires": {
             "ansi-styles": "^4.1.0",
             "supports-color": "^7.1.0"
           }
         },
-        "is-fullwidth-code-point": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-          "dev": true
-        },
-        "string-width": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
-          "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
           "dev": true,
           "requires": {
-            "emoji-regex": "^8.0.0",
-            "is-fullwidth-code-point": "^3.0.0",
-            "strip-ansi": "^6.0.0"
+            "color-name": "~1.1.4"
           }
         },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
           "dev": true,
           "requires": {
-            "ansi-regex": "^5.0.0"
+            "has-flag": "^4.0.0"
           }
         }
       }
     },
     "brace-expansion": {
-      "version": "1.1.8",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
-      "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
       "requires": {
         "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
       }
     },
-    "braces": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+    "buffer": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
       "dev": true,
-      "optional": true,
+      "peer": true,
       "requires": {
-        "fill-range": "^7.0.1"
+        "base64-js": "^1.3.1",
+        "ieee754": "^1.1.13"
       }
     },
-    "buffer": {
-      "version": "5.6.0",
-      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
-      "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
+    "buffer-alloc": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+      "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
       "dev": true,
+      "peer": true,
       "requires": {
-        "base64-js": "^1.0.2",
-        "ieee754": "^1.1.4"
+        "buffer-alloc-unsafe": "^1.1.0",
+        "buffer-fill": "^1.0.0"
       }
     },
+    "buffer-alloc-unsafe": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+      "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
+      "dev": true,
+      "peer": true
+    },
     "buffer-crc32": {
       "version": "0.2.13",
       "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
@@ -1125,16 +7606,23 @@
       "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=",
       "dev": true
     },
+    "buffer-fill": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+      "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
+      "dev": true,
+      "peer": true
+    },
     "buffer-from": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
       "dev": true
     },
     "bunyan": {
-      "version": "1.8.14",
-      "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.14.tgz",
-      "integrity": "sha512-LlahJUxXzZLuw/hetUQJmRgZ1LF6+cr5TPpRj6jf327AsiIq2jhYEH4oqUUkVKTor+9w2BT3oxVwhzE5lw9tcg==",
+      "version": "1.8.15",
+      "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz",
+      "integrity": "sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==",
       "dev": true,
       "requires": {
         "dtrace-provider": "~0.8",
@@ -1143,64 +7631,69 @@
         "safe-json-stringify": "~1"
       }
     },
-    "cache-base": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
-      "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+    "bytes": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+      "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
       "dev": true,
-      "optional": true,
-      "requires": {
-        "collection-visit": "^1.0.0",
-        "component-emitter": "^1.2.1",
-        "get-value": "^2.0.6",
-        "has-value": "^1.0.0",
-        "isobject": "^3.0.1",
-        "set-value": "^2.0.0",
-        "to-object-path": "^0.3.0",
-        "union-value": "^1.0.0",
-        "unset-value": "^1.0.0"
-      }
+      "peer": true
     },
     "cacheable-request": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
-      "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
-      "dev": true,
-      "requires": {
-        "clone-response": "^1.0.2",
-        "get-stream": "^5.1.0",
-        "http-cache-semantics": "^4.0.0",
-        "keyv": "^3.0.0",
-        "lowercase-keys": "^2.0.0",
-        "normalize-url": "^4.1.0",
-        "responselike": "^1.0.2"
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz",
+      "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "clone-response": "1.0.2",
+        "get-stream": "3.0.0",
+        "http-cache-semantics": "3.8.1",
+        "keyv": "3.0.0",
+        "lowercase-keys": "1.0.0",
+        "normalize-url": "2.0.1",
+        "responselike": "1.0.2"
       },
       "dependencies": {
+        "get-stream": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+          "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+          "dev": true,
+          "peer": true
+        },
+        "keyv": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz",
+          "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==",
+          "dev": true,
+          "peer": true,
+          "requires": {
+            "json-buffer": "3.0.0"
+          }
+        },
         "lowercase-keys": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
-          "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
-          "dev": true
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
+          "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=",
+          "dev": true,
+          "peer": true
         }
       }
     },
-    "caller-path": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
-      "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
+    "call-bind": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+      "dev": true,
       "requires": {
-        "callsites": "^0.2.0"
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.0.2"
       }
     },
-    "callsites": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
-      "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo="
-    },
     "camelcase": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.0.0.tgz",
-      "integrity": "sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==",
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
+      "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==",
       "dev": true
     },
     "caseless": {
@@ -1210,100 +7703,60 @@
       "dev": true
     },
     "chalk": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
-      "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
       "requires": {
-        "ansi-styles": "^3.1.0",
+        "ansi-styles": "^3.2.1",
         "escape-string-regexp": "^1.0.5",
-        "supports-color": "^4.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "3.2.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
-          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
-          "requires": {
-            "color-convert": "^1.9.0"
-          }
-        },
-        "supports-color": {
-          "version": "4.5.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
-          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
-          "requires": {
-            "has-flag": "^2.0.0"
-          }
-        }
+        "supports-color": "^5.3.0"
       }
     },
     "cheerio": {
-      "version": "1.0.0-rc.3",
-      "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz",
-      "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==",
+      "version": "1.0.0-rc.10",
+      "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
+      "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
       "dev": true,
       "requires": {
-        "css-select": "~1.2.0",
-        "dom-serializer": "~0.1.1",
-        "entities": "~1.1.1",
-        "htmlparser2": "^3.9.1",
-        "lodash": "^4.15.0",
-        "parse5": "^3.0.1"
+        "cheerio-select": "^1.5.0",
+        "dom-serializer": "^1.3.2",
+        "domhandler": "^4.2.0",
+        "htmlparser2": "^6.1.0",
+        "parse5": "^6.0.1",
+        "parse5-htmlparser2-tree-adapter": "^6.0.1",
+        "tslib": "^2.2.0"
       }
     },
-    "chokidar": {
-      "version": "3.4.2",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz",
-      "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==",
+    "cheerio-select": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz",
+      "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==",
       "dev": true,
-      "optional": true,
       "requires": {
-        "anymatch": "~3.1.1",
-        "braces": "~3.0.2",
-        "fsevents": "~2.1.2",
-        "glob-parent": "~5.1.0",
-        "is-binary-path": "~2.1.0",
-        "is-glob": "~4.0.1",
-        "normalize-path": "~3.0.0",
-        "readdirp": "~3.4.0"
+        "css-select": "^4.1.3",
+        "css-what": "^5.0.1",
+        "domelementtype": "^2.2.0",
+        "domhandler": "^4.2.0",
+        "domutils": "^2.7.0"
       }
     },
     "chrome-launcher": {
-      "version": "0.13.4",
-      "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.13.4.tgz",
-      "integrity": "sha512-nnzXiDbGKjDSK6t2I+35OAPBy5Pw/39bgkb/ZAFwMhwJbdYBp6aH+vW28ZgtjdU890Q7D+3wN/tB8N66q5Gi2A==",
+      "version": "0.14.0",
+      "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.14.0.tgz",
+      "integrity": "sha512-W//HpflaW6qBGrmuskup7g+XJZN6w03ko9QSIe5CtcTal2u0up5SeReK3Ll1Why4Ey8dPkv8XSodZyHPnGbVHQ==",
       "dev": true,
       "requires": {
         "@types/node": "*",
-        "escape-string-regexp": "^1.0.5",
+        "escape-string-regexp": "^4.0.0",
         "is-wsl": "^2.2.0",
-        "lighthouse-logger": "^1.0.0",
-        "mkdirp": "^0.5.3",
-        "rimraf": "^3.0.2"
+        "lighthouse-logger": "^1.0.0"
       },
       "dependencies": {
-        "glob": {
-          "version": "7.1.6",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
-          "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
-          "dev": true,
-          "requires": {
-            "fs.realpath": "^1.0.0",
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "^3.0.4",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        },
-        "rimraf": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-          "dev": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
+        "escape-string-regexp": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+          "dev": true
         }
       }
     },
@@ -1313,98 +7766,21 @@
       "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
       "dev": true
     },
-    "circular-json": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
-      "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A=="
-    },
-    "class-utils": {
-      "version": "0.3.6",
-      "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
-      "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "arr-union": "^3.1.0",
-        "define-property": "^0.2.5",
-        "isobject": "^3.0.0",
-        "static-extend": "^0.1.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        }
-      }
-    },
     "cli-boxes": {
       "version": "2.2.1",
       "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
       "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
       "dev": true
     },
-    "cli-cursor": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
-      "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
-      "requires": {
-        "restore-cursor": "^2.0.0"
-      }
-    },
-    "cli-width": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
-      "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
-    },
     "cliui": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
-      "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+      "version": "7.0.4",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+      "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
       "dev": true,
       "requires": {
         "string-width": "^4.2.0",
         "strip-ansi": "^6.0.0",
-        "wrap-ansi": "^6.2.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-          "dev": true
-        },
-        "string-width": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
-          "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^8.0.0",
-            "is-fullwidth-code-point": "^3.0.0",
-            "strip-ansi": "^6.0.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^5.0.0"
-          }
-        }
+        "wrap-ansi": "^7.0.0"
       }
     },
     "clone": {
@@ -1422,23 +7798,12 @@
         "mimic-response": "^1.0.0"
       }
     },
-    "collection-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
-      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "map-visit": "^1.0.0",
-        "object-visit": "^1.0.0"
-      }
-    },
     "color-convert": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
-      "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
       "requires": {
-        "color-name": "^1.1.1"
+        "color-name": "1.1.3"
       }
     },
     "color-name": {
@@ -1446,12 +7811,6 @@
       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
       "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
     },
-    "colors": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz",
-      "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=",
-      "dev": true
-    },
     "columnify": {
       "version": "1.5.4",
       "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz",
@@ -1462,6 +7821,12 @@
         "wcwidth": "^1.0.0"
       },
       "dependencies": {
+        "ansi-regex": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+          "dev": true
+        },
         "strip-ansi": {
           "version": "3.0.1",
           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
@@ -1483,9 +7848,9 @@
       }
     },
     "commander": {
-      "version": "2.20.3",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+      "version": "2.12.2",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz",
+      "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==",
       "dev": true
     },
     "common-tags": {
@@ -1494,25 +7859,6 @@
       "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==",
       "dev": true
     },
-    "component-emitter": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
-      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
-      "dev": true,
-      "optional": true
-    },
-    "compress-commons": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.0.1.tgz",
-      "integrity": "sha512-xZm9o6iikekkI0GnXCmAl3LQGZj5TBDj0zLowsqi7tJtEa3FMGSEcHcqrSJIrOAk1UG/NBbDn/F1q+MG/p/EsA==",
-      "dev": true,
-      "requires": {
-        "buffer-crc32": "^0.2.13",
-        "crc32-stream": "^4.0.0",
-        "normalize-path": "^3.0.0",
-        "readable-stream": "^3.6.0"
-      }
-    },
     "concat-map": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -1528,38 +7874,6 @@
         "inherits": "^2.0.3",
         "readable-stream": "^2.2.2",
         "typedarray": "^0.0.6"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "2.3.7",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-          "dev": true,
-          "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"
-          }
-        },
-        "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==",
-          "dev": true
-        },
-        "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==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "~5.1.0"
-          }
-        }
       }
     },
     "configstore": {
@@ -1574,19 +7888,60 @@
         "unique-string": "^2.0.0",
         "write-file-atomic": "^3.0.0",
         "xdg-basedir": "^4.0.0"
+      },
+      "dependencies": {
+        "make-dir": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+          "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+          "dev": true,
+          "requires": {
+            "semver": "^6.0.0"
+          }
+        },
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        }
       }
     },
-    "copy-descriptor": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
-      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+    "content-disposition": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+      "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
       "dev": true,
-      "optional": true
+      "peer": true,
+      "requires": {
+        "safe-buffer": "5.1.2"
+      }
+    },
+    "content-type": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+      "dev": true,
+      "peer": true
+    },
+    "cookie": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+      "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
+      "dev": true,
+      "peer": true
+    },
+    "cookie-signature": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+      "dev": true,
+      "peer": true
     },
     "core-js": {
-      "version": "2.6.11",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz",
-      "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==",
+      "version": "3.18.0",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.0.tgz",
+      "integrity": "sha512-WJeQqq6jOYgVgg4NrXKL0KLQhi0CT4ZOCvFL+3CQ5o7I6J8HkT5wd53EadMfqTDp1so/MT1J+w2ujhWcCJtN7w==",
       "dev": true
     },
     "core-util-is": {
@@ -1595,66 +7950,14 @@
       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
       "dev": true
     },
-    "crc": {
-      "version": "3.8.0",
-      "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
-      "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
-      "dev": true,
-      "requires": {
-        "buffer": "^5.1.0"
-      }
-    },
-    "crc32-stream": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.0.tgz",
-      "integrity": "sha512-tyMw2IeUX6t9jhgXI6um0eKfWq4EIDpfv5m7GX4Jzp7eVelQ360xd8EPXJhp2mHwLQIkqlnMLjzqSZI3a+0wRw==",
-      "dev": true,
-      "requires": {
-        "crc": "^3.4.4",
-        "readable-stream": "^3.4.0"
-      }
-    },
     "cross-spawn": {
       "version": "7.0.3",
       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
       "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
-      "dev": true,
       "requires": {
         "path-key": "^3.1.0",
         "shebang-command": "^2.0.0",
         "which": "^2.0.1"
-      },
-      "dependencies": {
-        "path-key": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-          "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
-          "dev": true
-        },
-        "shebang-command": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
-          "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
-          "dev": true,
-          "requires": {
-            "shebang-regex": "^3.0.0"
-          }
-        },
-        "shebang-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
-          "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
-          "dev": true
-        },
-        "which": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-          "dev": true,
-          "requires": {
-            "isexe": "^2.0.0"
-          }
-        }
       }
     },
     "crypto-random-string": {
@@ -1664,21 +7967,22 @@
       "dev": true
     },
     "css-select": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
-      "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
+      "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
       "dev": true,
       "requires": {
-        "boolbase": "~1.0.0",
-        "css-what": "2.1",
-        "domutils": "1.5.1",
-        "nth-check": "~1.0.1"
+        "boolbase": "^1.0.0",
+        "css-what": "^5.0.0",
+        "domhandler": "^4.2.0",
+        "domutils": "^2.6.0",
+        "nth-check": "^2.0.0"
       }
     },
     "css-what": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz",
-      "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz",
+      "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==",
       "dev": true
     },
     "dashdash": {
@@ -1697,18 +8001,17 @@
       "dev": true
     },
     "debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
+      "version": "4.3.2",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+      "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
       "requires": {
-        "ms": "2.0.0"
+        "ms": "2.1.2"
       }
     },
     "decamelize": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
-      "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.0.tgz",
+      "integrity": "sha512-U75DcT5hrio3KNtvdULAWnLiAPbFUC4191ldxMmj4FA/mRuBnmDwU0boNfPyFRhnan+Jm+haLeSn3P0afcBn4w==",
       "dev": true
     },
     "decode-uri-component": {
@@ -1716,7 +8019,52 @@
       "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
       "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
       "dev": true,
-      "optional": true
+      "peer": true
+    },
+    "decompress": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz",
+      "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "decompress-tar": "^4.0.0",
+        "decompress-tarbz2": "^4.0.0",
+        "decompress-targz": "^4.0.0",
+        "decompress-unzip": "^4.0.1",
+        "graceful-fs": "^4.1.10",
+        "make-dir": "^1.0.0",
+        "pify": "^2.3.0",
+        "strip-dirs": "^2.0.0"
+      },
+      "dependencies": {
+        "make-dir": {
+          "version": "1.3.0",
+          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+          "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+          "dev": true,
+          "peer": true,
+          "requires": {
+            "pify": "^3.0.0"
+          },
+          "dependencies": {
+            "pify": {
+              "version": "3.0.0",
+              "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+              "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+              "dev": true,
+              "peer": true
+            }
+          }
+        },
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "dev": true,
+          "peer": true
+        }
+      }
     },
     "decompress-response": {
       "version": "3.3.0",
@@ -1727,6 +8075,111 @@
         "mimic-response": "^1.0.0"
       }
     },
+    "decompress-tar": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz",
+      "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "file-type": "^5.2.0",
+        "is-stream": "^1.1.0",
+        "tar-stream": "^1.5.2"
+      },
+      "dependencies": {
+        "file-type": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
+          "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
+          "dev": true,
+          "peer": true
+        }
+      }
+    },
+    "decompress-tarbz2": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz",
+      "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "decompress-tar": "^4.1.0",
+        "file-type": "^6.1.0",
+        "is-stream": "^1.1.0",
+        "seek-bzip": "^1.0.5",
+        "unbzip2-stream": "^1.0.9"
+      },
+      "dependencies": {
+        "file-type": {
+          "version": "6.2.0",
+          "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz",
+          "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==",
+          "dev": true,
+          "peer": true
+        }
+      }
+    },
+    "decompress-targz": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz",
+      "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "decompress-tar": "^4.1.1",
+        "file-type": "^5.2.0",
+        "is-stream": "^1.1.0"
+      },
+      "dependencies": {
+        "file-type": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
+          "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=",
+          "dev": true,
+          "peer": true
+        }
+      }
+    },
+    "decompress-unzip": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz",
+      "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "file-type": "^3.8.0",
+        "get-stream": "^2.2.0",
+        "pify": "^2.3.0",
+        "yauzl": "^2.4.2"
+      },
+      "dependencies": {
+        "file-type": {
+          "version": "3.9.0",
+          "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
+          "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=",
+          "dev": true,
+          "peer": true
+        },
+        "get-stream": {
+          "version": "2.3.1",
+          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
+          "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=",
+          "dev": true,
+          "peer": true,
+          "requires": {
+            "object-assign": "^4.0.1",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "dev": true,
+          "peer": true
+        }
+      }
+    },
     "deep-equal": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
@@ -1748,9 +8201,9 @@
       "dev": true
     },
     "deep-is": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
-      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
     },
     "deepcopy": {
       "version": "2.1.0",
@@ -1780,74 +8233,15 @@
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
       "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
-      "dev": true
-    },
-    "define-properties": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
-      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
-      "dev": true,
-      "requires": {
-        "object-keys": "^1.0.12"
-      }
-    },
-    "define-property": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "is-descriptor": "^1.0.2",
-        "isobject": "^3.0.1"
-      },
-      "dependencies": {
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
+      "dev": true
     },
-    "del": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
-      "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
+    "define-properties": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+      "dev": true,
       "requires": {
-        "globby": "^5.0.0",
-        "is-path-cwd": "^1.0.0",
-        "is-path-in-cwd": "^1.0.0",
-        "object-assign": "^4.0.1",
-        "pify": "^2.0.0",
-        "pinkie-promise": "^2.0.0",
-        "rimraf": "^2.2.8"
+        "object-keys": "^1.0.12"
       }
     },
     "delayed-stream": {
@@ -1856,6 +8250,20 @@
       "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
       "dev": true
     },
+    "depd": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+      "dev": true,
+      "peer": true
+    },
+    "destroy": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+      "dev": true,
+      "peer": true
+    },
     "diff": {
       "version": "3.5.0",
       "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
@@ -1863,25 +8271,39 @@
       "dev": true
     },
     "dispensary": {
-      "version": "0.57.0",
-      "resolved": "https://registry.npmjs.org/dispensary/-/dispensary-0.57.0.tgz",
-      "integrity": "sha512-vgRaZa9Ok8QdrAVtx+s6heBgI1RGT+Y6VA336oPWYADZZz83K+5NOTpLamEKRyJdRY5pYLaWhV2Js7bau1JyKg==",
+      "version": "0.62.0",
+      "resolved": "https://registry.npmjs.org/dispensary/-/dispensary-0.62.0.tgz",
+      "integrity": "sha512-x8vqPX7owhzDp3Y6t/iOuTuNoWx5hlZKITlzlybETsZoY05cYDubGpwt0soLfRLAWLuxX1lq0lTc/vXtk/CDCw==",
       "dev": true,
       "requires": {
         "async": "~3.2.0",
         "natural-compare-lite": "~1.4.0",
-        "pino": "~6.6.0",
+        "pino": "~6.11.0",
         "request": "~2.88.0",
         "sha.js": "~2.4.4",
         "source-map-support": "~0.5.4",
-        "yargs": "~15.4.0"
+        "yargs": "~16.2.0"
       },
       "dependencies": {
         "async": {
-          "version": "3.2.0",
-          "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
-          "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==",
+          "version": "3.2.1",
+          "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz",
+          "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==",
           "dev": true
+        },
+        "pino": {
+          "version": "6.11.3",
+          "resolved": "https://registry.npmjs.org/pino/-/pino-6.11.3.tgz",
+          "integrity": "sha512-drPtqkkSf0ufx2gaea3TryFiBHdNIdXKf5LN0hTM82SXI4xVIve2wLwNg92e1MT6m3jASLu6VO7eGY6+mmGeyw==",
+          "dev": true,
+          "requires": {
+            "fast-redact": "^3.0.0",
+            "fast-safe-stringify": "^2.0.7",
+            "flatstr": "^1.0.12",
+            "pino-std-serializers": "^3.1.0",
+            "quick-format-unescaped": "^4.0.3",
+            "sonic-boom": "^1.0.2"
+          }
         }
       }
     },
@@ -1889,44 +8311,45 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
       "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
-      "dev": true,
       "requires": {
         "esutils": "^2.0.2"
       }
     },
     "dom-serializer": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz",
-      "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==",
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
+      "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
       "dev": true,
       "requires": {
-        "domelementtype": "^1.3.0",
-        "entities": "^1.1.1"
+        "domelementtype": "^2.0.1",
+        "domhandler": "^4.2.0",
+        "entities": "^2.0.0"
       }
     },
     "domelementtype": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
-      "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+      "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
       "dev": true
     },
     "domhandler": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
-      "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz",
+      "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==",
       "dev": true,
       "requires": {
-        "domelementtype": "1"
+        "domelementtype": "^2.2.0"
       }
     },
     "domutils": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
-      "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+      "version": "2.8.0",
+      "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+      "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
       "dev": true,
       "requires": {
-        "dom-serializer": "0",
-        "domelementtype": "1"
+        "dom-serializer": "^1.0.1",
+        "domelementtype": "^2.2.0",
+        "domhandler": "^4.2.0"
       }
     },
     "dot-prop": {
@@ -1938,6 +8361,26 @@
         "is-obj": "^2.0.0"
       }
     },
+    "download": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/download/-/download-8.0.0.tgz",
+      "integrity": "sha512-ASRY5QhDk7FK+XrQtQyvhpDKanLluEEQtWl/J7Lxuf/b+i8RYh997QeXvL85xitrmRKVlx9c7eTrcRdq2GS4eA==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "archive-type": "^4.0.0",
+        "content-disposition": "^0.5.2",
+        "decompress": "^4.2.1",
+        "ext-name": "^5.0.0",
+        "file-type": "^11.1.0",
+        "filenamify": "^3.0.0",
+        "get-stream": "^4.1.0",
+        "got": "^8.3.1",
+        "make-dir": "^2.1.0",
+        "p-event": "^2.1.0",
+        "pify": "^4.0.1"
+      }
+    },
     "dtrace-provider": {
       "version": "0.8.8",
       "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz",
@@ -1973,11 +8416,24 @@
         "safe-buffer": "^5.0.1"
       }
     },
+    "ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+      "dev": true,
+      "peer": true
+    },
     "emoji-regex": {
       "version": "8.0.0",
       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "dev": true
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+    },
+    "encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+      "dev": true,
+      "peer": true
     },
     "end-of-stream": {
       "version": "1.4.4",
@@ -1992,15 +8448,14 @@
       "version": "2.3.6",
       "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
       "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
-      "dev": true,
       "requires": {
         "ansi-colors": "^4.1.1"
       }
     },
     "entities": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
-      "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+      "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
       "dev": true
     },
     "error-ex": {
@@ -2012,53 +8467,22 @@
         "is-arrayish": "^0.2.1"
       }
     },
-    "es-abstract": {
-      "version": "1.18.0-next.1",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz",
-      "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==",
-      "dev": true,
-      "requires": {
-        "es-to-primitive": "^1.2.1",
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.1",
-        "is-callable": "^1.2.2",
-        "is-negative-zero": "^2.0.0",
-        "is-regex": "^1.1.1",
-        "object-inspect": "^1.8.0",
-        "object-keys": "^1.1.1",
-        "object.assign": "^4.1.1",
-        "string.prototype.trimend": "^1.0.1",
-        "string.prototype.trimstart": "^1.0.1"
-      }
-    },
-    "es-to-primitive": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
-      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
-      "dev": true,
-      "requires": {
-        "is-callable": "^1.1.4",
-        "is-date-object": "^1.0.1",
-        "is-symbol": "^1.0.2"
-      }
-    },
     "es6-error": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
       "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
       "dev": true
     },
-    "es6-promise": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz",
-      "integrity": "sha1-lu258v2wGZWCKyY92KratnSBgbw=",
+    "es6-promisify": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz",
+      "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==",
       "dev": true
     },
-    "es6-promisify": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz",
-      "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==",
+    "escalade": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
       "dev": true
     },
     "escape-goat": {
@@ -2067,296 +8491,181 @@
       "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
       "dev": true
     },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+      "dev": true,
+      "peer": true
+    },
     "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="
     },
     "eslint": {
-      "version": "5.10.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.10.0.tgz",
-      "integrity": "sha512-HpqzC+BHULKlnPwWae9MaVZ5AXJKpkxCVXQHrFaRw3hbDj26V/9ArYM4Rr/SQ8pi6qUPLXSSXC4RBJlyq2Z2OQ==",
-      "requires": {
-        "@babel/code-frame": "^7.0.0",
-        "ajv": "^6.5.3",
-        "chalk": "^2.1.0",
-        "cross-spawn": "^6.0.5",
+      "version": "7.32.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
+      "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
+      "requires": {
+        "@babel/code-frame": "7.12.11",
+        "@eslint/eslintrc": "^0.4.3",
+        "@humanwhocodes/config-array": "^0.5.0",
+        "ajv": "^6.10.0",
+        "chalk": "^4.0.0",
+        "cross-spawn": "^7.0.2",
         "debug": "^4.0.1",
-        "doctrine": "^2.1.0",
-        "eslint-scope": "^4.0.0",
-        "eslint-utils": "^1.3.1",
-        "eslint-visitor-keys": "^1.0.0",
-        "espree": "^5.0.0",
-        "esquery": "^1.0.1",
+        "doctrine": "^3.0.0",
+        "enquirer": "^2.3.5",
+        "escape-string-regexp": "^4.0.0",
+        "eslint-scope": "^5.1.1",
+        "eslint-utils": "^2.1.0",
+        "eslint-visitor-keys": "^2.0.0",
+        "espree": "^7.3.1",
+        "esquery": "^1.4.0",
         "esutils": "^2.0.2",
-        "file-entry-cache": "^2.0.0",
+        "fast-deep-equal": "^3.1.3",
+        "file-entry-cache": "^6.0.1",
         "functional-red-black-tree": "^1.0.1",
-        "glob": "^7.1.2",
-        "globals": "^11.7.0",
+        "glob-parent": "^5.1.2",
+        "globals": "^13.6.0",
         "ignore": "^4.0.6",
+        "import-fresh": "^3.0.0",
         "imurmurhash": "^0.1.4",
-        "inquirer": "^6.1.0",
-        "js-yaml": "^3.12.0",
+        "is-glob": "^4.0.0",
+        "js-yaml": "^3.13.1",
         "json-stable-stringify-without-jsonify": "^1.0.1",
-        "levn": "^0.3.0",
-        "lodash": "^4.17.5",
+        "levn": "^0.4.1",
+        "lodash.merge": "^4.6.2",
         "minimatch": "^3.0.4",
-        "mkdirp": "^0.5.1",
         "natural-compare": "^1.4.0",
-        "optionator": "^0.8.2",
-        "path-is-inside": "^1.0.2",
-        "pluralize": "^7.0.0",
+        "optionator": "^0.9.1",
         "progress": "^2.0.0",
-        "regexpp": "^2.0.1",
-        "require-uncached": "^1.0.3",
-        "semver": "^5.5.1",
-        "strip-ansi": "^4.0.0",
-        "strip-json-comments": "^2.0.1",
-        "table": "^5.0.2",
-        "text-table": "^0.2.0"
+        "regexpp": "^3.1.0",
+        "semver": "^7.2.1",
+        "strip-ansi": "^6.0.0",
+        "strip-json-comments": "^3.1.0",
+        "table": "^6.0.9",
+        "text-table": "^0.2.0",
+        "v8-compile-cache": "^2.0.3"
       },
       "dependencies": {
-        "acorn": {
-          "version": "6.4.1",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz",
-          "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA=="
-        },
-        "acorn-jsx": {
-          "version": "5.0.1",
-          "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz",
-          "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg=="
-        },
-        "ajv": {
-          "version": "6.6.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz",
-          "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==",
-          "requires": {
-            "fast-deep-equal": "^2.0.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "ansi-regex": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz",
-          "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w=="
-        },
-        "chardet": {
-          "version": "0.7.0",
-          "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
-          "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA=="
-        },
-        "cross-spawn": {
-          "version": "6.0.5",
-          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-          "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-          "requires": {
-            "nice-try": "^1.0.4",
-            "path-key": "^2.0.1",
-            "semver": "^5.5.0",
-            "shebang-command": "^1.2.0",
-            "which": "^1.2.9"
-          }
-        },
-        "debug": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
-          "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "doctrine": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
-          "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
-          "requires": {
-            "esutils": "^2.0.2"
-          }
-        },
-        "espree": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.0.tgz",
-          "integrity": "sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA==",
+        "@babel/code-frame": {
+          "version": "7.12.11",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
+          "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
           "requires": {
-            "acorn": "^6.0.2",
-            "acorn-jsx": "^5.0.0",
-            "eslint-visitor-keys": "^1.0.0"
+            "@babel/highlight": "^7.10.4"
           }
         },
-        "esquery": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
-          "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
           "requires": {
-            "estraverse": "^4.0.0"
+            "color-convert": "^2.0.1"
           }
         },
-        "external-editor": {
-          "version": "3.0.3",
-          "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz",
-          "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==",
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
           "requires": {
-            "chardet": "^0.7.0",
-            "iconv-lite": "^0.4.24",
-            "tmp": "^0.0.33"
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
           }
         },
-        "fast-deep-equal": {
+        "color-convert": {
           "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
-          "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
-        },
-        "globals": {
-          "version": "11.9.0",
-          "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz",
-          "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg=="
-        },
-        "iconv-lite": {
-          "version": "0.4.24",
-          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-          "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-          "requires": {
-            "safer-buffer": ">= 2.1.2 < 3"
-          }
-        },
-        "ignore": {
-          "version": "4.0.6",
-          "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
-          "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg=="
-        },
-        "inquirer": {
-          "version": "6.2.1",
-          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.1.tgz",
-          "integrity": "sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg==",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
           "requires": {
-            "ansi-escapes": "^3.0.0",
-            "chalk": "^2.0.0",
-            "cli-cursor": "^2.1.0",
-            "cli-width": "^2.0.0",
-            "external-editor": "^3.0.0",
-            "figures": "^2.0.0",
-            "lodash": "^4.17.10",
-            "mute-stream": "0.0.7",
-            "run-async": "^2.2.0",
-            "rxjs": "^6.1.0",
-            "string-width": "^2.1.0",
-            "strip-ansi": "^5.0.0",
-            "through": "^2.3.6"
-          },
-          "dependencies": {
-            "strip-ansi": {
-              "version": "5.0.0",
-              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz",
-              "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==",
-              "requires": {
-                "ansi-regex": "^4.0.0"
-              }
-            }
+            "color-name": "~1.1.4"
           }
         },
-        "js-yaml": {
-          "version": "3.13.1",
-          "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
-          "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
-          "requires": {
-            "argparse": "^1.0.7",
-            "esprima": "^4.0.0"
-          }
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
         },
-        "json-schema-traverse": {
-          "version": "0.4.1",
-          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-          "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+        "escape-string-regexp": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
         },
-        "lodash": {
-          "version": "4.17.19",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
-          "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ=="
+        "eslint-visitor-keys": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+          "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw=="
         },
-        "ms": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
         },
-        "regexpp": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
-          "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw=="
+        "strip-json-comments": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+          "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
         },
-        "rxjs": {
-          "version": "6.3.3",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
-          "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
           "requires": {
-            "tslib": "^1.9.0"
+            "has-flag": "^4.0.0"
           }
-        },
-        "semver": {
-          "version": "5.6.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
-          "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg=="
         }
       }
     },
     "eslint-plugin-no-unsanitized": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-3.1.2.tgz",
-      "integrity": "sha512-KPShfliA3Uy9qqwQx35P1fwIOeJjZkb0FbMMUFztRYRposzaynsM8JCEb952fqkidROl1kpqY80uSvn+TcWkQQ==",
-      "dev": true
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-3.1.5.tgz",
+      "integrity": "sha512-s/6w++p1590h/H/dE2Wo660bOkaM/3OEK14Y7xm1UT0bafxkKw1Cq0ksjxkxLdH/WWd014DlsLKuD6CyNrR2Dw==",
+      "dev": true,
+      "requires": {}
     },
     "eslint-scope": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz",
-      "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
       "requires": {
-        "esrecurse": "^4.1.0",
+        "esrecurse": "^4.3.0",
         "estraverse": "^4.1.1"
       }
     },
     "eslint-utils": {
-      "version": "1.4.2",
-      "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz",
-      "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
+      "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
       "requires": {
-        "eslint-visitor-keys": "^1.0.0"
+        "eslint-visitor-keys": "^1.1.0"
       }
     },
     "eslint-visitor-keys": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
-      "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ=="
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+      "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ=="
     },
     "espree": {
-      "version": "7.3.0",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz",
-      "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==",
-      "dev": true,
+      "version": "7.3.1",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
+      "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
       "requires": {
         "acorn": "^7.4.0",
-        "acorn-jsx": "^5.2.0",
+        "acorn-jsx": "^5.3.1",
         "eslint-visitor-keys": "^1.3.0"
-      },
-      "dependencies": {
-        "eslint-visitor-keys": {
-          "version": "1.3.0",
-          "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
-          "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
-          "dev": true
-        }
       }
     },
     "esprima": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
-      "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
     },
     "esquery": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz",
-      "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==",
-      "dev": true,
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+      "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
       "requires": {
         "estraverse": "^5.1.0"
       },
@@ -2364,29 +8673,41 @@
         "estraverse": {
           "version": "5.2.0",
           "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
-          "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
-          "dev": true
+          "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ=="
         }
       }
     },
     "esrecurse": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz",
-      "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=",
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
       "requires": {
-        "estraverse": "^4.1.0",
-        "object-assign": "^4.0.1"
+        "estraverse": "^5.2.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
+        }
       }
     },
     "estraverse": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
-      "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM="
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
     },
     "esutils": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
-      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
+    },
+    "etag": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+      "dev": true,
+      "peer": true
     },
     "event-to-promise": {
       "version": "0.8.0",
@@ -2395,9 +8716,9 @@
       "dev": true
     },
     "execa": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz",
-      "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
+      "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
       "dev": true,
       "requires": {
         "cross-spawn": "^7.0.0",
@@ -2411,161 +8732,115 @@
         "strip-final-newline": "^2.0.0"
       },
       "dependencies": {
-        "mimic-fn": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-          "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
-          "dev": true
-        },
-        "onetime": {
-          "version": "5.1.2",
-          "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
-          "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+        "get-stream": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+          "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
           "dev": true,
           "requires": {
-            "mimic-fn": "^2.1.0"
+            "pump": "^3.0.0"
           }
+        },
+        "is-stream": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+          "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+          "dev": true
         }
       }
     },
-    "expand-brackets": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "debug": "^2.3.3",
-        "define-property": "^0.2.5",
-        "extend-shallow": "^2.0.1",
-        "posix-character-classes": "^0.1.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
+    "express": {
+      "version": "4.17.1",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "accepts": "~1.3.7",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.19.0",
+        "content-disposition": "0.5.3",
+        "content-type": "~1.0.4",
+        "cookie": "0.4.0",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "~1.1.2",
+        "fresh": "0.5.2",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.5",
+        "qs": "6.7.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.1.2",
+        "send": "0.17.1",
+        "serve-static": "1.14.1",
+        "setprototypeof": "1.1.1",
+        "statuses": "~1.5.0",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
       },
       "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
           "dev": true,
-          "optional": true,
+          "peer": true,
           "requires": {
-            "is-descriptor": "^0.1.0"
+            "ms": "2.0.0"
           }
         },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
           "dev": true,
-          "optional": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
+          "peer": true
+        },
+        "path-to-regexp": {
+          "version": "0.1.7",
+          "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+          "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+          "dev": true,
+          "peer": true
         }
       }
     },
-    "extend": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
-      "dev": true
-    },
-    "extend-shallow": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+    "ext-list": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
+      "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==",
       "dev": true,
-      "optional": true,
+      "peer": true,
       "requires": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "dependencies": {
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        }
+        "mime-db": "^1.28.0"
       }
     },
-    "extglob": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
-      "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+    "ext-name": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz",
+      "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==",
       "dev": true,
-      "optional": true,
+      "peer": true,
       "requires": {
-        "array-unique": "^0.3.2",
-        "define-property": "^1.0.0",
-        "expand-brackets": "^2.1.4",
-        "extend-shallow": "^2.0.1",
-        "fragment-cache": "^0.2.1",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
+        "ext-list": "^2.0.0",
+        "sort-keys-length": "^1.0.0"
       }
     },
+    "extend": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+      "dev": true
+    },
     "extsprintf": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
@@ -2575,8 +8850,7 @@
     "fast-deep-equal": {
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
     },
     "fast-json-patch": {
       "version": "2.2.1",
@@ -2596,9 +8870,9 @@
       }
     },
     "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="
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
     },
     "fast-levenshtein": {
       "version": "2.0.6",
@@ -2606,15 +8880,21 @@
       "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
     },
     "fast-redact": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-2.1.0.tgz",
-      "integrity": "sha512-0LkHpTLyadJavq9sRzzyqIoMZemWli77K2/MGOkafrR64B9ItrvZ9aT+jluvNDsv0YEHjSNhlMBtbokuoqii4A==",
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.0.2.tgz",
+      "integrity": "sha512-YN+CYfCVRVMUZOUPeinHNKgytM1wPI/C/UCLEi56EsY2dwwvI00kIJHJoI7pMVqGoMew8SMZ2SSfHKHULHXDsg==",
       "dev": true
     },
     "fast-safe-stringify": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
-      "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
+      "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
+      "dev": true
+    },
+    "fastify-warning": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/fastify-warning/-/fastify-warning-0.2.0.tgz",
+      "integrity": "sha512-s1EQguBw/9qtc1p/WTY4eq9WMRIACkj+HTcOIK1in4MV5aFaQC9ZCIt0dJ7pr5bIf4lPpHvAtP2ywpTNgs7hqw==",
       "dev": true
     },
     "fd-slicer": {
@@ -2626,99 +8906,115 @@
         "pend": "~1.2.0"
       }
     },
-    "figures": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
-      "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
-      "requires": {
-        "escape-string-regexp": "^1.0.5"
-      }
-    },
     "file-entry-cache": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
-      "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
       "requires": {
-        "flat-cache": "^1.2.1",
-        "object-assign": "^4.0.1"
+        "flat-cache": "^3.0.4"
       }
     },
-    "fill-range": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+    "file-type": {
+      "version": "11.1.0",
+      "resolved": "https://registry.npmjs.org/file-type/-/file-type-11.1.0.tgz",
+      "integrity": "sha512-rM0UO7Qm9K7TWTtA6AShI/t7H5BPjDeGVDaNyg9BjHAj3PysKy7+8C8D137R88jnR3rFJZQB/tFgydl5sN5m7g==",
       "dev": true,
-      "optional": true,
-      "requires": {
-        "to-regex-range": "^5.0.1"
-      }
+      "peer": true
     },
-    "find-up": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+    "filename-reserved-regex": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
+      "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=",
       "dev": true,
-      "requires": {
-        "locate-path": "^5.0.0",
-        "path-exists": "^4.0.0"
-      }
+      "peer": true
     },
-    "firefox-profile": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.0.0.tgz",
-      "integrity": "sha512-Vw31AsjfLDbcApMDwwnhZcz3tWjV6lxB9BNf84FaV44rZXtU87cVbFMBzPEtrJdUDbwPYiuYzprp6yksYGwjSw==",
+    "filenamify": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-3.0.0.tgz",
+      "integrity": "sha512-5EFZ//MsvJgXjBAFJ+Bh2YaCTRF/VP1YOmGrgt+KJ4SFRLjI87EIdwLLuT6wQX0I4F9W41xutobzczjsOKlI/g==",
       "dev": true,
+      "peer": true,
       "requires": {
-        "adm-zip": "~0.4.x",
-        "archiver": "~5.0.2",
-        "async": "~2.5.0",
-        "fs-extra": "~4.0.2",
-        "ini": "~1.3.3",
-        "jetpack-id": "1.0.0",
-        "lazystream": "~1.0.0",
-        "lodash": "~4.17.2",
-        "minimist": "^1.1.1",
-        "uuid": "^3.0.0",
-        "xml2js": "~0.4.4"
+        "filename-reserved-regex": "^2.0.0",
+        "strip-outer": "^1.0.0",
+        "trim-repeated": "^1.0.0"
+      }
+    },
+    "finalhandler": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "statuses": "~1.5.0",
+        "unpipe": "~1.0.0"
       },
       "dependencies": {
-        "async": {
-          "version": "2.5.0",
-          "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz",
-          "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==",
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
           "dev": true,
+          "peer": true,
           "requires": {
-            "lodash": "^4.14.0"
+            "ms": "2.0.0"
           }
         },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true,
+          "peer": true
+        }
+      }
+    },
+    "firefox-profile": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.2.1.tgz",
+      "integrity": "sha512-KyA5ruS7V1nXpaHlJrKPW1jkoc9bq/WKquaKuca/ETembuxcBQPEPpxAp0biwjQCPf3sBslN/heZLdfa5Eotzg==",
+      "dev": true,
+      "requires": {
+        "adm-zip": "~0.5.x",
+        "fs-extra": "~9.0.1",
+        "ini": "~2.0.0",
+        "minimist": "^1.2.5",
+        "xml2js": "~0.4.23"
+      },
+      "dependencies": {
         "fs-extra": {
-          "version": "4.0.3",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
-          "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
+          "version": "9.0.1",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz",
+          "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==",
           "dev": true,
           "requires": {
-            "graceful-fs": "^4.1.2",
-            "jsonfile": "^4.0.0",
-            "universalify": "^0.1.0"
+            "at-least-node": "^1.0.0",
+            "graceful-fs": "^4.2.0",
+            "jsonfile": "^6.0.1",
+            "universalify": "^1.0.0"
           }
         }
       }
     },
     "first-chunk-stream": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-4.0.0.tgz",
-      "integrity": "sha512-8TOz/mJp7+zc2HN63vnJHotwceq4gQI1+/gdJVnJcG4dEB96oUxw7wV9We4QKjSFWUc/V0ADDfaGba5cDoG6EA==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-3.0.0.tgz",
+      "integrity": "sha512-LNRvR4hr/S8cXXkIY5pTgVP7L3tq6LlYWcg9nWBuW7o1NMxKZo6oOVa/6GIekMGI0Iw7uC+HWimMe9u/VAeKqw==",
       "dev": true
     },
     "flat-cache": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz",
-      "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=",
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+      "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
       "requires": {
-        "circular-json": "^0.3.1",
-        "del": "^2.0.2",
-        "graceful-fs": "^4.1.2",
-        "write": "^0.2.1"
+        "flatted": "^3.1.0",
+        "rimraf": "^3.0.2"
       }
     },
     "flatstr": {
@@ -2728,10 +9024,9 @@
       "dev": true
     },
     "flatted": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
-      "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
-      "dev": true
+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz",
+      "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA=="
     },
     "fluent-syntax": {
       "version": "0.13.0",
@@ -2739,13 +9034,6 @@
       "integrity": "sha512-0Bk1AsliuYB550zr4JV9AYhsETsD3ELXUQzdXGJfIc1Ni/ukAfBdQInDhVMYJUaT2QxoamNslwkYF7MlOrPUwg==",
       "dev": true
     },
-    "for-in": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
-      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
-      "dev": true,
-      "optional": true
-    },
     "forever-agent": {
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@@ -2772,54 +9060,54 @@
         "samsam": "1.x"
       }
     },
-    "fragment-cache": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
-      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+    "forwarded": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
       "dev": true,
-      "optional": true,
+      "peer": true
+    },
+    "fresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+      "dev": true,
+      "peer": true
+    },
+    "from2": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+      "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+      "dev": true,
+      "peer": true,
       "requires": {
-        "map-cache": "^0.2.2"
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0"
       }
     },
     "fs-constants": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
       "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
-      "dev": true
+      "dev": true,
+      "peer": true
     },
     "fs-extra": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz",
-      "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==",
+      "version": "9.1.0",
+      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+      "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
       "dev": true,
       "requires": {
         "at-least-node": "^1.0.0",
         "graceful-fs": "^4.2.0",
         "jsonfile": "^6.0.1",
-        "universalify": "^1.0.0"
+        "universalify": "^2.0.0"
       },
       "dependencies": {
-        "graceful-fs": {
-          "version": "4.2.4",
-          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
-          "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
-          "dev": true
-        },
-        "jsonfile": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz",
-          "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.1.6",
-            "universalify": "^1.0.0"
-          }
-        },
         "universalify": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
-          "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+          "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
           "dev": true
         }
       }
@@ -2829,13 +9117,6 @@
       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
       "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
     },
-    "fsevents": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
-      "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
-      "dev": true,
-      "optional": true
-    },
     "function-bind": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -2848,9 +9129,9 @@
       "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc="
     },
     "fx-runner": {
-      "version": "1.0.13",
-      "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.0.13.tgz",
-      "integrity": "sha512-Ces2bm+LNuXehkvmN1/Z+oEDkI/jHBp9xdyBtBy7hcgvF18/pv/D8F6A6kQgNkMZsnBgLEv+VvdDxyqkfkYycw==",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.1.0.tgz",
+      "integrity": "sha512-v/Eo69DDFW30zPdvjCYVXddjVvLy2xGeRbg0S18bPd8kEc0q9VsDoDkjyOxY5lTZsAqcQGy0OWjs3HCfRVBNSg==",
       "dev": true,
       "requires": {
         "commander": "2.9.0",
@@ -2894,21 +9175,25 @@
       "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
       "dev": true
     },
-    "get-stream": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
-      "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+    "get-intrinsic": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+      "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
       "dev": true,
       "requires": {
-        "pump": "^3.0.0"
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.1"
       }
     },
-    "get-value": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
-      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+    "get-stream": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+      "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
       "dev": true,
-      "optional": true
+      "requires": {
+        "pump": "^3.0.0"
+      }
     },
     "getpass": {
       "version": "0.1.7",
@@ -2920,9 +9205,9 @@
       }
     },
     "glob": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
-      "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+      "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
       "requires": {
         "fs.realpath": "^1.0.0",
         "inflight": "^1.0.4",
@@ -2933,79 +9218,83 @@
       }
     },
     "glob-parent": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
-      "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
-      "dev": true,
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
       "requires": {
         "is-glob": "^4.0.1"
       }
     },
+    "glob-to-regexp": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+      "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+      "dev": true
+    },
     "global-dirs": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz",
-      "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz",
+      "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==",
       "dev": true,
       "requires": {
-        "ini": "^1.3.5"
+        "ini": "2.0.0"
       }
     },
     "globals": {
-      "version": "12.4.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
-      "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
-      "dev": true,
-      "requires": {
-        "type-fest": "^0.8.1"
-      }
-    },
-    "globby": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
-      "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
+      "version": "13.11.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz",
+      "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==",
       "requires": {
-        "array-union": "^1.0.1",
-        "arrify": "^1.0.0",
-        "glob": "^7.0.3",
-        "object-assign": "^4.0.1",
-        "pify": "^2.0.0",
-        "pinkie-promise": "^2.0.0"
+        "type-fest": "^0.20.2"
       }
     },
     "got": {
-      "version": "9.6.0",
-      "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
-      "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
+      "version": "8.3.2",
+      "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz",
+      "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==",
       "dev": true,
+      "peer": true,
       "requires": {
-        "@sindresorhus/is": "^0.14.0",
-        "@szmarczak/http-timer": "^1.1.2",
-        "cacheable-request": "^6.0.0",
+        "@sindresorhus/is": "^0.7.0",
+        "cacheable-request": "^2.1.1",
         "decompress-response": "^3.3.0",
         "duplexer3": "^0.1.4",
-        "get-stream": "^4.1.0",
-        "lowercase-keys": "^1.0.1",
-        "mimic-response": "^1.0.1",
-        "p-cancelable": "^1.0.0",
-        "to-readable-stream": "^1.0.0",
-        "url-parse-lax": "^3.0.0"
+        "get-stream": "^3.0.0",
+        "into-stream": "^3.1.0",
+        "is-retry-allowed": "^1.1.0",
+        "isurl": "^1.0.0-alpha5",
+        "lowercase-keys": "^1.0.0",
+        "mimic-response": "^1.0.0",
+        "p-cancelable": "^0.4.0",
+        "p-timeout": "^2.0.1",
+        "pify": "^3.0.0",
+        "safe-buffer": "^5.1.1",
+        "timed-out": "^4.0.1",
+        "url-parse-lax": "^3.0.0",
+        "url-to-options": "^1.0.1"
       },
       "dependencies": {
         "get-stream": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-          "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+          "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
           "dev": true,
-          "requires": {
-            "pump": "^3.0.0"
-          }
+          "peer": true
+        },
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true,
+          "peer": true
         }
       }
     },
     "graceful-fs": {
-      "version": "4.1.11",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
-      "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
+      "version": "4.2.8",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
+      "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
+      "dev": true
     },
     "graceful-readlink": {
       "version": "1.0.1",
@@ -3045,71 +9334,40 @@
       }
     },
     "has-flag": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
-      "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+    },
+    "has-symbol-support-x": {
+      "version": "1.4.2",
+      "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz",
+      "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==",
+      "dev": true,
+      "peer": true
     },
     "has-symbols": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
-      "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
+      "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
       "dev": true
     },
-    "has-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
-      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+    "has-to-string-tag-x": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz",
+      "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==",
       "dev": true,
-      "optional": true,
+      "peer": true,
       "requires": {
-        "get-value": "^2.0.6",
-        "has-values": "^1.0.0",
-        "isobject": "^3.0.0"
+        "has-symbol-support-x": "^1.4.1"
       }
     },
-    "has-values": {
+    "has-tostringtag": {
       "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
-      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
       "dev": true,
-      "optional": true,
       "requires": {
-        "is-number": "^3.0.0",
-        "kind-of": "^4.0.0"
-      },
-      "dependencies": {
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "kind-of": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
-          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
+        "has-symbols": "^1.0.2"
       }
     },
     "has-yarn": {
@@ -3119,24 +9377,46 @@
       "dev": true
     },
     "htmlparser2": {
-      "version": "3.10.1",
-      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
-      "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+      "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
       "dev": true,
       "requires": {
-        "domelementtype": "^1.3.1",
-        "domhandler": "^2.3.0",
-        "domutils": "^1.5.1",
-        "entities": "^1.1.1",
-        "inherits": "^2.0.1",
-        "readable-stream": "^3.1.1"
+        "domelementtype": "^2.0.1",
+        "domhandler": "^4.0.0",
+        "domutils": "^2.5.2",
+        "entities": "^2.0.0"
       }
     },
     "http-cache-semantics": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
-      "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
-      "dev": true
+      "version": "3.8.1",
+      "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
+      "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
+      "dev": true,
+      "peer": true
+    },
+    "http-errors": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+      "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.1",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.0"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "dev": true,
+          "peer": true
+        }
+      }
     },
     "http-signature": {
       "version": "1.2.0",
@@ -3155,23 +9435,47 @@
       "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
       "dev": true
     },
+    "iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      }
+    },
     "ieee754": {
-      "version": "1.1.13",
-      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
-      "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
-      "dev": true
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+      "dev": true,
+      "peer": true
     },
     "ignore": {
       "version": "4.0.6",
       "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
-      "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+      "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg=="
+    },
+    "image-size": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.0.tgz",
+      "integrity": "sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw==",
+      "dev": true,
+      "requires": {
+        "queue": "6.0.2"
+      }
+    },
+    "immediate": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+      "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=",
       "dev": true
     },
     "import-fresh": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
-      "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
-      "dev": true,
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
       "requires": {
         "parent-module": "^1.0.0",
         "resolve-from": "^4.0.0"
@@ -3180,8 +9484,7 @@
         "resolve-from": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
-          "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-          "dev": true
+          "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
         }
       }
     },
@@ -3206,22 +9509,40 @@
       }
     },
     "inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
     },
     "ini": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
-      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+      "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
       "dev": true
     },
+    "into-stream": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
+      "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "from2": "^2.1.1",
+        "p-is-promise": "^1.1.0"
+      }
+    },
     "invert-kv": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz",
       "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==",
       "dev": true
     },
+    "ipaddr.js": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+      "dev": true,
+      "peer": true
+    },
     "is-absolute": {
       "version": "0.1.7",
       "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz",
@@ -3231,170 +9552,72 @@
         "is-relative": "^0.1.0"
       }
     },
-    "is-accessor-descriptor": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+    "is-arguments": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+      "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
       "dev": true,
-      "optional": true,
       "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
       }
     },
-    "is-arguments": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
-      "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==",
-      "dev": true
-    },
     "is-arrayish": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
       "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
       "dev": true
     },
-    "is-binary-path": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "binary-extensions": "^2.0.0"
-      }
-    },
-    "is-buffer": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-      "dev": true,
-      "optional": true
-    },
-    "is-callable": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz",
-      "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==",
-      "dev": true
-    },
-    "is-ci": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
-      "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
-      "dev": true,
-      "requires": {
-        "ci-info": "^2.0.0"
-      }
-    },
-    "is-data-descriptor": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
+    "is-ci": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+      "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+      "dev": true,
+      "requires": {
+        "ci-info": "^2.0.0"
       }
     },
     "is-date-object": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
-      "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
-      "dev": true
-    },
-    "is-descriptor": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
-      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
       "dev": true,
-      "optional": true,
       "requires": {
-        "is-accessor-descriptor": "^0.1.6",
-        "is-data-descriptor": "^0.1.4",
-        "kind-of": "^5.0.0"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "5.1.0",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-          "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
-          "dev": true,
-          "optional": true
-        }
+        "has-tostringtag": "^1.0.0"
       }
     },
     "is-docker": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz",
-      "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==",
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+      "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
       "dev": true
     },
-    "is-extendable": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
-      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
-      "dev": true,
-      "optional": true
-    },
     "is-extglob": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
-      "dev": true
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
     },
     "is-fullwidth-code-point": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-      "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
     },
     "is-glob": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
-      "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
-      "dev": true,
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
       "requires": {
         "is-extglob": "^2.1.1"
       }
     },
     "is-installed-globally": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz",
-      "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==",
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
+      "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
       "dev": true,
       "requires": {
-        "global-dirs": "^2.0.1",
-        "is-path-inside": "^3.0.1"
-      },
-      "dependencies": {
-        "is-path-inside": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz",
-          "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==",
-          "dev": true
-        }
+        "global-dirs": "^3.0.0",
+        "is-path-inside": "^3.0.2"
       }
     },
     "is-mergeable-object": {
@@ -3403,11 +9626,12 @@
       "integrity": "sha512-CPduJfuGg8h8vW74WOxHtHmtQutyQBzR+3MjQ6iDHIYdbOnm1YC7jv43SqCoU8OPGTJD4nibmiryA4kmogbGrA==",
       "dev": true
     },
-    "is-negative-zero": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz",
-      "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=",
-      "dev": true
+    "is-natural-number": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz",
+      "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=",
+      "dev": true,
+      "peer": true
     },
     "is-npm": {
       "version": "5.0.0",
@@ -3415,62 +9639,40 @@
       "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==",
       "dev": true
     },
-    "is-number": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "dev": true,
-      "optional": true
-    },
     "is-obj": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
       "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
       "dev": true
     },
-    "is-path-cwd": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
-      "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0="
-    },
-    "is-path-in-cwd": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz",
-      "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=",
-      "requires": {
-        "is-path-inside": "^1.0.0"
-      }
+    "is-object": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz",
+      "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==",
+      "dev": true,
+      "peer": true
     },
     "is-path-inside": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz",
-      "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=",
-      "requires": {
-        "path-is-inside": "^1.0.1"
-      }
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+      "dev": true
     },
-    "is-plain-object": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
-      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+    "is-plain-obj": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+      "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
       "dev": true,
-      "optional": true,
-      "requires": {
-        "isobject": "^3.0.1"
-      }
-    },
-    "is-promise": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
-      "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
+      "peer": true
     },
     "is-regex": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz",
-      "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==",
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
       "dev": true,
       "requires": {
-        "has-symbols": "^1.0.1"
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
       }
     },
     "is-relative": {
@@ -3479,20 +9681,19 @@
       "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=",
       "dev": true
     },
-    "is-stream": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
-      "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
-      "dev": true
+    "is-retry-allowed": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
+      "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==",
+      "dev": true,
+      "peer": true
     },
-    "is-symbol": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
-      "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+    "is-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
       "dev": true,
-      "requires": {
-        "has-symbols": "^1.0.1"
-      }
+      "peer": true
     },
     "is-typedarray": {
       "version": "1.0.0",
@@ -3506,13 +9707,6 @@
       "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
       "dev": true
     },
-    "is-windows": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
-      "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
-      "dev": true,
-      "optional": true
-    },
     "is-wsl": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
@@ -3529,9 +9723,9 @@
       "dev": true
     },
     "isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+      "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
       "dev": true
     },
     "isexe": {
@@ -3539,31 +9733,29 @@
       "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
       "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
     },
-    "isobject": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
-      "dev": true,
-      "optional": true
-    },
     "isstream": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
       "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
       "dev": true
     },
+    "isurl": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz",
+      "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "has-to-string-tag-x": "^1.2.0",
+        "is-object": "^1.0.1"
+      }
+    },
     "jed": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz",
       "integrity": "sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ=",
       "dev": true
     },
-    "jetpack-id": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/jetpack-id/-/jetpack-id-1.0.0.tgz",
-      "integrity": "sha1-LPn7rkbYB0/Ba33gBxyO/rykc6Y=",
-      "dev": true
-    },
     "jquery": {
       "version": "3.5.1",
       "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz",
@@ -3580,10 +9772,13 @@
       }
     },
     "jquery-ui": {
-      "version": "1.12.1",
-      "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.12.1.tgz",
-      "integrity": "sha1-vLQEXI3QU5wTS8FIjN0+dop6nlE=",
-      "dev": true
+      "version": "1.13.0",
+      "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.0.tgz",
+      "integrity": "sha512-Osf7ECXNTYHtKBkn9xzbIf9kifNrBhfywFEKxOeB/OVctVmLlouV9mfc2qXCp6uyO4Pn72PXKOnj09qXetopCw==",
+      "dev": true,
+      "requires": {
+        "jquery": ">=1.8.0 <4.0.0"
+      }
     },
     "jquery-ui-iconfont": {
       "version": "2.3.2",
@@ -3597,21 +9792,15 @@
       "integrity": "sha1-+IxgjjJKM3OpW8xFrTBeXJecRZs=",
       "dev": true
     },
-    "js-select": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/js-select/-/js-select-0.6.0.tgz",
-      "integrity": "sha1-woTiKCTVknrsli3N8kcXSu+w0ZA=",
-      "dev": true,
-      "requires": {
-        "JSONSelect": "0.2.1",
-        "traverse": "0.4.x"
-      }
+    "js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
     },
     "js-yaml": {
-      "version": "3.14.0",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
-      "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
-      "dev": true,
+      "version": "3.14.1",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
       "requires": {
         "argparse": "^1.0.7",
         "esprima": "^4.0.0"
@@ -3638,10 +9827,10 @@
         "deep-equal": "^1.0.0"
       }
     },
-    "json-parse-better-errors": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
-      "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+    "json-parse-even-better-errors": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
       "dev": true
     },
     "json-schema": {
@@ -3653,8 +9842,7 @@
     "json-schema-traverse": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "dev": true
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
     },
     "json-stable-stringify-without-jsonify": {
       "version": "1.0.1",
@@ -3668,12 +9856,21 @@
       "dev": true
     },
     "jsonfile": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
-      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
       "dev": true,
       "requires": {
-        "graceful-fs": "^4.1.6"
+        "graceful-fs": "^4.1.6",
+        "universalify": "^2.0.0"
+      },
+      "dependencies": {
+        "universalify": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+          "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+          "dev": true
+        }
       }
     },
     "jsonify": {
@@ -3700,12 +9897,6 @@
         "semver": "^5.6.0"
       },
       "dependencies": {
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-          "dev": true
-        },
         "semver": {
           "version": "5.7.1",
           "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@@ -3727,12 +9918,15 @@
       }
     },
     "jszip": {
-      "version": "2.6.1",
-      "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.6.1.tgz",
-      "integrity": "sha1-uI86ey5noqBIFSmCx6N1bZxIKPA=",
+      "version": "3.7.1",
+      "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz",
+      "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==",
       "dev": true,
       "requires": {
-        "pako": "~1.0.2"
+        "lie": "~3.3.0",
+        "pako": "~1.0.2",
+        "readable-stream": "~2.3.6",
+        "set-immediate-shim": "~1.0.1"
       }
     },
     "jwa": {
@@ -3765,13 +9959,6 @@
         "json-buffer": "3.0.0"
       }
     },
-    "kind-of": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
-      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
-      "dev": true,
-      "optional": true
-    },
     "latest-version": {
       "version": "5.1.0",
       "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
@@ -3781,47 +9968,6 @@
         "package-json": "^6.3.0"
       }
     },
-    "lazystream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
-      "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
-      "dev": true,
-      "requires": {
-        "readable-stream": "^2.0.5"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "2.3.7",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-          "dev": true,
-          "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"
-          }
-        },
-        "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==",
-          "dev": true
-        },
-        "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==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "~5.1.0"
-          }
-        }
-      }
-    },
     "lcid": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/lcid/-/lcid-3.1.1.tgz",
@@ -3832,22 +9978,48 @@
       }
     },
     "levn": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
-      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+      "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+      "requires": {
+        "prelude-ls": "^1.2.1",
+        "type-check": "~0.4.0"
+      }
+    },
+    "lie": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+      "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+      "dev": true,
       "requires": {
-        "prelude-ls": "~1.1.2",
-        "type-check": "~0.3.2"
+        "immediate": "~3.0.5"
       }
     },
     "lighthouse-logger": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.2.0.tgz",
-      "integrity": "sha512-wzUvdIeJZhRsG6gpZfmSCfysaxNEr43i+QT+Hie94wvHDKFLi4n7C2GqZ4sTC+PH5b5iktmXJvU87rWvhP3lHw==",
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz",
+      "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==",
       "dev": true,
       "requires": {
-        "debug": "^2.6.8",
-        "marky": "^1.2.0"
+        "debug": "^2.6.9",
+        "marky": "^1.2.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
       }
     },
     "lines-and-columns": {
@@ -3856,37 +10028,10 @@
       "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
       "dev": true
     },
-    "locate-path": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-      "dev": true,
-      "requires": {
-        "p-locate": "^4.1.0"
-      }
-    },
-    "lodash": {
-      "version": "4.17.19",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
-      "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ=="
-    },
-    "lodash.defaults": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
-      "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
-      "dev": true
-    },
-    "lodash.difference": {
+    "lodash.clonedeep": {
       "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
-      "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=",
-      "dev": true
-    },
-    "lodash.flatten": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
-      "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
-      "dev": true
+      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+      "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
     },
     "lodash.includes": {
       "version": "4.3.0",
@@ -3924,23 +10069,21 @@
       "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=",
       "dev": true
     },
+    "lodash.merge": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
+    },
     "lodash.once": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
       "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=",
       "dev": true
     },
-    "lodash.sortby": {
-      "version": "4.7.0",
-      "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
-      "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
-      "dev": true
-    },
-    "lodash.union": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
-      "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=",
-      "dev": true
+    "lodash.truncate": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+      "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM="
     },
     "lolex": {
       "version": "1.6.0",
@@ -3954,20 +10097,31 @@
       "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
       "dev": true
     },
+    "lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "requires": {
+        "yallist": "^4.0.0"
+      }
+    },
     "make-dir": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+      "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
       "dev": true,
+      "peer": true,
       "requires": {
-        "semver": "^6.0.0"
+        "pify": "^4.0.1",
+        "semver": "^5.6.0"
       },
       "dependencies": {
         "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
+          "version": "5.7.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+          "dev": true,
+          "peer": true
         }
       }
     },
@@ -3980,37 +10134,18 @@
         "p-defer": "^1.0.0"
       }
     },
-    "map-cache": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
-      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
-      "dev": true,
-      "optional": true
-    },
-    "map-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
-      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "object-visit": "^1.0.0"
-      }
-    },
     "marky": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.1.tgz",
-      "integrity": "sha512-md9k+Gxa3qLH6sUKpeC2CNkJK/Ld+bEz5X96nYwloqphQE0CKCVEKco/6jxEZixinqNdz5RFi/KaCyfbMDMAXQ==",
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.2.tgz",
+      "integrity": "sha512-k1dB2HNeaNyORco8ulVEhctyEGkKHb2YWAhDsxeFlW2nROIirsctBYzKwwS3Vza+sKTS1zO4Z+n9/+9WbGLIxQ==",
       "dev": true
     },
-    "mdn-browser-compat-data": {
-      "version": "1.0.39",
-      "resolved": "https://registry.npmjs.org/mdn-browser-compat-data/-/mdn-browser-compat-data-1.0.39.tgz",
-      "integrity": "sha512-1U5Lt+pjYxJ1mosBIdK5fr3guzV4v81f8yy0rLAj/cu7ki3ciCe85LVJJ0RLK0lP6VwFtjpXSOESfwAEpz0FyQ==",
+    "media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
       "dev": true,
-      "requires": {
-        "extend": "3.0.2"
-      }
+      "peer": true
     },
     "mem": {
       "version": "5.1.1",
@@ -4023,152 +10158,61 @@
         "p-is-promise": "^2.1.0"
       },
       "dependencies": {
-        "mimic-fn": {
+        "p-is-promise": {
           "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-          "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+          "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
+          "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
           "dev": true
         }
       }
     },
+    "merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+      "dev": true,
+      "peer": true
+    },
     "merge-stream": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
       "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
       "dev": true
     },
-    "micromatch": {
-      "version": "3.1.10",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+    "methods": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
       "dev": true,
-      "optional": true,
-      "requires": {
-        "arr-diff": "^4.0.0",
-        "array-unique": "^0.3.2",
-        "braces": "^2.3.1",
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "extglob": "^2.0.4",
-        "fragment-cache": "^0.2.1",
-        "kind-of": "^6.0.2",
-        "nanomatch": "^1.2.9",
-        "object.pick": "^1.3.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.2"
-      },
-      "dependencies": {
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "arr-flatten": "^1.1.0",
-            "array-unique": "^0.3.2",
-            "extend-shallow": "^2.0.1",
-            "fill-range": "^4.0.0",
-            "isobject": "^3.0.1",
-            "repeat-element": "^1.1.2",
-            "snapdragon": "^0.8.1",
-            "snapdragon-node": "^2.0.1",
-            "split-string": "^3.0.2",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
-          }
-        },
-        "fill-range": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
-          }
-        },
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "to-regex-range": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1"
-          }
-        }
-      }
+      "peer": true
+    },
+    "mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "dev": true,
+      "peer": true
     },
     "mime-db": {
-      "version": "1.44.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
-      "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
+      "version": "1.50.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz",
+      "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==",
       "dev": true
     },
     "mime-types": {
-      "version": "2.1.27",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
-      "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
+      "version": "2.1.33",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz",
+      "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==",
       "dev": true,
       "requires": {
-        "mime-db": "1.44.0"
+        "mime-db": "1.50.0"
       }
     },
     "mimic-fn": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz",
-      "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg="
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+      "dev": true
     },
     "mimic-response": {
       "version": "1.0.1",
@@ -4187,56 +10231,35 @@
     "minimist": {
       "version": "1.2.5",
       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+      "dev": true
     },
-    "mixin-deep": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
-      "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+    "mkdirp": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
       "dev": true,
       "optional": true,
-      "requires": {
-        "for-in": "^1.0.2",
-        "is-extendable": "^1.0.1"
-      },
-      "dependencies": {
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        }
-      }
-    },
-    "mkdirp": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz",
-      "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==",
       "requires": {
         "minimist": "^1.2.5"
       }
     },
     "moment": {
-      "version": "2.29.0",
-      "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.0.tgz",
-      "integrity": "sha512-z6IJ5HXYiuxvFTI6eiQ9dm77uE0gyy1yXNApVHqTcnIKfY9tIwEjlzsZ6u1LQXvVgKeTnv9Xm7NDvJ7lso3MtA==",
+      "version": "2.29.1",
+      "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
+      "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==",
       "dev": true,
       "optional": true
     },
     "ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
     },
     "multimatch": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz",
-      "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==",
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz",
+      "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==",
       "dev": true,
       "requires": {
         "@types/minimatch": "^3.0.3",
@@ -4244,27 +10267,8 @@
         "array-union": "^2.1.0",
         "arrify": "^2.0.1",
         "minimatch": "^3.0.4"
-      },
-      "dependencies": {
-        "array-union": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
-          "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
-          "dev": true
-        },
-        "arrify": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
-          "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
-          "dev": true
-        }
       }
     },
-    "mute-stream": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
-      "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
-    },
     "mv": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz",
@@ -4315,31 +10319,17 @@
       }
     },
     "nan": {
-      "version": "2.14.1",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
-      "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==",
+      "version": "2.15.0",
+      "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz",
+      "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==",
       "dev": true,
       "optional": true
     },
-    "nanomatch": {
-      "version": "1.2.13",
-      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
-      "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "arr-diff": "^4.0.0",
-        "array-unique": "^0.3.2",
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "fragment-cache": "^0.2.1",
-        "is-windows": "^1.0.2",
-        "kind-of": "^6.0.2",
-        "object.pick": "^1.3.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
-      }
+    "nanoid": {
+      "version": "3.1.30",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz",
+      "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==",
+      "dev": true
     },
     "native-promise-only": {
       "version": "0.8.1",
@@ -4365,22 +10355,12 @@
       "dev": true,
       "optional": true
     },
-    "neo-async": {
-      "version": "2.6.2",
-      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
-      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
-      "dev": true
-    },
-    "next-tick": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
-      "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
-      "dev": true
-    },
-    "nice-try": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
-      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+    "negotiator": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+      "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
+      "dev": true,
+      "peer": true
     },
     "node-forge": {
       "version": "0.10.0",
@@ -4389,9 +10369,9 @@
       "dev": true
     },
     "node-notifier": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.0.tgz",
-      "integrity": "sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA==",
+      "version": "9.0.0",
+      "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.0.tgz",
+      "integrity": "sha512-SkwNwGnMMlSPrcoeH4CSo9XyWe72acAHEJGDdPdB+CyBVHsIYaTQ4U/1wk3URsyzC75xZLg2vzU2YaALlqDF1Q==",
       "dev": true,
       "requires": {
         "growly": "^1.3.0",
@@ -4403,19 +10383,10 @@
       },
       "dependencies": {
         "uuid": {
-          "version": "8.3.1",
-          "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz",
-          "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==",
+          "version": "8.3.2",
+          "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+          "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
           "dev": true
-        },
-        "which": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-          "dev": true,
-          "requires": {
-            "isexe": "^2.0.0"
-          }
         }
       }
     },
@@ -4425,17 +10396,17 @@
       "integrity": "sha512-XAgTL05z75ptd7JSVejH1a2Dm1zmXYhuDr9l230Qk6Z7/7GPcnAs/UyJJ4ggsXSvWil8iOzwQLW0zuGUvHpG8g==",
       "dev": true
     },
-    "normalize-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-      "dev": true
-    },
     "normalize-url": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
-      "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
-      "dev": true
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz",
+      "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "prepend-http": "^2.0.0",
+        "query-string": "^5.0.1",
+        "sort-keys": "^2.0.0"
+      }
     },
     "npm-run-path": {
       "version": "4.0.1",
@@ -4444,23 +10415,15 @@
       "dev": true,
       "requires": {
         "path-key": "^3.0.0"
-      },
-      "dependencies": {
-        "path-key": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-          "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
-          "dev": true
-        }
       }
     },
     "nth-check": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
-      "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
+      "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
       "dev": true,
       "requires": {
-        "boolbase": "~1.0.0"
+        "boolbase": "^1.0.0"
       }
     },
     "oauth-sign": {
@@ -4472,56 +10435,17 @@
     "object-assign": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
-    },
-    "object-copy": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
-      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "copy-descriptor": "^0.1.0",
-        "define-property": "^0.2.5",
-        "kind-of": "^3.0.3"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "object-inspect": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz",
-      "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
       "dev": true
     },
     "object-is": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz",
-      "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==",
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
       "dev": true,
       "requires": {
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.18.0-next.1"
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
       }
     },
     "object-keys": {
@@ -4530,36 +10454,14 @@
       "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
       "dev": true
     },
-    "object-visit": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
-      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "isobject": "^3.0.0"
-      }
-    },
-    "object.assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.1.tgz",
-      "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==",
-      "dev": true,
-      "requires": {
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.18.0-next.0",
-        "has-symbols": "^1.0.1",
-        "object-keys": "^1.1.1"
-      }
-    },
-    "object.pick": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
-      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+    "on-finished": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
       "dev": true,
-      "optional": true,
+      "peer": true,
       "requires": {
-        "isobject": "^3.0.1"
+        "ee-first": "1.1.1"
       }
     },
     "once": {
@@ -4571,17 +10473,18 @@
       }
     },
     "onetime": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
-      "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+      "dev": true,
       "requires": {
-        "mimic-fn": "^1.0.0"
+        "mimic-fn": "^2.1.0"
       }
     },
     "open": {
-      "version": "7.3.0",
-      "resolved": "https://registry.npmjs.org/open/-/open-7.3.0.tgz",
-      "integrity": "sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw==",
+      "version": "7.4.2",
+      "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
+      "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
       "dev": true,
       "requires": {
         "is-docker": "^2.0.0",
@@ -4589,16 +10492,16 @@
       }
     },
     "optionator": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
-      "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+      "version": "0.9.1",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
+      "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
       "requires": {
-        "deep-is": "~0.1.3",
-        "fast-levenshtein": "~2.0.4",
-        "levn": "~0.3.0",
-        "prelude-ls": "~1.1.2",
-        "type-check": "~0.3.2",
-        "wordwrap": "~1.0.0"
+        "deep-is": "^0.1.3",
+        "fast-levenshtein": "^2.0.6",
+        "levn": "^0.4.1",
+        "prelude-ls": "^1.2.1",
+        "type-check": "^0.4.0",
+        "word-wrap": "^1.2.3"
       }
     },
     "os-locale": {
@@ -4618,16 +10521,12 @@
       "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=",
       "dev": true
     },
-    "os-tmpdir": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
-      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
-    },
     "p-cancelable": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
-      "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
-      "dev": true
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz",
+      "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==",
+      "dev": true,
+      "peer": true
     },
     "p-defer": {
       "version": "1.0.0",
@@ -4635,36 +10534,40 @@
       "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
       "dev": true
     },
-    "p-is-promise": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
-      "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
-      "dev": true
-    },
-    "p-limit": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+    "p-event": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz",
+      "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==",
       "dev": true,
+      "peer": true,
       "requires": {
-        "p-try": "^2.0.0"
+        "p-timeout": "^2.0.1"
       }
     },
-    "p-locate": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+    "p-finally": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+      "dev": true,
+      "peer": true
+    },
+    "p-is-promise": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
+      "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
+      "dev": true,
+      "peer": true
+    },
+    "p-timeout": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz",
+      "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==",
       "dev": true,
+      "peer": true,
       "requires": {
-        "p-limit": "^2.2.0"
+        "p-finally": "^1.0.0"
       }
     },
-    "p-try": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-      "dev": true
-    },
     "package-json": {
       "version": "6.5.0",
       "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
@@ -4677,6 +10580,81 @@
         "semver": "^6.2.0"
       },
       "dependencies": {
+        "@sindresorhus/is": {
+          "version": "0.14.0",
+          "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
+          "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
+          "dev": true
+        },
+        "cacheable-request": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
+          "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
+          "dev": true,
+          "requires": {
+            "clone-response": "^1.0.2",
+            "get-stream": "^5.1.0",
+            "http-cache-semantics": "^4.0.0",
+            "keyv": "^3.0.0",
+            "lowercase-keys": "^2.0.0",
+            "normalize-url": "^4.1.0",
+            "responselike": "^1.0.2"
+          },
+          "dependencies": {
+            "get-stream": {
+              "version": "5.2.0",
+              "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+              "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+              "dev": true,
+              "requires": {
+                "pump": "^3.0.0"
+              }
+            },
+            "lowercase-keys": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+              "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+              "dev": true
+            }
+          }
+        },
+        "got": {
+          "version": "9.6.0",
+          "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
+          "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
+          "dev": true,
+          "requires": {
+            "@sindresorhus/is": "^0.14.0",
+            "@szmarczak/http-timer": "^1.1.2",
+            "cacheable-request": "^6.0.0",
+            "decompress-response": "^3.3.0",
+            "duplexer3": "^0.1.4",
+            "get-stream": "^4.1.0",
+            "lowercase-keys": "^1.0.1",
+            "mimic-response": "^1.0.1",
+            "p-cancelable": "^1.0.0",
+            "to-readable-stream": "^1.0.0",
+            "url-parse-lax": "^3.0.0"
+          }
+        },
+        "http-cache-semantics": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
+          "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
+          "dev": true
+        },
+        "normalize-url": {
+          "version": "4.5.1",
+          "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
+          "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
+          "dev": true
+        },
+        "p-cancelable": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
+          "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
+          "dev": true
+        },
         "semver": {
           "version": "6.3.0",
           "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
@@ -4695,7 +10673,6 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
       "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-      "dev": true,
       "requires": {
         "callsites": "^3.0.0"
       },
@@ -4703,71 +10680,58 @@
         "callsites": {
           "version": "3.1.0",
           "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-          "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-          "dev": true
+          "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
         }
       }
     },
     "parse-json": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.1.tgz",
-      "integrity": "sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ==",
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+      "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
       "dev": true,
       "requires": {
         "@babel/code-frame": "^7.0.0",
         "error-ex": "^1.3.1",
-        "json-parse-better-errors": "^1.0.1",
+        "json-parse-even-better-errors": "^2.3.0",
         "lines-and-columns": "^1.1.6"
       }
     },
     "parse5": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
-      "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+      "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+      "dev": true
+    },
+    "parse5-htmlparser2-tree-adapter": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+      "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
       "dev": true,
       "requires": {
-        "@types/node": "*"
+        "parse5": "^6.0.1"
       }
     },
-    "pascalcase": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
-      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
-      "dev": true,
-      "optional": true
-    },
-    "path-dirname": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
-      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+    "parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
       "dev": true,
-      "optional": true
-    },
-    "path-exists": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-      "dev": true
+      "peer": true
     },
     "path-is-absolute": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
       "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
     },
-    "path-is-inside": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
-      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM="
-    },
     "path-key": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
     },
     "path-parse": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
-      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
       "dev": true
     },
     "path-to-regexp": {
@@ -4777,14 +10741,6 @@
       "dev": true,
       "requires": {
         "isarray": "0.0.1"
-      },
-      "dependencies": {
-        "isarray": {
-          "version": "0.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
-          "dev": true
-        }
       }
     },
     "pend": {
@@ -4799,126 +10755,72 @@
       "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
       "dev": true
     },
-    "picomatch": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
-      "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
-      "dev": true,
-      "optional": true
+    "picocolors": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+      "dev": true
     },
     "pify": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+      "dev": true,
+      "peer": true
     },
     "pinkie": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
-      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
+      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+      "dev": true,
+      "peer": true
     },
     "pinkie-promise": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
       "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+      "dev": true,
+      "peer": true,
       "requires": {
         "pinkie": "^2.0.0"
       }
     },
     "pino": {
-      "version": "6.6.1",
-      "resolved": "https://registry.npmjs.org/pino/-/pino-6.6.1.tgz",
-      "integrity": "sha512-DOgm7rn6ctBkBYemHXSLj7+j3o3U1q1FWBXbHcprur8mA93QcJSycEkEqhqKiFB9Mx/3Qld2FGr6+9yfQza0kA==",
+      "version": "6.13.3",
+      "resolved": "https://registry.npmjs.org/pino/-/pino-6.13.3.tgz",
+      "integrity": "sha512-tJy6qVgkh9MwNgqX1/oYi3ehfl2Y9H0uHyEEMsBe74KinESIjdMrMQDWpcZPpPicg3VV35d/GLQZmo4QgU2Xkg==",
       "dev": true,
       "requires": {
-        "fast-redact": "^2.0.0",
-        "fast-safe-stringify": "^2.0.7",
+        "fast-redact": "^3.0.0",
+        "fast-safe-stringify": "^2.0.8",
+        "fastify-warning": "^0.2.0",
         "flatstr": "^1.0.12",
-        "pino-std-serializers": "^2.4.2",
-        "quick-format-unescaped": "^4.0.1",
+        "pino-std-serializers": "^3.1.0",
+        "quick-format-unescaped": "^4.0.3",
         "sonic-boom": "^1.0.2"
       }
     },
     "pino-std-serializers": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.5.0.tgz",
-      "integrity": "sha512-wXqbqSrIhE58TdrxxlfLwU9eDhrzppQDvGhBEr1gYbzzM4KKo3Y63gSjiDXRKLVS2UOXdPNR2v+KnQgNrs+xUg==",
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz",
+      "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==",
       "dev": true
     },
-    "pluralize": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
-      "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow=="
-    },
-    "posix-character-classes": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
-      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
-      "dev": true,
-      "optional": true
-    },
     "postcss": {
-      "version": "7.0.35",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
-      "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
+      "version": "8.3.9",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz",
+      "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==",
       "dev": true,
       "requires": {
-        "chalk": "^2.4.2",
-        "source-map": "^0.6.1",
-        "supports-color": "^6.1.0"
-      },
-      "dependencies": {
-        "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"
-          }
-        },
-        "chalk": {
-          "version": "2.4.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^3.2.1",
-            "escape-string-regexp": "^1.0.5",
-            "supports-color": "^5.3.0"
-          },
-          "dependencies": {
-            "supports-color": {
-              "version": "5.5.0",
-              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-              "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-              "dev": true,
-              "requires": {
-                "has-flag": "^3.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
-        },
-        "supports-color": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        }
+        "nanoid": "^3.1.28",
+        "picocolors": "^0.2.1",
+        "source-map-js": "^0.6.2"
       }
     },
     "prelude-ls": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
-      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+      "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="
     },
     "prepend-http": {
       "version": "2.0.0",
@@ -4926,19 +10828,6 @@
       "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
       "dev": true
     },
-    "probe-image-size": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-5.0.0.tgz",
-      "integrity": "sha512-V6uBYw5eBc5UVIE7MUZD6Nxg0RYuGDWLDenEn0B1WC6PcTvn1xdQ6HLDDuznefsiExC6rNrCz7mFRBo0f3Xekg==",
-      "dev": true,
-      "requires": {
-        "deepmerge": "^4.0.0",
-        "inherits": "^2.0.3",
-        "next-tick": "^1.0.0",
-        "request": "^2.83.0",
-        "stream-parser": "~0.3.1"
-      }
-    },
     "process-nextick-args": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
@@ -4946,9 +10835,20 @@
       "dev": true
     },
     "progress": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
-      "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8="
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+      "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="
+    },
+    "proxy-addr": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+      "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "forwarded": "0.2.0",
+        "ipaddr.js": "1.9.1"
+      }
     },
     "psl": {
       "version": "1.8.0",
@@ -4967,30 +10867,51 @@
       }
     },
     "punycode": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-      "dev": true
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
     },
     "pupa": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz",
-      "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
+      "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
       "dev": true,
       "requires": {
         "escape-goat": "^2.0.0"
       }
     },
     "qs": {
-      "version": "6.5.2",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
-      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
-      "dev": true
+      "version": "6.7.0",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+      "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
+      "dev": true,
+      "peer": true
+    },
+    "query-string": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz",
+      "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "decode-uri-component": "^0.2.0",
+        "object-assign": "^4.1.0",
+        "strict-uri-encode": "^1.0.0"
+      }
+    },
+    "queue": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
+      "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
+      "dev": true,
+      "requires": {
+        "inherits": "~2.0.3"
+      }
     },
     "quick-format-unescaped": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.1.tgz",
-      "integrity": "sha512-RyYpQ6Q5/drsJyOhrWHYMWTedvjTIat+FTwv0K4yoUxzvekw2aRHMQJLlnvt8UantkZg2++bEzD9EdxXqkWf4A==",
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
+      "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==",
       "dev": true
     },
     "qunit": {
@@ -5004,23 +10925,26 @@
         "minimatch": "3.0.4",
         "node-watch": "0.6.0",
         "resolve": "1.9.0"
-      },
-      "dependencies": {
-        "commander": {
-          "version": "2.12.2",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz",
-          "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==",
-          "dev": true
-        },
-        "resolve": {
-          "version": "1.9.0",
-          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz",
-          "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==",
-          "dev": true,
-          "requires": {
-            "path-parse": "^1.0.6"
-          }
-        }
+      }
+    },
+    "range-parser": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+      "dev": true,
+      "peer": true
+    },
+    "raw-body": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
+      "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "bytes": "3.1.0",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
       }
     },
     "rc": {
@@ -5033,96 +10957,64 @@
         "ini": "~1.3.0",
         "minimist": "^1.2.0",
         "strip-json-comments": "~2.0.1"
+      },
+      "dependencies": {
+        "ini": {
+          "version": "1.3.8",
+          "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+          "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+          "dev": true
+        }
       }
     },
     "readable-stream": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.3",
-        "string_decoder": "^1.1.1",
-        "util-deprecate": "^1.0.1"
-      }
-    },
-    "readdir-glob": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.0.tgz",
-      "integrity": "sha512-KgT0oXPIDQRRRYFf+06AUaodICTep2Q5635BORLzTEzp7rEqcR14a47j3Vzm3ix7FeI1lp8mYyG7r8lTB06Pyg==",
-      "dev": true,
-      "requires": {
-        "minimatch": "^3.0.4"
-      }
-    },
-    "readdirp": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
-      "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "picomatch": "^2.2.1"
+      "version": "2.3.7",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+      "dev": true,
+      "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"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+          "dev": true
+        }
       }
     },
     "regenerator-runtime": {
-      "version": "0.13.7",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
-      "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==",
+      "version": "0.13.9",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+      "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==",
       "dev": true
     },
-    "regex-not": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
-      "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "extend-shallow": "^3.0.2",
-        "safe-regex": "^1.1.0"
-      }
-    },
     "regexp.prototype.flags": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz",
-      "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==",
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz",
+      "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==",
       "dev": true,
       "requires": {
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.17.0-next.1"
-      },
-      "dependencies": {
-        "es-abstract": {
-          "version": "1.17.7",
-          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz",
-          "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==",
-          "dev": true,
-          "requires": {
-            "es-to-primitive": "^1.2.1",
-            "function-bind": "^1.1.1",
-            "has": "^1.0.3",
-            "has-symbols": "^1.0.1",
-            "is-callable": "^1.2.2",
-            "is-regex": "^1.1.1",
-            "object-inspect": "^1.8.0",
-            "object-keys": "^1.1.1",
-            "object.assign": "^4.1.1",
-            "string.prototype.trimend": "^1.0.1",
-            "string.prototype.trimstart": "^1.0.1"
-          }
-        }
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
       }
     },
     "regexpp": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
-      "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
-      "dev": true
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
+      "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg=="
     },
     "registry-auth-token": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz",
-      "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==",
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz",
+      "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==",
       "dev": true,
       "requires": {
         "rc": "^1.2.8"
@@ -5145,66 +11037,8 @@
       "requires": {
         "chalk": "^2.4.2",
         "commander": "^2.6.0"
-      },
-      "dependencies": {
-        "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"
-          }
-        },
-        "chalk": {
-          "version": "2.4.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^3.2.1",
-            "escape-string-regexp": "^1.0.5",
-            "supports-color": "^5.3.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
-        },
-        "supports-color": {
-          "version": "5.5.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        }
       }
     },
-    "remove-trailing-separator": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
-      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
-      "dev": true,
-      "optional": true
-    },
-    "repeat-element": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
-      "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
-      "dev": true,
-      "optional": true
-    },
-    "repeat-string": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
-      "dev": true,
-      "optional": true
-    },
     "request": {
       "version": "2.88.2",
       "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
@@ -5231,6 +11065,14 @@
         "tough-cookie": "~2.5.0",
         "tunnel-agent": "^0.6.0",
         "uuid": "^3.3.2"
+      },
+      "dependencies": {
+        "qs": {
+          "version": "6.5.2",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+          "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+          "dev": true
+        }
       }
     },
     "require-directory": {
@@ -5239,33 +11081,20 @@
       "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
       "dev": true
     },
-    "require-main-filename": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
-      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
-      "dev": true
+    "require-from-string": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+      "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
     },
-    "require-uncached": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
-      "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
+    "resolve": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz",
+      "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==",
+      "dev": true,
       "requires": {
-        "caller-path": "^0.1.0",
-        "resolve-from": "^1.0.0"
+        "path-parse": "^1.0.6"
       }
     },
-    "resolve-from": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
-      "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY="
-    },
-    "resolve-url": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
-      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
-      "dev": true,
-      "optional": true
-    },
     "responselike": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
@@ -5275,44 +11104,30 @@
         "lowercase-keys": "^1.0.0"
       }
     },
-    "restore-cursor": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
-      "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
-      "requires": {
-        "onetime": "^2.0.0",
-        "signal-exit": "^3.0.2"
-      }
-    },
-    "ret": {
-      "version": "0.1.15",
-      "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
-      "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
-      "dev": true,
-      "optional": true
-    },
     "rimraf": {
-      "version": "2.6.2",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
-      "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
-      "requires": {
-        "glob": "^7.0.5"
-      }
-    },
-    "run-async": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
-      "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
       "requires": {
-        "is-promise": "^2.1.0"
+        "glob": "^7.1.3"
       }
     },
     "safe-buffer": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
       "dev": true
     },
+    "safe-compare": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/safe-compare/-/safe-compare-1.1.4.tgz",
+      "integrity": "sha512-b9wZ986HHCo/HbKrRpBJb2kqXMK9CEWIE1egeEvZsYn69ay3kdfl9nG3RyOcR+jInTDf7a86WQ1d4VJX7goSSQ==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "buffer-alloc": "^1.2.0"
+      }
+    },
     "safe-json-stringify": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz",
@@ -5320,20 +11135,11 @@
       "dev": true,
       "optional": true
     },
-    "safe-regex": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
-      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "ret": "~0.1.10"
-      }
-    },
     "safer-buffer": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "dev": true
     },
     "samsam": {
       "version": "1.3.0",
@@ -5347,6 +11153,16 @@
       "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
       "dev": true
     },
+    "seek-bzip": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz",
+      "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "commander": "^2.8.1"
+      }
+    },
     "select2": {
       "version": "4.0.11",
       "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.11.tgz",
@@ -5354,10 +11170,12 @@
       "dev": true
     },
     "semver": {
-      "version": "7.3.2",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
-      "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
-      "dev": true
+      "version": "7.3.5",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+      "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+      "requires": {
+        "lru-cache": "^6.0.0"
+      }
     },
     "semver-diff": {
       "version": "3.1.1",
@@ -5376,37 +11194,82 @@
         }
       }
     },
-    "set-blocking": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
-      "dev": true
-    },
-    "set-value": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
-      "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "extend-shallow": "^2.0.1",
-        "is-extendable": "^0.1.1",
-        "is-plain-object": "^2.0.3",
-        "split-string": "^3.0.1"
+    "send": {
+      "version": "0.17.1",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "destroy": "~1.0.4",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "~1.7.2",
+        "mime": "1.6.0",
+        "ms": "2.1.1",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.1",
+        "statuses": "~1.5.0"
       },
       "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
           "dev": true,
-          "optional": true,
+          "peer": true,
           "requires": {
-            "is-extendable": "^0.1.0"
+            "ms": "2.0.0"
+          },
+          "dependencies": {
+            "ms": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+              "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+              "dev": true,
+              "peer": true
+            }
           }
+        },
+        "ms": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+          "dev": true,
+          "peer": true
         }
       }
     },
+    "serve-static": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.17.1"
+      }
+    },
+    "set-immediate-shim": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
+      "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
+      "dev": true
+    },
+    "setprototypeof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+      "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
+      "dev": true,
+      "peer": true
+    },
     "sha.js": {
       "version": "2.4.11",
       "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
@@ -5418,17 +11281,17 @@
       }
     },
     "shebang-command": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
       "requires": {
-        "shebang-regex": "^1.0.0"
+        "shebang-regex": "^3.0.0"
       }
     },
     "shebang-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
     },
     "shell-quote": {
       "version": "1.6.1",
@@ -5449,35 +11312,28 @@
       "dev": true
     },
     "sign-addon": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-3.1.0.tgz",
-      "integrity": "sha512-zZ7nKc5/3QWM3skYBosGDvYQf2jkKhW2u8BELrZoN1wgCSOnwsV9T47Vx9uaNbA3CyZ+V9XSA0tDVHoV1QfVPw==",
+      "version": "3.9.0",
+      "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-3.9.0.tgz",
+      "integrity": "sha512-a8IzM3jNPSHcf2wSkhLgME4QrIe+rKTb8y/qYwGGzby5ktODAH+WBsKIgGZ9p5d2mpppPwbNEsA+YzcL117bbA==",
       "dev": true,
       "requires": {
         "common-tags": "1.8.0",
-        "core-js": "3.6.5",
+        "core-js": "3.18.0",
         "deepcopy": "2.1.0",
         "es6-error": "4.1.1",
-        "es6-promisify": "6.1.1",
+        "es6-promisify": "7.0.0",
         "jsonwebtoken": "8.5.1",
         "mz": "2.7.0",
         "request": "2.88.2",
-        "source-map-support": "0.5.19",
+        "source-map-support": "0.5.20",
         "stream-to-promise": "3.0.0"
-      },
-      "dependencies": {
-        "core-js": {
-          "version": "3.6.5",
-          "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz",
-          "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==",
-          "dev": true
-        }
       }
     },
     "signal-exit": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
-      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.4.tgz",
+      "integrity": "sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==",
+      "dev": true
     },
     "sinon": {
       "version": "2.0.0",
@@ -5496,198 +11352,102 @@
       }
     },
     "slice-ansi": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
-      "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
-      "dev": true,
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+      "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
       "requires": {
-        "ansi-styles": "^3.2.0",
-        "astral-regex": "^1.0.0",
-        "is-fullwidth-code-point": "^2.0.0"
+        "ansi-styles": "^4.0.0",
+        "astral-regex": "^2.0.0",
+        "is-fullwidth-code-point": "^3.0.0"
       },
       "dependencies": {
         "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"
-          }
-        }
-      }
-    },
-    "snapdragon": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
-      "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "base": "^0.11.1",
-        "debug": "^2.2.0",
-        "define-property": "^0.2.5",
-        "extend-shallow": "^2.0.1",
-        "map-cache": "^0.2.2",
-        "source-map": "^0.5.6",
-        "source-map-resolve": "^0.5.0",
-        "use": "^3.1.0"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "dev": true,
-          "optional": true,
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
           "requires": {
-            "is-descriptor": "^0.1.0"
+            "color-convert": "^2.0.1"
           }
         },
-        "extend-shallow": {
+        "color-convert": {
           "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-          "dev": true,
-          "optional": true
-        }
-      }
-    },
-    "snapdragon-node": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
-      "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "define-property": "^1.0.0",
-        "isobject": "^3.0.0",
-        "snapdragon-util": "^3.0.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "optional": true,
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
           "requires": {
-            "kind-of": "^6.0.0"
+            "color-name": "~1.1.4"
           }
         },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
         }
       }
     },
-    "snapdragon-util": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
-      "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+    "sonic-boom": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz",
+      "integrity": "sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==",
       "dev": true,
-      "optional": true,
       "requires": {
-        "kind-of": "^3.2.0"
+        "atomic-sleep": "^1.0.0",
+        "flatstr": "^1.0.12"
+      }
+    },
+    "sort-keys": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
+      "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "is-plain-obj": "^1.0.0"
+      }
+    },
+    "sort-keys-length": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz",
+      "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "sort-keys": "^1.0.0"
       },
       "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+        "sort-keys": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
+          "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
           "dev": true,
-          "optional": true,
+          "peer": true,
           "requires": {
-            "is-buffer": "^1.1.5"
+            "is-plain-obj": "^1.0.0"
           }
         }
       }
     },
-    "sonic-boom": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.3.0.tgz",
-      "integrity": "sha512-4nX6OYvOYr6R76xfQKi6cZpTO3YSWe/vd+QdIfoH0lBy0MnPkeAbb2rRWgmgADkXUeCKPwO1FZAKlAVWAadELw==",
-      "dev": true,
-      "requires": {
-        "atomic-sleep": "^1.0.0",
-        "flatstr": "^1.0.12"
-      }
-    },
     "source-map": {
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
       "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
       "dev": true
     },
-    "source-map-resolve": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
-      "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "atob": "^2.1.2",
-        "decode-uri-component": "^0.2.0",
-        "resolve-url": "^0.2.1",
-        "source-map-url": "^0.4.0",
-        "urix": "^0.1.0"
-      }
+    "source-map-js": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz",
+      "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==",
+      "dev": true
     },
     "source-map-support": {
-      "version": "0.5.19",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
-      "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
+      "version": "0.5.20",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz",
+      "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==",
       "dev": true,
       "requires": {
         "buffer-from": "^1.0.0",
         "source-map": "^0.6.0"
       }
     },
-    "source-map-url": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
-      "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
-      "dev": true,
-      "optional": true
-    },
     "spawn-sync": {
       "version": "1.0.15",
       "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz",
@@ -5707,16 +11467,6 @@
         "through": "2"
       }
     },
-    "split-string": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
-      "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "extend-shallow": "^3.0.0"
-      }
-    },
     "sprintf-js": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
@@ -5739,37 +11489,12 @@
         "tweetnacl": "~0.14.0"
       }
     },
-    "static-extend": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
-      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "define-property": "^0.2.5",
-        "object-copy": "^0.1.0"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        }
-      }
-    },
-    "stream-parser": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz",
-      "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=",
+    "statuses": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
       "dev": true,
-      "requires": {
-        "debug": "2"
-      }
+      "peer": true
     },
     "stream-to-array": {
       "version": "2.3.0",
@@ -5791,99 +11516,38 @@
         "stream-to-array": "~2.3.0"
       }
     },
-    "string-width": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-      "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-      "requires": {
-        "is-fullwidth-code-point": "^2.0.0",
-        "strip-ansi": "^4.0.0"
-      }
-    },
-    "string.prototype.trimend": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
-      "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
+    "strict-uri-encode": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+      "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
       "dev": true,
-      "requires": {
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.17.5"
-      },
-      "dependencies": {
-        "es-abstract": {
-          "version": "1.17.7",
-          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz",
-          "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==",
-          "dev": true,
-          "requires": {
-            "es-to-primitive": "^1.2.1",
-            "function-bind": "^1.1.1",
-            "has": "^1.0.3",
-            "has-symbols": "^1.0.1",
-            "is-callable": "^1.2.2",
-            "is-regex": "^1.1.1",
-            "object-inspect": "^1.8.0",
-            "object-keys": "^1.1.1",
-            "object.assign": "^4.1.1",
-            "string.prototype.trimend": "^1.0.1",
-            "string.prototype.trimstart": "^1.0.1"
-          }
-        }
-      }
+      "peer": true
     },
-    "string.prototype.trimstart": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
-      "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
+    "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==",
       "dev": true,
       "requires": {
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.17.5"
-      },
-      "dependencies": {
-        "es-abstract": {
-          "version": "1.17.7",
-          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz",
-          "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==",
-          "dev": true,
-          "requires": {
-            "es-to-primitive": "^1.2.1",
-            "function-bind": "^1.1.1",
-            "has": "^1.0.3",
-            "has-symbols": "^1.0.1",
-            "is-callable": "^1.2.2",
-            "is-regex": "^1.1.1",
-            "object-inspect": "^1.8.0",
-            "object-keys": "^1.1.1",
-            "object.assign": "^4.1.1",
-            "string.prototype.trimend": "^1.0.1",
-            "string.prototype.trimstart": "^1.0.1"
-          }
-        }
+        "safe-buffer": "~5.1.0"
       }
     },
-    "string_decoder": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
-      "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
-      "dev": true,
+    "string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
       "requires": {
-        "safe-buffer": "~5.2.0"
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
       }
     },
     "strip-ansi": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-      "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
       "requires": {
-        "ansi-regex": "^3.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
-        }
+        "ansi-regex": "^5.0.1"
       }
     },
     "strip-bom": {
@@ -5909,14 +11573,16 @@
       "requires": {
         "first-chunk-stream": "^3.0.0",
         "strip-bom-buf": "^2.0.0"
-      },
-      "dependencies": {
-        "first-chunk-stream": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-3.0.0.tgz",
-          "integrity": "sha512-LNRvR4hr/S8cXXkIY5pTgVP7L3tq6LlYWcg9nWBuW7o1NMxKZo6oOVa/6GIekMGI0Iw7uC+HWimMe9u/VAeKqw==",
-          "dev": true
-        }
+      }
+    },
+    "strip-dirs": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz",
+      "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "is-natural-number": "^4.0.1"
       }
     },
     "strip-final-newline": {
@@ -5928,96 +11594,74 @@
     "strip-json-comments": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
-      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
+      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+      "dev": true
     },
-    "supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+    "strip-outer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
+      "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
       "dev": true,
+      "peer": true,
       "requires": {
-        "has-flag": "^4.0.0"
-      },
-      "dependencies": {
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true
-        }
+        "escape-string-regexp": "^1.0.2"
       }
     },
-    "table": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/table/-/table-5.1.1.tgz",
-      "integrity": "sha512-NUjapYb/qd4PeFW03HnAuOJ7OMcBkJlqeClWxeNlQ0lXGSb52oZXGzkO0/I0ARegQ2eUT1g2VDJH0eUxDRcHmw==",
+    "supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
       "requires": {
-        "ajv": "^6.6.1",
-        "lodash": "^4.17.11",
-        "slice-ansi": "2.0.0",
-        "string-width": "^2.1.1"
+        "has-flag": "^3.0.0"
+      }
+    },
+    "table": {
+      "version": "6.7.2",
+      "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz",
+      "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==",
+      "requires": {
+        "ajv": "^8.0.1",
+        "lodash.clonedeep": "^4.5.0",
+        "lodash.truncate": "^4.4.2",
+        "slice-ansi": "^4.0.0",
+        "string-width": "^4.2.3",
+        "strip-ansi": "^6.0.1"
       },
       "dependencies": {
         "ajv": {
-          "version": "6.6.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz",
-          "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==",
+          "version": "8.6.3",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz",
+          "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==",
           "requires": {
-            "fast-deep-equal": "^2.0.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
+            "fast-deep-equal": "^3.1.1",
+            "json-schema-traverse": "^1.0.0",
+            "require-from-string": "^2.0.2",
             "uri-js": "^4.2.2"
           }
         },
-        "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==",
-          "requires": {
-            "color-convert": "^1.9.0"
-          }
-        },
-        "fast-deep-equal": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
-          "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
-        },
         "json-schema-traverse": {
-          "version": "0.4.1",
-          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-          "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
-        },
-        "slice-ansi": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.0.0.tgz",
-          "integrity": "sha512-4j2WTWjp3GsZ+AOagyzVbzp4vWGtZ0hEZ/gDY/uTvm6MTxUfTUIsnMIFb1bn8o0RuXiqUw15H1bue8f22Vw2oQ==",
-          "requires": {
-            "ansi-styles": "^3.2.0",
-            "astral-regex": "^1.0.0",
-            "is-fullwidth-code-point": "^2.0.0"
-          }
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+          "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
         }
       }
     },
     "tar-stream": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz",
-      "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==",
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
+      "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
       "dev": true,
+      "peer": true,
       "requires": {
-        "bl": "^4.0.3",
-        "end-of-stream": "^1.4.1",
+        "bl": "^1.0.0",
+        "buffer-alloc": "^1.2.0",
+        "end-of-stream": "^1.0.0",
         "fs-constants": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^3.1.1"
+        "readable-stream": "^2.3.0",
+        "to-buffer": "^1.1.1",
+        "xtend": "^4.0.0"
       }
     },
-    "term-size": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz",
-      "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==",
-      "dev": true
-    },
     "text-encoding": {
       "version": "0.6.4",
       "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz",
@@ -6050,37 +11694,22 @@
     "through": {
       "version": "2.3.8",
       "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
-      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
+      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+      "dev": true
     },
-    "tmp": {
-      "version": "0.0.33",
-      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
-      "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
-      "requires": {
-        "os-tmpdir": "~1.0.2"
-      }
+    "timed-out": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
+      "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
+      "dev": true,
+      "peer": true
     },
-    "to-object-path": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
-      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+    "to-buffer": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
+      "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
       "dev": true,
-      "optional": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
+      "peer": true
     },
     "to-readable-stream": {
       "version": "1.0.0",
@@ -6088,34 +11717,19 @@
       "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
       "dev": true
     },
-    "to-regex": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
-      "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "regex-not": "^1.0.2",
-        "safe-regex": "^1.1.0"
-      }
-    },
-    "to-regex-range": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+    "toidentifier": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
       "dev": true,
-      "optional": true,
-      "requires": {
-        "is-number": "^7.0.0"
-      }
+      "peer": true
     },
     "tooltipster": {
       "version": "4.2.6",
       "resolved": "https://registry.npmjs.org/tooltipster/-/tooltipster-4.2.6.tgz",
       "integrity": "sha1-+/ej9bQL2D6BV04o2WZ8+CZnvHk=",
-      "dev": true
+      "dev": true,
+      "requires": {}
     },
     "tosource": {
       "version": "1.0.0",
@@ -6131,43 +11745,23 @@
       "requires": {
         "psl": "^1.1.28",
         "punycode": "^2.1.1"
-      },
-      "dependencies": {
-        "punycode": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-          "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-          "dev": true
-        }
       }
     },
-    "tr46": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz",
-      "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==",
+    "trim-repeated": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
+      "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=",
       "dev": true,
+      "peer": true,
       "requires": {
-        "punycode": "^2.1.1"
-      },
-      "dependencies": {
-        "punycode": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-          "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-          "dev": true
-        }
+        "escape-string-regexp": "^1.0.2"
       }
     },
-    "traverse": {
-      "version": "0.4.6",
-      "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.4.6.tgz",
-      "integrity": "sha1-0EsigOTHkqWBVCnve4tgxkyczDQ=",
-      "dev": true
-    },
     "tslib": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
-      "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
+      "dev": true
     },
     "tunnel-agent": {
       "version": "0.6.0",
@@ -6185,11 +11779,11 @@
       "dev": true
     },
     "type-check": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
-      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+      "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
       "requires": {
-        "prelude-ls": "~1.1.2"
+        "prelude-ls": "^1.2.1"
       }
     },
     "type-detect": {
@@ -6199,10 +11793,20 @@
       "dev": true
     },
     "type-fest": {
-      "version": "0.8.1",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
-      "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
-      "dev": true
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+      "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="
+    },
+    "type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      }
     },
     "typedarray": {
       "version": "0.0.6",
@@ -6219,23 +11823,15 @@
         "is-typedarray": "^1.0.0"
       }
     },
-    "underscore": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz",
-      "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==",
-      "dev": true
-    },
-    "union-value": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
-      "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+    "unbzip2-stream": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
+      "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
       "dev": true,
-      "optional": true,
+      "peer": true,
       "requires": {
-        "arr-union": "^3.1.0",
-        "get-value": "^2.0.6",
-        "is-extendable": "^0.1.1",
-        "set-value": "^2.0.1"
+        "buffer": "^5.2.1",
+        "through": "^2.3.8"
       }
     },
     "unique-string": {
@@ -6248,117 +11844,105 @@
       }
     },
     "universalify": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
-      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
+      "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
       "dev": true
     },
-    "unset-value": {
+    "unpipe": {
       "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
-      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
       "dev": true,
-      "optional": true,
-      "requires": {
-        "has-value": "^0.3.1",
-        "isobject": "^3.0.0"
-      },
-      "dependencies": {
-        "has-value": {
-          "version": "0.3.1",
-          "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
-          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "get-value": "^2.0.3",
-            "has-values": "^0.1.4",
-            "isobject": "^2.0.0"
-          },
-          "dependencies": {
-            "isobject": {
-              "version": "2.1.0",
-              "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "isarray": "1.0.0"
-              }
-            }
-          }
-        },
-        "has-values": {
-          "version": "0.1.4",
-          "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
-          "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
-          "dev": true,
-          "optional": true
-        }
-      }
+      "peer": true
     },
     "upath": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
-      "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz",
+      "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==",
       "dev": true
     },
     "update-notifier": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.0.0.tgz",
-      "integrity": "sha512-8tqsiVrMv7aZsKNSjqA6DdBLKJpZG1hRpkj1RbOJu1PgyP69OX+EInAnP1EK/ShX5YdPFgwWdk19oquZ0HTM8g==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz",
+      "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==",
       "dev": true,
       "requires": {
-        "boxen": "^4.2.0",
+        "boxen": "^5.0.0",
         "chalk": "^4.1.0",
         "configstore": "^5.0.1",
         "has-yarn": "^2.1.0",
         "import-lazy": "^2.1.0",
         "is-ci": "^2.0.0",
-        "is-installed-globally": "^0.3.1",
+        "is-installed-globally": "^0.4.0",
         "is-npm": "^5.0.0",
         "is-yarn-global": "^0.3.0",
-        "latest-version": "^5.0.0",
-        "pupa": "^2.0.1",
-        "semver": "^7.3.2",
+        "latest-version": "^5.1.0",
+        "pupa": "^2.1.1",
+        "semver": "^7.3.4",
         "semver-diff": "^3.1.1",
         "xdg-basedir": "^4.0.0"
       },
       "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
         "chalk": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
-          "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
           "dev": true,
           "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
+            "has-flag": "^4.0.0"
           }
         }
       }
     },
     "uri-js": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
-      "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+      "version": "4.4.1",
+      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
       "requires": {
         "punycode": "^2.1.0"
-      },
-      "dependencies": {
-        "punycode": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-          "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
-        }
       }
     },
-    "urix": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
-      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
-      "dev": true,
-      "optional": true
-    },
     "url-parse-lax": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
@@ -6368,12 +11952,12 @@
         "prepend-http": "^2.0.0"
       }
     },
-    "use": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
-      "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+    "url-to-options": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz",
+      "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=",
       "dev": true,
-      "optional": true
+      "peer": true
     },
     "util-deprecate": {
       "version": "1.0.2",
@@ -6381,6 +11965,13 @@
       "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
       "dev": true
     },
+    "utils-merge": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+      "dev": true,
+      "peer": true
+    },
     "uuid": {
       "version": "3.4.0",
       "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
@@ -6388,10 +11979,16 @@
       "dev": true
     },
     "v8-compile-cache": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz",
-      "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==",
-      "dev": true
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+      "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA=="
+    },
+    "vary": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+      "dev": true,
+      "peer": true
     },
     "verror": {
       "version": "1.10.0",
@@ -6405,239 +12002,13 @@
       }
     },
     "watchpack": {
-      "version": "1.7.4",
-      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz",
-      "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==",
-      "dev": true,
-      "requires": {
-        "chokidar": "^3.4.1",
-        "graceful-fs": "^4.1.2",
-        "neo-async": "^2.5.0",
-        "watchpack-chokidar2": "^2.0.0"
-      }
-    },
-    "watchpack-chokidar2": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz",
-      "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz",
+      "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==",
       "dev": true,
-      "optional": true,
       "requires": {
-        "chokidar": "^2.1.8"
-      },
-      "dependencies": {
-        "anymatch": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "micromatch": "^3.1.4",
-            "normalize-path": "^2.1.1"
-          },
-          "dependencies": {
-            "normalize-path": {
-              "version": "2.1.1",
-              "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-              "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "remove-trailing-separator": "^1.0.1"
-              }
-            }
-          }
-        },
-        "binary-extensions": {
-          "version": "1.13.1",
-          "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-          "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-          "dev": true,
-          "optional": true
-        },
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "arr-flatten": "^1.1.0",
-            "array-unique": "^0.3.2",
-            "extend-shallow": "^2.0.1",
-            "fill-range": "^4.0.0",
-            "isobject": "^3.0.1",
-            "repeat-element": "^1.1.2",
-            "snapdragon": "^0.8.1",
-            "snapdragon-node": "^2.0.1",
-            "split-string": "^3.0.2",
-            "to-regex": "^3.0.1"
-          }
-        },
-        "chokidar": {
-          "version": "2.1.8",
-          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-          "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "anymatch": "^2.0.0",
-            "async-each": "^1.0.1",
-            "braces": "^2.3.2",
-            "fsevents": "^1.2.7",
-            "glob-parent": "^3.1.0",
-            "inherits": "^2.0.3",
-            "is-binary-path": "^1.0.0",
-            "is-glob": "^4.0.0",
-            "normalize-path": "^3.0.0",
-            "path-is-absolute": "^1.0.0",
-            "readdirp": "^2.2.1",
-            "upath": "^1.1.1"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "fill-range": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
-          }
-        },
-        "fsevents": {
-          "version": "1.2.13",
-          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
-          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "nan": "^2.12.1"
-          }
-        },
-        "glob-parent": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-glob": "^3.1.0",
-            "path-dirname": "^1.0.0"
-          },
-          "dependencies": {
-            "is-glob": {
-              "version": "3.1.0",
-              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "is-extglob": "^2.1.0"
-              }
-            }
-          }
-        },
-        "is-binary-path": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-          "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "binary-extensions": "^1.0.0"
-          }
-        },
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          }
-        },
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        },
-        "readable-stream": {
-          "version": "2.3.7",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-          "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-          "dev": true,
-          "optional": true,
-          "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"
-          }
-        },
-        "readdirp": {
-          "version": "2.2.1",
-          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "graceful-fs": "^4.1.11",
-            "micromatch": "^3.1.10",
-            "readable-stream": "^2.0.2"
-          }
-        },
-        "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==",
-          "dev": true,
-          "optional": true
-        },
-        "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==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "safe-buffer": "~5.1.0"
-          }
-        },
-        "to-regex-range": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1"
-          }
-        }
+        "glob-to-regexp": "^0.4.1",
+        "graceful-fs": "^4.1.2"
       }
     },
     "wcwidth": {
@@ -6650,75 +12021,49 @@
       }
     },
     "web-ext": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-5.2.0.tgz",
-      "integrity": "sha512-o/s206JW2U/vXHTe/XeBnsUQhIcuphsSVNVrJU+MoMFq8JlU9vI1VdS2RCW+u5NuqAsMvTyV+pA+4hLGB9CGCw==",
+      "version": "6.5.0",
+      "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-6.5.0.tgz",
+      "integrity": "sha512-71DE73YkxKEyiy1O5Ei5Uy1ZCT0tOPriPWIkH3g+mpnd52Gr1u2buexpq2upATekhc1Mu87d9EmRqXg2Kqhszw==",
       "dev": true,
       "requires": {
-        "@babel/polyfill": "7.11.5",
-        "@babel/runtime": "7.11.2",
-        "@cliqz-oss/firefox-client": "0.3.1",
-        "@cliqz-oss/node-firefox-connect": "1.2.1",
+        "@babel/runtime": "7.13.9",
         "@devicefarmer/adbkit": "2.11.3",
-        "addons-linter": "2.7.0",
-        "bunyan": "1.8.14",
-        "camelcase": "6.0.0",
-        "chrome-launcher": "0.13.4",
+        "addons-linter": "3.20.0",
+        "bunyan": "1.8.15",
+        "camelcase": "6.2.0",
+        "chrome-launcher": "0.14.0",
         "debounce": "1.2.0",
-        "decamelize": "4.0.0",
+        "decamelize": "5.0.0",
         "es6-error": "4.1.1",
         "event-to-promise": "0.8.0",
-        "firefox-profile": "4.0.0",
-        "fs-extra": "9.0.1",
-        "fx-runner": "1.0.13",
-        "import-fresh": "3.2.1",
+        "firefox-profile": "4.2.1",
+        "fs-extra": "9.1.0",
+        "fx-runner": "1.1.0",
+        "import-fresh": "3.3.0",
         "mkdirp": "1.0.4",
-        "multimatch": "4.0.0",
+        "multimatch": "5.0.0",
         "mz": "2.7.0",
-        "node-notifier": "8.0.0",
-        "open": "7.3.0",
-        "parse-json": "5.0.1",
-        "sign-addon": "3.1.0",
-        "source-map-support": "0.5.19",
+        "node-notifier": "9.0.0",
+        "open": "7.4.2",
+        "parse-json": "5.2.0",
+        "sign-addon": "3.9.0",
+        "source-map-support": "0.5.20",
         "strip-bom": "4.0.0",
         "strip-json-comments": "3.1.1",
         "tmp": "0.2.1",
-        "update-notifier": "5.0.0",
-        "watchpack": "1.7.4",
-        "ws": "7.3.1",
-        "yargs": "15.4.1",
-        "zip-dir": "1.0.2"
+        "update-notifier": "5.1.0",
+        "watchpack": "2.1.1",
+        "ws": "7.4.6",
+        "yargs": "16.2.0",
+        "zip-dir": "2.0.0"
       },
       "dependencies": {
-        "glob": {
-          "version": "7.1.6",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
-          "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
-          "dev": true,
-          "requires": {
-            "fs.realpath": "^1.0.0",
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "^3.0.4",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        },
         "mkdirp": {
           "version": "1.0.4",
           "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
           "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
           "dev": true
         },
-        "rimraf": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-          "dev": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        },
         "strip-json-comments": {
           "version": "3.1.1",
           "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -6736,23 +12081,6 @@
         }
       }
     },
-    "webidl-conversions": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
-      "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
-      "dev": true
-    },
-    "whatwg-url": {
-      "version": "8.2.2",
-      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.2.2.tgz",
-      "integrity": "sha512-PcVnO6NiewhkmzV0qn7A+UZ9Xx4maNTI+O+TShmfE4pqjoCMwUMjkvoNhNHPTvgR7QH9Xt3R13iHuWy2sToFxQ==",
-      "dev": true,
-      "requires": {
-        "lodash.sortby": "^4.7.0",
-        "tr46": "^2.0.2",
-        "webidl-conversions": "^6.1.0"
-      }
-    },
     "when": {
       "version": "3.7.7",
       "resolved": "https://registry.npmjs.org/when/-/when-3.7.7.tgz",
@@ -6760,19 +12088,13 @@
       "dev": true
     },
     "which": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
-      "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
       "requires": {
         "isexe": "^2.0.0"
       }
     },
-    "which-module": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
-      "dev": true
-    },
     "widest-line": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
@@ -6780,40 +12102,6 @@
       "dev": true,
       "requires": {
         "string-width": "^4.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-          "dev": true
-        },
-        "string-width": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
-          "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^8.0.0",
-            "is-fullwidth-code-point": "^3.0.0",
-            "strip-ansi": "^6.0.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^5.0.0"
-          }
-        }
       }
     },
     "winreg": {
@@ -6825,18 +12113,12 @@
     "word-wrap": {
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
-      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
-      "dev": true
-    },
-    "wordwrap": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
-      "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
+      "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
     },
     "wrap-ansi": {
-      "version": "6.2.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
-      "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+      "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
       "dev": true,
       "requires": {
         "ansi-styles": "^4.0.0",
@@ -6844,37 +12126,29 @@
         "strip-ansi": "^6.0.0"
       },
       "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-          "dev": true
-        },
-        "string-width": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
-          "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
           "dev": true,
           "requires": {
-            "emoji-regex": "^8.0.0",
-            "is-fullwidth-code-point": "^3.0.0",
-            "strip-ansi": "^6.0.0"
+            "color-convert": "^2.0.1"
           }
         },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
           "dev": true,
           "requires": {
-            "ansi-regex": "^5.0.0"
+            "color-name": "~1.1.4"
           }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
         }
       }
     },
@@ -6883,14 +12157,6 @@
       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
       "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
     },
-    "write": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
-      "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
-      "requires": {
-        "mkdirp": "^0.5.1"
-      }
-    },
     "write-file-atomic": {
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
@@ -6904,10 +12170,11 @@
       }
     },
     "ws": {
-      "version": "7.3.1",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz",
-      "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==",
-      "dev": true
+      "version": "7.4.6",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
+      "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
+      "dev": true,
+      "requires": {}
     },
     "xdg-basedir": {
       "version": "4.0.0",
@@ -6931,94 +12198,44 @@
       "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
       "dev": true
     },
+    "xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+      "dev": true,
+      "peer": true
+    },
     "y18n": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
-      "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+      "version": "5.0.8",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+      "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
       "dev": true
     },
+    "yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+    },
     "yargs": {
-      "version": "15.4.1",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
-      "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+      "version": "16.2.0",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+      "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
       "dev": true,
       "requires": {
-        "cliui": "^6.0.0",
-        "decamelize": "^1.2.0",
-        "find-up": "^4.1.0",
-        "get-caller-file": "^2.0.1",
+        "cliui": "^7.0.2",
+        "escalade": "^3.1.1",
+        "get-caller-file": "^2.0.5",
         "require-directory": "^2.1.1",
-        "require-main-filename": "^2.0.0",
-        "set-blocking": "^2.0.0",
         "string-width": "^4.2.0",
-        "which-module": "^2.0.0",
-        "y18n": "^4.0.0",
-        "yargs-parser": "^18.1.2"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
-          "dev": true
-        },
-        "decamelize": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-          "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-          "dev": true
-        },
-        "string-width": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
-          "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^8.0.0",
-            "is-fullwidth-code-point": "^3.0.0",
-            "strip-ansi": "^6.0.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^5.0.0"
-          }
-        }
+        "y18n": "^5.0.5",
+        "yargs-parser": "^20.2.2"
       }
     },
     "yargs-parser": {
-      "version": "18.1.3",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
-      "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
-      "dev": true,
-      "requires": {
-        "camelcase": "^5.0.0",
-        "decamelize": "^1.2.0"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "5.3.1",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-          "dev": true
-        },
-        "decamelize": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-          "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-          "dev": true
-        }
-      }
+      "version": "20.2.9",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+      "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+      "dev": true
     },
     "yauzl": {
       "version": "2.10.0",
@@ -7031,33 +12248,22 @@
       }
     },
     "zip-dir": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-1.0.2.tgz",
-      "integrity": "sha1-JT+QeurWKiGs2HIdi4gDKyQRwFE=",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-2.0.0.tgz",
+      "integrity": "sha512-uhlsJZWz26FLYXOD6WVuq+fIcZ3aBPGo/cFdiLlv3KNwpa52IF3ISV8fLhQLiqVu5No3VhlqlgthN6gehil1Dg==",
       "dev": true,
       "requires": {
-        "async": "^1.5.2",
-        "jszip": "^2.4.0"
+        "async": "^3.2.0",
+        "jszip": "^3.2.2"
       },
       "dependencies": {
         "async": {
-          "version": "1.5.2",
-          "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
-          "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+          "version": "3.2.1",
+          "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz",
+          "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==",
           "dev": true
         }
       }
-    },
-    "zip-stream": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.0.2.tgz",
-      "integrity": "sha512-TGxB2g+1ur6MHkvM644DuZr8Uzyz0k0OYWtS3YlpfWBEmK4woaC2t3+pozEL3dBfIPmpgmClR5B2QRcMgGt22g==",
-      "dev": true,
-      "requires": {
-        "archiver-utils": "^2.1.0",
-        "compress-commons": "^4.0.0",
-        "readable-stream": "^3.6.0"
-      }
     }
   }
 }
diff --git a/package.json b/package.json
index 509957c0..1c60a0c1 100644
--- a/package.json
+++ b/package.json
@@ -3,20 +3,18 @@
   "version": "0.0.1",
   "description": "Developer tools for Privacy Badger.",
   "dependencies": {
-    "eslint": "~5.10.0"
+    "eslint": "~7.32.0"
   },
   "devDependencies": {
     "jquery": "3.5.1",
     "jquery-smooth-scroll": "2.2.0",
-    "jquery-ui": "1.12.1",
+    "jquery-ui": "1.13.0",
     "jquery-ui-iconfont": "2.3.2",
-    "punycode": "1.4.1",
     "qunit": "2.9.2",
     "select2": "4.0.11",
     "sinon": "2.0.0",
     "tooltipster": "4.2.6",
-    "underscore": "1.9.1",
-    "web-ext": "~5.2.0"
+    "web-ext": "~6.5.0"
   },
   "private": true
 }
diff --git a/release-utils/make-signed-xpi.sh b/release-utils/make-signed-xpi.sh
index cf3fe73d..0bea4a83 100755
--- a/release-utils/make-signed-xpi.sh
+++ b/release-utils/make-signed-xpi.sh
@@ -4,7 +4,7 @@ set -e
 
 cd "$(dirname "$0")"
 
-LATEST_SDK_VERSION=5.2.0
+LATEST_SDK_VERSION=6.5.0
 WEB_EXT=../node_modules/.bin/web-ext
 
 # Auto-generated XPI name from 'web-ext sign'
@@ -33,15 +33,6 @@ sed -i -e '/eff.software.projects@gmail.com/,+1d' -e 's/"author": {/"author": "p
 echo "removing Chrome's update_url"
 # remove update_url
 sed -i -e '/"update_url": "https:\/\/clients2.google.com\/service\/update2\/crx"/,+0d' ../checkout/src/manifest.json
-# fix the trailing comma
-# TODO fragile! at least we validate the JSON below
-# https://unix.stackexchange.com/a/26288
-# https://unix.stackexchange.com/a/26290
-sed -i -e '/"storage": {/{
-  n
-  n
-  s/},/}/
-}' ../checkout/src/manifest.json
 
 # lint the checkout folder
 $WEB_EXT lint -s ../checkout/src
diff --git a/release-utils/post-release.sh b/release-utils/post-release.sh
index 4bfe00e0..b3e02779 100755
--- a/release-utils/post-release.sh
+++ b/release-utils/post-release.sh
@@ -32,7 +32,7 @@ echo "As always, you can get it from https://privacybadger.org/ or from your bro
 echo "" >> $MSG
 echo "Notable updates:" >> $MSG
 echo "" >> $MSG
-tail -n+5 ../doc/Changelog | sed '/^$/q' >> $MSG
+tail -n+4 ../doc/Changelog | sed '/^$/q' | grep -Ev '^[0-9]{4}\.[0-9\.]+$' >> $MSG
 echo "For further details, consult our release notes on GitHub:" >> $MSG
 echo "https://github.com/EFForg/privacybadger/releases/tag/release-$TARGET" >> $MSG
 
@@ -53,7 +53,7 @@ echo ""
 echo "AMO release notes:"
 echo ""
 echo "<ul>"
-tail -n+5 ../doc/Changelog | sed '/^$/q' | {
+tail -n+4 ../doc/Changelog | sed '/^$/q' | grep -Ev '^[0-9]{4}\.[0-9\.]+$' | {
   out=""
   while IFS= read -r line; do
     # changelog entries start with "*"
diff --git a/scripts/apply_effdntlist.py b/scripts/apply_effdntlist.py
new file mode 100755
index 00000000..285a6632
--- /dev/null
+++ b/scripts/apply_effdntlist.py
@@ -0,0 +1,85 @@
+#!/usr/bin/env python3
+
+import json
+import random
+import re
+import sys
+import time
+import urllib.request
+
+from collections import OrderedDict
+
+from tldextract import TLDExtract
+
+
+DNT_LIST_URL = 'https://www.eff.org/files/effdntlist.txt'
+
+
+def get_dnt_domains():
+    dnt_domains = []
+
+    with urllib.request.urlopen(DNT_LIST_URL) as response:
+        domain_regex = r'^@@\|\|(.*)\^\$third-party$'
+        for line in response:
+            match = re.match(domain_regex, line.decode('utf-8').strip())
+            if match:
+                dnt_domains.append(match.groups()[0])
+
+    return dnt_domains
+
+def get_next_update_time():
+    epoch_now = int(time.time()) * 1000
+    one_day = 1000 * 60 * 60 * 24
+    return random.randint(epoch_now + one_day, epoch_now + one_day * 7)
+
+def apply_dnt_domains(data, dnt_domains):
+    tld_extract = TLDExtract(cache_dir=False)
+
+    for domain in dnt_domains:
+        parsed_tld = tld_extract(domain)
+        base = parsed_tld.domain + '.' + parsed_tld.suffix
+
+        # only apply DNT scan results for domains
+        # that are already present in seed data
+        # and are blocked
+        if base not in data['action_map'] or data['action_map'][base]['heuristicAction'] != "block":
+            continue
+
+        if domain in data['action_map']:
+            if "dnt" not in data['action_map'][domain] or not data['action_map'][domain]['dnt']:
+                print("Marking %s as DNT compliant ..." % domain)
+                data['action_map'][domain]['dnt'] = True
+                data['action_map'][domain]['nextUpdateTime'] = get_next_update_time()
+        else:
+            print("Adding %s as DNT compliant ..." % domain)
+            data['action_map'][domain] = {
+                "dnt": True,
+                "heuristicAction": "",
+                "nextUpdateTime": get_next_update_time(),
+            }
+
+    return data
+
+
+if __name__ == "__main__":
+    if len(sys.argv) != 2:
+        print("Usage: %s BADGER_SEED_DATA.json" % sys.argv[0])
+        sys.exit(1)
+
+    # get DNT scan results
+    dnt_domains = get_dnt_domains()
+    if not dnt_domains:
+        print("No DNT list domains loaded!")
+        sys.exit(1)
+
+    with open(sys.argv[1], 'r+') as seed_file:
+        # read in seed data, preserving ordering
+        seed_data = json.load(seed_file, object_pairs_hook=OrderedDict)
+
+        # apply DNT scan results to seed data
+        seed_data = apply_dnt_domains(seed_data, dnt_domains)
+
+        # write the data back out
+        seed_file.seek(0)
+        # this should match how data gets written out by Badger Sett
+        json.dump(seed_data, seed_file, indent=2, sort_keys=True, separators=(',', ': '))
diff --git a/scripts/chromedriver.sh b/scripts/chromedriver.sh
index 3bd55d6f..66057c3a 100755
--- a/scripts/chromedriver.sh
+++ b/scripts/chromedriver.sh
@@ -1,17 +1,26 @@
 #!/usr/bin/env bash
 
+# installs the appropriate version of ChromeDriver for a given Chrome version
+
 # stop on errors (nonzero exit codes), uninitialized vars
 set -eu
 
 TEMPFILE=$(mktemp)
-CHROME="$1"
+CHROME="$1" # google-chrome or google-chrome-beta or ...
 
 trap 'rm $TEMPFILE' EXIT
 
-# install the appropriate version of ChromeDriver
 chrome_version=$("$CHROME" --product-version | cut -d . -f 1-3)
+
 chromedriver_version_url=https://chromedriver.storage.googleapis.com/LATEST_RELEASE_"$chrome_version"
+set +e
 chromedriver_version=$(wget "$chromedriver_version_url" -q -O -)
+set -e
+if [ -z "$chromedriver_version" ]; then
+  echo "Failed to retrieve ChromeDriver version!"
+  exit 1
+fi
+
 echo "Setting up ChromeDriver version $chromedriver_version ..."
 chromedriver_url=https://chromedriver.storage.googleapis.com/"$chromedriver_version"/chromedriver_linux64.zip
 wget -q -O "$TEMPFILE" "$chromedriver_url"
diff --git a/scripts/convertpsl.js b/scripts/convertpsl.js
new file mode 100755
index 00000000..8c33d864
--- /dev/null
+++ b/scripts/convertpsl.js
@@ -0,0 +1,44 @@
+/* eslint-env node */
+
+// script based on
+// https://github.com/adblockplus/adblockpluscore/blob/d7efa99b47e6cefa9286d34ce80e2242d789a08b/build/updatepsl.js
+
+const fs = require('fs');
+
+function convert(data) {
+  let psl = {};
+
+  for (let line of data.split(/\r?\n/)) {
+    if (line.startsWith("//") || !line.includes(".")) {
+      continue;
+    }
+
+    let value = 1;
+    line = line.replace(/\s+$/, "");
+
+    if (line.startsWith("*.")) {
+      line = line.slice(2);
+      value = 2;
+    } else if (line.startsWith("!")) {
+      line = line.slice(1);
+      value = 0;
+    }
+
+    // save host and type of entry, converting Unicode hostnames to Punycode
+    psl[new URL("http://" + line).hostname] = value;
+  }
+
+  return psl;
+}
+
+if (require.main == module) {
+  let filename = process.argv[2];
+
+  let psl = convert(fs.readFileSync(filename, 'utf8'));
+
+  let keys = Object.keys(psl).sort();
+  fs.writeFileSync(
+    filename,
+    `window.publicSuffixes = ${JSON.stringify(psl, keys, 2)};\n`,
+    'utf8');
+}
diff --git a/scripts/convertpsl.py b/scripts/convertpsl.py
deleted file mode 100755
index 3cd78bec..00000000
--- a/scripts/convertpsl.py
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env python
-
-# script based on
-# https://github.com/adblockplus/buildtools/blob/d090e00610a58cebc78478ae33e896e6b949fc12/publicSuffixListUpdater.py
-
-from __future__ import print_function
-
-import json
-import sys
-
-def convert(psl_text):
-    suffixes = {}
-
-    for line in psl_text:
-        line = line.rstrip()
-        if line.startswith('//') or '.' not in line:
-            continue
-        if line.startswith('*.'):
-            suffixes[line[2:]] = 2
-        elif line.startswith('!'):
-            suffixes[line[1:]] = 0
-        else:
-            suffixes[line] = 1
-
-    return suffixes
-
-
-if __name__ == '__main__':
-    with open(sys.argv[1], 'r+') as f:
-        psl = convert(f)
-        f.seek(0)
-        text = 'window.publicSuffixes = %s;' % (
-            json.dumps(psl, sort_keys=True, indent=2, separators=(',', ': '))
-        )
-        print(text, file=f)
-        f.truncate()
diff --git a/scripts/requirements.txt b/scripts/requirements.txt
new file mode 100644
index 00000000..7538160c
--- /dev/null
+++ b/scripts/requirements.txt
@@ -0,0 +1 @@
+tldextract==3.1.0
diff --git a/scripts/setup_travis.sh b/scripts/setup_travis.sh
index 5e4bbf0f..125ff561 100755
--- a/scripts/setup_travis.sh
+++ b/scripts/setup_travis.sh
@@ -43,7 +43,7 @@ function browser_setup {
 
 function setup_lint {
   # "--production" to skip installing devDependencies modules
-  npm install --production || exit 1
+  npm ci --production || exit 1
 }
 
 # check that the desired browser is present as it might fail to install
diff --git a/scripts/updatecnames.sh b/scripts/updatecnames.sh
new file mode 100755
index 00000000..4589dd4d
--- /dev/null
+++ b/scripts/updatecnames.sh
@@ -0,0 +1,34 @@
+#!/usr/bin/env bash
+# Updates CNAME domains JSON
+
+# stop on errors (nonzero exit codes), uninitialized vars
+set -eu
+
+CNAME_LIST_PATH=src/data/cname_domains.json
+CNAME_LIST_URL=https://raw.githubusercontent.com/AdguardTeam/cname-trackers/master/combined_disguised_trackers.json
+TEMPFILE=$(mktemp)
+
+trap 'rm $TEMPFILE' EXIT
+
+echo "fetching CNAME domain list ..."
+if wget -q -T 30 -O "$TEMPFILE" -- $CNAME_LIST_URL && [ -s "$TEMPFILE" ]; then
+  # validation
+  if ! python3 -m json.tool "$TEMPFILE" >/dev/null; then
+    echo "    new CNAME domain list is not formatted correctly"
+    echo "    aborting build!"
+    exit 1
+  fi
+
+  if cmp -s "$TEMPFILE" $CNAME_LIST_PATH; then
+    echo "    no CNAME domain list updates"
+  else
+    cp "$TEMPFILE" $CNAME_LIST_PATH
+    echo "    updated CNAME domain list at $CNAME_LIST_PATH"
+    echo "    please verify and commit!"
+    exit 1
+  fi
+else
+  echo "    failed to fetch CNAME domains from $CNAME_LIST_URL"
+  echo "    aborting build!"
+  exit 1
+fi
diff --git a/scripts/updatepsl.sh b/scripts/updatepsl.sh
index fa917410..9e2b910f 100755
--- a/scripts/updatepsl.sh
+++ b/scripts/updatepsl.sh
@@ -12,7 +12,7 @@ trap 'rm $TEMPFILE' EXIT
 
 echo "fetching Public Suffix List ..."
 if wget -q -T 30 -O "$TEMPFILE" -- $PSL_URL && [ -s "$TEMPFILE" ]; then
-	python scripts/convertpsl.py "$TEMPFILE"
+	node scripts/convertpsl.js "$TEMPFILE"
 	if cmp -s "$TEMPFILE" $PSL_PATH; then
 		echo "    no PSL updates"
 	else
diff --git a/scripts/updateseeddata.sh b/scripts/updateseeddata.sh
index bb1d2213..407af507 100755
--- a/scripts/updateseeddata.sh
+++ b/scripts/updateseeddata.sh
@@ -1,5 +1,5 @@
 #!/usr/bin/env bash
-# Update the pre-trained "seed" tracker list
+# Updates pre-trained "seed" data
 
 # stop on errors (nonzero exit codes), uninitialized vars
 set -eu
@@ -10,7 +10,7 @@ TEMPFILE=$(mktemp)
 
 trap 'rm $TEMPFILE' EXIT
 
-echo "fetching seed tracker lists..."
+echo "fetching seed data ..."
 if wget -q -T 30 -O "$TEMPFILE" -- $SEED_URL && [ -s "$TEMPFILE" ]; then
   if ! python scripts/verify_json.py "$TEMPFILE"; then
     echo "    new seed data is not formatted correctly"
diff --git a/src/_locales/ar/messages.json b/src/_locales/ar/messages.json
index 4c424d3f..9a17ef0c 100644
--- a/src/_locales/ar/messages.json
+++ b/src/_locales/ar/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "«غرير الخصوصية»",
+        "description": ""
+    },
+    "description": {
+        "message": "يتعلم «غرير الخصوصية» تلقائيا أن يحجب المتعقبات الخفية.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "عطّل على هذا الموقع",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "فعّل على هذا الموقع",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Report broken site",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "إصدارة $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "$DOMAIN$ محجوب",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "تحقق من كون <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>نطاقات الأطراف الخارحية</a> تلتزم <a target='_blank' href='https://www.eff.org/dnt-policy'>سياسة EFF لعدم التعقب</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "رجاء أضف مسارا أو نطاقا صحيحا.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "تبرع إلى EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "ساعدنا بالتبرع ونشر دعمك لأدواتنا",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "يعِد هذا النطاق بألا يتعقبك",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Blocking this domain is known to break websites",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Block entirely",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Block cookies",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Allow",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "Click to return control of this domain to Privacy Badger",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "أبلغ عن عطل",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "مثلا: www.domain.com، أو ‪*.domain.net‬، أو domain.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "انقر هنا لحجب هذا النطاق من إضافة كعكات",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "المحجوب",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "استورد",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Don't replace the following widgets:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Widget Replacement",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "When blocking social buttons and other potentially useful (video, audio, comments) widgets, Privacy Badger can replace them with click-to-activate placeholders.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "Enable widget replacement",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Widget Exceptions",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Don't replace the following widgets:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Site Exceptions",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Always allow widgets on these sites:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "Show domains that don't appear to be tracking you",
@@ -198,8 +248,8 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "رجاء لا تنس النقر على ”هل أفسد «غرير الخصوصية» هذا الموقع“. لأننا نحترم خصوصيتك لا نرسل أي بلاغات تلقائية.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Please don't forget to click on 'Report broken site'. We respect your privacy so we don't send automatic reports.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "خيارات «غرير الخصوصية»",
@@ -209,14 +259,6 @@
         "message": "This will automatically send the following information to EFF: the page you're currently visiting, your browser version, the version of Privacy Badger, and the state of all of the sliders on this page.",
         "description": ""
     },
-    "whitelisted_domains": {
-        "message": "المواقع غير المفعلة",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "فعّل «غرير الخصوصية» على هذا الموقع",
-        "description": ""
-    },
     "options_domain_type_filter": {
         "message": "رشّح بالنوع:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
@@ -285,20 +327,6 @@
         "message": "خذ جولة",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "انقر هنا لحجب هذا النطاق تماما",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "إصدارة $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "الكعكات محجوبة من النطاق $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "المحجوب جزئيا",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "أفهم هذا؛ أرني رجاء قائمة المتعقبات",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "شكرا على تنصيب «غرير الخصوصية»",
         "description": ""
@@ -325,10 +349,6 @@
         "message": "رجاء اختر ملفا لاستيراده",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "هل أفسد «غرير الخصوصية» هذا الموقع؟ أعلمنا بهذا.",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "وسط المؤشر لحجب الكعكات",
         "description": ""
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "متوافق مع ”لا تتعقبني“",
+        "message": "compliant with EFF's DNT policy",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "الخصوصية رياضة جماعية",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "يفترض ألا تحتاج لتغيير أي شيء هنا.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "الكل",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -395,19 +411,39 @@
     },
     "options_disable_google_nav_error_service": {
         "message": "Disable sending web addresses you visit to Google. This disables suggestions for similar pages when a page can't be found.",
-        "description": "Checkbox label found on the general settings page"
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Disable hyperlink auditing",
+        "message": "Prevent sites from tracking which links you click (\"hyperlink auditing\")",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Disable prefetching",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Disable Google's Federated Learning of Cohorts (FLoC)",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "تحت تحكم المستخدم",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Link tracking protection active",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Some websites $LINK_START$use link tracking to follow you$LINK_END$ whenever you click a link to leave the website. Privacy Badger removes tracking from such links on this website.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
         "message": "$COUNT$ potential $LINK_START$trackers$LINK_END$ blocked",
@@ -447,22 +483,10 @@
         "message": "مشروع من مؤسسة الجبهة الإلكترونية (Electronic Frontier Foundation)",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "أضف النطاق",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "حرك المؤشر يمينا للسماح بالنطاق",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "عطّل «غرير الخصوصية» على هذا الموقع",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "انقر هنا للسماح بهذا النطاق",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "لن يشارك «غرير الخصوصية» أبدا أي معلومات عن تصفحك إلا إن اخترت أن تشاركها.",
         "description": "Intro page paragraph."
@@ -488,10 +512,6 @@
         "message": "لم يكتشف «غرير الخصوصية» أي <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>نطاقات متعقِّبة</a> حتى الآن. واصل تصفحك.",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "«غرير الخصوصية»",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "يبدأ «غرير الخصوصية» في الحجب ما إن يرى نفس المتعقب على ثلاثة مواقع مختلفة. ثلاث فرص ثم يخرج!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "صف العطل باختصار أدناه.",
         "description": ""
     },
-    "remove_button": {
-        "message": "أزل المحدد",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "باستخدامك «غرير الخصوصية» تنضم إلى <a href='https://www.eff.org/' target='_blank'>مؤسسة الجبهة الإلكترونية</a> و ملايين المستخدمين في قتالهم من أجل الخصوصية. نحن مؤسسة غير ربحية نقاتل لحقوقك على الإنترنت. شكرًا لانضمامك إلينا.",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "شارك على فيسبوك",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "يتعلم «غرير الخصوصية» تلقائيا أن يحجب المتعقبات الخفية.",
-        "description": ""
-    },
     "report_fail": {
         "message": "حدث عطل ما.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger has replaced this $WIDGET$ widget",
+        "message": "Privacy Badger has replaced $START_ANCHOR_TAG$this $WIDGET$ widget$END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "تم رفع البيانات.",
+        "message": "تم رفع البيانات",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "تعذّر رفع البيانات.",
+        "message": "تعذّر رفع البيانات",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "«غرير الخصوصية» (www.eff.org/privacybadger) هو امتداد للمتصفح يتعلم تلقائيا أن يحجب المتعقبات الخفية. «غرير الخصوصية» من مؤسسة الجبهة الإلكترونية، و هي منظمة غير ربحية تقاتل لحقوقك على الإنترنت.",
+        "message": "«غرير الخصوصية» (privacybadger.org) هو امتداد للمتصفح يتعلم تلقائيا أن يحجب المتعقبات الخفية. «غرير الخصوصية» من مؤسسة الجبهة الإلكترونية، و هي منظمة غير ربحية تقاتل لحقوقك على الإنترنت.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "Privacy Badger is disabled on this site",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Widget Replacement",
+    "disabled_sites": {
+        "message": "المواقع غير المفعلة",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "When blocking social buttons and other potentially useful (video, audio, comments) widgets, Privacy Badger can replace them with click-to-activate placeholders.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "مثلا: www.example.com، أو ‪*.example.net‬، أو example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "أضف النطاق",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "أزل المحدد",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "رجاء أضف مسارا أو نطاقا صحيحا",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "The following setting has been deprecated and will be removed in a future Privacy Badger update:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "زر $LINK$ لمزيد من المعلومات.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "أفهم",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/bg/messages.json b/src/_locales/bg/messages.json
index b7edfd04..6d8b592d 100644
--- a/src/_locales/bg/messages.json
+++ b/src/_locales/bg/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger автоматично се научава да блокира невидими преследвачи.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Изключи за този сайт",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Включи за този сайт",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Report broken site",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "версия $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "Блокирах $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "Проверявай дали <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>домейните от трети страни</a> се съобразяват с <a target='_blank' href='https://www.eff.org/dnt-policy'>Do Not Track (Не ме следи) политиката на EFF</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Моля добави валиден домейн или URL.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "Подкрепи EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Помогни ни с дарение или като споделиш подкрепата си за инструментите ни",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "Този домейн обещава да не те следи",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Blocking this domain is known to break websites",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Block entirely",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Block cookies",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Allow",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "Click to return control of this domain to Privacy Badger",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "Докладвай за грешка",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "например www.domain.com, *.domain.net, domain.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Щракни тук, за да забраниш на този домейн да оставя бисквитки",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "блокирани",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "Импортирай",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Don't replace the following widgets:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Widget Replacement",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "When blocking social buttons and other potentially useful (video, audio, comments) widgets, Privacy Badger can replace them with click-to-activate placeholders.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "Enable widget replacement",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Widget Exceptions",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Don't replace the following widgets:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Site Exceptions",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Always allow widgets on these sites:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "Show domains that don't appear to be tracking you",
@@ -198,8 +248,8 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "Моля те не забравай да щракнеш на \"Развали ли Privacy Badger този сайт\". Уважаваме личното ти пространство, така че не изпращаме автоматични доклади.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Please don't forget to click on 'Report broken site'. We respect your privacy so we don't send automatic reports.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Настройки на Privacy Badger",
@@ -209,14 +259,6 @@
         "message": "This will automatically send the following information to EFF: the page you're currently visiting, your browser version, the version of Privacy Badger, and the state of all of the sliders on this page.",
         "description": ""
     },
-    "whitelisted_domains": {
-        "message": "Сайтове-изключения",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Включи Privacy Badger за този сайт",
-        "description": ""
-    },
     "options_domain_type_filter": {
         "message": "Филтрирай според вид:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
@@ -285,20 +327,6 @@
         "message": "Обясни ми набързо",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Щракни тук, за да блокираш този домейн напълно",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "версия $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "Блокирах бисквитки от $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "частично блокирани",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Разбирам; покажи ми все пак домейните-преследвачи",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Благодаря, че инсталира Privacy Badger!",
         "description": ""
@@ -325,10 +349,6 @@
         "message": "Моля избери файл за импорт.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "Развали ли Privacy Badger този сайт? Уведоми ни!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "Премести плъзгача в средата, за да блокираш бисквитките",
         "description": ""
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "съобразяващи се с DNT",
+        "message": "compliant with EFF's DNT policy",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "Личното пространство е отборна игра!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "Не би трябвало да се налага да променяш каквото и да е тук.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "всички",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -395,19 +411,39 @@
     },
     "options_disable_google_nav_error_service": {
         "message": "Disable sending web addresses you visit to Google. This disables suggestions for similar pages when a page can't be found.",
-        "description": "Checkbox label found on the general settings page"
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Disable hyperlink auditing",
+        "message": "Prevent sites from tracking which links you click (\"hyperlink auditing\")",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Disable prefetching",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Disable Google's Federated Learning of Cohorts (FLoC)",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "контролирани от теб",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Link tracking protection active",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Some websites $LINK_START$use link tracking to follow you$LINK_END$ whenever you click a link to leave the website. Privacy Badger removes tracking from such links on this website.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
         "message": "$COUNT$ potential $LINK_START$trackers$LINK_END$ blocked",
@@ -447,22 +483,10 @@
         "message": "Един проект на Electronic Frontier Foundation",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Добави домейн",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Премести плъзгача надясно, за да разрешиш домейн",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Изключи Privacy Badger за този сайт",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Щракни тук, за да разрешиш този домейн",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privacy Badger НИКОГА няма да споделя данни за сърфирането ти, освен ако ти не решиш да ги споделиш.",
         "description": "Intro page paragraph."
@@ -488,10 +512,6 @@
         "message": "Privacy Badger досега не е открил <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>домейни-преследвачи</a>. Продължавай да си сърфираш!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privacy Badger започва да блокира, когато види един и същ преследвач на три различни сайта. Три картона и е аут!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "Опиши накратко грешката по́ долу.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Премахни избраните",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "Когато използваш Privacy Badger, се присъединяваш към <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a> и милиони други потребители в борбата за лично пространство и поверителност. Ние сме сдружение с непарична цел, което се бори за онлайн правата ти. Благодаря, че си с нас!",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "Сподели във Facebook",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger автоматично се научава да блокира невидими преследвачи.",
-        "description": ""
-    },
     "report_fail": {
         "message": "Опа. Нещо се обърка.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger has replaced this $WIDGET$ widget",
+        "message": "Privacy Badger has replaced $START_ANCHOR_TAG$this $WIDGET$ widget$END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Качих успешно данните в обалака.",
+        "message": "Качих успешно данните в облака",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Не успях да кача данните в облака.",
+        "message": "Не успях да кача данните в облака",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger) е разширение за браузер, което автоматично се научава да блокира невидими преследвачи. Privacy Badger е направен от Electronic Frontier Foundation, организация с нестопанска цел, която се бори за твоите онлайн права.",
+        "message": "Privacy Badger (privacybadger.org) е разширение за браузер, което автоматично се научава да блокира невидими преследвачи. Privacy Badger е направен от Electronic Frontier Foundation, организация с нестопанска цел, която се бори за твоите онлайн права.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "Privacy Badger is disabled on this site",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Widget Replacement",
+    "disabled_sites": {
+        "message": "Сайтове-изключения",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "When blocking social buttons and other potentially useful (video, audio, comments) widgets, Privacy Badger can replace them with click-to-activate placeholders.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "например www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Добави домейн",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Премахни избраните",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Моля добави валиден домейн или URL",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "The following setting has been deprecated and will be removed in a future Privacy Badger update:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Посети $LINK$, за да научиш повече.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Разбирам",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/ca/messages.json b/src/_locales/ca/messages.json
index 790c4b37..d73356a3 100644
--- a/src/_locales/ca/messages.json
+++ b/src/_locales/ca/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "El Privacy Badger aprèn automàticament a blocar rastrejadors invisibles.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Deshabiliteu en aquest lloc",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Habilita per aquest lloc",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Report broken site",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "versió $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "S'ha blocat $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "Comproveu si els <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>dominis de terceres parts</a> compleixen amb la <a target='_blank' href='https://www.eff.org/dnt-policy'>política d'EFF de no seguiment</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Si us plau, afegiu un domini vàlid o un URL",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "Feu un donatiu a EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Ajudeu-nos fent un donatiu i compartint el vostre suport per les nostres eines",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "Aquest domini promet no seguir-vos",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Blocking this domain is known to break websites",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Block entirely",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Block cookies",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Allow",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "Click to return control of this domain to Privacy Badger",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "Informeu d'un error",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "p. ex. www.domini.com, *.domini.net, domini.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Cliqueu aquí per blocar les galetes d'aquest domini",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "blocat",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "Importar",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "No reemplaçar els ginys següents:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Reemplaçament de ginys",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "Quan es bloquegen els botons de les xarxes socials i altres ginys (vídeo, àudio, comentaris) habituals, el Privacy Badger pot reemplaçar-los per espais reservats activables amb un clic.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "Habilita el reemplaçament de ginys",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Widget Exceptions",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "No reemplaçar els ginys següents:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Site Exceptions",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Always allow widgets on these sites:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "Mostra els dominis que, aparentment, no us segueixen",
@@ -198,8 +248,8 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "Si us plau, no us oblideu de clicar a 'El Privacy Badger ha espatllat aquest lloc'. Respectem tant la vostra privacitat que no enviem informes de forma automàtica.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Please don't forget to click on 'Report broken site'. We respect your privacy so we don't send automatic reports.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Opcions de Privacy Badger",
@@ -209,14 +259,6 @@
         "message": "This will automatically send the following information to EFF: the page you're currently visiting, your browser version, the version of Privacy Badger, and the state of all of the sliders on this page.",
         "description": ""
     },
-    "whitelisted_domains": {
-        "message": "Llocs deshabilitats",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Habilita el Privacy Badger per aquest lloc",
-        "description": ""
-    },
     "options_domain_type_filter": {
         "message": "Filtra per tipus:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
@@ -285,20 +327,6 @@
         "message": "Feu la visita guiada",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Cliqueu aquí per blocar completament aquest domini",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "versió $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "S'han blocat les galetes de $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "blocat parcialment",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Ho entenc; si us plau, mostra'm igualment el llistat de dominis de seguiment",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Gràcies per instal·lar el Privacy Badger!",
         "description": ""
@@ -325,10 +349,6 @@
         "message": "Si us plau, seleccioneu l'arxiu a importar",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "El Privacy Badger ha espatllat aquest lloc? Feu-nos-ho saber!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "Centreu el lliscador per blocar les galetes",
         "description": ""
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "respecta el No Em Seguiu",
+        "message": "compliant with EFF's DNT policy",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "La privacitat és un esport d'equip!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "Aquí no hauria de ser necessari modificar res",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "tot",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -395,19 +411,39 @@
     },
     "options_disable_google_nav_error_service": {
         "message": "Disable sending web addresses you visit to Google. This disables suggestions for similar pages when a page can't be found.",
-        "description": "Checkbox label found on the general settings page"
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Disable hyperlink auditing",
+        "message": "Prevent sites from tracking which links you click (\"hyperlink auditing\")",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Disable prefetching",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Disable Google's Federated Learning of Cohorts (FLoC)",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "controlat per l'usuari",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Link tracking protection active",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Some websites $LINK_START$use link tracking to follow you$LINK_END$ whenever you click a link to leave the website. Privacy Badger removes tracking from such links on this website.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
         "message": "$COUNT$ potential $LINK_START$trackers$LINK_END$ blocked",
@@ -447,22 +483,10 @@
         "message": "Un projecte de l'Electronic Frontier Foundation",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Afegeix domini",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Moveu el lliscador a la dreta per permetre un domini",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Deshabiliteu el Privacy Badger en aquest lloc",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Cliqueu aquí per permetre aquest domini",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "El Privacy Badger MAI compartirà dades sobre la vostra navegació, excepte si decidiu compartir-les.",
         "description": "Intro page paragraph."
@@ -488,10 +512,6 @@
         "message": "El Privacy Badger encara no ha detectat cap <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>domini de seguiment</a>. Seguiu navegant!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privacy Badger comença a blocar un cop veu el mateix rastrejador en tres llocs web diferents. Tres strikes i eliminat! Com al beisbol.",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "Descriviu breument l'errada a sota.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Treu els seleccionats",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "Quan utilitzeu el Privacy Badger, us uniu a l'<a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a> i milions de persones en la lluita per la privacitat. Som una entitat sense ànim de lucre lluitant pels vostres drets en línia. Gràcies per unir-vos a nosaltres!",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "Compartiu-ho a Facebook",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "El Privacy Badger aprèn automàticament a blocar rastrejadors invisibles.",
-        "description": ""
-    },
     "report_fail": {
         "message": "Ai! Alguna cosa no ha anat bé.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger has replaced this $WIDGET$ widget",
+        "message": "Privacy Badger has replaced $START_ANCHOR_TAG$this $WIDGET$ widget$END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "S'han carregat les dades al núvol correctament.",
+        "message": "S'han carregat les dades al núvol correctament",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Les dades no s'han pogut carregar al núvol.",
+        "message": "Les dades no s'han pogut carregar al núvol",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "El Privacy Badger (www.eff.org/privacybadger) és una extensió del navegador que aprèn automàticament a blocar rastrejadors invisibles. El Privacy Badger l'ha creat l'Electronic Frontier Foundation, una entitat sense ànim de lucre que lluita pels vostres drets en línia.",
+        "message": "El Privacy Badger (privacybadger.org) és una extensió del navegador que aprèn automàticament a blocar rastrejadors invisibles. El Privacy Badger l'ha creat l'Electronic Frontier Foundation, una entitat sense ànim de lucre que lluita pels vostres drets en línia.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "En aquest lloc, el Privacy Badger està deshabilitat",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Reemplaçament de ginys",
+    "disabled_sites": {
+        "message": "Llocs deshabilitats",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "Quan es bloquegen els botons de les xarxes socials i altres ginys (vídeo, àudio, comentaris) habituals, el Privacy Badger pot reemplaçar-los per espais reservats activables amb un clic.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "p. ex. www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Afegeix domini",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Treu els seleccionats",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Si us plau, afegiu un domini vàlid o un URL",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "The following setting has been deprecated and will be removed in a future Privacy Badger update:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Visiteu $LINK$ per saber-ne més.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Ho entenc",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/cs/messages.json b/src/_locales/cs/messages.json
index 275960cf..fa6452ee 100644
--- a/src/_locales/cs/messages.json
+++ b/src/_locales/cs/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger se automaticky učí blokovat neviditelné sledovací prvky na webových stránkách.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Vypnout pro tento web",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Zapnout pro tento web",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Report broken site",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "verze $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "Doména $DOMAIN$ je blokována",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "Zkontrolujte, zda <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>domény třetích stran</a> dodržují <a target='_blank' href='https://www.eff.org/dnt-policy'>pravidla Žádosti o nesledování od organizace EFF.</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Prosím, vložte validní doménu nebo adresu URL.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "Přispět EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Můžete nám přispět finanční obnos, nebo sdílet Vaši podporu na sociálních sítích",
@@ -57,14 +83,26 @@
     },
     "dnt_tooltip": {
         "message": "Tato doména slibuje, že Vás nebude sledovat",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
-        "message": "Blocking this domain is known to break websites",
+        "message": "Blokování této domény narušuje zobrazování některých webových stránek",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Block entirely",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Block cookies",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Allow",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
-        "message": "Click to return control of this domain to Privacy Badger",
+        "message": "Kliknutím vrátíte kontrolu nad touto doménou Privacy Badgeru",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
     },
     "next_section": {
@@ -83,14 +121,6 @@
         "message": "Nahlásit chybu",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "např. www.domain.com, *.domain.net, domain.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Kliknutím zde zakážete doméně nastavovat soubory cookies",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "blokované",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,16 +157,36 @@
         "message": "Importovat",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Don't replace the following widgets:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Widget Replacement",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "When blocking social buttons and other potentially useful (video, audio, comments) widgets, Privacy Badger can replace them with click-to-activate placeholders.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
-        "message": "Enable widget replacement",
-        "description": "Checkbox label on the widget replacement tab"
+        "message": "Povolit nahrazování widgetů",
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Widget Exceptions",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Nenahrazujte následující widgety:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Site Exceptions",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Always allow widgets on these sites:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
-        "message": "Show domains that don't appear to be tracking you",
+        "message": "Zobrazit domény, u kterých se nezdá, že by vás sledovaly",
         "description": "Checkbox label on the general settings page. Should match wording used in the 'non_tracker' message."
     },
     "report_button": {
@@ -162,11 +212,11 @@
         "description": "Label for a text input box on the Tracking Domains options page tab."
     },
     "options_learn_setting": {
-        "message": "Learn to block new trackers from your browsing",
+        "message": "Učit se během prohlížení blokovat nové sledovací prvky",
         "description": "Checkbox label on the general settings page"
     },
     "local_learning_warning": {
-        "message": "Enabling learning may make you more identifiable to websites",
+        "message": "Pokud zapnete učení, mohou vás webové stránky jednodušeji identifikovat",
         "description": "Tooltip on the general settings page"
     },
     "options_incognito_setting": {
@@ -178,19 +228,19 @@
         "description": "Tooltip on the general settings page"
     },
     "learning_prompt_text1": {
-        "message": "Privacy Badger will no longer learn from your browsing by default.",
+        "message": "Privacy Badger se již ve výchozím nastavení neučí z vašeho prohlížení.",
         "description": "First part of a prompt to visit the blog."
     },
     "learning_prompt_text2": {
-        "message": "Click below to learn more.",
+        "message": "Pro více informací klikněte níže.",
         "description": "Second part of a prompt to visit the blog."
     },
     "learning_prompt_button": {
-        "message": "Learn how Privacy Badger is changing",
+        "message": "Zjistěte více o změnách v Privacy Badgeru",
         "description": "Button text, part of a prompt to visit the blog."
     },
     "show_counter_checkbox": {
-        "message": "Show count of trackers",
+        "message": "Zobrazit počet sledovacích prvků",
         "description": "Checkbox label on the general settings page"
     },
     "what_is_a_tracker": {
@@ -198,23 +248,15 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "Nezapomeňte prosím kliknout na tlačítko \"Rozbil Privacy Badger tuto stránku?\", jelikož respektujeme Vaše soukromí a neposíláme automatické hlášení o chybách.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Please don't forget to click on 'Report broken site'. We respect your privacy so we don't send automatic reports.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Nastavení Privacy Badger",
         "description": ""
     },
     "report_terms": {
-        "message": "This will automatically send the following information to EFF: the page you're currently visiting, your browser version, the version of Privacy Badger, and the state of all of the sliders on this page.",
-        "description": ""
-    },
-    "whitelisted_domains": {
-        "message": "Vyloučené stránky",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Zapnout Privacy Badger pro tuto stránku",
+        "message": "Tímto automaticky pošlete EFF následující informace: stránku, kterou právě prohlížíte, verzi vašeho prohlížeče, verzi Privacy Badgeru a stav všech posuvníků na této stránce.",
         "description": ""
     },
     "options_domain_type_filter": {
@@ -274,31 +316,17 @@
         "description": "This is an options page tab heading."
     },
     "options_privacy_settings": {
-        "message": "Privacy",
+        "message": "Ochrana soukromí",
         "description": "Subheading on the general settings options page."
     },
     "options_advanced_settings": {
-        "message": "Advanced",
+        "message": "Pokročilé",
         "description": "Subheading on the general settings options page."
     },
     "intro_next_button": {
         "message": "Spustit prohlídku",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Kliknutím zde doménu zablokujete úplně",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "verze $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "Blokovány soubory cookies z domény $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "částečně blokované",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Rozumím, přesto mi ukažte seznam sledovacích domén",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Děkujeme Vám za instalaci Privacy Badger!",
         "description": ""
@@ -325,20 +349,16 @@
         "message": "Vyberte prosím soubor pro importování.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "Rozbil Privacy Badger tuto stránku? Dejte nám vědět!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "Umístěte posuvník doprostřed pro zablokování souborů cookies",
         "description": ""
     },
     "intro_learns": {
-        "message": "Learns automatically",
+        "message": "Automatické učení",
         "description": "Intro page paragraph heading"
     },
     "intro_learns_paragraph": {
-        "message": "Instead of keeping lists of what to block, Privacy Badger automatically discovers trackers based on their behavior.",
+        "message": "Místo udržování seznamu prvků, které se mají blokovat, bude Privacy Badger automaticky rozpoznávat sledovací prvky podle jejich chování.",
         "description": "Intro page paragraph"
     },
     "intro_beyond_ads": {
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "v souladu s Do Not Track",
+        "message": "compliant with EFF's DNT policy",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "Snaha o soukromí je týmový sport!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "Obvykle zde nemusíte nic upravovat.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "všechny",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -395,19 +411,39 @@
     },
     "options_disable_google_nav_error_service": {
         "message": "Disable sending web addresses you visit to Google. This disables suggestions for similar pages when a page can't be found.",
-        "description": "Checkbox label found on the general settings page"
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Disable hyperlink auditing",
+        "message": "Prevent sites from tracking which links you click (\"hyperlink auditing\")",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Disable prefetching",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Disable Google's Federated Learning of Cohorts (FLoC)",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "nastavené uživatelem",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Link tracking protection active",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Some websites $LINK_START$use link tracking to follow you$LINK_END$ whenever you click a link to leave the website. Privacy Badger removes tracking from such links on this website.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
         "message": "$COUNT$ potential $LINK_START$trackers$LINK_END$ blocked",
@@ -427,7 +463,7 @@
         }
     },
     "popup_instructions_no_trackers": {
-        "message": "No $LINK_START$trackers$LINK_END$ blocked",
+        "message": "Nejsou zablokovány žádné $LINK_START$sledovací prvky$LINK_END$",
         "description": "Text shown in the popup when there are no trackers on the page.",
         "placeholders": {
             "link_start": {
@@ -447,22 +483,10 @@
         "message": "Projekt Electronic Frontier Foundation",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Přidat doménu",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Posuňte posuvník vpravo pro povolení domény",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Vypnout Privacy Badger pro tuto stránku",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Klikněte zde pro povolení této domény",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privacy Badger NIKDY nesdílí žádná data o Vašem procházení, jestliže se k tomu sami nerozhodnete.",
         "description": "Intro page paragraph."
@@ -488,10 +512,6 @@
         "message": "Privacy Badger zatím neobjevil žádné <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>sledovací domény</a>. Můžete pokračovat v procházení internetu!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privacy Badger začne blokovat prvek teprve ve chvíli, kdy jej najde na třech různých webových stránkách. Tři zářezy a jde ze hry!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "Níže stručně popište chybu.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Smazat vybrané",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "Používáním rozšíření Privacy Badger se připojíte k organizaci <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a> a milionům dalších uživatelů k boji za soukromí. Jsme nezisková organizace, která bojuje za Vaše práva na internetu. Děkujeme, že jste s námi!",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "Sdílet na Facebooku",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger se automaticky učí blokovat neviditelné sledovací prvky na webových stránkách.",
-        "description": ""
-    },
     "report_fail": {
         "message": "Jejda. Něco se pokazilo.",
         "description": ""
@@ -567,17 +579,25 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger has replaced this $WIDGET$ widget",
+        "message": "Privacy Badger nahradil $START_ANCHOR_TAG$tento widget $WIDGET$ $END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
     "allow_once": {
-        "message": "Allow once",
+        "message": "Povolit jednou",
         "description": "Button in the placeholder shown in place of certain third-party (video, audio, commenting) widgets. Clicking it will allow the third-party widget to load this one time only."
     },
     "allow_on_site": {
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Data byla úspěšně nahrána na cloud.",
+        "message": "Data byla úspěšně nahrána na cloud",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Data nemohla být nahrána na cloud.",
+        "message": "Data nemohla být nahrána na cloud",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -629,7 +649,7 @@
         "description": "Tooltip that comes up when you hover over the share button in the upper right corner of the popup."
     },
     "share_tracker_header": {
-        "message": "Privacy Badger blocked $COUNT$ potential trackers on $DOMAIN$:",
+        "message": "Privacy Badger zablokoval $COUNT$ potencionálních sledovačů na $DOMAIN$:",
         "description": "Header above the list of tracking domains in the share message.",
         "placeholders": {
             "count": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger) je rozšíření prohlížeče, které automaticky detekuje neviditelné sledovací prvky. Privacy Badger je tvořen kolektivem Electronic Frontier Foundation, neziskovou organizací, která bojuje za Vaše práva na internetu.",
+        "message": "Privacy Badger (privacybadger.org) je rozšíření prohlížeče, které automaticky detekuje neviditelné sledovací prvky. Privacy Badger je tvořen kolektivem Electronic Frontier Foundation, neziskovou organizací, která bojuje za Vaše práva na internetu.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -655,7 +675,7 @@
         "description": "On-click text of the copy button on the share overlay."
     },
     "popup_special_page_header": {
-        "message": "Nothing to do on this page",
+        "message": "Na této stránce není potřeba dělat nic",
         "description": "Heading for popup_special_page_paragraph"
     },
     "popup_special_page_paragraph": {
@@ -666,12 +686,46 @@
         "message": "Privacy Badger is disabled on this site",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Widget Replacement",
+    "disabled_sites": {
+        "message": "Vyloučené stránky",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "When blocking social buttons and other potentially useful (video, audio, comments) widgets, Privacy Badger can replace them with click-to-activate placeholders.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "např. www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Přidat doménu",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Smazat vybrané",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Prosím, vložte validní doménu nebo adresu URL",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "The following setting has been deprecated and will be removed in a future Privacy Badger update:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Na adrese $LINK$ naleznete více informací.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Rozumím",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/da/messages.json b/src/_locales/da/messages.json
index 0fcd47cd..c515451e 100644
--- a/src/_locales/da/messages.json
+++ b/src/_locales/da/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger lærer automatisk at blokere usynlige sporinger.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Deaktiver for dette netsted",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Aktiver for dette netsted",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Report broken site",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "version $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "Blokerede $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "Tjek om <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>tredjepartsdomæner</a> overholder <a target='_blank' href='https://www.eff.org/dnt-policy'>EFFs \"Spor Ikke\"-politik</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Tilføj venligst et gyldigt domæne eller URL.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "Doner til EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Hjælp os ved at donere og dele din støtte til vores væktøjer",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "Dette domæne lover ikke at spore dig",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Nogle netsteder virker ikke når dette domæne blokeres",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Block entirely",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Block cookies",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Allow",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "Klik for at give Privacy Badger kontrol over dette domæne",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "Rapporter en fejl",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "fx www.domain.com, *.domain.net, domain.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Klik her for at blokere dette domæne fra at sætte cookies",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "blokeret",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "Importer",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Udskift ikke følgende ting:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Kontroludskiftning",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "Ved blokering af sociale knapper og andre potentielt brugbare (video, lyd, kommentarer) kontroller, kan Privacy Badger udskifte dem med klik-for-at-aktivere pladsholdere.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "Aktiver udskiftning",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Widget Exceptions",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Udskift ikke følgende ting:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Site Exceptions",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Always allow widgets on these sites:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "Vis domæner der ser ud til ikke at spore dig",
@@ -198,8 +248,8 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "Glem ikke at klikke på 'Ødelagde Privacy Badger dette netsted'. Vi respekterer dit privatliv, så vi sender ikke automatiske rapporter.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Please don't forget to click on 'Report broken site'. We respect your privacy so we don't send automatic reports.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Privacy Badger Indstillinger",
@@ -209,14 +259,6 @@
         "message": "This will automatically send the following information to EFF: the page you're currently visiting, your browser version, the version of Privacy Badger, and the state of all of the sliders on this page.",
         "description": ""
     },
-    "whitelisted_domains": {
-        "message": "Deaktiverede Steder",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Aktiver Privacy Badger for dette netsted",
-        "description": ""
-    },
     "options_domain_type_filter": {
         "message": "Filtrer efter type:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
@@ -285,20 +327,6 @@
         "message": "Tag turen",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Klik her for at blokere dette domæne fuldstændigt",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "version $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "Blokerede cookies fra $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "delvist blokeret",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Jeg forstår; vis mig listen over sporingsdomæner alligevel",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Tak for at installere Privacy Badger!",
         "description": ""
@@ -325,10 +349,6 @@
         "message": "Vælg en fil at importere.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "Ødelagde Privacy Badger dette netsted? Fortæl os om det!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "Centrer skyderen for at blokere cookies",
         "description": ""
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "\"Spor ikke\"-kompatibel",
+        "message": "compliant with EFF's DNT policy",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "Privatliv er en gruppesport!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "Du burde ikke have nødigt at ændre noget her.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "alle",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -395,19 +411,39 @@
     },
     "options_disable_google_nav_error_service": {
         "message": "Disable sending web addresses you visit to Google. This disables suggestions for similar pages when a page can't be found.",
-        "description": "Checkbox label found on the general settings page"
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Disable hyperlink auditing",
+        "message": "Prevent sites from tracking which links you click (\"hyperlink auditing\")",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Disable prefetching",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Disable Google's Federated Learning of Cohorts (FLoC)",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "brugerstyret",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Link tracking protection active",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Some websites $LINK_START$use link tracking to follow you$LINK_END$ whenever you click a link to leave the website. Privacy Badger removes tracking from such links on this website.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
         "message": "$COUNT$ potential $LINK_START$trackers$LINK_END$ blocked",
@@ -447,22 +483,10 @@
         "message": "Et projekt fra Electronic Frontier Foundation",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Tilføj domæne",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Flyt skyderen til højre for at tillade domænet",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Deaktiver Privacy Badger for dette netsted",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Klik her for at tillade dette domæne",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privacy Badger vil ALDRIG dele data om din browsning, med mindre du vælger at dele det.",
         "description": "Intro page paragraph."
@@ -488,10 +512,6 @@
         "message": "Privacy Badger har ikke opdaget nogle <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>sporingsdomæner</a> endnu. Fortsæt med at browse!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privacy Badger starts blocking once it sees the same tracker on three different websites. Three strikes and it's out!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "Beskriv fejlen kort herunder.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Fjern valgte",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "Når du bruger Privacy Badger, tilslutter du dig <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a> og millioner af andre brugere i kampen for privatliv. Vi er en nonprofit organisation der kæmper for dine rettigheder online. Tak for at slutte dig til os!",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "Del på Facebook",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger lærer automatisk at blokere usynlige sporinger.",
-        "description": ""
-    },
     "report_fail": {
         "message": "Ups. Noget gik galt.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger har erstattet denne $WIDGET$-kontrol",
+        "message": "Privacy Badger har erstattet $START_ANCHOR_TAG$denne $WIDGET$-kontrol$END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Skydata lagt op med success.",
+        "message": "Data successfully uploaded to the cloud",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Skydata kunne ikke lægges op.",
+        "message": "Data could not be uploaded to the cloud",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger) er en browserudvidelse som automatisk lærer at blokere usynlige sporinger. Privacy Badger laves af Electronic Frontier Foundation, en nonprofit-orginsation der kæmper for dine rettigheder online.",
+        "message": "Privacy Badger (privacybadger.org) er en browserudvidelse som automatisk lærer at blokere usynlige sporinger. Privacy Badger laves af Electronic Frontier Foundation, en nonprofit-orginsation der kæmper for dine rettigheder online.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "Privacy Badger er deaktiveret på dette netsted",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Kontroludskiftning",
+    "disabled_sites": {
+        "message": "Deaktiverede Steder",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "Ved blokering af sociale knapper og andre potentielt brugbare (video, lyd, kommentarer) kontroller, kan Privacy Badger udskifte dem med klik-for-at-aktivere pladsholdere.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "fx www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Tilføj domæne",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Fjern valgte",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Tilføj venligst et gyldigt domæne eller URL",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "The following setting has been deprecated and will be removed in a future Privacy Badger update:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Besøg $LINK$ for at lære mere.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Jeg forstår",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json
index ea2535d5..6a6ae4d0 100644
--- a/src/_locales/de/messages.json
+++ b/src/_locales/de/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger lernt automatisch, unsichtbare Tracker zu blocken.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Für diese Site deaktivieren",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Für diese Site aktivieren",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Defekte Site melden",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "Version $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "$DOMAIN$ geblockt",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "Überprüfen, ob <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>Drittanbieter-Domains</a> <a target='_blank' href='https://www.eff.org/dnt-policy'>EFFs Do-Not-Track-Richtlinie</a> befolgen",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Bitte eine gültige Domain oder Adresse hinzufügen.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "An EFF spenden",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Helfen Sie uns durch Spenden und Weiterempfehlen unserer Software",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "Diese Domain verspricht, Ihre Internetaktivitäten nicht zu verfolgen",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Das Blocken dieser Domain ist dafür bekannt, bei Websites Probleme zu verursachen",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Vollständig blocken",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Cookies blocken",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Erlauben",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "Anklicken, um die Kontrolle dieser Domain an Privacy Badger zurückzugeben",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "Melden eines Fehlers",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "z. B. www.domain.com, *.domain.net, domain.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Hier klicken, um zu verhindern, dass diese Domain Cookies setzt",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "geblockt",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "Importieren",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Folgende Widgets nicht ersetzen:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Ersetzen von Widgets",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "Beim Blocken von sozialen Schaltflächen und anderen potentiell nützlichen (Video-, Audio-, Kommentar-)Widgets kann Privacy Badger diese mit Platzhaltern ersetzen, die durch Anklicken aktiviert werden können.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "Ersetzen von Widgets aktivieren",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Ausnahmen für Widgets",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Folgende Widgets nicht ersetzen:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Ausnahmen für Sites",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Widgets für diese Sites immer erlauben:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "Domains anzeigen, die Ihre Internetaktivitäten anscheinend nicht verfolgen",
@@ -178,7 +228,7 @@
         "description": "Tooltip on the general settings page"
     },
     "learning_prompt_text1": {
-        "message": "Privacy Badger wird standardmäßig nicht mehr aus Ihrem Browsen lernen.",
+        "message": "Privacy Badger wird standardmäßig nicht mehr von Ihrem Browsen lernen.",
         "description": "First part of a prompt to visit the blog."
     },
     "learning_prompt_text2": {
@@ -198,8 +248,8 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "Bitte vergessen Sie nicht, auf »Verursacht Privacy Badger bei dieser Website Probleme?« zu klicken. Da wir Ihre Privatsphäre respektieren, senden wir keine automatisierten Berichte.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Bitte vergessen Sie nicht, auf »Defekte Site melden« zu klicken. Da wir Ihre Privatsphäre respektieren, senden wir keine automatisierten Berichte.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Optionen von Privacy Badger",
@@ -209,14 +259,6 @@
         "message": "Dies wird folgende Informationen automatisch an die EFF senden: Die von Ihnen derzeit besuchte Webseite, Ihre Browserversion, die Version von Privacy Badger und den Status aller Schieberegler auf dieser Webseite.",
         "description": ""
     },
-    "whitelisted_domains": {
-        "message": "Deaktivierte Websites",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Für diese Website Privacy Badger aktivieren",
-        "description": ""
-    },
     "options_domain_type_filter": {
         "message": "Nach Typ filtern:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
@@ -285,20 +327,6 @@
         "message": "Rundgang machen",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Hier klicken, um diese Domain vollständig zu blocken",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "Version $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "Cookies von $DOMAIN$ geblockt",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "teilweise geblockt",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Verstanden. Bitte die Liste der Tracking-Domains trotzdem anzeigen.",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Danke für das Installieren von Privacy Badger!",
         "description": ""
@@ -325,10 +349,6 @@
         "message": "Bitte eine Datei zum Importieren auswählen.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "Verursacht Privacy Badger bei dieser Website Probleme?",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "Bewegen Sie den Schieberegler in die Mitte, um Cookies zu blocken",
         "description": ""
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "DNT-konform",
+        "message": "konform mit den DNT-Richtlinien der EFF",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "Datenschutz ist ein Teamsport!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "Hier sollten keine Änderungen notwendig sein.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "alle",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -395,19 +411,39 @@
     },
     "options_disable_google_nav_error_service": {
         "message": "Senden besuchter Web-Adressen an Google deaktivieren. Dies deaktiviert Vorschläge für ähnliche Seiten, wenn eine Seite nicht gefunden werden kann.",
-        "description": "Checkbox label found on the general settings page"
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Hyperlink-Auditing deaktivieren",
+        "message": "Sites daran hindern, angeklickte Links nachzuverfolgen (»Hyperlink Auditing«)",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Prefetching deaktivieren",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Googles »Föderiertes Lernen von Kohorten« (FLoC) deaktivieren",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "benutzergesteuert",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger ist auf den folgenden Websites deaktiviert. Das heißt, Privacy Badger wird nichts blocken, wenn Sie die hier aufgeführten Sites besuchen, und wird weder »Do Not Track« noch »Global Privacy Control« signalisieren.</p><p>Falls Sie annehmen, dass Privacy Badger bei einer Webseite Probleme verursacht, oder wenn Sie einer bestimmten Site erlauben möchten, Ihre Daten zu teilen oder zu verkaufen, so können Sie die Domain der entsprechenden Seite in das Feld unten eingeben und auf die Schaltfläche »Domain hinzufügen« klicken.</p><p>Falls Sie den Tab der Seite bereits ausgewählt haben, können Sie auch einfach auf Privacy Badgers Schaltfläche in der Browsersymbolleiste und dann dort auf die Schaltfäche »Deaktivieren« klicken.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Link-Tracking-Schutz aktiv",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Manche Websites $LINK_START$verwenden Link-Tracking, um dich zu verfolgen$LINK_END$, sobald du auf eine Link zum Verlassen der Website klickst. Privacy Badger entfernt auf dieser Website das Tracking solcher Links.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
         "message": "$COUNT$ mögliche $LINK_START$Tracker$LINK_END$ geblockt",
@@ -447,22 +483,10 @@
         "message": "Ein Projekt der Electronic Frontier Foundation",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Domain hinzufügen",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Bewegen Sie den Schieberegler nach rechts, um eine Domain zu erlauben",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Für diese Website Privacy Badger deaktivieren",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Hier klicken, um diese Domain zu erlauben",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privacy Badger wird NIEMALS Daten über Ihre Internetaktivitäten weitergeben, solange Sie sich selbst nicht dazu entscheiden.",
         "description": "Intro page paragraph."
@@ -488,10 +512,6 @@
         "message": "Privacy Badger hat bisher keine <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>Tracking-Domains</a> erkannt. Surfen Sie weiter!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privacy Badger beginnt mit dem Blocken, sobald er denselben Tracker auf drei verschiedenen Websites erkennt.",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "Beschreiben Sie bitte unten kurz den Fehler.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Ausgewählte entfernen",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "Durch das Verwenden von Privacy Badger werden Sie Teil der <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a> und Millionen anderer Nutzer im Kampf für Datenschutz. Wir sind eine gemeinnützige Organisation, die sich für Ihre Rechte im Internet einsetzt. Vielen Dank für Ihre Teilnahme!",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "Auf Facebook teilen",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger lernt automatisch, unsichtbare Tracker zu blocken.",
-        "description": ""
-    },
     "report_fail": {
         "message": "Huch! Etwas ist schief gelaufen.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger hat dieses $WIDGET$-Widget ersetzt",
+        "message": "Privacy Badger hat $START_ANCHOR_TAG$dieses $WIDGET$-Widget$END_ANCHOR_TAG$ ersetzt",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Cloud-Daten erfolgreich hochgeladen.",
+        "message": "Daten erfolgreich in die Cloud hochgeladen",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Cloud-Daten konnten nicht hochgeladen werden.",
+        "message": "Daten konnten nicht in die Cloud hochgeladen werden",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger) ist eine Browser-Erweiterung, die automatisch lernt, unsichtbare Tracker zu blocken. Privacy Badger wird von der Electronic Frontier Foundation entwickelt, einer gemeinnützigen Organisation, die sich für Ihre Rechte im Internet einsetzt.",
+        "message": "Privacy Badger (privacybadger.org) ist eine Browser-Erweiterung, die automatisch lernt, unsichtbare Tracker zu blocken. Privacy Badger wird von der Electronic Frontier Foundation entwickelt, einer gemeinnützigen Organisation, die sich für Ihre Rechte im Internet einsetzt.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "Für diese Website ist Privacy Badger deaktiviert",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Ersetzen von Widgets",
+    "disabled_sites": {
+        "message": "Deaktivierte Websites",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "Beim Blocken von sozialen Schaltflächen und anderen potentiell nützlichen (Video-, Audio-, Kommentar-)Widgets kann Privacy Badger diese mit Platzhaltern ersetzen, die durch Anklicken aktiviert werden können.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger ist auf den folgenden Websites deaktiviert. Das heißt, Privacy Badger wird nichts blocken, wenn Sie die hier aufgeführten Sites besuchen, und wird weder »Do Not Track« noch »Global Privacy Control« signalisieren.</p><p>Falls Sie annehmen, dass Privacy Badger bei einer Webseite Probleme verursacht, oder wenn Sie einer bestimmten Site erlauben möchten, Ihre Daten zu teilen oder zu verkaufen, so können Sie die Domain der entsprechenden Seite in das Feld unten eingeben und auf die Schaltfläche »Domain hinzufügen« klicken.</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "z. B. www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Domain hinzufügen",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Ausgewählte entfernen",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Bitte eine gültige Domain oder Adresse hinzufügen",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "Die folgende Einstellung ist veraltet und wird in einem zukünftigen Update von Privacy Badger entfernt werden:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Besuchen Sie $LINK$ für weitere Informationen.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Verstanden",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/el/messages.json b/src/_locales/el/messages.json
new file mode 100644
index 00000000..bd2b1e98
--- /dev/null
+++ b/src/_locales/el/messages.json
@@ -0,0 +1,731 @@
+{
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Το Privacy Badger μαθαίνει αυτόματα να αποκλείει \"αόρατους\" ιχνηλάτες.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Απενεργοποίηση σε αυτήν την ιστοσελίδα",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Ενεργοποίηση σε αυτήν την ιστοσελίδα",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Αναφορά ιστοσελίδας που υπολειτουργεί",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "έκδοση $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
+    "badger_status_block": {
+        "message": "$DOMAIN$ αποκλείστηκε",
+        "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
+        "placeholders": {
+            "domain": {
+                "content": "$1",
+                "example": "example.com"
+            }
+        }
+    },
+    "invalid_json": {
+        "message": "Μη έγκυρο αρχείο JSON.",
+        "description": ""
+    },
+    "options_remove_origin_confirm": {
+        "message": "Είστε σίγουρος πως θέλετε να διαγράψατε αυτό το domain από το Privacy Badger;",
+        "description": "Confirmation shown when you click to remove a domain from Privacy Badger's tracking domains list on the options page."
+    },
+    "badger_status_noaction": {
+        "message": "Το $DOMAIN$ αυτό δε σας ιχνηλατεί",
+        "description": "Tooltip shown when you hover over a non-tracking domain name with a green slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
+        "placeholders": {
+            "domain": {
+                "content": "$1",
+                "example": "example.com"
+            }
+        }
+    },
+    "non_tracker_tip": {
+        "message": "Προς το παρόν, το Privacy Badger ελέγχει μόνο αν τρίτοι χρησιμοποιούν cookies, τον τοπικό χώρο αποθήκευσης στην HTML5 ή canvas fingerprinting. Μερικά domains ενδέχεται να χρησιμοποιούν μεθόδους που το Privacy Badger δεν μπορεί να εντοπίσει.",
+        "description": ""
+    },
+    "options_dnt_policy_setting": {
+        "message": "Να ελέγχεται εάν <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>τρίτα domains</a> συμβαδίζουν με <a target='_blank' href='https://www.eff.org/dnt-policy'>την Do Not Track πολιτική της EFF</a>",
+        "description": "Checkbox label on the general settings page"
+    },
+    "donate_to_eff": {
+        "message": "Κάντε μια δωρεά στο EFF",
+        "description": "Link shown in the popup; also a button on the intro page"
+    },
+    "intro_donate_subheading": {
+        "message": "Βοηθήστε μας κάνοντας μια δωρεά και μοιράζοντας την υποστήριξή σας για τα εργαλεία μας",
+        "description": "Shown below the Donate button on the intro page."
+    },
+    "intro_not_an_adblocker": {
+        "message": "Δεν είμαι ad blocker, είμαι κάτι διαφορετικό",
+        "description": "Intro page paragraph heading."
+    },
+    "report_success": {
+        "message": "Ευχαριστούμε! Θα ξεκαθαρίσουμε αυτό το πρόβλημα.",
+        "description": ""
+    },
+    "dnt_tooltip": {
+        "message": "Αυτό το domain υπόσχεται ότι δε θα σας ιχνηλατήσει",
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+    },
+    "breakage_warning_tooltip": {
+        "message": "Αν αποκλείσετε αυτό το domain, κάποιες ιστοσελίδες ενδέχεται να υπολειτουργούν",
+        "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
+    },
+    "domain_slider_block_tooltip": {
+        "message": "Να αποκλειστεί τελείως",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Να αποκλειστούν τα cookies",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Να επιτρέπεται",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
+    "feed_the_badger_title": {
+        "message": "Πατήστε για να επιστρέψετε τον έλεγχο του domain στο Privacy Badger",
+        "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
+    },
+    "next_section": {
+        "message": "επόμενη ενότητα",
+        "description": "Image alt. text on a couple of \"scroll down\" arrow buttons on the intro page."
+    },
+    "extension_error_text": {
+        "message": "<a href='https://www.eff.org/privacybadger#faq-I-found-a-bug!-What-do-I-do-now?' target='_blank'>πείτε μας</a> για το ακόλουθο πρόβλημα:",
+        "description": "Shown in the popup when there is a problem with the user's Privacy Badger extension that we want to encourage the user to tell us about."
+    },
+    "data_settings": {
+        "message": "Διαχείριση δεδομένων",
+        "description": "This is an options page tab heading."
+    },
+    "report_title": {
+        "message": "Αναφορά προβλήματος",
+        "description": ""
+    },
+    "options_domain_filter_block": {
+        "message": "αποκλεισμένα",
+        "description": "Dropdown control setting on the Tracking Domains options page tab."
+    },
+    "options_webrtc_setting": {
+        "message": "Να αποτρέπεται η διάρρευση της τοπικής διεύθυνσης IP σας από το WebRTC",
+        "description": "Checkbox label on the general settings page"
+    },
+    "intro_welcome": {
+        "message": "Το Privacy Badger μαθαίνει αυτόματα να αποκλείει \"αόρατους\" ιχνηλάτες. Μάθετε πώς.",
+        "description": "Intro page welcome paragraph."
+    },
+    "error_input": {
+        "message": "Τι πάει στραβά;",
+        "description": ""
+    },
+    "options_domain_list_tab": {
+        "message": "Ιχνηλάτες",
+        "description": "This is an options page tab heading."
+    },
+    "share_button_title_twitter": {
+        "message": "Μοιραστείτε στο Twitter",
+        "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
+    },
+    "first_run_text": {
+        "message": "Μάθετε πώς το Privacy Badger προστατεύει το απόρρητό σας",
+        "description": "Part of a reminder to visit the intro page. Shown in popup until the user clicks on the reminder link or browses through the intro page."
+    },
+    "download": {
+        "message": "Λήψη",
+        "description": ""
+    },
+    "import": {
+        "message": "Εισαγωγή",
+        "description": ""
+    },
+    "options_widget_replacement_tab": {
+        "message": "Αντικατάσταση widget",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "Όταν αποκλείετε τα \"κοινωνικά κουμπιά\" ή άλλα πιθανότατα χρήσιμα (βίντεο, ήχος, σχόλια) widgets, το Privacy Badger μπορεί να τα αντικαταστήσει με άλλα κουμπιά που σας επιτρέπουν να τα εμφανίσετε.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
+    },
+    "options_social_widgets_checkbox": {
+        "message": "Να αντικαθίστανται τα widget",
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Εξαιρέσεις widget",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Να μην αντικατασταθούν τα ακόλουθα widgets:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Εξαιρέσεις ιστοσελίδων",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Πάντα να επιτρέπονται τα widgets σε αυτές τις ιστοσελίδες:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_show_nontracking_domains_checkbox": {
+        "message": "Να εμφανίζεις domains που δε φαίνεται να με ιχνηλατούν",
+        "description": "Checkbox label on the general settings page. Should match wording used in the 'non_tracker' message."
+    },
+    "report_button": {
+        "message": "Αποστολή αναφοράς προβλήματος",
+        "description": ""
+    },
+    "badger_status_allow": {
+        "message": "Η πρόσβαση από το $DOMAIN$ επιτράπηκε",
+        "description": "Tooltip shown when you hover over a tracking but still allowed (green slider) domain name in the list of domains in the popup or under the Tracking Domains tab on the options page.",
+        "placeholders": {
+            "domain": {
+                "content": "$1",
+                "example": "example.com"
+            }
+        }
+    },
+    "privacy_badger_what_is": {
+        "message": "Τι είναι το Privacy Badger;",
+        "description": ""
+    },
+    "options_domain_search": {
+        "message": "Αναζήτηση domains:",
+        "description": "Label for a text input box on the Tracking Domains options page tab."
+    },
+    "options_learn_setting": {
+        "message": "Να μαθαίνω αυτόματα να αποκλείω ιχνηλάτες",
+        "description": "Checkbox label on the general settings page"
+    },
+    "local_learning_warning": {
+        "message": "Αν ενεργοποιήσετε τη λειτουργία μάθησης, μπορεί να είστε περισσότερο αναγνωρίσιμοι σε ιστοσελίδες",
+        "description": "Tooltip on the general settings page"
+    },
+    "options_incognito_setting": {
+        "message": "Να μαθαίνω και στην ανώνυμη περιήγηση",
+        "description": "Checkbox label on the general settings page"
+    },
+    "options_incognito_warning": {
+        "message": "Ενεργοποιώντας τη μάθηση στην Ανώνυμη περιήγηση ενδέχεται να αφήσει ίχνη ιστορικού στον υπολογιστή σας. Αυτόματα, το Privacy Badger θα αποκλείσει domains που ήδη ξέρει στην Ανώνυμη περιήγηση, αλλά δε θα μάθει για νέους ιχνηλάτες. Μπορείτε να ενεργοποιήσετε αυτήν την επιλογή εάν σερφάρετε συχνά ανώνυμα.",
+        "description": "Tooltip on the general settings page"
+    },
+    "learning_prompt_text1": {
+        "message": "Το Privacy Badger δε θα μαθαίνει πλέον από το ιστορικό σας αυτόματα.",
+        "description": "First part of a prompt to visit the blog."
+    },
+    "learning_prompt_text2": {
+        "message": "Πατήστε παρακάτω για να μάθετε περισσότερα.",
+        "description": "Second part of a prompt to visit the blog."
+    },
+    "learning_prompt_button": {
+        "message": "Μάθετε πως το Privacy Badger αλλάζει",
+        "description": "Button text, part of a prompt to visit the blog."
+    },
+    "show_counter_checkbox": {
+        "message": "Να εμφανίζεται ο αριθμός των ιχνηλατών",
+        "description": "Checkbox label on the general settings page"
+    },
+    "what_is_a_tracker": {
+        "message": "Τι είναι ένας ιχνηλάτης;",
+        "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
+    },
+    "intro_report_button": {
+        "message": "Μην ξεχάσετε να κάνετε κλικ στο κουμπί «Αναφορά ιστοσελίδας που υπολειτουργεί». Σεβόμαστε την ιδιωτικότητά σας, οπότε δε στέλνουμε αναφορές αυτόματα.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
+    },
+    "options_title": {
+        "message": "Ρυθμίσεις Privacy Badger",
+        "description": ""
+    },
+    "report_terms": {
+        "message": "Αυτή η ενέργεια θα στείλει αυτόματα τις ακόλουθες πληροφορίες στον EFF: την ιστοσελίδα που τώρα επισκέπτεστε, την έκδοση του φυλλομετρητή και του Privacy Badger και την κατάσταση των sliders σε αυτήν τη σελίδα.",
+        "description": ""
+    },
+    "options_domain_type_filter": {
+        "message": "Με βάση τον τύπο τους:",
+        "description": "Label for a dropdown control on the Tracking Domains options page tab."
+    },
+    "import_successful": {
+        "message": "Η λίστα ιχνηλατών και οι ρυθμίσεις ενημερώθηκαν επιτυχώς!",
+        "description": ""
+    },
+    "export_user_data": {
+        "message": "Εξαγωγή δεδομένων χρήστη",
+        "description": ""
+    },
+    "manage_data_intro": {
+        "message": "Η εισαγωγή των δεδομένων σας:<ul><li>αντικαθιστά τις γενικές ρυθμίσεις</li><li>συνδυάζει τις λίστες των απενεργοποιημένων ιστοσελίδων</li><li>συνδυάζει τις νέες πληροφορίες για ιχνηλάτες με αυτές που το Privacy Badger ήδη ξέρει</li><li>αντικαθιστά τις ρυθμίσεις slider</li></ul>",
+        "description": "A brief explanation of what happens when you import Badger user data. Shown above the import/export user data buttons under the Manage Data options page tab."
+    },
+    "reset": {
+        "message": "Επαναφορά",
+        "description": "Options page button, under the Manage Data tab"
+    },
+    "reset_data": {
+        "message": "Επαναφορά των domains που σας ιχνηλατούν",
+        "description": "Caption above reset button"
+    },
+    "reset_data_confirm": {
+        "message": "Η επαναφορά όλων των domains που σας ιχνηλατούν θα:\n\n• διαγράψει ό,τι ξέρει το Privacy Badger για ιχνηλάτες.\n• επαναφέρει τη λίστα domains σύμφωνα με την προεπιλεγμένη (επισκεφτείτε την ιστοσελίδα www.eff.org/badger-pretraining για να μάθετε περισσότερα).",
+        "description": "Pop-up triggered when the reset_data button is clicked"
+    },
+    "remove_all": {
+        "message": "Διαγραφή όλων",
+        "description": "Options page button, under the Manage Data tab"
+    },
+    "remove_all_data": {
+        "message": "Διαγραφή των domain που σας ιχνηλατούν",
+        "description": "Caption above remove_all button"
+    },
+    "remove_all_data_confirm": {
+        "message": "Η διαγραφή όλων των domains που σας ιχνηλατούν θα:\n\n• διαγράψει ό,τι ξέρει το Privacy Badger για ιχνηλάτες.\n• έχει ως αποτέλεσμα το Privacy Badger να μην αποκλείει τίποτα έως ότου ξαναμάθει από το ιστορικό σας.",
+        "description": "Pop-up triggered when the remove_all_data button is clicked"
+    },
+    "intro_text1": {
+        "message": "Είστε πλέον προστατευμένοι από το Privacy Badger.",
+        "description": "First part of a reminder to visit the intro page. Shown in popup until the user clicks on the reminder link or browses through the intro page."
+    },
+    "intro_text2": {
+        "message": "Για να μάθετε πώς δουλεύει το Privacy Badger, πατήστε παρακάτω για ένα γρήγορο μάθημα.",
+        "description": "Second part of a reminder to visit the intro page"
+    },
+    "options_webrtc_warning": {
+        "message": "Το WebRTC μπορεί να διαρρεύσει την τοπική διεύθυνση IP σας. Αν ενεργοποιήσετε αυτήν την επιλογή, ενδέχεται να υποβαθμιστεί η επίδοση σε εφαρμογές τηλεδιασκέψεων, όπως τα Google Hangouts.",
+        "description": "Tooltip on the general settings page"
+    },
+    "options_general_settings": {
+        "message": "Γενικά",
+        "description": "This is an options page tab heading."
+    },
+    "options_privacy_settings": {
+        "message": "Απόρρητο",
+        "description": "Subheading on the general settings options page."
+    },
+    "options_advanced_settings": {
+        "message": "Για προχωρημένους",
+        "description": "Subheading on the general settings options page."
+    },
+    "intro_next_button": {
+        "message": "Περιηγηθείτε",
+        "description": "Intro page welcome button."
+    },
+    "badger_status_cookieblock": {
+        "message": "Αποκλείστηκαν τα cookies από $DOMAIN$",
+        "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
+        "placeholders": {
+            "domain": {
+                "content": "$1",
+                "example": "example.com"
+            }
+        }
+    },
+    "options_domain_filter_cookieblock": {
+        "message": "εν μέρει αποκλεισμένα",
+        "description": "Dropdown control setting on the Tracking Domains options page tab."
+    },
+    "firstRun_title": {
+        "message": "Ευχαριστούμε που εγκαταστήσατε το Privacy Badger!",
+        "description": ""
+    },
+    "import_select_file": {
+        "message": "Παρακαλώ επιλέξτε ένα αρχείο για την εισαγωγή.",
+        "description": ""
+    },
+    "tooltip_cookieblock": {
+        "message": "Τοποθετήστε το σλάιντερ στο κέντρο για να αποκλείσετε τα cookies",
+        "description": ""
+    },
+    "intro_learns": {
+        "message": "Μαθαίνει αυτόματα",
+        "description": "Intro page paragraph heading"
+    },
+    "intro_learns_paragraph": {
+        "message": "Αντί να διατηρείτε λίστες αποκλεισμού, το Privacy Badger ανακαλύπτει αυτόματα ιχνηλάτες βασιζόμενο στη συμπεριφορά τους.",
+        "description": "Intro page paragraph"
+    },
+    "intro_beyond_ads": {
+        "message": "Εντοπίζει τους πονηρούς ιχνηλάτες",
+        "description": "Intro page paragraph heading."
+    },
+    "intro_beyond_ads_paragraph": {
+        "message": "Η \"αόρατη\" ιχνηλάτηση συμβαίνει με πολλούς τρόπους και οι διαφημίσεις είναι μόνο ένας από τους ορατούς. Το Privacy Badger στέλνει το σήμα <a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a> για να απενεργοποιήσει τη δυνατότητα διαμοιρασμού και πώλησης δεδομένων και το σήμα <a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track</a> για να ενημερώσει τις εταιρίες πως δεν επιθυμείτε να σας ιχνηλατούν. Εάν όμως αυτοί αγνοούν τις επιθυμίες σας, τότε το Privacy Badger θα μάθει αυτόματα να αποκλείει τους ιχνηλάτες ανεξάρτητα από το είδος τους.",
+        "description": "Intro page paragraph."
+    },
+    "report_close": {
+        "message": "Κλείσιμο",
+        "description": ""
+    },
+    "import_user_data": {
+        "message": "Εισαγωγή δεδομένων χρήστη",
+        "description": ""
+    },
+    "options_domain_filter_dnt": {
+        "message": "συνάδει με την πολιτική DNT της EFF",
+        "description": "Dropdown control setting on the Tracking Domains options page tab."
+    },
+    "popup_help_button": {
+        "message": "Βοήθεια",
+        "description": "Tooltip that comes up when you hover over the question mark button in the upper right corner of the popup."
+    },
+    "options_domain_filter_allow": {
+        "message": "επιτρεπόμενα",
+        "description": "Dropdown control setting on the Tracking Domains options page tab."
+    },
+    "intro_donate_heading": {
+        "message": "Το απόρρητό σας είναι ομαδικό άθλημα!",
+        "description": "Part of the 'donate' section on the intro page."
+    },
+    "options_domain_filter_all": {
+        "message": "όλα",
+        "description": "Dropdown control setting on the Tracking Domains options page tab."
+    },
+    "report_cancel": {
+        "message": "Άκυρο",
+        "description": ""
+    },
+    "tooltip_block": {
+        "message": "Μετακινήστε το σλάιντερ αριστερά για να αποκλείσετε ένα domain",
+        "description": ""
+    },
+    "options_enable_dnt_checkbox": {
+        "message": "Να στέλνονται τα σήματα \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>\" και \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track</a>\" στις ιστοσελίδες που επισκέπτομαι",
+        "description": "Checkbox label for enabling/disabling the Sec-GPC and DNT signals, found on the general settings page"
+    },
+    "options_disable_google_nav_error_service": {
+        "message": "Να απενεργοποιηθεί η αποστολή διευθύνσεων URL που επισκέπτομαι στη Google. Αυτή η επιλογή απενεργοποιεί προτάσεις για παρόμοιες σελίδες όταν κάποια δεν μπορεί να βρεθεί.",
+        "description": "(Chrome only) Checkbox label found on the general settings page"
+    },
+    "options_disable_hyperlink_auditing": {
+        "message": "Να μην επιτρέπεται στους ιστοτόπους να παρακολουθούν τους συνδέσμους που πατάω (\"hyperlink auditing\")",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_network_prediction": {
+        "message": "Να απενεργοποιηθεί η προφόρτωση",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Να απενεργοποιηθεί το χαρακτηριστικό Federated Learning of Cohorts (FLoC) της Google",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
+    "options_domain_filter_user": {
+        "message": "ελεγχόμενες από τον χρήστη",
+        "description": "Dropdown control setting on the Tracking Domains options page tab."
+    },
+    "popup_info_firstparty_protections": {
+        "message": "Η αποτροπή παρακολούθησης για συνδέσμους είναι ενεργή",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Κάποιες ιστοσελίδες $LINK_START$χρησιμοποιούν μία μέθοδο παρακολούθησης$LINK_END$ και σας παρακολουθούν όταν κάνετε κλικ σε έναν. Το Privacy Badger αφαιρεί αυτήν τη δυνατότητα παρακολούθησης σε αυτήν την ιστοσελίδα.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
+    },
+    "popup_instructions": {
+        "message": "$COUNT$ πιθανοί $LINK_START$ιχνηλάτες$LINK_END$ αποκλείστηκαν",
+        "description": "Popup message shown when at least one tracker was blocked.",
+        "placeholders": {
+            "count": {
+                "content": "$1",
+                "example": "15"
+            },
+            "link_start": {
+                "content": "$2",
+                "example": "<a href='https://privacybadger.org/#What-is-a-third-party-tracker'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
+    },
+    "popup_instructions_no_trackers": {
+        "message": "0 $LINK_START$ιχνηλάτες$LINK_END$ αποκλείστηκαν",
+        "description": "Text shown in the popup when there are no trackers on the page.",
+        "placeholders": {
+            "link_start": {
+                "content": "$1",
+                "example": "<a href='https://privacybadger.org/#What-is-a-third-party-tracker'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
+    },
+    "popup_blocked": {
+        "message": "Κανένας τρίτος δεν έχει πρόσβαση σε αυτήν τη σελίδα. Ζήτω η ιδιωτικότητα!",
+        "description": "Text shown in the popup when showing non-tracking domains is enabled, and there are no third-party domains on the page."
+    },
+    "intro_by_eff": {
+        "message": "Ένα έργο της Electronic Frontier Foundation",
+        "description": ""
+    },
+    "tooltip_allow": {
+        "message": "Μετακινήστε το σλάιντερ στα δεξιά για να επιτρέψετε πλήρως την πρόσβαση σε ένα domain",
+        "description": ""
+    },
+    "intro_privacy_note": {
+        "message": "Το Privacy Badger ΠΟΤΕ δε θα διαμοιραστεί το ιστορικό σας χωρίς την άδειά σας.",
+        "description": "Intro page paragraph."
+    },
+    "options_domain_list_trackers": {
+        "message": "Το Privacy Badger έχει αποκλείσει $COUNT$ $TRACKER_LINK_START$domains που πιθανά σας ιχνηλατούν$TRACKER_LINK_END$ έως τώρα",
+        "description": "Shown on the Tracking Domains tab on the options page after Privacy Badger learned to block one or more domains",
+        "placeholders": {
+            "count": {
+                "content": "$1",
+                "example": "900"
+            },
+            "tracker_link_start": {
+                "content": "$2",
+                "example": "<a href='https://privacybadger.org/#What-is-a-third-party-tracker'>"
+            },
+            "tracker_link_end": {
+                "content": "</a>"
+            }
+        }
+    },
+    "options_domain_list_no_trackers": {
+        "message": "Το Privacy Badger δεν έχει εντοπίσει κανένα <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>domain που σας ιχνηλατεί</a> ακόμα. Συνεχίστε να σερφάρετε!",
+        "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
+    },
+    "intro_not_an_adblocker_paragraph": {
+        "message": "Το Privacy Badger αρχίζει να αποκλείει όταν δει τον ίδιο ιχνηλάτη σε τρεις διαφορετικές ιστοσελίδες. Τρεις παραβάσεις κι έξω!",
+        "description": "Intro page paragraph."
+    },
+    "options_domain_status_filter": {
+        "message": "Με βάση την κατάστασή τους:",
+        "description": "Label for a dropdown control on the Tracking Domains options page tab."
+    },
+    "report_text": {
+        "message": "Αναφέρετε συνοπτικά το πρόβλημά σας παρακάτω.",
+        "description": ""
+    },
+    "intro_donate1": {
+        "message": "Όταν χρησιμοποιείτε το Privacy Badger, ενώνεστε με την <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a> και εκατομμύρια ακόμα χρήστες για να παλέψετε για την ιδιωτικότητά σας. Είμαστε μία μη κερδοσκοπική εταιρία που παλεύει για τα δικαιώματά σας στο διαδίκτυο. Ευχαριστούμε για την επιλογή σας!",
+        "description": "Part of the 'donate' section on the intro page."
+    },
+    "options_domain_search_tooltip": {
+        "message": "Για να μη συμπεριλάβετε domains, τοποθετήστε μία παύλα (\"-\") πριν τον όρο αναζήτησης. Για παράδειγμα, \".co -.com\" θα συμπεριλάβει domains με καταλήξεις .co και .co.uk, αλλά όχι με κατάληξη .com.",
+        "description": "Tooltip for an \"information\" icon next to the domain search input on the Tracking Domains options page tab."
+    },
+    "intro_disable_button": {
+        "message": "Εάν νομίζετε πως το Privacy Badger κάνει μια σελίδα να υπολειτουργεί (ένα βίντεο δε λειτουργεί, για παράδειγμα), μπορείτε να πατήσετε το κουμπί 'Απενεργοποίηση' και το Privacy Badger δε θα έχει πλέον πρόσβαση σε αυτήν.",
+        "description": "Intro page paragraph. The quoted string ('Disable') should match the verb used for the 'popup_disable_for_site' message."
+    },
+    "intro_link_policy": {
+        "message": "Πολιτική απορρήτου",
+        "description": "Shown at the bottom of the intro page, links to the EFF software and technology projects privacy policy."
+    },
+    "report_input_label": {
+        "message": "Περιγραφή",
+        "description": ""
+    },
+    "not_yet_blocked_header": {
+        "message": "Το Privacy Badger δεν έχει αποφασίσει ακόμα εάν τα ακόλουθα domains πρέπει να αποκλειστούν",
+        "description": "Popup domain list header text; separates blocked from haven't-yet-seen-enough-to-block potential trackers."
+    },
+    "options_show_not_yet_blocked": {
+        "message": "Να δω και τα domains που το Privacy Badger δεν έχει αποφασίσει ακόμα να αποκλείσει:",
+        "description": "Label for a checkbox on the Tracking Domains options page tab. Should match wording used in the 'not_yet_blocked_header' message."
+    },
+    "non_tracker": {
+        "message": "Τα domains παρακάτω δε φαίνεται πως σας ιχνηλατούν",
+        "description": "Header text; separates tracking from non-tracking domains in the popup."
+    },
+    "popup_options_button": {
+        "message": "Επιλογές",
+        "description": ""
+    },
+    "share_button_title_facebook": {
+        "message": "Μοιραστείτε στο Facebook",
+        "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
+    },
+    "report_fail": {
+        "message": "Ουπς! Κάτι πήγε στραβά.",
+        "description": ""
+    },
+    "social_tooltip_pb_has_replaced": {
+        "message": "Το Privacy Badger έχει αντικαταστήσει αυτό $BUTTON$ το κουμπί",
+        "description": "Tooltip shown over a replaced social button. For example, \"Privacy Badger has replaced this Facebook Like button\". See also the widget_placeholder_pb_has_replaced message.",
+        "placeholders": {
+            "button": {
+                "content": "$1",
+                "example": "Facebook Like"
+            }
+        }
+    },
+    "widget_placeholder_pb_has_replaced": {
+        "message": "Το Privacy Badger έχει αντικαταστήσει $START_ANCHOR_TAG$αυτό $WIDGET$ το widget$END_ANCHOR_TAG$",
+        "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
+        "placeholders": {
+            "widget": {
+                "content": "$1",
+                "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
+            }
+        }
+    },
+    "allow_once": {
+        "message": "Να επιτρέπεται μία φορά",
+        "description": "Button in the placeholder shown in place of certain third-party (video, audio, commenting) widgets. Clicking it will allow the third-party widget to load this one time only."
+    },
+    "allow_on_site": {
+        "message": "Να επιτρέπεται πάντα για αυτήν την ιστοσελίδα",
+        "description": "Button in the placeholder shown in place of certain third-party (video, audio, commenting) widgets. Clicking this button will always allow the widget to load on this particular site."
+    },
+    "sync_intro": {
+        "message": "Ο συγχρονισμός με το cloud:<ul><li>απαιτεί συγχρονισμό Firefox/Chrome</li><li>αντικαθιστά, μετά τη μεταφόρτωση, ό,τι δεδομένα υπήρχαν από το Privacy Badger</li><li>συνδυάζει, μετά τη λήψη, τις λίστες ιστοσελίδων όπου το Privacy Badger είναι απενεργοποιημένο</li></ul>",
+        "description": "A brief explanation of how syncing works. Shown above the upload/download cloud data buttons under the Manage Data options page tab."
+    },
+    "upload": {
+        "message": "Μεταφόρτωση",
+        "description": "Button label for uploading data to the cloud on Manage Data options page tab."
+    },
+    "upload_cloud": {
+        "message": "Εξαγωγή απενεργοποιημένων ιστοσελίδων στο cloud",
+        "description": "Button title for uploading data to the cloud on Manage Data options page tab."
+    },
+    "download_cloud": {
+        "message": "Εισαγωγή απενεργοποιημένων ιστοσελίδων από το cloud",
+        "description": "Button title for downloading data from the cloud on Manage Data options page tab."
+    },
+    "download_cloud_success": {
+        "message": "Τα δεδομένα από το cloud εισήχθησαν επιτυχώς.",
+        "description": "Message displayed to the user after successfully merging cloud data."
+    },
+    "download_cloud_failure": {
+        "message": "Δεν μπορέσαμε να κατεβάσουμε τα δεδομένα σας από το cloud.",
+        "description": "Message displayed to the user after failing to download cloud data."
+    },
+    "upload_cloud_success": {
+        "message": "Τα δεδομένα σας μεταφορτώθηκαν επιτυχώς στο cloud",
+        "description": "Message displayed to the user after successfully uploading local data."
+    },
+    "upload_cloud_failure": {
+        "message": "Δεν μπορέσαμε να μεταφορτώσουμε τα δεδομένα σας στο cloud",
+        "description": "Message displayed to the user after failing to upload local data."
+    },
+    "download_cloud_no_data": {
+        "message": "Δε βρέθηκαν δεδομένα στο cloud για λήψη.",
+        "description": "'Error' message when there is on cloud data to download."
+    },
+    "share_title": {
+        "message": "Πείτε το στους φίλους σας",
+        "description": "Title of the share overlay."
+    },
+    "popup_share_button": {
+        "message": "Μοιραστείτε",
+        "description": "Tooltip that comes up when you hover over the share button in the upper right corner of the popup."
+    },
+    "share_tracker_header": {
+        "message": "Το Privacy Badger απέκλεισε $COUNT$ πιθανούς ιχνηλάτες στο $DOMAIN$:",
+        "description": "Header above the list of tracking domains in the share message.",
+        "placeholders": {
+            "count": {
+                "content": "$1",
+                "example": "15"
+            },
+            "domain": {
+                "content": "$2",
+                "example": "example.com"
+            }
+        }
+    },
+    "share_base_message": {
+        "message": "Το Privacy Badger (privacybadger.org) είναι μία επέκταση που μαθαίνει αυτόματα να αποκλείει \"αόρατους\" ιχνηλάτες. Έχε δημιουργηθεί από την Electronic Frontier Foundation, μία μη κερδοσκοπική εταιρία που παλεύει για τα δικαιώματά σας στο διαδίκτυο.",
+        "description": "The base message that is always included in the share message."
+    },
+    "copy_button_initial": {
+        "message": "Αντιγραφή στο πρόχειρο",
+        "description": "Initial text of the copy button on the share overlay."
+    },
+    "copy_button_copied": {
+        "message": "Αντιγράφηκε",
+        "description": "On-click text of the copy button on the share overlay."
+    },
+    "popup_special_page_header": {
+        "message": "Δεν υπάρχει τίποτα εδώ",
+        "description": "Heading for popup_special_page_paragraph"
+    },
+    "popup_special_page_paragraph": {
+        "message": "Το Privacy Badger δε λειτουργεί σε ειδικές σελίδες όπως αυτή. Προσπαθήστε να σερφάρετε κάπου αλλού.",
+        "description": "Shown in the popup for special browser pages such as the New Tab page and 'about:' pages."
+    },
+    "popup_disabled_site_header": {
+        "message": "Το Privacy Badger είναι απενεργοποιημένο σε αυτήν την ιστοσελίδα",
+        "description": "Shown in the popup on disabled sites."
+    },
+    "disabled_sites": {
+        "message": "Απενεργοποιημένες ιστοσελίδες",
+        "description": "Options page tab heading"
+    },
+    "disabled_for_these_domains": {
+        "message": "<p>Το Privacy Badger είναι απενεργοποιημένο στις ακόλουθες ιστοσελίδες. Αυτό σημαίνει ότι δε θα αποκλείσει τίποτα όταν επισκέπτεστε μία από αυτές και δε θα στείλει κανένα από τα σήματα Do Not Track ή Global Privacy Control.</p><p>Εάν νομίζετε ότι το Privacy Badger κάνει μία σελίδα να υπολειτουργεί ή θέλετε να επιτρέψετε σε μία συγκεκριμένη ιστοσελίδα να μοιράζεται ή να πουλάει τα δεδομένα σας, μπορείτε να πληκτρολογήσετε το domain στη παρακάτω φόρμα και να πατήσετε το κουμπί \"Προσθήκη domain\".</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "π.χ. www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Προσθήκη domain",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Διαγραφή επιλεγμένων",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Προσθέστε μία έγκυρη domain ή διεύθυνση URL",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "Η παρακάτω ρύθμιση θα διαγραφεί σε μια μελλοντική έκδοση του Privacy Badger:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Επισκεφτείτε την ιστοσελίδα $LINK$ για να μάθετε περισσότερα.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Καταλαβαίνω",
+        "description": "Acknowledgement button text"
+    }
+}
\ No newline at end of file
diff --git a/src/_locales/en_US/messages.json b/src/_locales/en_US/messages.json
index f10fe377..68f8a745 100644
--- a/src/_locales/en_US/messages.json
+++ b/src/_locales/en_US/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger automatically learns to block invisible trackers.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Disable for this site",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Enable for this site",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Report broken site",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "version $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "Blocked $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "Check if <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>third-party domains</a> comply with <a target='_blank' href='https://www.eff.org/dnt-policy'>EFF's Do Not Track policy</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Please add a valid domain or URL.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "Donate to EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Help us by donating and sharing your support for our tools",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "This domain promises to not track you",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Blocking this domain is known to break websites",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Block entirely",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Block cookies",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Allow",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "Click to return control of this domain to Privacy Badger",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "Report an Error",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "e.g. www.domain.com, *.domain.net, domain.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Click here to block this domain from setting cookies",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "blocked",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "Import",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Don't replace the following widgets:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Widget Replacement",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "When blocking social buttons and other potentially useful (video, audio, comments) widgets, Privacy Badger can replace them with click-to-activate placeholders.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "Enable widget replacement",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Widget Exceptions",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Don't replace the following widgets:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Site Exceptions",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Always allow widgets on these sites:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "Show domains that don't appear to be tracking you",
@@ -198,8 +248,8 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "Please don't forget to click on 'Did Privacy Badger break this site'. We respect your privacy so we don't send automatic reports.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Please don't forget to click on 'Report broken site'. We respect your privacy so we don't send automatic reports.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Privacy Badger Options",
@@ -209,14 +259,6 @@
         "message": "This will automatically send the following information to EFF: the page you're currently visiting, your browser version, the version of Privacy Badger, and the state of all of the sliders on this page.",
         "description": ""
     },
-    "whitelisted_domains": {
-        "message": "Disabled Sites",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Enable Privacy Badger for this site",
-        "description": ""
-    },
     "options_domain_type_filter": {
         "message": "Filter by type:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
@@ -285,20 +327,6 @@
         "message": "Take the tour",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Click here to block this domain entirely",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "version $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "Blocked cookies from $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "partially-blocked",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "I understand; please show me the tracking domains list anyway",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Thank you for installing Privacy Badger!",
         "description": ""
@@ -325,10 +349,6 @@
         "message": "Please select a file to import.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "Did Privacy Badger break this site? Let us know!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "Center the slider to block cookies",
         "description": ""
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "DNT-compliant",
+        "message": "compliant with EFF's DNT policy",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "Privacy is a team sport!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "You shouldn't need to modify anything here.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "all",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -395,19 +411,39 @@
     },
     "options_disable_google_nav_error_service": {
         "message": "Disable sending web addresses you visit to Google. This disables suggestions for similar pages when a page can't be found.",
-        "description": "Checkbox label found on the general settings page"
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Disable hyperlink auditing",
+        "message": "Prevent sites from tracking which links you click (\"hyperlink auditing\")",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Disable prefetching",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Disable Google's Federated Learning of Cohorts (FLoC)",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "user-controlled",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Link tracking protection active",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Some websites $LINK_START$use link tracking to follow you$LINK_END$ whenever you click a link to leave the website. Privacy Badger removes tracking from such links on this website.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
         "message": "$COUNT$ potential $LINK_START$trackers$LINK_END$ blocked",
@@ -447,22 +483,10 @@
         "message": "A project of the Electronic Frontier Foundation",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Add domain",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Move the slider right to allow a domain",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Disable Privacy Badger for this site",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Click here to allow this domain",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privacy Badger will NEVER share data about your browsing unless you choose to share it.",
         "description": "Intro page paragraph."
@@ -488,10 +512,6 @@
         "message": "Privacy Badger hasn't detected any <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>tracking domains</a> yet. Keep browsing!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privacy Badger starts blocking once it sees the same tracker on three different websites. Three strikes and it's out!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "Briefly describe the error below.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Remove selected",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "When you use Privacy Badger you join the <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a> and millions of other users in the fight for privacy. We are a nonprofit fighting for your rights online. Thanks for joining us!",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "Share on Facebook",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger automatically learns to block invisible trackers.",
-        "description": ""
-    },
     "report_fail": {
         "message": "Oops. Something went wrong.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger has replaced this $WIDGET$ widget",
+        "message": "Privacy Badger has replaced $START_ANCHOR_TAG$this $WIDGET$ widget$END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Cloud data uploaded successfully.",
+        "message": "Data successfully uploaded to the cloud",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Cloud data could not be uploaded.",
+        "message": "Data could not be uploaded to the cloud",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger) is a browser extension that automatically learns to block invisible trackers. Privacy Badger is made by the Electronic Frontier Foundation, a nonprofit that fights for your rights online.",
+        "message": "Privacy Badger (privacybadger.org) is a browser extension that automatically learns to block invisible trackers. Privacy Badger is made by the Electronic Frontier Foundation, a nonprofit that fights for your rights online.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "Privacy Badger is disabled on this site",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Widget Replacement",
+    "disabled_sites": {
+        "message": "Disabled Sites",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "When blocking social buttons and other potentially useful (video, audio, comments) widgets, Privacy Badger can replace them with click-to-activate placeholders.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "e.g. www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Add domain",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Remove selected",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Please add a valid domain or URL",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "The following setting has been deprecated and will be removed in a future Privacy Badger update:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Visit $LINK$ to learn more.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "I understand",
+        "description": "Acknowledgement button text"
     }
 }
diff --git a/src/_locales/eo/messages.json b/src/_locales/eo/messages.json
index a410b93c..e5b3c791 100644
--- a/src/_locales/eo/messages.json
+++ b/src/_locales/eo/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privata Melo",
+        "description": ""
+    },
+    "description": {
+        "message": "Privata Melo aŭtomate lernas bloki nevideblajn spurilojn.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Malaktivigi por tiu ĉi retejo",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Aktivigi por tiu ĉi retejo",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Raporti probleman retejon",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "versio $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "Blokita $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "Kontroli ĉu <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>eksteraj domajnoj</a> kongruas kun la <a target='_blank' href='https://www.eff.org/dnt-policy'>politiko pri nespurado de EFF</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Bonvolu aldoni ĝustan nomregnon aŭ URL-n.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "Donaci al EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Helpu nin per donaci kaj oferi helpon al niaj iloj",
@@ -57,14 +83,26 @@
     },
     "dnt_tooltip": {
         "message": "Tiu ĉi nomregno promesas al vi ne spuri.",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Per bloki tiun ĉi nomregnon, retejoj povus misfunkcii",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Bloki tute",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Bloki kuketojn",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Permesi",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
-        "message": "Klaku por permesi al Privata Melo decidi kiel trakti tiun ĉi nomregnon",
+        "message": "Alklaku por permesi al Privata Melo decidi kiel trakti tiun ĉi nomregnon",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
     },
     "next_section": {
@@ -83,14 +121,6 @@
         "message": "Raporti eraron",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "ekz. www.nomregno.com, *.nomregno.net, nomregno.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Klaku tie ĉi por bloki tiun ĉi nomregnon de agordi kuketojn",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "blokitaj",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -116,7 +146,7 @@
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
     "first_run_text": {
-        "message": "Sciigi pri kiel Privata Melo protektas vian privatecon",
+        "message": "Sciiĝi pri kiel Privata Melo protektas vian privatecon",
         "description": "Part of a reminder to visit the intro page. Shown in popup until the user clicks on the reminder link or browses through the intro page."
     },
     "download": {
@@ -127,13 +157,33 @@
         "message": "Enporti",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Ne anstataŭigi la jenajn ret‑aplikaĵetojn:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Anstataŭigi ret‑aplikaĵetojn",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "Privata Melo povas bloki butonojn de sociaj retejoj kaj aliajn virtuale uzeblajn aplikaĵetojn (filmetojn, aŭdaĵojn, komentojn), tiu ĉi eblaĵo anstataŭigas ilin per alklakeblaj (ne aŭtomate montriĝantaj) butonoj.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "Aktivigi anstataŭigon de ret‑aplikaĵetoj",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Esceptoj: ret‑aplikaĵetoj",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Ne anstataŭigi la jenajn ret‑aplikaĵetojn:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Esceptoj: retejoj",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Ĉiam permesi ret‑aplikaĵetojn en tiuj ĉi retejoj:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "Montri nomregnojn, kiuj verŝajne ne spuras vin",
@@ -166,7 +216,7 @@
         "description": "Checkbox label on the general settings page"
     },
     "local_learning_warning": {
-        "message": "Aktivigo de lernadu dum retumado povas igi vin pli identigebla al retejoj",
+        "message": "Aktivigo de lernado dum retumado povas igi vin pli identigebla al retejoj",
         "description": "Tooltip on the general settings page"
     },
     "options_incognito_setting": {
@@ -178,15 +228,15 @@
         "description": "Tooltip on the general settings page"
     },
     "learning_prompt_text1": {
-        "message": "Privacy Badger will no longer learn from your browsing by default.",
+        "message": "Privata Melo de nun implicite ne lernos surbaze de via retumado.",
         "description": "First part of a prompt to visit the blog."
     },
     "learning_prompt_text2": {
-        "message": "Click below to learn more.",
+        "message": "Alklaku suben por pli da informo.",
         "description": "Second part of a prompt to visit the blog."
     },
     "learning_prompt_button": {
-        "message": "Learn how Privacy Badger is changing",
+        "message": "Sciiĝi pri kiel Privata Malo ŝanĝiĝas",
         "description": "Button text, part of a prompt to visit the blog."
     },
     "show_counter_checkbox": {
@@ -198,8 +248,8 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "Bonvolu ne forgesi klaki “Ĉu Privata Melo difektis tiun ĉi retejon?”. Ni estimas vian privatecon, do ni ne sendas aŭtomatajn raportojn.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Bonvolu ne forgesi alklaki “Raporti probleman retejon”. Ni estimas vian privatecon, do ni ne sendas aŭtomatajn raportojn.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Agordoj pri Privata Melo",
@@ -209,14 +259,6 @@
         "message": "Tio ĉi aŭtomate sendos la jenajn datumojn al EFF: la nune vizitatan retpaĝon, version de via retumilo, version de Privata Melo kaj staton de ĉiuj ŝovilojn por tiu ĉi retpaĝo.",
         "description": ""
     },
-    "whitelisted_domains": {
-        "message": "Neblokataj retejoj",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Aktivigi Privatan Melon por tiu ĉi retejo",
-        "description": ""
-    },
     "options_domain_type_filter": {
         "message": "Filtri laŭ speco:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
@@ -262,7 +304,7 @@
         "description": "First part of a reminder to visit the intro page. Shown in popup until the user clicks on the reminder link or browses through the intro page."
     },
     "intro_text2": {
-        "message": "Por lerni kiel Privata Melo funkcias, klaku sube por koncizan gvidilon.",
+        "message": "Por lerni kiel Privata Melo funkcias, alklaku sube por koncizan gvidilon.",
         "description": "Second part of a reminder to visit the intro page"
     },
     "options_webrtc_warning": {
@@ -285,20 +327,6 @@
         "message": "Enkonduko",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Klaku tie ĉi por tute bloki tiun ĉi nomregnon",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "versio $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "Blokitaj kuketoj el $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "parte-blokitaj",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Mi konscias, tamen bonvolu montri al mi la liston de spurantaj nomregnoj.",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Dankon al vi pro instali Privatan Melon!",
         "description": ""
@@ -325,20 +349,16 @@
         "message": "Bonvolu elekti dosieron por enporti.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "Ĉu Privata Melo difektis tiun ĉi retejon? Sciigu nin!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "Centrigu la ŝovilon por bloki kuketojn.",
         "description": ""
     },
     "intro_learns": {
-        "message": "Learns automatically",
+        "message": "Aŭtomate lernas",
         "description": "Intro page paragraph heading"
     },
     "intro_learns_paragraph": {
-        "message": "Instead of keeping lists of what to block, Privacy Badger automatically discovers trackers based on their behavior.",
+        "message": "Anstataŭ prizorgi liston de blokataj elementoj, Privata Melo aŭtomate malkovras spurilojn surbaze de ilia sinteno.",
         "description": "Intro page paragraph"
     },
     "intro_beyond_ads": {
@@ -346,7 +366,7 @@
         "description": "Intro page paragraph heading."
     },
     "intro_beyond_ads_paragraph": {
-        "message": "Invisible tracking happens in all sorts of ways; ads are just the visible tip of the iceberg. Privacy Badger sends the <a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control signal</a>, to opt you out of data sharing and selling, and the <a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track signal</a> to tell companies not to track you. If they ignore your wishes, Privacy Badger will learn to block them—whether they are advertisers or trackers of other kinds.",
+        "message": "Nevidebla spurado okazas plurmaniere; reklamoj estas nur videbla parteto de tutaĵo. Privata Melo sendas la <a href='https://globalprivacycontrol.org/' target='_blank'>signalon Global Privacy Control</a> por peti pri ne kunhavigi kaj vendi viajn datumojn, kaj la <a href='https://www.eff.org/issues/do-not-track' target='_blank'>signalon “Ne Spuri Min” (DNT)</a> por peti firmaojn pri ne spuri vin. Se ili ignoros vian peton, Privata Melo lernos pri bloki ilin – ĉu ili estas reklamoj aŭ spuriloj aŭ aliaj aĉaĵoj.",
         "description": "Intro page paragraph."
     },
     "report_close": {
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "DNT-kongruaj",
+        "message": "kongrua kun la politiko pri nespurado de EFF",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "Privateco estas kunlaboro!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "Vi ne devus bezoni modifi ion ajn tie ĉi.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "ĉiuj",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -390,24 +406,44 @@
         "description": ""
     },
     "options_enable_dnt_checkbox": {
-        "message": "Send websites the \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>\" and \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track</a>\" signals",
+        "message": "Sendi al retejoj la signalojn “<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>” kaj “<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Ne Spuri Min</a>” (DNT)",
         "description": "Checkbox label for enabling/disabling the Sec-GPC and DNT signals, found on the general settings page"
     },
     "options_disable_google_nav_error_service": {
         "message": "Malaktivigi sendi adresojn de vizitataj retejoj al Google. Tio ĉi malaktivigas sugestojn pri similaj retejoj, kiam la paĝo ne povas esti malfermita.",
-        "description": "Checkbox label found on the general settings page"
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Malaktivigi kontroladon de ligiloj",
+        "message": "Preventi retejojn de spuri ligilojn, kiujn vi alklakas («hyperlink auditing»)",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Malaktivigi antaŭlegon",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Malaktivigi la meĥanismon FLoC (Federated Learning of Cohorts) de Google",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "uzant-kontrolitaj",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Aktiva protekto kontraŭ ligila spurado",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Iuj retejoj $LINK_START$uzas ligilan spuradon$LINK_END$ por spuri kiam vi alklakas eliran ligilon. Privata Melo forigas spuradon de tiaj ligiloj ĉe tiu ĉi retejo.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
         "message": "Blokitaj eblaj $LINK_START$spuriloj$LINK_END$: $COUNT$",
@@ -447,28 +483,16 @@
         "message": "Projekto de Electronic Frontier Foundation",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Aldoni nomregnon",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Movu la ŝovilon dekstren por permesi nomregnon.",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Malaktivigi Privatan Melon por tiu ĉi retejo",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Klaku tie ĉi por permesi tiun ĉi nomregnon",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privata Melo NENIAM diskonigos datumojn pri via retumado escepte se vi decidos alie.",
         "description": "Intro page paragraph."
     },
     "options_domain_list_trackers": {
-        "message": "Privacy Badger has decided to block $COUNT$ potential $TRACKER_LINK_START$tracking domains$TRACKER_LINK_END$ so far",
+        "message": "Privata Melo decidiĝis bloki $COUNT$ eblajn $TRACKER_LINK_START$spurantajn nomregnojn$TRACKER_LINK_END$ ĝis nun",
         "description": "Shown on the Tracking Domains tab on the options page after Privacy Badger learned to block one or more domains",
         "placeholders": {
             "count": {
@@ -488,10 +512,6 @@
         "message": "Privata Melo ne malkovris iun ajn <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>spurantan nomregnon</a> ĝis nun. Pluigu retumi!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privata Melo",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privata Melo komencas bloki kiam ĝi rimarkas la saman spurilon ĉe tri diversaj retejoj. Tri aperoj kaj ĝi malaperas!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "Koncize priskribu la eraron sube.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Forigi elektitajn",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "Kiam vi uzas Privatan Melon vi aniĝas al la <a href='https://www.eff.org/' target='_blank'>Ret-Lima Fondaĵo (EFF)</a> kune kun milionoj da aliaj retanoj en la batalo por privateco. Ni estas ne-profit-cela fondaĵo, kiu batalas por viaj rajtoj en la interreto. Dankon por kuniĝi al ni!",
         "description": "Part of the 'donate' section on the intro page."
@@ -517,7 +533,7 @@
         "description": "Tooltip for an \"information\" icon next to the domain search input on the Tracking Domains options page tab."
     },
     "intro_disable_button": {
-        "message": "Se viaopinie Privata Melo difektas retpaĝon (ekzemple filmeto ne ludas), vi povas klaki la butonon “malaktivigi” por malaktivigi Privatan Melon por tiu retejo.",
+        "message": "Se viaopinie Privata Melo difektas retpaĝon (ekzemple filmeto ne ludas), vi povas alklaki la butonon “malaktivigi” por malaktivigi Privatan Melon por tiu retejo.",
         "description": "Intro page paragraph. The quoted string ('Disable') should match the verb used for the 'popup_disable_for_site' message."
     },
     "intro_link_policy": {
@@ -548,10 +564,6 @@
         "message": "Kunhavigi per Facebook",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privata Melo aŭtomate lernas bloki nevideblajn spurilojn.",
-        "description": ""
-    },
     "report_fail": {
         "message": "Ho ne! Eraro okazis.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privata Melo anstataŭigis tiun ĉi ret‑aplikaĵeton $WIDGET$",
+        "message": "Privata Melo anstataŭigis $START_ANCHOR_TAG$tiun ĉi ret‑aplikaĵeton $WIDGET$ $END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Sukcese alŝutis datumojn.",
+        "message": "Sukcese alŝutis datumojn",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Ne povas alŝuti datumojn al servilo.",
+        "message": "Ne povas alŝuti datumojn al servilo",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privata Melo (www.eff.org/privacybadger) estas retumila etendaĵo, kiu aŭtomate lernas kiel bloki nevideblajn spurilojn. Privata Melo estas farita de Electronic Frontier Foundation, ne-profit-cela fondaĵo, kiu batalas por viaj rajtoj en la interreto.",
+        "message": "Privata Melo (privacybadger.org) estas retumila etendaĵo, kiu aŭtomate lernas kiel bloki nevideblajn spurilojn. Privata Melo estas farita de Electronic Frontier Foundation, ne-profit-cela fondaĵo, kiu batalas por viaj rajtoj en la interreto.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "Privata Melo estas malaktivigita por tiu ĉi retejo",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Anstataŭigi ret‑aplikaĵetojn",
+    "disabled_sites": {
+        "message": "Neblokataj retejoj",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "Privata Melo povas bloki butonojn de sociaj retejoj kaj aliajn virtuale uzeblajn aplikaĵetojn (filmetojn, aŭdaĵojn, komentojn), tiu ĉi eblaĵo anstataŭigas ilin per klakeblaj (ne aŭtomate montriĝantaj) butonoj.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privata Melo estas malaktivigita por la subaj nomregnoj. Tio ĉi signifas, ke Privata Melo blokos nenion, kiam vi vizitos la jenajn retejojn kaj ne sendos al ili la signalojn “Global Privacy Control” kaj “Ne Spuri Min” (DNT).</p><p>Se viaopinie Privata Melo difektas iun retpaĝon aŭ volas permesi al ĝi kunhavigi aŭ vendi viajn datumojn, vi povas enigu ĝian nomregnon en la kampon sube kaj alklaku “aldoni nomregnon”.</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "ekz. www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Aldoni nomregnon",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Forigi elektitajn",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Bonvolu aldoni ĝustan nomregnon aŭ URL-n",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "La jena agordo estas kaduka kaj estos forigita en la venonta ĝisdatigo de Privata Melo:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Legu $LINK$ por pli da informoj.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Mi konscias",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/es/messages.json b/src/_locales/es/messages.json
index 76d4f17a..d372ab9c 100644
--- a/src/_locales/es/messages.json
+++ b/src/_locales/es/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger aprende automáticamente a bloquear rastreadores invisibles.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Deshabilitar para este sitio",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Habilitar para este sitio",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Reportar sitio roto",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "versión $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "Bloqueado $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "Comprobar si los <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>dominios de terceros</a> cumplen con la <a target='_blank' href='https://www.eff.org/dnt-policy'>política de No rastrear de la EFF</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Por favor, añade un dominio o URL válido.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "Donar a la EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Ayúdenos con un donativo, o tu apoyo compartiendo nuestras herramientas",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "Este dominio promete no rastrearte",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Bloquear este dominio es conocido por romper sitios web",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Bloquear todo",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Bloquear cookies",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Permitir",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "Haz clic para devolver el control de este dominio a Privacy Badger",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "Reportar un error",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "p. ej., www.dominio.com, *.dominio.net, dominio.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Haz clic aquí para impedir que este dominio cree cookies",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "bloqueado",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "Importar",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "No sustituir los siguientes widgets:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Sustitución de widgets",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "Al bloquear botones de redes sociales y otros widgets potencialmente útiles (vídeo, audio, comentarios), Privacy Badger puede sustituirlos con marcadores de posición de clic para activarlos.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "Habilitar la sustitución de widgets",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Excepciones de widgets",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "No sustituir los siguientes widgets:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Excepciones de sitios",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Permitir siempre widgets en estos sitios:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "Mostrar los dominios que no parecen estar rastreándote",
@@ -198,8 +248,8 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "Por favor, no olvides hacer clic en «¿Ha roto Privacy Badger este sitio?». Respetamos tu privacidad, por lo que no enviamos reportes de forma automática.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Por favor, no olvides hacer clic en «Reportar sitio roto». Respetamos tu privacidad, por lo que no enviamos reportes automáticos.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Opciones de Privacy Badger",
@@ -209,14 +259,6 @@
         "message": "Esto enviará automáticamente la siguiente información a la EFF: la página que estás visitando actualmente, la versión de tu navegador, la versión de Privacy Badger y el estado de todos los controles deslizantes en esta página.",
         "description": ""
     },
-    "whitelisted_domains": {
-        "message": "Sitios deshabilitados",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Habilitar Privacy Badger en este sitio",
-        "description": ""
-    },
     "options_domain_type_filter": {
         "message": "Filtrar por tipo:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
@@ -285,20 +327,6 @@
         "message": "Hacer el recorrido",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Haz clic aquí para bloquear por completo este dominio",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "versión $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "Cookies bloqueadas de $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "parcialmente bloqueado",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Entiendo; por favor, muéstrame la lista de dominios de rastreo de todos modos",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "¡Gracias por instalar Privacy Badger!",
         "description": ""
@@ -325,10 +349,6 @@
         "message": "Por favor, selecciona un archivo para importar.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "¿Ha roto Privacy Badger este sitio? ¡Háganoslo saber!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "Centra el control deslizante para bloquear las cookies",
         "description": ""
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "respeta DNT",
+        "message": "compliant with EFF's DNT policy",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "¡La privacidad es un deporte de equipo!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "No deberías necesitar modificar nada aquí.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "todo",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -395,19 +411,39 @@
     },
     "options_disable_google_nav_error_service": {
         "message": "Deshabilitar el envío de las direcciones web que visitas a Google. Esto deshabilita las sugerencias de páginas similares cuando no se puede encontrar una página.",
-        "description": "Checkbox label found on the general settings page"
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Deshabilitar auditoría de hipervínculos",
+        "message": "Impedir que sitios web rastreen enlaces a los que se haces clic (\"auditoría de hipervínculos\")",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Deshabilitar pre-carga de sitios",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Deshabilitar aprendizaje federado de cohortes de Google (FLoC)",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "controlado por usuario",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger está deshabilitado en los siguientes sitios. Esto significa que Privacy Badger no bloqueará nada cuando visites los sitios listados aquí, y no enviará las señales No rastrear o Control de privacidad global.</p><p>Si crees que Privacy Badger está rompiendo una página o deseas permitir que un sitio en particular comparta o venda tus datos, puedes escribir el dominio de dicha página en el cuadro de abajo y hacer clic en el botón «Añadir dominio».</p><p>Alternativamente, cuando ya tengas seleccionada la pestaña de la página, simplemente haz clic en el botón de Privacy Badger en la barra de herramientas del navegador y luego haz clic en el botón «Deshabilitar».</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Protección contra rastreo de enlaces activo",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Algunos sitios web $LINK_START$utilizan el rastreo de enlaces para seguirte$LINK_END$ cada vez que haces clic en un enlace para salir del sitio web. Privacy Badger elimina el rastreo de dichos enlaces en este sitio web.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
         "message": "$COUNT$ $LINK_START$rastreadores$LINK_END$ potenciales bloqueados",
@@ -447,22 +483,10 @@
         "message": "Un proyecto de la Electronic Frontier Foundation",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Añadir dominio",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Mueve el control deslizante a la derecha para permitir un dominio",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Deshabilitar Privacy Badger en este sitio",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Haz clic aquí para permitir este dominio",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privacy Badger NUNCA comparte datos sobre tu navegación a menos que elijas compartirlos.",
         "description": "Intro page paragraph."
@@ -488,10 +512,6 @@
         "message": "Privacy Badger no ha detectado ningún <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>dominio de rastreo</a> por el momento. ¡Sigue navegando!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privacy Badger comienza a bloquear una vez que ve el mismo rastreador en tres sitios web diferentes. ¡Tres strikes y está afuera!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "Describe brevemente el error aquí abajo.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Eliminar seleccionado",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "Cuando utilizas Privacy Badger te unes a la <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a> y a millones de otros usuarios en la lucha por la privacidad. Somos una organización sin ánimo de lucro que lucha por tus derechos en línea. ¡Gracias por unirte a nosotros!",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "Compartir en Facebook",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger aprende automáticamente a bloquear rastreadores invisibles.",
-        "description": ""
-    },
     "report_fail": {
         "message": "Ups. Algo salió mal.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger ha sustituido este widget de $WIDGET$",
+        "message": "Privacy Badger ha sustituido $START_ANCHOR_TAG$este widget de $WIDGET$ $END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Los datos para nube se han subido correctamente.",
+        "message": "Los datos se han subido a la nube correctamente",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "No se han podido subir los datos para la nube.",
+        "message": "No se han podido subir los datos para la nube",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger) es una extensión de navegador que aprende automáticamente a bloquear rastreadores invisibles. Privacy Badger está hecho por la Electronic Frontier Foundation, una organización sin ánimo de lucro que lucha por tus derechos en línea.",
+        "message": "Privacy Badger (privacybadger.org) es una extensión de navegador que aprende automáticamente a bloquear rastreadores invisibles. Privacy Badger está hecho por la Electronic Frontier Foundation, una organización sin ánimo de lucro que lucha por tus derechos en línea.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "Privacy Badger está deshabilitado en este sitio",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Sustitución de widgets",
+    "disabled_sites": {
+        "message": "Sitios deshabilitados",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "Al bloquear botones de redes sociales y otros widgets potencialmente útiles (vídeo, audio, comentarios), Privacy Badger puede sustituirlos con marcadores de posición de clic para activarlos.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger está deshabilitado en los siguientes sitios. Esto significa que Privacy Badger no bloqueará nada cuando visites los sitios listados aquí, y no enviará las señales No rastrear o Control de privacidad global.</p><p>Si crees que Privacy Badger está rompiendo una página o deseas permitir que un sitio en particular comparta o venda tus datos, puedes escribir el dominio de dicha página en el cuadro de abajo y hacer clic en el botón «Añadir dominio».</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "p. ej., www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Añadir dominio",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Eliminar seleccionado",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Por favor, añade un dominio o URL válido",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "La siguiente opción ha quedado obsoleta y se eliminará en una futura actualización de Privacy Badger:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Visita $LINK$ para obtener más información.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Entiendo",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/fa/messages.json b/src/_locales/fa/messages.json
index cc1562ec..ae6ec495 100644
--- a/src/_locales/fa/messages.json
+++ b/src/_locales/fa/messages.json
@@ -1,6 +1,36 @@
 {
+    "name": {
+        "message": "پرایوسی بجر",
+        "description": ""
+    },
+    "description": {
+        "message": "پرایوسی بجر به صورت خودکار یاد می‌گیرد تا ردیاب‌های مخفی را مسدود کند.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "غیرفعال‌سازی برای این وبگاه",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "فعال‌سازی برای این وبگاه",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "گزارش وبگاه خراب شده",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "نگارش $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
-        "message": "$DOMAIN$ بلاک شد",
+        "message": "$DOMAIN$ مسدود شد",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
         "placeholders": {
             "domain": {
@@ -10,11 +40,11 @@
         }
     },
     "invalid_json": {
-        "message": "فایل JSON نامعتبر.",
+        "message": "پروندهٔ JSON نامعتبر.",
         "description": ""
     },
     "options_remove_origin_confirm": {
-        "message": "آیا مطمئن هستید که میخواهید این را از پرایوسی بجر حذف کنید؟",
+        "message": "آیا مطمئن هستید که می‌خواهید این دامنه را از پرایوسی بجر حذف کنید؟",
         "description": "Confirmation shown when you click to remove a domain from Privacy Badger's tracking domains list on the options page."
     },
     "badger_status_noaction": {
@@ -28,27 +58,23 @@
         }
     },
     "non_tracker_tip": {
-        "message": "هم اکنون پرایوسی بجر فقط چک میکند آیا اشخاص ثالث از کوکی ها، مخزن محلی HTML5، اثرانگشت کانواس برای ردیابی شما استفاده میکنند یا نه. بعضی از این دامنه ها ممکن است از متد های ردیابی استفاده کنند که پرایوسی بجر قابلیت شناسایی آن ها را ندارد.",
+        "message": "هم اکنون پرایوسی بجر فقط بررسی می‌کند آیا اشخاص ثالث از کوکی‌ها، مخزن محلی HTML5، اثرانگشت کانواس برای ردیابی وبگردی شما استفاده می‌کنند یا نه. بعضی از این دامنه‌ها ممکن است از روش‌های ردیابی‌ای استفاده کنند که پرایوسی بجر قابلیت شناسایی آن‌ها را ندارد.",
         "description": ""
     },
     "options_dnt_policy_setting": {
-        "message": "چک کن آیا <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'> دامنه های شخص ثالث </a> با <a target='_blank' href='https://www.eff.org/dnt-policy'> خط مشی ردیابی نکن EFF </a> تطابق دارند",
+        "message": "بررسی کن آیا <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>دامنه‌های شخص ثالث</a> با <a target='_blank' href='https://www.eff.org/dnt-policy'>خط مشی ردیابی نکن EFF</a> تطابق دارند",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "لطفا یک دامنه یا URL معتبر اضافه کنید.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "کمک مالی به EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
-        "message": "با کمک مالی و حمایت از ابزار هایمان میتوانید به ما کمک کنید",
+        "message": "با کمک مالی و حمایت از ابزار هایمان می‌توانید به ما کمک کنید",
         "description": "Shown below the Donate button on the intro page."
     },
     "intro_not_an_adblocker": {
-        "message": "اد بلاکر نیستم، من فرق دارم",
+        "message": "تبلیغ‌مسدودکن نیستم، من فرق دارم",
         "description": "Intro page paragraph heading."
     },
     "report_success": {
@@ -56,15 +82,27 @@
         "description": ""
     },
     "dnt_tooltip": {
-        "message": "این دامنه اطمینان می دهد که شما را ردیابی نخواهد کرد",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "message": "این دامنه اطمینان می‌دهد که شما را ردیابی نخواهد کرد",
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
-        "message": "Blocking this domain is known to break websites",
+        "message": "می‌دانیم که مسدود کردن این دامنه وبگاه‌ها را خراب می‌کند",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "مسدودیت کامل",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "مسدودیت کوکی‌ها",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "مجاز کردن",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
-        "message": "Click to return control of this domain to Privacy Badger",
+        "message": "برای بازگرداندن مهار این دامنه به پرایوسی بجر، کلیک کنید",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
     },
     "next_section": {
@@ -72,7 +110,7 @@
         "description": "Image alt. text on a couple of \"scroll down\" arrow buttons on the intro page."
     },
     "extension_error_text": {
-        "message": "لطفا <a href='https://www.eff.org/privacybadger#faq-I-found-a-bug!-What-do-I-do-now?' target='_blank'> به ما </a> درباره خطای زیر بگویید:",
+        "message": "لطفاً دربارهٔ خطای زیر <a href='https://www.eff.org/privacybadger#faq-I-found-a-bug!-What-do-I-do-now?' target='_blank'>به ما بگویید</a>:",
         "description": "Shown in the popup when there is a problem with the user's Privacy Badger extension that we want to encourage the user to tell us about."
     },
     "data_settings": {
@@ -83,68 +121,80 @@
         "message": "گزارش خطا",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "برای مثال www.domain.com, *.domain.net, domain.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "برای منع این دامنه از تنظیم کردن کوکی ها اینجا کلیک کنید",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
-        "message": "بلاک شده",
+        "message": "مسدود شده",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "options_webrtc_setting": {
-        "message": "نگذار WebRTC آدرس IP را لو بدهد",
+        "message": "نگذار WebRTC نشانی IP را لو بدهد",
         "description": "Checkbox label on the general settings page"
     },
     "intro_welcome": {
-        "message": "پرایوسی بجر به صورت اتوماتیک یاد می گیرد تا ردیاب های مخفی را بلاک کند. برای اینکه بفهمید چگونه اینکار را انجام می دهد، یک دقیقه وقت بگذارید.",
+        "message": "پرایوسی بجر به صورت خودکار یاد می‌گیرد تا ردیاب‌های مخفی را مسدود کند. برای این‌که بفهمید چگونه این کار را انجام می‌دهد، یک دقیقه وقت بگذارید.",
         "description": "Intro page welcome paragraph."
     },
     "error_input": {
-        "message": "چه مشکلی وجود دارد؟",
+        "message": "مشکل چیست؟",
         "description": ""
     },
     "options_domain_list_tab": {
-        "message": "دامنه های ردیاب",
+        "message": "دامنه‌های ردیاب",
         "description": "This is an options page tab heading."
     },
     "share_button_title_twitter": {
-        "message": "اشتراک گذاری بر روی توییتر",
+        "message": "اشتراک‌گذاری بر روی توییتر",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
     "first_run_text": {
-        "message": "درباره اینکه پرایوسی بجر چگونه از حریم خصوصی شما محافظت میکند مطالعه کنید",
+        "message": "درباره این‌که پرایوسی بجر چگونه از حریم خصوصی شما محافظت می‌کند مطالعه کنید",
         "description": "Part of a reminder to visit the intro page. Shown in popup until the user clicks on the reminder link or browses through the intro page."
     },
     "download": {
-        "message": "دانلود",
+        "message": "بارگیری",
         "description": ""
     },
     "import": {
-        "message": "ایمپورت",
+        "message": "درون‌ریزی",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Don't replace the following widgets:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "جایگزینی ویجت",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "هنگامی که دکمه‌های اجتماعی و دیگر ویجت‌های بالقوه کاربردی (ویدیو،‌ صدا، نظرات) مسدود می‌شوند، پرایوسی بجر می‌تواند آن‌ها را با متغیرهای برای-فعال‌سازی-کلیک-کن جایگزین کند.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
-        "message": "Enable widget replacement",
-        "description": "Checkbox label on the widget replacement tab"
+        "message": "فعال‌سازی جایگزینی ویجت",
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "استثنائات ویجت",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "ویجت‌های زیر را جایگزین نکن:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "استثنائات وبگاه",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "ویجت‌ها در این وبگاه را همیشه مجاز کن:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "دامنه‌هایی که شما را ردیابی نمی‌کنند را نمایش بده",
         "description": "Checkbox label on the general settings page. Should match wording used in the 'non_tracker' message."
     },
     "report_button": {
-        "message": "ارسال خطا",
+        "message": "ثبت خطا",
         "description": ""
     },
     "badger_status_allow": {
-        "message": "به $DOMAIN$ اجازه داده شده است",
+        "message": "$DOMAIN$ مجاز است",
         "description": "Tooltip shown when you hover over a tracking but still allowed (green slider) domain name in the list of domains in the popup or under the Tracking Domains tab on the options page.",
         "placeholders": {
             "domain": {
@@ -158,35 +208,35 @@
         "description": ""
     },
     "options_domain_search": {
-        "message": "جستجوی دامنه ها:",
+        "message": "جست‌وجوی دامنه‌ها:",
         "description": "Label for a text input box on the Tracking Domains options page tab."
     },
     "options_learn_setting": {
-        "message": "Learn to block new trackers from your browsing",
+        "message": "یادگیری مسدود کردن ردیاب‌های جدید از وبگردی شما",
         "description": "Checkbox label on the general settings page"
     },
     "local_learning_warning": {
-        "message": "Enabling learning may make you more identifiable to websites",
+        "message": "فعال‌سازی یادگیری ممکن است شما را برای وبگاه‌ها قابل تشخیص‌تر کند",
         "description": "Tooltip on the general settings page"
     },
     "options_incognito_setting": {
-        "message": "یادگیری در پنجره های خصوصی/ناشناس",
+        "message": "یادگیری در پنجره‌های خصوصی/ناشناس",
         "description": "Checkbox label on the general settings page"
     },
     "options_incognito_warning": {
-        "message": "اجازه یادگیری در پنجره های خصوصی/ناشناس ممکن است ردی از تاریخچه گشت خصوصی شما در وب روی کامپیوترتان به جا بگذارد. به صورت پیش فرض، پرایوسی بجر ردیاب هایی که در پنجره های خصوصی/ناشناس می شناسد را بلاک خواهد کرد، اما درباره ردیاب های جدید اطلاعی کسب نخواهد کرد. اگر بیشتر وقت خود را در پنجره های خصوصی/ناشناس می گذرانید شاید بهتر باشد که این گزینه را فعال کنید.",
+        "message": "فعال‌سازی یادگیری در پنجره‌های خصوصی/ناشناس ممکن است ردی از تاریخچهٔ وبگردی خصوصی شما روی رایانه‌تان به جا بگذارد. به‌صورت پیش‌فرض، پرایوسی بجر ردیاب‌هایی که در پنجره‌های خصوصی/ناشناس می‌شناسد را مسدود خواهد کرد، اما دربارهٔ ردیاب‌های جدید اطلاعی کسب نخواهد کرد. اگر بیش‌تر وقت خود را در پنجره‌های خصوصی/ناشناس می‌گذرانید شاید بهتر باشد که این گزینه را فعال کنید.",
         "description": "Tooltip on the general settings page"
     },
     "learning_prompt_text1": {
-        "message": "Privacy Badger will no longer learn from your browsing by default.",
+        "message": "پرایوسی بجر دیگر به‌صورت پیش‌فرض از وبگردی شما یاد نمی‌گیرد.",
         "description": "First part of a prompt to visit the blog."
     },
     "learning_prompt_text2": {
-        "message": "Click below to learn more.",
+        "message": "این زیر کلیک کنید تا بیش‌تر بیاموزید.",
         "description": "Second part of a prompt to visit the blog."
     },
     "learning_prompt_button": {
-        "message": "Learn how Privacy Badger is changing",
+        "message": "بیاموزید پرایوسی بجر چگونه تغییر می‌کند",
         "description": "Button text, part of a prompt to visit the blog."
     },
     "show_counter_checkbox": {
@@ -198,27 +248,19 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "فراموش نکنید تا روی 'آیا پرایوسی بجر باعث شده است تا این سایت به درستی کار نکند' کلیک کنید. ما به حریم خصوصی شما احترام میگذاریم برای همین به صورت خودکار گزارش نمی فرستیم.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "فراموش نکنید تا روی «گزارش وبگاه خراب شده» کلیک کنید. ما به حریم خصوصی شما احترام می‌گذاریم برای همین به‌صورت خودکار گزارش نمی‌فرستیم.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
-        "message": "گزینه های پرایوسی بجر",
+        "message": "گزینه‌های پرایوسی بجر",
         "description": ""
     },
     "report_terms": {
-        "message": "This will automatically send the following information to EFF: the page you're currently visiting, your browser version, the version of Privacy Badger, and the state of all of the sliders on this page.",
-        "description": ""
-    },
-    "whitelisted_domains": {
-        "message": "سایت های غیر فعال شده",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "فعال سازی پرایوسی بجر برای این سایت",
+        "message": "این به‌طور خودکار اطلاعات زیر را به EFF می‌فرستد: صفحه‌ای که هم‌اکنون از آن بازدید می‌کنید،‌ نگارش مرورگرتان، نگارش پرایوسی بجر، و وضعیت تمام لغزنده‌ها در این صفحه.",
         "description": ""
     },
     "options_domain_type_filter": {
-        "message": "فیلتر کردن بر اساس نوع:",
+        "message": "فیلتر بر اساس نوع:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
     },
     "import_successful": {
@@ -226,23 +268,23 @@
         "description": ""
     },
     "export_user_data": {
-        "message": "انتقال داده کاربری",
+        "message": "برون‌بری دادهٔ کاربری",
         "description": ""
     },
     "manage_data_intro": {
-        "message": "ایمپورت داده کاربری:<ul><li> اوورایت تنظیمات کلی</li><li>ترکیب لیست سایت های غیرفعال شده</li><li>ترکیب اطلاعات درباره ردیاب هایی که پرایوسی بجر با آن ها برخورد داشته است</li><li>اوورایت کاستومایزیشن اسلایدر</li></ul>",
+        "message": "درون‌ریزی دادهٔ کاربری:<ul><li>بازنویسی تنظیمات کلی</li><li>ترکیب فهرست وبگاه‌های غیرفعال شده</li><li>ترکیب اطلاعات دربارهٔ ردیاب‌هایی که پرایوسی بجر با آن‌ها برخورد داشته است</li><li>بازنویسی شخصی‌سازی‌های لغزنده</li></ul>",
         "description": "A brief explanation of what happens when you import Badger user data. Shown above the import/export user data buttons under the Manage Data options page tab."
     },
     "reset": {
-        "message": "ریست",
+        "message": "بازنشانی",
         "description": "Options page button, under the Manage Data tab"
     },
     "reset_data": {
-        "message": "ریست دامنه های ردیاب",
+        "message": "بازنشانی دامنه‌های ردیاب",
         "description": "Caption above reset button"
     },
     "reset_data_confirm": {
-        "message": "ریست کردن دامنه های ردیاب باعث می شود:\n\n• تمام داده های مربوط به ردیاب هایی که پرایوسی بجر از گردش شما در وب آموخته از بین برود\n• بازیابی لیست دامنه ردیاب به آخرین لیست از پیش پرورش شده ( برای اطلاعات بیشتر به www.eff.org/badger-pretraining بروید)",
+        "message": "بازنشانی دامنه‌های ردیاب باعث می شود:\n\n• حذف تمام داده‌های مربوط به ردیاب‌هایی که پرایوسی بجر از وبگردی شما آموخته است\n• بازیابی فهرست دامنهٔ ردیاب به آخرین فهرست از پیش‌پرورش شده (برای اطلاعات بیش‌تر به www.eff.org/badger-pretraining بروید)",
         "description": "Pop-up triggered when the reset_data button is clicked"
     },
     "remove_all": {
@@ -250,23 +292,23 @@
         "description": "Options page button, under the Manage Data tab"
     },
     "remove_all_data": {
-        "message": "حذف همه دامنه های ردیاب",
+        "message": "حذف همهٔ دامنه‌های ردیاب",
         "description": "Caption above remove_all button"
     },
     "remove_all_data_confirm": {
-        "message": "حذف تمام دامنه های ردیاب باعث می شود:\n\n• تمام چیزهایی که پرایوسی بجر درباره ردیاب ها می داند از بین برود\n• پرایوسی بجر تا دفعه بعدی که مشغول گردش در وب هستید و فرصت یادگیری دوباره دارد چیزی را بلاک نکند",
+        "message": "حذف تمام دامنه‌های ردیاب باعث می‌شود:\n\n• حذف تمام چیزهایی که پرایوسی بجر دربارهٔ ردیاب‌ها می‌داند\n• باعث می‌شود پرایوسی بجر تا زمانی که شانس یادگیری دوباره از وبگردی شما را پیدا کند، هیچ‌چیزی را مسدود نکند",
         "description": "Pop-up triggered when the remove_all_data button is clicked"
     },
     "intro_text1": {
-        "message": "شما هم اکنون توسط پرایوسی بجر محافظت می شوید.",
+        "message": "شما هم‌اکنون توسط پرایوسی بجر محافظت می شوید.",
         "description": "First part of a reminder to visit the intro page. Shown in popup until the user clicks on the reminder link or browses through the intro page."
     },
     "intro_text2": {
-        "message": "برای یادگیری بیشتر درباره عملکرد پرایوسی بجر، روی قسمت پایین کلیک کنید.",
+        "message": "برای یادگیری بیش‌تر دربارهٔ عملکرد پرایوسی بجر، روی قسمت پایین کلیک کنید.",
         "description": "Second part of a reminder to visit the intro page"
     },
     "options_webrtc_warning": {
-        "message": "WebRTC میتواند منجر به لو رفتن آدرس IP شما شود. توجه داشته باشید که این گزینه میتواند باعث کندی عملکرد در برنامه های کنفرانسی وب مثل Google Hangouts شود.",
+        "message": "WebRTC می‌تواند منجر به لو رفتن نشانی IP شما شود. توجه داشته باشید که این گزینه می‌تواند باعث کندی عملکرد در کاره‌های گفت‌وگویی وب مثل Google Hangouts شود.",
         "description": "Tooltip on the general settings page"
     },
     "options_general_settings": {
@@ -274,33 +316,19 @@
         "description": "This is an options page tab heading."
     },
     "options_privacy_settings": {
-        "message": "Privacy",
+        "message": "حریم خصوصی",
         "description": "Subheading on the general settings options page."
     },
     "options_advanced_settings": {
-        "message": "Advanced",
+        "message": "پیش‌رفته",
         "description": "Subheading on the general settings options page."
     },
     "intro_next_button": {
-        "message": "انجام تور",
+        "message": "انجام سفر",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "برای بلاک کردن این دامنه به صورت کامل روی اینجا کلیک کنید",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "نسخه $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
-        "message": "کوکی های متعلق به$DOMAIN$ بلاک شد",
+        "message": "کوکی‌های متعلق به$DOMAIN$ مسدود شد",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
         "placeholders": {
             "domain": {
@@ -310,43 +338,35 @@
         }
     },
     "options_domain_filter_cookieblock": {
-        "message": "بلاک شده به صورت جزئی",
+        "message": "تاحدودی مسدود شده",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "متوجه هستم; لطفا لیست دامنه هایی که ردیابی میکنند را به من نشان بده",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
-        "message": "بابت نصب پرایوسی از شما ممنونیم!",
+        "message": "بابت نصب پرایوسی بجر از شما ممنونیم!",
         "description": ""
     },
     "import_select_file": {
-        "message": "لطفا یک فایل را برای ایمپورت کردن انتخاب کنید.",
+        "message": "لطفا یک پرونده را برای درون‌ریزی انتخاب کنید.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "آیا پرایوسی بجر باعث شده است تا این سایت به درستی کار نکند؟ ما را در جریان بگذارید!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
-        "message": "برای بلاک کردن کوکی ها اسلایدر را در وسط قرار بدهید",
+        "message": "برای مسدود کردن کوکی‌ها لغزنده را در وسط قرار بدهید",
         "description": ""
     },
     "intro_learns": {
-        "message": "Learns automatically",
+        "message": "به‌طور خودکار می‌آموزد",
         "description": "Intro page paragraph heading"
     },
     "intro_learns_paragraph": {
-        "message": "Instead of keeping lists of what to block, Privacy Badger automatically discovers trackers based on their behavior.",
+        "message": "پرایوسی بجر به‌جای نگه داشتن فهرستی از چیزهایی که باید مسدود کند، به‌طور خودکار ردیاب‌ها را بر پایهٔ رفتارشان کشف می‌کند.",
         "description": "Intro page paragraph"
     },
     "intro_beyond_ads": {
-        "message": "ردیاب های موذی را میگیرد",
+        "message": "ردیاب‌های موذی را می‌گیرد",
         "description": "Intro page paragraph heading."
     },
     "intro_beyond_ads_paragraph": {
-        "message": "Invisible tracking happens in all sorts of ways; ads are just the visible tip of the iceberg. Privacy Badger sends the <a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control signal</a>, to opt you out of data sharing and selling, and the <a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track signal</a> to tell companies not to track you. If they ignore your wishes, Privacy Badger will learn to block them—whether they are advertisers or trackers of other kinds.",
+        "message": "ردیابی نامرئی تمام حالات ممکن را شامل می‌شود؛ تبلیغات فقط قلهٔ قابل مشاهدهٔ این کوه یخی هستند. پرایوسی بجر <a href='https://globalprivacycontrol.org/' target='_blank'>اخطار مهار حریم خصوصی جهانی</a> را برای کنار گذاشتن شما از اشتراک و فروش داده، و <a href='https://www.eff.org/issues/do-not-track' target='_blank'>اخطار ردیابی نکن</a> را برای گفتن این‌که شرکت‌ها شما را ردیابی نکنند. اگر آن‌ها خواسته‌های شما را رد کنند، پرایوسی بجر یاد می‌گیرد که آن‌ها را مسدود کند—چه آن‌ها تبلیغ‌کننده باشند و چه هر نوعی از ردیاب‌ها.",
         "description": "Intro page paragraph."
     },
     "report_close": {
@@ -354,11 +374,11 @@
         "description": ""
     },
     "import_user_data": {
-        "message": "ایمپورت داده کاربری",
+        "message": "درون‌ریزی دادهٔ کاربری",
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "سازگار با DNT (ردیابی نکن)",
+        "message": "سازگار با خط مشی ردیابی نکن EFF",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -366,17 +386,13 @@
         "description": "Tooltip that comes up when you hover over the question mark button in the upper right corner of the popup."
     },
     "options_domain_filter_allow": {
-        "message": "اجازه داده شده",
+        "message": "مجاز",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "intro_donate_heading": {
-        "message": "حریم خصوصی یک ورزش تیمی می باشد.",
+        "message": "حریم خصوصی یک ورزش گروهی است!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "در اینجا نیاز نیست چیزی را تغییر دهید.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "همه",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -386,31 +402,51 @@
         "description": ""
     },
     "tooltip_block": {
-        "message": "برای بلاک کردن یک دامنه اسلایدر را به سمت چپ حرکت دهید",
+        "message": "برای مسدود کردن یک دامنه، لغزنده را به سمت چپ حرکت دهید",
         "description": ""
     },
     "options_enable_dnt_checkbox": {
-        "message": "Send websites the \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>\" and \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track</a>\" signals",
+        "message": "فرستادن اخطارهای «<a href='https://globalprivacycontrol.org/' target='_blank'>مهار حریم خصوصی جهانی</a>» و «<a href='https://www.eff.org/issues/do-not-track' target='_blank'>ردیابی نکن</a>» به وبگاه‌ها",
         "description": "Checkbox label for enabling/disabling the Sec-GPC and DNT signals, found on the general settings page"
     },
     "options_disable_google_nav_error_service": {
-        "message": "Disable sending web addresses you visit to Google. This disables suggestions for similar pages when a page can't be found.",
-        "description": "Checkbox label found on the general settings page"
+        "message": "غیرفعال‌سازی ارسال نشانی‌های وبی که بازدید می‌کنید به گوگل. این پیشنهادهای صفحات مشابه را وقتی که صفحه یافت نشد،‌ غیرفعال می‌کند.",
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Disable hyperlink auditing",
+        "message": "جلوگیری از ردیابی پیوندهایی که شما روی‌شان کلیک می‌کنید توسط وبگاه‌ها («hyperlink auditing»)",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_network_prediction": {
+        "message": "غیرفعال‌سازی پیش‌واکشی",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_floc": {
+        "message": "غیرفعال‌سازی یادگیری فدرال شدهٔ گوگل (FLoC)",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
-        "message": "کنترل شده توسط کاربر",
+        "message": "مهار شده توسط کاربر",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "حفاظت از ردیابی پیوند فعال است",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "بعضی وبگاه‌ها $LINK_START$از ردیابی برای دنبال کردن شما$LINK_END$ در هر جایی که روی پیوندی برای خروج از یک وبگاه کلیک می‌کنید، استفاده می‌کنند. پرایوسی بجر بعضی از ردیابی‌ها از چنین پیوندهایی را روی این وبگاه حذف می‌کند.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
-        "message": "$COUNT$ potential $LINK_START$trackers$LINK_END$ blocked",
+        "message": "$COUNT$ $LINK_START$ردیاب$LINK_END$ بالقوه مسدود شده است",
         "description": "Popup message shown when at least one tracker was blocked.",
         "placeholders": {
             "count": {
@@ -427,7 +463,7 @@
         }
     },
     "popup_instructions_no_trackers": {
-        "message": "No $LINK_START$trackers$LINK_END$ blocked",
+        "message": "هیچ $LINK_START$ردیابی$LINK_END$ مسدود نشده است",
         "description": "Text shown in the popup when there are no trackers on the page.",
         "placeholders": {
             "link_start": {
@@ -440,35 +476,23 @@
         }
     },
     "popup_blocked": {
-        "message": "There are no third party resources on this page. Hooray for privacy!",
+        "message": "هیچ منبع شخص ثالثی در این صفحه وجود ندارد. ایول برای حریم خصوصی!",
         "description": "Text shown in the popup when showing non-tracking domains is enabled, and there are no third-party domains on the page."
     },
     "intro_by_eff": {
-        "message": "پروژه ای از EFF",
-        "description": ""
-    },
-    "add_domain_button": {
-        "message": "افزودن دامنه",
+        "message": "پروژه‌ای از بنیاد مرزهای الکترونیکی",
         "description": ""
     },
     "tooltip_allow": {
-        "message": "برای اجازه دادن به یک دامنه، اسلایدر را به سمت راست حرکت دهید",
+        "message": "برای مجاز کردن یک دامنه، لغزنده را به سمت راست حرکت دهید",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "غیرفعال سازی پرایوسی بجر برای این سایت",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "برای اجازه دادن به این دامنه روی اینجا کلیک کنید",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
-        "message": "Privacy Badger will NEVER share data about your browsing unless you choose to share it.",
+        "message": "پرایوسی بجر هرگز داده‌ای دربارهٔ وبگردی شما به اشتراک نمی‌گذارد، مگر این‌که بخواهید آن را به اشتراک بگذارید.",
         "description": "Intro page paragraph."
     },
     "options_domain_list_trackers": {
-        "message": "Privacy Badger has decided to block $COUNT$ potential $TRACKER_LINK_START$tracking domains$TRACKER_LINK_END$ so far",
+        "message": "پرایوسی بجر تاکنون تصمیم گرفته است $COUNT$ $TRACKER_LINK_START$دامنهٔ ردیاب$TRACKER_LINK_END$ بالقوه را مسدود کند",
         "description": "Shown on the Tracking Domains tab on the options page after Privacy Badger learned to block one or more domains",
         "placeholders": {
             "count": {
@@ -485,43 +509,35 @@
         }
     },
     "options_domain_list_no_trackers": {
-        "message": "پرایوسی بجر هنوز نتوانسته هیچ <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'> دامنه ی ردیابی </a> پیدا کنید. به گردش خود در وب ادامه دهید!",
+        "message": "پرایوسی بجر هنوز نتوانسته هیچ <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>دامنهٔ ردیابی</a> را پیدا کنید. به وبگردی خود ادامه دهید!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "پرایوسی بجر",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "زمانی که یک ردیاب را در سه سایت مختلف ببیند، پرایوسی بجر شروع به بلاک کردن آن می کند.",
         "description": "Intro page paragraph."
     },
     "options_domain_status_filter": {
-        "message": "فیلتر کردن بر اساس وضعیت:",
+        "message": "فیلتر بر اساس وضعیت:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
     },
     "report_text": {
-        "message": "به طور مختصر خطای زیر را شرح دهید.",
+        "message": "به‌طور مختصر خطای رخ داده را شرح دهید.",
         "description": ""
     },
-    "remove_button": {
-        "message": "حذف گزینه (های) انتخاب شده",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
-        "message": "هنگام استفاده از پرایوسی بجر شما به <a href='https://www.eff.org/' target='_blank'> بنیاد مرزی الکترونیکی </a> و میلیون ها کاربر دیگر در مبارزه برای حریم خصوصی می پیوندید. ما یک بنیاد غیر انتفاعی هستیم که برای حقوق آنلاین شما می جنگیم. ممنون از اینکه به ما پیوستید!",
+        "message": "هنگام استفاده از پرایوسی بجر شما به <a href='https://www.eff.org/' target='_blank'>بنیاد مرزهای الکترونیکی</a> و میلیون‌ها کاربر دیگر در مبارزه برای حریم خصوصی می‌پیوندید. ما یک بنیاد غیرانتفاعی هستیم که برای حقوق برخط شما می‌جنگیم. ممنون از این‌که به ما پیوستید!",
         "description": "Part of the 'donate' section on the intro page."
     },
     "options_domain_search_tooltip": {
-        "message": "برای استثناء قائل شدن دامنه ها، به اول عبارت \"-\" اضافه کنید. برای مثال، \".co -.com\" دامنه های co. و co.uk. را نمایش داده می شود اما دامنه های com. نمایش داده نخواهند شد.",
+        "message": "برای استثنا کردن دامنه‌ها، به ابتدای شرط جست‌وجوی خود «-» اضافه کنید. مثلاً، «.co -.com» دامنه های co. و co.uk. را نمایش می‌دهد اما دامنه‌های com. را نمایش نمی‌دهد.",
         "description": "Tooltip for an \"information\" icon next to the domain search input on the Tracking Domains options page tab."
     },
     "intro_disable_button": {
-        "message": "اگر فکر میکنید که پرایوسی بجر باعث از کار افتادن سایتی شده است ( برای مثال، یک ویدیو پخش نمی شود)، میتوانید روی دکمه 'غیرفعال سازی' کلیک کنید تا پرایوسی بجر برای آن سایت غیرفعال شود.",
+        "message": "اگر فکر می‌کنید پرایوسی بجر باعث از کار افتادن وبگاهی شده است (مثلاً، یک ویدیو پخش نمی‌شود)، می‌توانید روی دکمهٔ «غیرفعال‌سازی» کلیک کنید تا پرایوسی بجر برای آن وبگاه غیرفعال شود.",
         "description": "Intro page paragraph. The quoted string ('Disable') should match the verb used for the 'popup_disable_for_site' message."
     },
     "intro_link_policy": {
-        "message": "سیاست حفظ حریم خصوصی",
+        "message": "خط مشی حریم خصوصی",
         "description": "Shown at the bottom of the intro page, links to the EFF software and technology projects privacy policy."
     },
     "report_input_label": {
@@ -529,35 +545,31 @@
         "description": ""
     },
     "not_yet_blocked_header": {
-        "message": "Your Badger hasn't decided yet if these domains should get blocked",
+        "message": "بجر شما تاکنون تصمیمی برای مسدود کردن این دامنه‌ها نگرفته است",
         "description": "Popup domain list header text; separates blocked from haven't-yet-seen-enough-to-block potential trackers."
     },
     "options_show_not_yet_blocked": {
-        "message": "Show domains your Badger hasn't decided yet to block:",
+        "message": "نمایش دامنه‌هایی که بجر شما تاکنون تصمیمی برای مسدود کردن‌شان نگرفته است:",
         "description": "Label for a checkbox on the Tracking Domains options page tab. Should match wording used in the 'not_yet_blocked_header' message."
     },
     "non_tracker": {
-        "message": "دامنه های زیر به نظر شما را ردیابی نمی کنند",
+        "message": "دامنه‌های زیر به‌نظر شما را ردیابی نمی‌کنند",
         "description": "Header text; separates tracking from non-tracking domains in the popup."
     },
     "popup_options_button": {
-        "message": "گزینه ها",
+        "message": "گزینه‌ها",
         "description": ""
     },
     "share_button_title_facebook": {
-        "message": "اشتراک گذاری بر روی فیسبوک",
+        "message": "اشتراک‌گذاری بر روی فیسبوک",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "پرایوسی بجر به صورت اتوماتیک یاد می گیرد تا ردیاب های مخفی را بلاک کند.",
-        "description": ""
-    },
     "report_fail": {
         "message": "اوه. خطایی رخ داد.",
         "description": ""
     },
     "social_tooltip_pb_has_replaced": {
-        "message": "پرایوسی بجر دکمه $BUTTON$ را جایگزین کرده است",
+        "message": "است کرده جایگزین را $BUTTON$ دکمهٔ بجر پرایوسی",
         "description": "Tooltip shown over a replaced social button. For example, \"Privacy Badger has replaced this Facebook Like button\". See also the widget_placeholder_pb_has_replaced message.",
         "placeholders": {
             "button": {
@@ -567,61 +579,69 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger has replaced this $WIDGET$ widget",
+        "message": "پرایوسی بجر $START_ANCHOR_TAG$ویجت $WIDGET$ $END_ANCHOR_TAG$ را جایگزین کرده است",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
     "allow_once": {
-        "message": "یکبار اجازه دادن",
+        "message": "یک‌بار مجاز کن",
         "description": "Button in the placeholder shown in place of certain third-party (video, audio, commenting) widgets. Clicking it will allow the third-party widget to load this one time only."
     },
     "allow_on_site": {
-        "message": "Always allow on this site",
+        "message": "همیشه روی این وبگاه مجاز کن",
         "description": "Button in the placeholder shown in place of certain third-party (video, audio, commenting) widgets. Clicking this button will always allow the widget to load on this particular site."
     },
     "sync_intro": {
-        "message": "همگام سازی ابری: <ul><li>به همگام سازی فایرفاکس/کروم نیاز دارد</li><li>آپلود باعث دوباره نویسی داده پرایوسی بجر در کلود می شود</li><li>دانلود، لیست سایت هایی که پرایوسی بجر برای آن ها غیرفعال است را ترکیب میکند</li></ul>",
+        "message": "همگام‌سازی ابری: <ul><li>به همگام‌سازی فایرفاکس/کروم نیاز دارد</li><li>بارگذاری باعث دوباره‌نویسی دادهٔ پرایوسی بجر در فضای ابری می‌شود</li><li>بارگیری، فهرست وبگاه‌هایی که پرایوسی بجر برای آن‌ها غیرفعال است را ترکیب می‌کند</li></ul>",
         "description": "A brief explanation of how syncing works. Shown above the upload/download cloud data buttons under the Manage Data options page tab."
     },
     "upload": {
-        "message": "آپلود",
+        "message": "بارگذاری",
         "description": "Button label for uploading data to the cloud on Manage Data options page tab."
     },
     "upload_cloud": {
-        "message": "انتقال سایت های غیرفعال شده به کلود",
+        "message": "برون‌بری وبگاه‌های غیرفعال شده به فضای ابری",
         "description": "Button title for uploading data to the cloud on Manage Data options page tab."
     },
     "download_cloud": {
-        "message": "ایمپورت سایت های غیرفعال شده از کلود",
+        "message": "درون‌ریزی وبگاه‌های غیرفعال شده از فضای ابری",
         "description": "Button title for downloading data from the cloud on Manage Data options page tab."
     },
     "download_cloud_success": {
-        "message": "داده ابری با موفقیت ایمپورت شد.",
+        "message": "دادهٔ ابری با موفقیت درون‌ریزی شد.",
         "description": "Message displayed to the user after successfully merging cloud data."
     },
     "download_cloud_failure": {
-        "message": "داده ابری دانلود نشد.",
+        "message": "دادهٔ ابری بارگیری نشد.",
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "داده ابری با موفقیت آپلود شد.",
+        "message": "داده با موفقیت روی فضای ابری بارگذاری شد",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "داده ابری آپلود نشد.",
+        "message": "بارگذاری داده روی فضای ابری موفقیت‌آمیز نبود",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
-        "message": "هیچ داده ابری برای دانلود وجود ندارد.",
+        "message": "هیچ دادهٔ ابری برای بارگیری وجود ندارد.",
         "description": "'Error' message when there is on cloud data to download."
     },
     "share_title": {
-        "message": "به دوستانتان اطلاع دهید",
+        "message": "به دوستان‌تان اطلاع دهید",
         "description": "Title of the share overlay."
     },
     "popup_share_button": {
@@ -629,7 +649,7 @@
         "description": "Tooltip that comes up when you hover over the share button in the upper right corner of the popup."
     },
     "share_tracker_header": {
-        "message": "Privacy Badger blocked $COUNT$ potential trackers on $DOMAIN$:",
+        "message": "پرایوسی بجر $COUNT$ ردیاب بالقوه را در $DOMAIN$ مسدود کرده است:",
         "description": "Header above the list of tracking domains in the share message.",
         "placeholders": {
             "count": {
@@ -643,35 +663,69 @@
         }
     },
     "share_base_message": {
-        "message": "پرایوسی بجر (www.eff.org/privacybadger) یک افزونه‌ی مرورگر است که به صورت خودکار می‌آموزد تا ردیاب‌های مخفی را مسدود کند. پرایوسی بجر توسط Electronic Frontier Foundation ساخته شده که به صورت غیر انتفاعی و آنلاین برای حقوق شما به می‌جنگد.",
+        "message": "پرایوسی بجر (privacybadger.org) یک افزونهٔ مرورگر است که به صورت خودکار می‌آموزد تا ردیاب‌های مخفی را مسدود کند. پرایوسی بجر توسط بنیاد مرزهای الکترونیکی، یک بنیاد غیرانتفاعی که برای حقوق برخط شما می‌جنگد، ساخته شده است.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
-        "message": "کپی به کلیپ‌بورد",
+        "message": "رونوشت به تخته‌گیره",
         "description": "Initial text of the copy button on the share overlay."
     },
     "copy_button_copied": {
-        "message": "کپی شد",
+        "message": "رونوشت شد",
         "description": "On-click text of the copy button on the share overlay."
     },
     "popup_special_page_header": {
-        "message": "Nothing to do on this page",
+        "message": "در این صفحه کاری برای انجام وجود ندارد",
         "description": "Heading for popup_special_page_paragraph"
     },
     "popup_special_page_paragraph": {
-        "message": "Privacy Badger doesn't work on special pages like this one. Try browsing somewhere else.",
+        "message": "پرایوسی بجر روی صفحات خاصی مثل این کار نمی‌کند. سعی کنید جای دیگری وبگردی کنید.",
         "description": "Shown in the popup for special browser pages such as the New Tab page and 'about:' pages."
     },
     "popup_disabled_site_header": {
-        "message": "Privacy Badger is disabled on this site",
+        "message": "پرایوسی بجر روی این وبگاه غیرفعال شده است",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Widget Replacement",
+    "disabled_sites": {
+        "message": "وبگاه‌های غیرفعال شده",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "When blocking social buttons and other potentially useful (video, audio, comments) widgets, Privacy Badger can replace them with click-to-activate placeholders.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>پرایوسی بجر بر روی وبگاه‌های زیر غیرفعال شده است. این به این معناست که پرایوسی بجر، هنگامی که وبگاه‌هایی که این‌جا فهرست شده‌اند را بازدید می‌کنید، هیچ‌چیزی را مسدود نخواهد کرد، و سیگنال‌های ردیابی نکن یا مهار حریم خصوصی جهانی را هم نخواهد فرستاد.</p><p>اگر فکر می‌کنید پرایوسی بجر این صفحه را خراب می‌کند، یا می‌خواهید وبگاهی خاص را مجاز به اشتراک‌گذاری و فروش داده‌هایتان کنید، می‌توانید دامنهٔ آن صفحه را در جعبهٔ زیر بنویسید و روی دکمهٔ «افزودن دامنه» کلیک کنید.</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "مثلاً www.example.com، *.example.net،‌ example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "افزودن دامنه",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "حذف گزینه (های) انتخاب شده",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "لطفا یک دامنه یا URL معتبر اضافه کنید",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "تنظیم زیر منسوخ شده‌اند و در به‌روزرسانی آتی پرایوسی بجر حذف خواهد شد:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "برای اطلاعات بیشتر به $LINK$ بروید.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "متوجه هستم",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/fi/messages.json b/src/_locales/fi/messages.json
index bd7796f1..39f9d904 100644
--- a/src/_locales/fi/messages.json
+++ b/src/_locales/fi/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger oppii automaattisesti estämään näkymättömät seurannat.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Poista käytöstä tällä sivustolla",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Ota käyttöön tällä sivustolla",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Ilmoita rikkoutuneesta sivustosta",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "versio $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "$DOMAIN$ estetty",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -18,7 +48,7 @@
         "description": "Confirmation shown when you click to remove a domain from Privacy Badger's tracking domains list on the options page."
     },
     "badger_status_noaction": {
-        "message": "Ei jäljitystä verkkotunnuksesta $DOMAIN$",
+        "message": "Ei seurantaa verkkotunnuksesta $DOMAIN$",
         "description": "Tooltip shown when you hover over a non-tracking domain name with a green slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
         "placeholders": {
             "domain": {
@@ -32,16 +62,12 @@
         "description": ""
     },
     "options_dnt_policy_setting": {
-        "message": "Tarkista, noudattavatko <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>kolmansien osapuolten verkkotunnukset</a> <a target='_blank' href='https://www.eff.org/dnt-policy'>EFF:n Do Not Track -käytäntöä</a>",
+        "message": "Tarkista, että <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>kolmansien osapuolien verkkotunnukset</a> noudattavat <a target='_blank' href='https://www.eff.org/dnt-policy'>EFF:n \"Do Not Track\" -käytäntöä</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Lisää kelvollinen verkkotunnus tai URL.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "Lahjoita EFF:lle",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Auta meitä lahjoittamalla ja antamalla tukesi työkaluillemme",
@@ -56,15 +82,27 @@
         "description": ""
     },
     "dnt_tooltip": {
-        "message": "Tämä verkkotunnus lupaa, ettei se jäljitä sinua",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "message": "Tämä verkkotunnus lupaa, ettei se seuraa sinua",
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Tämän verkkotunnuksen estämisen tiedetään rikkovan sivustoja",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Estä kokonaan",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Estä evästeet",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Salli",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
-        "message": "Klikkaa palauttaaksesi tämän verkkotunnuksen hallinnan Privacy Badgerille",
+        "message": "Palauta tämä verkkotunnus Privacy Badgerin hallintaan painamalla tästä",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
     },
     "next_section": {
@@ -83,14 +121,6 @@
         "message": "Ilmoita virheestä",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "esim. www.verkkotunnus.com, *.verkkotunnus.net, verkkotunnus.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Klikkaa tästä estääksesi tätä verkkotunnusta asettamasta evästeitä",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "estetty",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -100,7 +130,7 @@
         "description": "Checkbox label on the general settings page"
     },
     "intro_welcome": {
-        "message": "Privacy Badger oppii automaattisesti estämään näkymättömät jäljittimet. Näin se käy:",
+        "message": "Privacy Badger oppii automaattisesti estämään näkymättömät seurannat. Käytä hetki nähdäksesi miten.",
         "description": "Intro page welcome paragraph."
     },
     "error_input": {
@@ -108,7 +138,7 @@
         "description": ""
     },
     "options_domain_list_tab": {
-        "message": "Jäljittävät verkkotunnukset",
+        "message": "Seurantaverkkotunnukset",
         "description": "This is an options page tab heading."
     },
     "share_button_title_twitter": {
@@ -127,16 +157,36 @@
         "message": "Tuo",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Älä korvaa seuraavia sovelmia:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Widgettien korvaaminen",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "Kun estetään sosiaalisen median painikkeita ja muita mahdollisesti hyödyllisiä elementtejä, kuten videoita, ääniä ja kommentteja, voi Privacy Badger korvata ne paikkamerkeillä, joita painamalla ne voidaan aktivoida.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
-        "message": "Ota sovelmien korvaaminen käyttöön",
-        "description": "Checkbox label on the widget replacement tab"
+        "message": "Käytä widgettien korvausta",
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Widget-poikkeukset",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Älä korvaa seuraavia widgettejä:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Sivustopoikkeukset",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Salli widgetit aina seuraavilla sivustoilla:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
-        "message": "Näytä verkkotunnukset, jotka eivät vaikuta jäljittävän sinua",
+        "message": "Näytä verkkotunnukset, jotka eivät näytä seuraavan sinua",
         "description": "Checkbox label on the general settings page. Should match wording used in the 'non_tracker' message."
     },
     "report_button": {
@@ -162,11 +212,11 @@
         "description": "Label for a text input box on the Tracking Domains options page tab."
     },
     "options_learn_setting": {
-        "message": "Learn to block new trackers from your browsing",
+        "message": "Opi estämään uusia seurantoja selauksesi perusteella",
         "description": "Checkbox label on the general settings page"
     },
     "local_learning_warning": {
-        "message": "Enabling learning may make you more identifiable to websites",
+        "message": "Oppimisen käyttöönotto voi tehdä sinusta tunnistettavamman sivustoille",
         "description": "Tooltip on the general settings page"
     },
     "options_incognito_setting": {
@@ -174,47 +224,39 @@
         "description": "Checkbox label on the general settings page"
     },
     "options_incognito_warning": {
-        "message": "Jos otat oppimisen käyttöön yksityisessä selauksissakin, tietokoneellesi voi jäädä jälkiä selaushistoriastasi. Oletusarvoisesti Privacy Badger estää tuntemansa jäljittimet selattaessa yksityisesti, muttei opettele uusia jäljittimiä. Tämä valinta voi olla paikallaan, jos selaat nettiä paljon yksityisesti.",
+        "message": "Oppimisen käyttö myös yksityisessä selausikkunoissa saattaa jättää tietokoneellesi jälkiä yksityisestä selaushistoriastasi. Oletusarvoisesti Privacy Badger estää jo entuudestaan tuntemansa seurannat yksityisessä selaustilassa, muttei opettele uusia. Tämä valinta voi olla hyödyllinen, jos selaat verkkoa paljon yksityisessä selaustilassa.",
         "description": "Tooltip on the general settings page"
     },
     "learning_prompt_text1": {
-        "message": "Privacy Badger will no longer learn from your browsing by default.",
+        "message": "Privacy Badger ei enää oletusarvoisesti opi selauksestasi.",
         "description": "First part of a prompt to visit the blog."
     },
     "learning_prompt_text2": {
-        "message": "Click below to learn more.",
+        "message": "Lue lisää painamalla alta.",
         "description": "Second part of a prompt to visit the blog."
     },
     "learning_prompt_button": {
-        "message": "Learn how Privacy Badger is changing",
+        "message": "Lue miten Privacy Badger muuttuu",
         "description": "Button text, part of a prompt to visit the blog."
     },
     "show_counter_checkbox": {
-        "message": "Näytä jäljitinten määrä",
+        "message": "Näytä seurantojen määrä",
         "description": "Checkbox label on the general settings page"
     },
     "what_is_a_tracker": {
-        "message": "Mikä on jäljitin?",
+        "message": "Mikä on seuranta?",
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "Muista klikata 'Rikkoiko Privacy Badger tämän sivuston?' -painiketta. Kunnioitamme yksityisyyttäsi, emmekä siksi lähetä automaattisesti virheilmoituksia.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Älä unohda painaa \"Ilmoita rikkoutuneesta sivustosta\". Kunnioitamme tietosuojaasi, joten emme lähetä ilmoituksia automaattisesti.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Privacy Badgerin asetukset",
         "description": ""
     },
     "report_terms": {
-        "message": "Seuraavat tiedot lähetetään automaattisesti EFF:lle: sivu, jolla olet nyt, selaimesi versio, Privacy Badgerin versio sekä kaikkien liukuvalitsimien tila tämän sivun osalta.",
-        "description": ""
-    },
-    "whitelisted_domains": {
-        "message": "Käytöstä poistetut sivustot",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Ota Privacy Badger käyttöön tällä sivustolla",
+        "message": "Seuraavat tiedot lähetetään EFF:lle automaattisesti: sivu, jolla olet nyt, selaimesi versio, Privacy Badgerin versio sekä kaikkien liukuvalitsinten tila tämän sivun osalta.",
         "description": ""
     },
     "options_domain_type_filter": {
@@ -222,7 +264,7 @@
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
     },
     "import_successful": {
-        "message": "Jäljitinlista ja asetukset päivitetty!",
+        "message": "Seurantalistan ja asetusten päivitys onnistui!",
         "description": ""
     },
     "export_user_data": {
@@ -230,19 +272,19 @@
         "description": ""
     },
     "manage_data_intro": {
-        "message": "Käyttäjädatan tuominen:<ul><li>Ylikirjoittaa yleiset asetukset</li><li>Yhdistää listat käytöstä poistetuista sivustoista</li><li>Yhdistää tiedot Privacy Badgerin havaitsemista jäljittimistä</li><li>Ylikirjoittaa liukuvalitsimien muokkaukset</li></ul>",
+        "message": "Käyttäjätietojen tuonti:<ul><li>Korvaa yleiset asetukset</li><li>Yhdistää käytöstä poistettujen sivustojen listat</li><li>Yhdistää tiedot Privacy Badgerin havaitsemista seurannoista</li><li>Korvaa liukuvalitsinten muutokset</li></ul>",
         "description": "A brief explanation of what happens when you import Badger user data. Shown above the import/export user data buttons under the Manage Data options page tab."
     },
     "reset": {
-        "message": "Nollaa",
+        "message": "Palauta",
         "description": "Options page button, under the Manage Data tab"
     },
     "reset_data": {
-        "message": "Nollaa jäljittävät verkkotunnukset",
+        "message": "Palauta seurantaverkkotunnukset",
         "description": "Caption above reset button"
     },
     "reset_data_confirm": {
-        "message": "Jäljittävien verkkotunnusten nollaaminen:\n\n  • Poistaa kaiken jäljittäjiä koskevan datan, jonka Privacy Badger on oppinut selaamisestasi\n  • Palauttaa jäljittävien verkkotunnusten listaksi uusimman esikoulutetun listan (katso lisätietoja osoitteesta www.eff.org/badger-pretraining )",
+        "message": "Seurantaverkkotunnusten palautus:\n\n  • Poistaa kaikki tiedot, jotka Privacy Badger on selauksesi pohjalta seurannoista oppinut\n  • Palauttaa seurantaverkkotunnusten listaksi uusimman esikoulutetun listan (lue lisää osoitteesta www.eff.org/badger-pretraining)",
         "description": "Pop-up triggered when the reset_data button is clicked"
     },
     "remove_all": {
@@ -250,11 +292,11 @@
         "description": "Options page button, under the Manage Data tab"
     },
     "remove_all_data": {
-        "message": "Poista kaikki jäljittävät verkkotunnukset",
+        "message": "Poista kaikki seurantaverkkotunnukset",
         "description": "Caption above remove_all button"
     },
     "remove_all_data_confirm": {
-        "message": "Kaikkien jäljittävien verkkotunnusten poistaminen:\n\n  • Poistaa kaiken, mitä Privacy Badger tietää jäljittimistä\n  • Saa Privacy Badgerin olemaan estämättä mitään, kunnes se on saanut mahdollisuuden oppia uudelleen selaamisesi pohjalta",
+        "message": "Kaikkien seurantaverkkotunnusten poisto:\n\n  • Poistaa kaikki Privacy Badgerin tiedossa olevien seurantojen tiedot\n  • Aiheuttaa sen, ettei Privacy Badger estä mitään, kunnes se oppii ja sopeutuu selaukseesi uudelleen",
         "description": "Pop-up triggered when the remove_all_data button is clicked"
     },
     "intro_text1": {
@@ -262,7 +304,7 @@
         "description": "First part of a reminder to visit the intro page. Shown in popup until the user clicks on the reminder link or browses through the intro page."
     },
     "intro_text2": {
-        "message": "Voit klikata alta avataksesi nopean oppaan, joka kertoo, miten Privacy Badger toimii.",
+        "message": "Lukeaksesi miten Privacy Badger toimii, paina alta avataksesi tiiviin pikaoppaan.",
         "description": "Second part of a reminder to visit the intro page"
     },
     "options_webrtc_warning": {
@@ -278,27 +320,13 @@
         "description": "Subheading on the general settings options page."
     },
     "options_advanced_settings": {
-        "message": "Advanced",
+        "message": "Lisäasetukset",
         "description": "Subheading on the general settings options page."
     },
     "intro_next_button": {
         "message": "Esittelykierros",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Klikkaa tästä estääksesi tämän verkkotunnuksen kokonaan",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "versio $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "Evästeet estetty verkkotunnuksesta $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "osittain estetty",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Ymmärrän; näytä silti lista jäljittävistä verkkotunnuksista",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Kiitos, että asensit Privacy Badgerin!",
         "description": ""
@@ -325,28 +349,24 @@
         "message": "Valitse tuotava tiedosto.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "Rikkoiko Privacy Badger tämän sivuston? Kerro siitä meille!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "Evästeet estetään, kun liukuvalitsin on keskellä",
         "description": ""
     },
     "intro_learns": {
-        "message": "Learns automatically",
+        "message": "Oppii automaattisesti",
         "description": "Intro page paragraph heading"
     },
     "intro_learns_paragraph": {
-        "message": "Instead of keeping lists of what to block, Privacy Badger automatically discovers trackers based on their behavior.",
+        "message": "Estolistaan käyttöön pohjautuvan eston sijaan Privacy Badger tunnistaa seurannat automaattisesti niiden toiminnan perusteella.",
         "description": "Intro page paragraph"
     },
     "intro_beyond_ads": {
-        "message": "Nappaa katalat jäljittimet",
+        "message": "Nappaa katalat seurannat",
         "description": "Intro page paragraph heading."
     },
     "intro_beyond_ads_paragraph": {
-        "message": "Invisible tracking happens in all sorts of ways; ads are just the visible tip of the iceberg. Privacy Badger sends the <a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control signal</a>, to opt you out of data sharing and selling, and the <a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track signal</a> to tell companies not to track you. If they ignore your wishes, Privacy Badger will learn to block them—whether they are advertisers or trackers of other kinds.",
+        "message": "Näkymätöntä seurantaa tapahtuu monin tavoin ja mainokset ovat vain pinnalla näkyvä jäävuoren huippu. Privacy Badger lähettää \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>\" -signaaleita, jolla palveluille ilmoitetaan, ettet halua tietojasi jaettavan ja myytävän, sekä \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track</a>\" -signaaleita, jolla ilmoitetaan, ettet halua palveluiden seuraavan sinua. Mikäli pyyntöjäsi ei noudateta, Privacy Badger oppii estämään ne — ovatpa ne sitten mainostajia, seurantoja tai jotakin muuta.",
         "description": "Intro page paragraph."
     },
     "report_close": {
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "DNT:tä noudattava",
+        "message": "EFF:n DNT-käytäntöä noudattava",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "Yksityisyys on tiimipeliä!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "Näitä ei pitäisi olla tarpeen muuttaa.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "kaikki",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -390,27 +406,47 @@
         "description": ""
     },
     "options_enable_dnt_checkbox": {
-        "message": "Send websites the \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>\" and \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track</a>\" signals",
+        "message": "Lähetä sivustoille \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>\" ja \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track</a>\" -signaalit",
         "description": "Checkbox label for enabling/disabling the Sec-GPC and DNT signals, found on the general settings page"
     },
     "options_disable_google_nav_error_service": {
-        "message": "Disable sending web addresses you visit to Google. This disables suggestions for similar pages when a page can't be found.",
-        "description": "Checkbox label found on the general settings page"
+        "message": "Älä käytä avaamiesi verkkotunnusten lähetytä Googlelle. Tämä poistaa käytöstä samantyylisen sisällön ehdotukset silloin, kun sivua ei löydy.",
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Disable hyperlink auditing",
+        "message": "Estä sivustoja seuraamasta mitä linkkejä painat (ns. \"hyperlink auditing\")",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Älä käytä linkkien esihakua",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Poista Googlen Federated Learning of Cohorts (FLoC) käytöstä",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "käyttäjän hallitsema",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Linkkien seurantasuojaus on käytössä",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Jotkin verkkosivustot $LINK_START$seuraavat mitä linkkejä painat$LINK_END$ poistuessasi sivustolta ja seuraavat siten toimintaasi. Privacy Badger poistaa tällaisen linkkiseurannan tältä sivustolta.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
-        "message": "$COUNT$ mahdollista $LINK_START$jäljitintä$LINK_END$ estetty",
+        "message": "$COUNT$ mahdollista $LINK_START$seurantaa$LINK_END$ estetty",
         "description": "Popup message shown when at least one tracker was blocked.",
         "placeholders": {
             "count": {
@@ -427,7 +463,7 @@
         }
     },
     "popup_instructions_no_trackers": {
-        "message": "Yhtään $LINK_START$jäljitintä$LINK_END$ ei ole estetty",
+        "message": "Yhtään $LINK_START$seurantaa$LINK_END$ ei ole estetty",
         "description": "Text shown in the popup when there are no trackers on the page.",
         "placeholders": {
             "link_start": {
@@ -447,28 +483,16 @@
         "message": "Electronic Frontier Foundationin projekti",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Lisää verkkotunnus",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Verkkotunnus sallitaan, kun liukuvalitsin on oikealla",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Poista Privacy Badger käytöstä tällä sivustolla",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Klikkaa tästä salliaksesi tämän verkkotunnuksen",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privacy Badger ei koskaan jaa tietoa nettiselaamisestasi, ellet itse halua.",
         "description": "Intro page paragraph."
     },
     "options_domain_list_trackers": {
-        "message": "Privacy Badger has decided to block $COUNT$ potential $TRACKER_LINK_START$tracking domains$TRACKER_LINK_END$ so far",
+        "message": "Privacy Badger on tähän mennessä päättänyt estää $COUNT$ mahdollisesti $TRACKER_LINK_START$seurantaan käytettävää verkkotunnusta$TRACKER_LINK_END$",
         "description": "Shown on the Tracking Domains tab on the options page after Privacy Badger learned to block one or more domains",
         "placeholders": {
             "count": {
@@ -485,15 +509,11 @@
         }
     },
     "options_domain_list_no_trackers": {
-        "message": "Privacy Badger ei ole vielä havainnut yhtään <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>jäljittävää verkkotunnusta</a>. Jatka selaamista!",
+        "message": "Privacy Badger ei ole vielä havainnut yhtään <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>seurantaverkkotunnusta</a>. Jatka selausta!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
-        "message": "Privacy Badger aloittaa estämisen, kun se näkee saman jäljittimen kolmella eri sivustolla. Kolmesta poikki!",
+        "message": "Privacy Badger käynnistää eston havaittuaan saman seurannan kolmella eri sivustolla. Kolmesta poikki!",
         "description": "Intro page paragraph."
     },
     "options_domain_status_filter": {
@@ -501,23 +521,19 @@
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
     },
     "report_text": {
-        "message": "Kuvaile virhetilanne lyhyesti alapuolelle.",
+        "message": "Kuvaile virhettä lyhyesti alla.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Poista valitut",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
-        "message": "Käyttämällä Privacy Badgeria liityt <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundationin</a> ja miljoonien muiden käyttäjien joukkoon taistelussa yksityisyyden puolesta. Olemme voittoa tavoittelematon järjestö, joka taistelee oikeuksiesi puolesta verkossa. Kiitos, että liityt mukaan!",
+        "message": "Käyttämällä Privacy Badgeria liityt <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundationin</a> ja miljoonien muiden käyttäjien joukkoon taistelussa yksityisyyden puolesta. Olemme voittoa tavoittelematon järjestö, joka taistelee verkko-oikeuksiesi puolesta. Kiitos kun liityit mukaan!",
         "description": "Part of the 'donate' section on the intro page."
     },
     "options_domain_search_tooltip": {
-        "message": "Sulkeaksesi verkkotunnuksia pois hausta, laita hakutermisi eteen \"-\". Esimerkiksi \".co -.com\" näyttää .co- ja .co.uk-verkkotunnukset, muttei .com-verkkotunnuksia.",
+        "message": "Rajoittaaksesi hakua, lisää hakutermisi eteen \"-\". Esimerkiksi \".co -.com\" näyttää .co- ja .co.uk-verkkotunnukset, muttei .com-verkkotunnuksia.",
         "description": "Tooltip for an \"information\" icon next to the domain search input on the Tracking Domains options page tab."
     },
     "intro_disable_button": {
-        "message": "Jos arvelet, että Privacy Badger rikkoo nettisivun (esim. video ei toimi), voit klikata 'Poista käytöstä' -painiketta poistaaksesi Privacy Badgerin käytöstä kyseisellä sivustolla.",
+        "message": "Jos epäilet Privacy Badgerin rikkovan verkkosivun (esim. video ei toistu), voit painaa \"Poista käytöstä\" -painiketta kytkeäksesi Privacy Badgerin pois käytöstä kyseisellä sivustolla.",
         "description": "Intro page paragraph. The quoted string ('Disable') should match the verb used for the 'popup_disable_for_site' message."
     },
     "intro_link_policy": {
@@ -537,7 +553,7 @@
         "description": "Label for a checkbox on the Tracking Domains options page tab. Should match wording used in the 'not_yet_blocked_header' message."
     },
     "non_tracker": {
-        "message": "Alla olevat verkkotunnukset eivät vaikuta jäljittävän sinua",
+        "message": "Alla olevat verkkotunnukset eivät näytä seuraavan sinua",
         "description": "Header text; separates tracking from non-tracking domains in the popup."
     },
     "popup_options_button": {
@@ -548,16 +564,12 @@
         "message": "Jaa Facebookissa",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger oppii automaattisesti estämään näkymättömät jäljittimet.",
-        "description": ""
-    },
     "report_fail": {
         "message": "Hups. Jotakin meni pieleen.",
         "description": ""
     },
     "social_tooltip_pb_has_replaced": {
-        "message": "Privacy Badger on korvannut tämän $BUTTON$-painikkeen",
+        "message": "Privacy Badger on korvannut tämän \"$BUTTON$\" -painikkeen",
         "description": "Tooltip shown over a replaced social button. For example, \"Privacy Badger has replaced this Facebook Like button\". See also the widget_placeholder_pb_has_replaced message.",
         "placeholders": {
             "button": {
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger on korvannut tämän $WIDGET$-sovelman",
+        "message": "Privacy Badger on korvannut $START_ANCHOR_TAG$tämän \"$WIDGET$\" -widgetin$END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -585,11 +605,11 @@
         "description": "Button in the placeholder shown in place of certain third-party (video, audio, commenting) widgets. Clicking this button will always allow the widget to load on this particular site."
     },
     "sync_intro": {
-        "message": "Pilvisynkronointi:<ul><li>Vaatii Firefox/Chrome Syncin</li><li>Pilveen lataaminen ylikirjoittaa pilvessä mahdollisesti jo olevan Privacy Badgerin datan</li><li>Pilvestä lataaminen yhdistää listat sivustoista, joilla Badgerisi on poistettu käytöstä</li></ul>",
+        "message": "Pilvisynkronointi:<ul><li>Vaatii Firefoxin tai Chromen synkronoinnin käyttöä</li><li>Pilvitallennus korvaa aiemmin tallennetut Privacy Badgerin tiedot</li><li>Tiedonlataus pilvestä yhdistää käytöstä poistettujen sivustojen listat</li></ul>",
         "description": "A brief explanation of how syncing works. Shown above the upload/download cloud data buttons under the Manage Data options page tab."
     },
     "upload": {
-        "message": "Lataa pilveen",
+        "message": "Tallenna pilveen",
         "description": "Button label for uploading data to the cloud on Manage Data options page tab."
     },
     "upload_cloud": {
@@ -601,23 +621,23 @@
         "description": "Button title for downloading data from the cloud on Manage Data options page tab."
     },
     "download_cloud_success": {
-        "message": "Data tuotu pilvestä.",
+        "message": "Tietojen tuonti pilvestä onnistui.",
         "description": "Message displayed to the user after successfully merging cloud data."
     },
     "download_cloud_failure": {
-        "message": "Dataa ei voitu ladata pilvestä.",
+        "message": "Tietoja ei voitu ladata pilvestä.",
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Data ladattu pilveen.",
+        "message": "Tiedot tallennettiin pilveen.",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Dataa ei voitu ladata pilveen.",
+        "message": "Tietoja ei voitu tallentaa pilveen.",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
-        "message": "Pilvessä ei ole dataa ladattavaksi.",
+        "message": "Pilvestä ei löytynyt ladattavia tietoja.",
         "description": "'Error' message when there is on cloud data to download."
     },
     "share_title": {
@@ -629,7 +649,7 @@
         "description": "Tooltip that comes up when you hover over the share button in the upper right corner of the popup."
     },
     "share_tracker_header": {
-        "message": "Privacy Badger blocked $COUNT$ potential trackers on $DOMAIN$:",
+        "message": "Privacy Badger esti $COUNT$ mahdollista seurantaa verkkotunnuksella $DOMAIN$:",
         "description": "Header above the list of tracking domains in the share message.",
         "placeholders": {
             "count": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger) on selainlaajennus, joka oppii automaattisesti estämään näkymättömät jäljittimet. Privacy Badgerin on tehnyt Electronic Frontier Foundation, voittoa tavoittelematon järjestö joka taistelee oikeuksiesi puolesta verkossa.",
+        "message": "Privacy Badger (privacybadger.org) on selainlaajennus, joka oppii estämään näkymättömät seurannat automaattisesti. Privacy Badgerin on kehittänyt Electronic Frontier Foundation, joka on verkko-oikeuksiesi puolesta taisteleva, voittoa tavoittelematon järjestö.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -655,23 +675,57 @@
         "description": "On-click text of the copy button on the share overlay."
     },
     "popup_special_page_header": {
-        "message": "Ei mitään tehtävää tällä sivulla",
+        "message": "Tällä sivulla ei ole mitään tehtavää",
         "description": "Heading for popup_special_page_paragraph"
     },
     "popup_special_page_paragraph": {
-        "message": "Privacy Badger ei toimi tämänkaltaisilla erikoissivuilla. Kokeile selata muualla.",
+        "message": "Privacy Badger ei toimi tämänkaltaisilla erikoissivuilla. Kokeile avata muita sivuja.",
         "description": "Shown in the popup for special browser pages such as the New Tab page and 'about:' pages."
     },
     "popup_disabled_site_header": {
         "message": "Privacy Badger on poistettu käytöstä tällä sivustolla",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Sovelmien korvaaminen",
+    "disabled_sites": {
+        "message": "Käytöstä poistetut sivustot",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "Estäessään sosiaalisen median painikkeita ja muita mahdollisesti hyödyllisiä (video-, ääni-, kommentti-) sovelmia, Privacy Badger voi korvata ne klikkaamalla aktivoitavilla korvikkeilla.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger on poistettu käytöstä seuraavilla sivustoilla, eli Privacy Badger ei estä mitään käyttäessäsi näitä sivustoja, eikä se lähetä \"Do Not Track\" tai \"Global Privacy Control\" -signaaleja.</p><p>Jos epäilet Privacy Badgerin rikkovan verkkosivun tai haluat sallia tietyn sivuston jakaa tai myydä tietojasi, kirjoita sivuston verkkotunnus alla olevaan ja paina \"Lisää verkkotunnus\" -painiketta.</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "esim. www.esimerkki.fi, *.esimerkki.net, esimerkki.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Lisää verkkotunnus",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Poista valitut",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Lisää kelvollinen verkkotunnus tai URL",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "Seuraava asetus on vanhentunut ja tullaan poistamaan tulevien Privacy Badgerin päivityksien yhteydessä:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Lue lisää osoitteesta $LINK$.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Ymmärrän",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/fr/messages.json b/src/_locales/fr/messages.json
index 0814767d..b379e9b6 100644
--- a/src/_locales/fr/messages.json
+++ b/src/_locales/fr/messages.json
@@ -1,6 +1,36 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger apprend automatiquement à bloquer les traqueurs invisibles.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Désactiver pour ce site",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Activer pour ce site",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Report broken site",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "version $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
-        "message": "Blocage de $DOMAIN$",
+        "message": "A bloqué $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
         "placeholders": {
             "domain": {
@@ -10,15 +40,15 @@
         }
     },
     "invalid_json": {
-        "message": "Fichier JSON invalide.",
+        "message": "Le fichier JSON est invalide.",
         "description": ""
     },
     "options_remove_origin_confirm": {
-        "message": "Voulez-vous vraiment supprimer ce domaine de Privacy Badger ?",
+        "message": "Voulez-vous vraiment supprimer ce domaine de Privacy Badger ?",
         "description": "Confirmation shown when you click to remove a domain from Privacy Badger's tracking domains list on the options page."
     },
     "badger_status_noaction": {
-        "message": "Pas de traçage de $DOMAIN$",
+        "message": "Aucun traçage pour $DOMAIN$",
         "description": "Tooltip shown when you hover over a non-tracking domain name with a green slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
         "placeholders": {
             "domain": {
@@ -28,43 +58,51 @@
         }
     },
     "non_tracker_tip": {
-        "message": "À ce jour, Privacy Badger vérifie seulement si un tiers se sert de cookies, du stockage HTML5 local ou de l'empreinte par canvas pour épier votre navigation. Il se peut que d'autres méthodes non détectées soient utilisées.",
+        "message": "Actuellement, Privacy Badger ne vérifie que si des tiers utilisent des témoins de navigation, le stockage HTML5 local ou le pistage par empreinte numérique unique afin de suivre votre navigation à la trace. Certains de ces domaines pourraient utiliser des méthodes de traçage que Privacy Badger ne peut pas détecter.",
         "description": ""
     },
     "options_dnt_policy_setting": {
-        "message": "Vérifier si les <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>domaines tiers</a> se conforment à la charte de <a target='_blank' href='https://www.eff.org/dnt-policy'>non-pistage de l'EFF</a>",
+        "message": "Vérifier si les <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>domaines tiers</a> se conforment à la <a target='_blank' href='https://www.eff.org/dnt-policy'>politique de non-traçage de la FFÉ</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Veuillez ajouter un domaine ou une URL valide.",
-        "description": ""
-    },
     "donate_to_eff": {
-        "message": "Faire un don à l'EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "message": "Faire un don à la FFÉ",
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
-        "message": "Aidez-nous par un don et en partageant votre appréciation de nos outils",
+        "message": "Aidez-nous en faisant un don et en partageant votre soutien envers nos outils",
         "description": "Shown below the Donate button on the intro page."
     },
     "intro_not_an_adblocker": {
-        "message": "Différent d'un bloqueur de publicités",
+        "message": "Je ne suis pas un bloqueur de publicités, je suis différent",
         "description": "Intro page paragraph heading."
     },
     "report_success": {
-        "message": "Merci ! Nous allons étudier ça.",
+        "message": "Merci. Nous allons examiner la situation.",
         "description": ""
     },
     "dnt_tooltip": {
-        "message": "Ce domaine s'engage à ne pas vous tracer",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "message": "Ce domaine promet de ne pas vous suivre à la trace",
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
-        "message": "Bloquer ce domaine est connu pour perturber certains sites",
+        "message": "Le blocage de ce domaine perturbe habituellement certains sites Web",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Bloquer complètement",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Bloquer les témoins",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Autoriser",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
-        "message": "Cliquer pour redonner le contrôle de ce domaine à Privacy Badger",
+        "message": "Cliquez pour redonner le contrôle de ce domaine à Privacy Badger",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
     },
     "next_section": {
@@ -72,43 +110,35 @@
         "description": "Image alt. text on a couple of \"scroll down\" arrow buttons on the intro page."
     },
     "extension_error_text": {
-        "message": "Merci de nous <a href='https://www.eff.org/privacybadger#faq-I-found-a-bug!-What-do-I-do-now?' target='_blank'>signaler</a> l'erreur suivante :",
+        "message": "Nous vous invitons <a href='https://www.eff.org/privacybadger#faq-I-found-a-bug!-What-do-I-do-now?' target='_blank'>à nous signaler</a> l’erreur suivante :",
         "description": "Shown in the popup when there is a problem with the user's Privacy Badger extension that we want to encourage the user to tell us about."
     },
     "data_settings": {
-        "message": "Gestion des données",
+        "message": "Gérer les données",
         "description": "This is an options page tab heading."
     },
     "report_title": {
         "message": "Signaler une erreur",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "p. ex. www.domaine.com, *.domaine.net, domaine.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Cliquer ici pour bloquer les cookies de ce domaine",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "bloqués",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "options_webrtc_setting": {
-        "message": "Empêcher la fuite des adresses IP locales via WebRTC",
+        "message": "Empêcher la fuite des adresses IP locales par WebRTC",
         "description": "Checkbox label on the general settings page"
     },
     "intro_welcome": {
-        "message": "Privacy Badger apprend automatiquement à bloquer les traceurs invisibles. Prenez une minute pour comprendre comment.",
+        "message": "Privacy Badger apprend automatiquement à bloquer les traqueurs invisibles. Prenez une minute pour comprendre comment.",
         "description": "Intro page welcome paragraph."
     },
     "error_input": {
-        "message": "Quel est le problème ?",
+        "message": "Qu’est-ce qui ne va pas ?",
         "description": ""
     },
     "options_domain_list_tab": {
-        "message": "Domaines traceurs",
+        "message": "Domaines traqueurs",
         "description": "This is an options page tab heading."
     },
     "share_button_title_twitter": {
@@ -116,7 +146,7 @@
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
     "first_run_text": {
-        "message": "Apprendre comment Privacy Badger protège votre vie privée",
+        "message": "Découvrez comment Privacy Badger protège votre vie privée et vos données personnelles",
         "description": "Part of a reminder to visit the intro page. Shown in popup until the user clicks on the reminder link or browses through the intro page."
     },
     "download": {
@@ -127,24 +157,44 @@
         "message": "Importer",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Ne pas remplacer les widgets suivant :",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Remplacement de widgets",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "Lors du blocage de boutons de réseaux sociaux ou d’autres widgets potentiellement utiles (vidéos, sons, commentaires), Privacy Badger peut les remplacer par des emplacements « cliquez pour activer ».",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
-        "message": "Autoriser le remplacement des widgets",
-        "description": "Checkbox label on the widget replacement tab"
+        "message": "Permettre le remplacement des widgets",
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Exceptions pour les widgets",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Ne pas remplacer les widgets suivant :",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Exceptions pour les sites",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Toujours autoriser les widgets sur ces sites :",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
-        "message": "Afficher les domaines qui ne semblent pas vous tracer",
+        "message": "Afficher les domaines qui ne semblent pas vous suivre à la trace",
         "description": "Checkbox label on the general settings page. Should match wording used in the 'non_tracker' message."
     },
     "report_button": {
-        "message": "Soumettre l'erreur",
+        "message": "Envoyer le rapport d’erreur",
         "description": ""
     },
     "badger_status_allow": {
-        "message": "Autorisation de $DOMAIN$",
+        "message": "A autorisé $DOMAIN$",
         "description": "Tooltip shown when you hover over a tracking but still allowed (green slider) domain name in the list of domains in the popup or under the Tracking Domains tab on the options page.",
         "placeholders": {
             "domain": {
@@ -154,75 +204,67 @@
         }
     },
     "privacy_badger_what_is": {
-        "message": "Qu'est-ce que Privacy Badger ?",
+        "message": "Qu’est-ce que Privacy Badger ?",
         "description": ""
     },
     "options_domain_search": {
-        "message": "Rechercher un nom de domaine :",
+        "message": "Rechercher dans les domaines :",
         "description": "Label for a text input box on the Tracking Domains options page tab."
     },
     "options_learn_setting": {
-        "message": "Apprendre à bloquer de nouveaux traceurs en naviguant",
+        "message": "Apprendre à bloquer les nouveaux traqueurs lors de la navigation",
         "description": "Checkbox label on the general settings page"
     },
     "local_learning_warning": {
-        "message": "Activer l'apprentissage peut vous rendre plus identifiable par les sites internet",
+        "message": "L’activation de l’apprentissage pourrait faciliter votre identification par les sites Web",
         "description": "Tooltip on the general settings page"
     },
     "options_incognito_setting": {
-        "message": "Activer l'apprentissage dans les fenêtres de navigation privée",
+        "message": "Apprendre dans les fenêtres privées",
         "description": "Checkbox label on the general settings page"
     },
     "options_incognito_warning": {
-        "message": "Dans les fenêtres de navigation privée, Privacy Badger se contente de bloquer les traceurs qu'il connait. En activant cette option, il cherchera aussi à en identifier de nouveaux. Ceci pourrait laisser sur votre ordinateur des traces de sites que vous visitez. Son utilité pourrait se révéler si vous naviguez beaucoup en mode privé.",
+        "message": "L’activation de l’apprentissage dans les fenêtres de navigation privée pourrait laisser sur votre ordinateur des traces de votre historique de navigation privée. Dans les fenêtres de navigation privée, Privacy Badger bloquera par défaut les traqueurs qu’elle connaît déjà, mais elle n’identifiera pas les nouveaux traqueurs. Si une grande partie de votre navigation a lieu en mode privé, vous pourriez envisager d’activer cette option.",
         "description": "Tooltip on the general settings page"
     },
     "learning_prompt_text1": {
-        "message": "Privacy Badger will no longer learn from your browsing by default.",
+        "message": "Privacy Badger n’apprendra plus de votre navigation par défaut.",
         "description": "First part of a prompt to visit the blog."
     },
     "learning_prompt_text2": {
-        "message": "Click below to learn more.",
+        "message": "Cliquez ci-dessous pour en apprendre davantage.",
         "description": "Second part of a prompt to visit the blog."
     },
     "learning_prompt_button": {
-        "message": "Learn how Privacy Badger is changing",
+        "message": "Découvrez comment Privacy Badger change",
         "description": "Button text, part of a prompt to visit the blog."
     },
     "show_counter_checkbox": {
-        "message": "Afficher le nombre de traceurs",
+        "message": "Afficher le nombre de traqueurs",
         "description": "Checkbox label on the general settings page"
     },
     "what_is_a_tracker": {
-        "message": "Qu'est-ce qu'un traceur ?",
+        "message": "Qu’est-ce qu’un traqueur ?",
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "N'hésitez pas à cliquer sur « Signaler un site non fonctionnel ». Respectant votre vie privée, les rapports ne sont pas automatiquement envoyés.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Please don't forget to click on 'Report broken site'. We respect your privacy so we don't send automatic reports.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Options de Privacy Badger",
         "description": ""
     },
     "report_terms": {
-        "message": "La page que vous visitez, la version de votre navigateur et de Privacy Badger, ainsi que le réglage des curseurs pour cette page seront automatiquement transmis à l'EFF.",
-        "description": ""
-    },
-    "whitelisted_domains": {
-        "message": "Liste blanche",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Activer Privacy Badger pour ce site",
+        "message": "Les renseignements suivants seront automatiquement envoyés à la FFÉ : la page que vous visitez actuellement, la version de votre navigateur, la version de Privacy Badger, ainsi que l’état de tous les curseurs sur cette page.",
         "description": ""
     },
     "options_domain_type_filter": {
-        "message": "Filtrer par type :",
+        "message": "Filtrer par type :",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
     },
     "import_successful": {
-        "message": "Liste des traceurs et paramètres mis à jour avec succès !",
+        "message": "La liste des traqueurs et les paramètres ont été mis à jour avec succès",
         "description": ""
     },
     "export_user_data": {
@@ -230,7 +272,7 @@
         "description": ""
     },
     "manage_data_intro": {
-        "message": "Importer des données utilisateur :<ul><li>Remplace les réglages généraux</li><li>Combine les listes blanches</li><li>Combine les informations sur les sites que Privacy Badger a vus</li><li>Remplace les personnalisations des curseurs</li></ul>",
+        "message": "Importation des données utilisateur :<ul><li>Remplace les paramètres généraux</li><li>Fusionne les listes de sites désactivés</li><li>Regroupe des renseignements sur les traqueurs que Privacy Badger a vus</li><li>Remplace les personnalisations des curseurs</li></ul>",
         "description": "A brief explanation of what happens when you import Badger user data. Shown above the import/export user data buttons under the Manage Data options page tab."
     },
     "reset": {
@@ -238,11 +280,11 @@
         "description": "Options page button, under the Manage Data tab"
     },
     "reset_data": {
-        "message": "Réinitialisation des domaines traceurs",
+        "message": "Réinitialiser les domaines traqueurs",
         "description": "Caption above reset button"
     },
     "reset_data_confirm": {
-        "message": "Réinitialiser les domaines traceurs :\n\n• supprimera toutes les données apprises par Privacy Badger sur les traceurs  ;\n• restaurera la liste des domaines traceurs à la dernière liste préétablie (www.eff.org/badger-pretraining pour en savoir plus).",
+        "message": "La réinitialisation des domaines traqueurs aura pour effet de :\n\n  • Supprimer toutes les données sur les traqueurs apprises de votre navigation par Privacy Badger\n  • Restaurer la liste des domaines traqueurs à la dernière liste préapprise (consulter www.eff.org/badger-pretraining pour en apprendre davantage)",
         "description": "Pop-up triggered when the reset_data button is clicked"
     },
     "remove_all": {
@@ -250,27 +292,27 @@
         "description": "Options page button, under the Manage Data tab"
     },
     "remove_all_data": {
-        "message": "Supprimer tous les domaines traceurs",
+        "message": "Supprimer tous les domaines traqueurs",
         "description": "Caption above remove_all button"
     },
     "remove_all_data_confirm": {
-        "message": "Supprimer tous les domaines traceurs :\n\n• supprimera tout ce que Privacy Badger a appris sur les traceurs ;\n• suspendra tout blocage des traceurs jusqu'à ce que Privacy Badger apprenne à les reconnaitre de nouveau.",
+        "message": "Supprimer tous les domaines traqueurs aura pour effet de :\n\n  • Supprimera tout ce que Privacy Badger sait des traqueurs\n  • Suspendre les blocages de Privacy Badger tant qu’elle n’aura pas pu réapprendre de votre navigation",
         "description": "Pop-up triggered when the remove_all_data button is clicked"
     },
     "intro_text1": {
-        "message": "Vous êtes maintenant protégé par Privacy Badger.",
+        "message": "Votre protection est désormais assurée par Privacy Badger.",
         "description": "First part of a reminder to visit the intro page. Shown in popup until the user clicks on the reminder link or browses through the intro page."
     },
     "intro_text2": {
-        "message": "Pour découvrir son fonctionnement, cliquez ci-dessous pour un tutoriel rapide.",
+        "message": "Pour découvrir le fonctionnement de Privacy Badger, cliquez ci-dessous pour suivre un bref tutoriel.",
         "description": "Second part of a reminder to visit the intro page"
     },
     "options_webrtc_warning": {
-        "message": "WebRTC peut divulguer vos adresses IP locales. Activer cette option peut dégrader les performances des logiciels de visiophonie comme Google Hangouts.",
+        "message": "WebRTC peut divulguer vos adresses IP locales. Veuillez noter que l’activation de cette option pourrait dégrader les performances des applis de conférence Web telles que Google Hangouts.",
         "description": "Tooltip on the general settings page"
     },
     "options_general_settings": {
-        "message": "Réglages généraux",
+        "message": "Paramètres généraux",
         "description": "This is an options page tab heading."
     },
     "options_privacy_settings": {
@@ -278,29 +320,15 @@
         "description": "Subheading on the general settings options page."
     },
     "options_advanced_settings": {
-        "message": "Avancées",
+        "message": "Avancés",
         "description": "Subheading on the general settings options page."
     },
     "intro_next_button": {
         "message": "Commencer la visite",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Cliquer ici pour bloquer entièrement ce domaine",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "version $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
-        "message": "Blocage des cookies de $DOMAIN$",
+        "message": "A bloqué des témoins de navigation de $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
         "placeholders": {
             "domain": {
@@ -310,43 +338,35 @@
         }
     },
     "options_domain_filter_cookieblock": {
-        "message": "partiellement bloqués",
+        "message": "bloqués partiellement",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Je comprends. Montrez-moi quand même la liste de domaines traceurs.",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
-        "message": "Merci d'avoir installé Privacy Badger !",
+        "message": "Nous vous remercions d’avoir installé Privacy Badger",
         "description": ""
     },
     "import_select_file": {
         "message": "Veuillez sélectionner un fichier à importer.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "Signaler un site non fonctionnel",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
-        "message": "Centrer le curseur pour bloquer les cookies",
+        "message": "Centrez le curseur pour bloquer les témoins de navigation",
         "description": ""
     },
     "intro_learns": {
-        "message": "Learns automatically",
+        "message": "Apprentissage automatique",
         "description": "Intro page paragraph heading"
     },
     "intro_learns_paragraph": {
-        "message": "Instead of keeping lists of what to block, Privacy Badger automatically discovers trackers based on their behavior.",
+        "message": "Au lieu de tenir des listes de ce qu’il faut bloquer, Privacy Badger découvre automatiquement les traqueurs d’après leur comportement.",
         "description": "Intro page paragraph"
     },
     "intro_beyond_ads": {
-        "message": "Intercepte les traceurs sournois",
+        "message": "Intercepte les traqueurs sournois",
         "description": "Intro page paragraph heading."
     },
     "intro_beyond_ads_paragraph": {
-        "message": "Invisible tracking happens in all sorts of ways; ads are just the visible tip of the iceberg. Privacy Badger sends the <a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control signal</a>, to opt you out of data sharing and selling, and the <a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track signal</a> to tell companies not to track you. If they ignore your wishes, Privacy Badger will learn to block them—whether they are advertisers or trackers of other kinds.",
+        "message": "Le traçage invisible a lieu de bien des façons ; les publicités ne sont que la pointe de l’iceberg. Privacy Badger envoie le <a href='https://globalprivacycontrol.org/' target='_blank'>signal Contrôle global de la protection des données</a> pour indiquer votre refus de partager ou de vendre vos données, ainsi que le <a href='https://www.eff.org/issues/do-not-track' target='_blank'>signal Ne pas me pister</a> pour indiquer aux sociétés de ne pas vous suivre à la trace. Si elles ignorent votre volonté, Privacy Badger apprendra à les bloquer, qu’il s’agisse d’annonceurs ou d’autres sortes de traqueurs.",
         "description": "Intro page paragraph."
     },
     "report_close": {
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "respectant les règles de non-pistage",
+        "message": "compliant with EFF's DNT policy",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -370,13 +390,9 @@
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "intro_donate_heading": {
-        "message": "La vie privée est un effort de groupe !",
+        "message": "La protection des données privées est un sport d’équipe",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "Vous ne devriez pas avoir besoin de modifier quoi que ce soit ici.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "tous",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -386,31 +402,51 @@
         "description": ""
     },
     "tooltip_block": {
-        "message": "Déplacer le curseur à gauche pour bloquer un domaine",
+        "message": "Déplacez le curseur vers la gauche pour bloquer un domaine",
         "description": ""
     },
     "options_enable_dnt_checkbox": {
-        "message": "Send websites the \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>\" and \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track</a>\" signals",
+        "message": "Envoyer aux sites Web les signaux « <a href='https://globalprivacycontrol.org/' target='_blank'>Contrôle global de la protection des données</a> » et « <a href='https://www.eff.org/issues/do-not-track' target='_blank'>Ne pas me pister</a> »",
         "description": "Checkbox label for enabling/disabling the Sec-GPC and DNT signals, found on the general settings page"
     },
     "options_disable_google_nav_error_service": {
-        "message": "Désactiver l'envoi à Google des adresses web que vous visitez. Des pages similaires ne seront alors plus suggérer lorsqu'une page n'est pas trouvée.",
-        "description": "Checkbox label found on the general settings page"
+        "message": "Désactiver l’envoi à Google des adresses Web que vous visitez. Cette option désactive les suggestions de pages semblables si une page est introuvable.",
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Désactiver l'analyse des hyperliens",
+        "message": "Empêche aux sites de suivre les liens sur lesquels vous cliquez (« audit des hyperliens »)",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Désactiver la prédiction des actions sur le réseau",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Désactiver « Federated Learning of Cohorts (FLoC) » de Google",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
-        "message": "définis par l'utilisateur",
+        "message": "contrôlés par l’utilisateur",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "La protection contre le suivi des liens est active",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Certains sites Web $LINK_START$font appel au suivi des liens pour vous suivre$LINK_END$ quand vous cliquez sur un lien pour quitter le site Web. Privacy Badger supprime le suivi de tels liens sur ce site Web.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
-        "message": "$COUNT$ $LINK_START$traceurs$LINK_END$ potentiels bloqués",
+        "message": "$COUNT$ $LINK_START$traqueurs$LINK_END$ potentiels ont été bloqués",
         "description": "Popup message shown when at least one tracker was blocked.",
         "placeholders": {
             "count": {
@@ -427,7 +463,7 @@
         }
     },
     "popup_instructions_no_trackers": {
-        "message": "Aucun $LINK_START$traceur$LINK_END$ bloqué",
+        "message": "Aucun $LINK_START$traqueur$LINK_END$ n’a été bloqué",
         "description": "Text shown in the popup when there are no trackers on the page.",
         "placeholders": {
             "link_start": {
@@ -440,35 +476,23 @@
         }
     },
     "popup_blocked": {
-        "message": "Il n'y a pas de ressource tierce sur cette page. Un point pour la vie privée !",
+        "message": "Il n’y a aucune ressource tierce sur cette page. Vive la protection des données personnelles !",
         "description": "Text shown in the popup when showing non-tracking domains is enabled, and there are no third-party domains on the page."
     },
     "intro_by_eff": {
-        "message": "Un projet de l'Electronic Frontier Foundation",
-        "description": ""
-    },
-    "add_domain_button": {
-        "message": "Ajouter un domaine",
+        "message": "Un projet de la Fondation Frontière Électronique",
         "description": ""
     },
     "tooltip_allow": {
-        "message": "Déplacer le curseur à droite pour autoriser un domaine",
+        "message": "Déplacez le curseur vers la droite pour autoriser un domaine",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Désactiver Privacy Badger pour ce site",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Cliquer ici pour autoriser ce domaine",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
-        "message": "Il ne communiquera jamais sur votre navigation, sauf si vous le décidez.",
+        "message": "Privacy Badger ne partagera JAMAIS aucune donnée sur votre navigation, sauf si vous choisissez de les partager.",
         "description": "Intro page paragraph."
     },
     "options_domain_list_trackers": {
-        "message": "Privacy Badger has decided to block $COUNT$ potential $TRACKER_LINK_START$tracking domains$TRACKER_LINK_END$ so far",
+        "message": "Jusqu’à présent, Privacy Badger a décidé de bloquer $COUNT$ $TRACKER_LINK_START$domaines traqueurs$TRACKER_LINK_END$ potentiels",
         "description": "Shown on the Tracking Domains tab on the options page after Privacy Badger learned to block one or more domains",
         "placeholders": {
             "count": {
@@ -485,39 +509,31 @@
         }
     },
     "options_domain_list_no_trackers": {
-        "message": "Privacy Badger n'a pas encore détecté de <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>domaine traceur</a>. Continuez à naviguer !",
+        "message": "Privacy Badger n’a pas encore détecté de <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>domaine traqueur</a>. Poursuivez votre navigation.",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
-        "message": "Privacy Badger décide de bloquer un traceur lorsqu'il est détecté sur trois sites internet différents.",
+        "message": "Privacy Badger commence le blocage si elle détecte le même traqueur sur trois sites Web différents. Trois fautes et c’est fini.",
         "description": "Intro page paragraph."
     },
     "options_domain_status_filter": {
-        "message": "Filtrer par statut :",
+        "message": "Filtrer par état :",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
     },
     "report_text": {
-        "message": "Décrivez brièvement ci-dessous l'erreur.",
+        "message": "Décrivez brièvement l’erreur ci-dessous.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Supprimer la sélection",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
-        "message": "Lorsque vous utilisez Privacy Badger, vous rejoignez l'<a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a> et des millions d'autres utilisateurs dans le combat pour la vie privée. Nous sommes à but non lucratif et nous battons pour vos droits en ligne. Merci d'en faire parti !",
+        "message": "Quand vous utilisez Privacy Badger, vous vous joignez à la <a href='https://www.eff.org/' target='_blank'>Fondation Frontière Électronique</a> et aux millions d’autres utilisateurs dans le combat pour la protection de la vie privée. Nous sommes un organisme sans but lucratif, qui se bat pour protéger vos droits sur Internet. Merci de vous être joints à nous.",
         "description": "Part of the 'donate' section on the intro page."
     },
     "options_domain_search_tooltip": {
-        "message": "Pour exclure un domaine, ajoutez \"-\" devant celui-ci lors de votre recherche. Par exemple, \".co -.com\" affichera les domaines en .co ou .co.uk, mais pas .com.",
+        "message": "Pour exclure certains domaines, ajoutez « - » devant votre terme d’interrogation. Par exemple, « .co -.com » affichera les domaines .co ou .co.uk, mais pas .com.",
         "description": "Tooltip for an \"information\" icon next to the domain search input on the Tracking Domains options page tab."
     },
     "intro_disable_button": {
-        "message": "Si vous soupçonner Privacy Badger de perturber le fonctionnement d'une page (par exemple, la lecture d'une vidéo), vous pouvez cliquer sur le bouton « Désactiver » pour l'empêcher d'opérer sur ce site.",
+        "message": "Si vous pensez que Privacy Badger perturbe une page (par exemple, une vidéo n’est pas lue), vous pouvez cliquer sur le bouton « Désactiver » pour désactiver Privacy Badger pour ce site.",
         "description": "Intro page paragraph. The quoted string ('Disable') should match the verb used for the 'popup_disable_for_site' message."
     },
     "intro_link_policy": {
@@ -529,15 +545,15 @@
         "description": ""
     },
     "not_yet_blocked_header": {
-        "message": "Privacy Badger n'a pas encore décidé si ces domaines devaient être bloqués",
+        "message": "Votre Privacy Badger n’a pas encore décidé si ces domaines devaient être bloqués",
         "description": "Popup domain list header text; separates blocked from haven't-yet-seen-enough-to-block potential trackers."
     },
     "options_show_not_yet_blocked": {
-        "message": "Afficher les domaines que Privacy Badger ne s'est pas encore décidé à bloquer : ",
+        "message": "Afficher les domaines que votre Privacy Badger n’a pas encore décidé de bloquer :",
         "description": "Label for a checkbox on the Tracking Domains options page tab. Should match wording used in the 'not_yet_blocked_header' message."
     },
     "non_tracker": {
-        "message": "Les domaines ci-dessous ne semblent pas vous tracer.",
+        "message": "Les domaines ci-dessous ne semblent pas vous suivre à la trace",
         "description": "Header text; separates tracking from non-tracking domains in the popup."
     },
     "popup_options_button": {
@@ -548,12 +564,8 @@
         "message": "Partager sur Facebook",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger apprend automatiquement à bloquer les traceurs invisibles.",
-        "description": ""
-    },
     "report_fail": {
-        "message": "Oups, quelque chose a râté.",
+        "message": "Oups, quelque chose a mal tourné.",
         "description": ""
     },
     "social_tooltip_pb_has_replaced": {
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger a remplacé ce widget $WIDGET$",
+        "message": "Privacy Badger a remplacé $START_ANCHOR_TAG$ce widget $WIDGET$ $END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -585,7 +605,7 @@
         "description": "Button in the placeholder shown in place of certain third-party (video, audio, commenting) widgets. Clicking this button will always allow the widget to load on this particular site."
     },
     "sync_intro": {
-        "message": "Synchronisation avec le nuage : <ul><li>Nécessite Firefox ou Chrome Sync</li><li>Le téléversement écrase toutes données de Privacy Badger dans le nuage</li><li>Télécharger combinera la liste blanche avec celle présente</li></ul>",
+        "message": "Synchronisation avec le nuage : <ul><li>Nécessite Firefox ou Chrome Sync</li><li>Le téléversement remplace les données existantes de Privacy Badger dans le nuage</li><li>Télécharger fusionne les listes de sites pour lesquels votre Privacy Badger est désactivée</li></ul>",
         "description": "A brief explanation of how syncing works. Shown above the upload/download cloud data buttons under the Manage Data options page tab."
     },
     "upload": {
@@ -593,31 +613,31 @@
         "description": "Button label for uploading data to the cloud on Manage Data options page tab."
     },
     "upload_cloud": {
-        "message": "Exporter la liste blanche dans le nuage",
+        "message": "Exporter vers le nuage les sites désactivés",
         "description": "Button title for uploading data to the cloud on Manage Data options page tab."
     },
     "download_cloud": {
-        "message": "Importer la liste blanche du nuage",
+        "message": "Importer du nuage les sites désactivés",
         "description": "Button title for downloading data from the cloud on Manage Data options page tab."
     },
     "download_cloud_success": {
-        "message": "Données du nuage correctement importées.",
+        "message": "Les données du nuage ont été importées avec succès.",
         "description": "Message displayed to the user after successfully merging cloud data."
     },
     "download_cloud_failure": {
-        "message": "Les données du nuage n'ont pas pu être téléchargées.",
+        "message": "Les données du nuage n’ont pas pu être téléchargées.",
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Données correctement téléversées dans le nuage.",
+        "message": "Les données ont été téléversées vers le nuage avec succès",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Les données du nuage n'ont pas pu être téléversées.",
+        "message": "Les données n’ont pas pu être téléversées vers le nuage",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
-        "message": "Pas de données dans le nuage à télécharger.",
+        "message": "Aucune donnée à télécharger du nuage.",
         "description": "'Error' message when there is on cloud data to download."
     },
     "share_title": {
@@ -629,7 +649,7 @@
         "description": "Tooltip that comes up when you hover over the share button in the upper right corner of the popup."
     },
     "share_tracker_header": {
-        "message": "Privacy Badger a bloqué $COUNT$ traceurs potentiels sur $DOMAIN$ :",
+        "message": "Privacy Badger a bloqué $COUNT$ traqueurs potentiels sur $DOMAIN$ :",
         "description": "Header above the list of tracking domains in the share message.",
         "placeholders": {
             "count": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger) est une extension de navigateur qui apprend automatiquement à bloquer les traceurs invisibles. Il est conçu par l'Electronic Frontier Foundation, une organisation à but non lucratif qui se bat pour vos droits en ligne.",
+        "message": "Privacy Badger (privacybadger.org) est une extension pour navigateurs qui apprend automatiquement à bloquer les traqueurs invisibles. Privacy Badger est conçue par la Fondation Frontière Électronique, un organisme sans but lucratif qui se bat pour vos droits sur Internet.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -651,7 +671,7 @@
         "description": "Initial text of the copy button on the share overlay."
     },
     "copy_button_copied": {
-        "message": "Copié",
+        "message": "A été copié",
         "description": "On-click text of the copy button on the share overlay."
     },
     "popup_special_page_header": {
@@ -659,19 +679,53 @@
         "description": "Heading for popup_special_page_paragraph"
     },
     "popup_special_page_paragraph": {
-        "message": "Privacy Badger ne fonctionne pas sur les pages spéciales comme celle-ci. Essayez de naviguer ailleurs.",
+        "message": "Privacy Badger ne fonctionne pas sur les pages spéciales telles que celle-ci. Essayez de naviguer ailleurs.",
         "description": "Shown in the popup for special browser pages such as the New Tab page and 'about:' pages."
     },
     "popup_disabled_site_header": {
-        "message": "Privacy Badger est désactivé pour ce site",
+        "message": "Privacy Badger est désactivée pour ce site",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Remplacement de widgets",
+    "disabled_sites": {
+        "message": "Sites désactivés",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "Les boutons sociaux bloqués, et autres widgets potentiellement utiles (vidéos, sons, commentaires), peuvent être remplacés par une option « cliquer pour activer ».",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger est désactivée pour les sites suivants. Cela signifie que Privacy Badger ne bloquera rien lors d’une visite des sites indiqués ici, et n’enverra ni les signaux « Ne pas me pister » ni « Contrôle global de la protection des données ».</p><p>Si vous pensez que Privacy Badger perturbe une page ou si vous souhaitez autoriser un site particulier à partager ou à vendre vos données, vous pouvez saisir le domaine de cette page dans le champ ci-dessous et cliquer sur le bouton « Ajouter le domaine ».</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "p. ex. www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Ajouter le domaine",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Supprimer la sélection",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Veuillez ajouter un domaine ou une URL valide",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "Le paramètre suivant est déconseillé et sera supprimé dans une mise à jour future de Privacy Badger :",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Consultez $LINK$ pour en apprendre davantage.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Je comprends",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/he/messages.json b/src/_locales/he/messages.json
index ce3203a6..b24d2218 100644
--- a/src/_locales/he/messages.json
+++ b/src/_locales/he/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger לומד באופן אוטומטי לחסום עוקבנים בלתי נראים.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "השבת עבור האתר הזה",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "אפשר עבור האתר הזה",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "דווח על אתר שבור",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "גרסה $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "$DOMAIN$ חסום",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -14,7 +44,7 @@
         "description": ""
     },
     "options_remove_origin_confirm": {
-        "message": "האם אתה בטוח שאתה רוצה להסיר תחום זה מתוך Privacy Badger?",
+        "message": "האם אתה בטוח שאתה רוצה להסיר תחום זה מן Privacy Badger?",
         "description": "Confirmation shown when you click to remove a domain from Privacy Badger's tracking domains list on the options page."
     },
     "badger_status_noaction": {
@@ -35,13 +65,9 @@
         "message": "בדוק אם <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>תחומי צד־שלישי</a> מצייתים אל <a target='_blank' href='https://www.eff.org/dnt-policy'>מדיניות אל תעקוב של EFF</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "אנא הוסף תחום או כתובת תקפים.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "תרום אל EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "עזור לנו ע״י תרומה ושיתוף של תמיכתך בכלים שלנו",
@@ -56,13 +82,25 @@
         "description": ""
     },
     "dnt_tooltip": {
-        "message": "תחום זה מבטיח לא לעקוב אחריך.",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "message": "תחום זה מבטיח לא לעקוב אחריך",
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "חסימת תחום זה ידועה בתור שוברת אתרים",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "חסום לגמרי",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "חסום עוגיות",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "התר",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "לחץ כדי להחזיר שליטה בתחום זה אל Privacy Badger",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "דווח על שגיאה",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "לדוגמה www.domain.com, *.domain.net, domain.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "לחץ כאן כדי למנוע מתחום זה להשתמש בעוגיות",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "חסום",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "ייבא",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "אל תחליף את היישומונים הבאים:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "החלפת יישומונים",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "בעת חסימת כפתורים חברתיים ויישומונים שימושיים פוטנציאלים אחרים (סרטון, שמע, תגובות), Privacy Badger יכול להחליף אותם בממלאי מקום של לחץ־כדי־לשפעל.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "אפשר החלפת יישומונים",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "יישומונים מוחרגים",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "אל תחליף את היישומונים הבאים:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "אתרים מוחרגים",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "התר תמיד יישומונים באתרים אלו:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "הראה תחומים שנראה כי אינם עוקבים אחריך",
@@ -198,23 +248,15 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "אנא אל תשכח ללחוץ על 'Privacy Badger שבר את האתר הזה'. אנו מכבדים את פרטיותך כך שלא נשלח דוחות אוטומטיים.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "אנא אל תשכח ללחוץ על 'דווח על אתר שבור'. אנחנו מכבדים את פרטיותך כך שאנחנו לא שולחים דוחות אוטומטיים.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "אפשרויות Privacy Badger",
         "description": ""
     },
     "report_terms": {
-        "message": "זה ישלח באופן אוטומטי את המידע הבא אל EFF: הדף שאתה כרגע מבקר בו, גרסת הדפדפן שלך, הגרסה של Privacy Badger והמצב של כל המחוונים בדף זה.",
-        "description": ""
-    },
-    "whitelisted_domains": {
-        "message": "אתרים מושבתים",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "אפשר את Privacy Badger עבור אתר זה",
+        "message": "זה ישלח באופן אוטומטי את המידע הבא אל EFF: הדף שאתה כרגע מבקר בו, גרסת הדפדפן שלך, הגרסה של Privacy Badger והמצב של כל המחלקים בדף זה.",
         "description": ""
     },
     "options_domain_type_filter": {
@@ -230,7 +272,7 @@
         "description": ""
     },
     "manage_data_intro": {
-        "message": "יבוא נתוני משתמש:<ul><li>דריסת הגדרות כלליות</li><li>שילוב רשימות של אתרים מושבתים</li><li>שילוב מידע על אילו עוקבנים Privacy Badger ראה</li><li>דריסת התאמות אישיות של מחוונים</li></ul>",
+        "message": "יבוא נתוני משתמש:<ul><li>דריסת הגדרות כלליות</li><li>שילוב רשימות של אתרים מושבתים</li><li>שילוב מידע על אילו עוקבנים Privacy Badger ראה</li><li>דריסת התאמות אישיות של מחלקים</li></ul>",
         "description": "A brief explanation of what happens when you import Badger user data. Shown above the import/export user data buttons under the Manage Data options page tab."
     },
     "reset": {
@@ -285,20 +327,6 @@
         "message": "צא לסיור",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "לחץ כאן כדי לחסום לגמרי תחום זה",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "גרסה $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "עוגיות חסומות מן $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "חסום חלקית",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "אני מבין; אנא הראה לי את רשימת תחומי המעקב בכל זאת",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "תודה על התקנת Privacy Badger!",
         "description": ""
@@ -325,12 +349,8 @@
         "message": "אנא בחר קובץ לייבא.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "Privacy Badger שבר את האתר הזה? יידע אותנו!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
-        "message": "מרכז את המחוון כדי לחסום עוגיות",
+        "message": "מרכז את המַחְלֵק כדי לחסום עוגיות",
         "description": ""
     },
     "intro_learns": {
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "תואם־DNT",
+        "message": "תואם אל מדיניות אל תעקוב של EFF",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "פרטיות היא ספורט קבוצתי!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "אינך אמור להיות צריך לשנות שום דבר כאן.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "הכל",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -386,28 +402,48 @@
         "description": ""
     },
     "tooltip_block": {
-        "message": "הזז את המחוון שמאלה כדי לחסום תחום",
+        "message": "הזז את המַחְלֵק שמאלה כדי לחסום תחום",
         "description": ""
     },
     "options_enable_dnt_checkbox": {
-        "message": "שלח אל אתרים את האותות \"<a href='https://globalprivacycontrol.org/' target='_blank'>בקרה גלובלית של פרטיות</a> ו\"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>אל תעקוב</a>",
+        "message": "שלח אל אתרים את האותות \"<a href='https://globalprivacycontrol.org/' target='_blank'>בקרה גלובלית של פרטיות</a>\" ו\"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>אל תעקוב</a>\"",
         "description": "Checkbox label for enabling/disabling the Sec-GPC and DNT signals, found on the general settings page"
     },
     "options_disable_google_nav_error_service": {
         "message": "השבת שליחת כתובות אתר שאתה מבקר בהן אל Google. זה משבית הצעות אל דפים דומים כאשר דף אינו יכול להימצא.",
-        "description": "Checkbox label found on the general settings page"
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "השבת בדיקת היפר־קישורים",
+        "message": "מנע מאתרים לעקוב אחר אילו אתרים אתה לוחץ (\"מבדק היפר־קישורים\")",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "השבת חיזוי אתרים",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "השבת את למידה מאוחדת של מקבצים (FLoC) של Google",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "נשלט־משתמש",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger מושבת באתרים הבאים. זה אומר כי Privacy Badger לא יחסום שום דבר כאשר תבקר באתרים הכתובים למטה, והוא לא ישלח את האות אל תעקוב או את האות בקרה גלובלית של פרטיות.</p><p>אם אתה חושב כי Privacy Badger שובר עמוד, או אם אתה רוצה להתיר לאתר מסוים לשתף או למכור את הנתונים שלך, אתה יכול להקליד את תחום האתר בתיבה למטה וללחוץ על הכפתור \"הוסף תחום\".</p><p>לחלופין, כאשר לשונית העמוד כבר נבחרה, אתה יכול פשוט ללחוץ על הכפתור של Privacy Badger בסרגל הכלים של הדפדפן ואז ללחוץ על הכפתור \"השבת\".</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "הגנה מפני מעקב קישורים פעילה",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "אתרים מסוימים $LINK_START$משתמשים במעקב קישורים כדי לעקוב אחריך$LINK_END$ ברגע שאתה לוחץ על קישור כדי לעזוב את האתר. Privacy Badger מסיר מעקב מקישורים כאלו באתר הזה.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
         "message": "$COUNT$ $LINK_START$עוקבנים$LINK_END$ פוטנציאליים נחסמו",
@@ -447,22 +483,10 @@
         "message": "מיזם של הקרן של החזית האלקטרונית",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "הוסף תחום",
-        "description": ""
-    },
     "tooltip_allow": {
-        "message": "הזז את המחוון ימינה כדי להתיר תחום",
+        "message": "הזז את המַחְלֵק ימינה כדי להתיר תחום",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "השבת את Privacy Badger עבור אתר זה",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "לחץ כאן כדי להתיר תחום זה",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privacy Badger לעולם לא ישתף נתונים על גלישתך אלא אם תבחר לשתף אותם.",
         "description": "Intro page paragraph."
@@ -488,10 +512,6 @@
         "message": "Privacy Badger לא גילה <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>תחומי מעקב</a> עדין. המשך לגלוש!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privacy Badger מתחיל לחסום ברגע שהוא רואה את אותו עוקבן בשלושה אתרים שונים. שלוש פגיעות והוא בחוץ!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "תאר בקצרה את השגיאה למטה.",
         "description": ""
     },
-    "remove_button": {
-        "message": "הסר נבחרים",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "כאשר אתה משתמש ב־Privacy Badger אתה מצטרף אל <a href='https://www.eff.org/' target='_blank'>הקרן של החזית האלקטרונית</a> ואל מיליוני משתמשים אחרים בלחימה למען פרטיות. אנחנו ארגון ללא מטרות רווח הנלחם על זכויותיך באופן מקוון. תודה שהצטרפת אלינו!",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "שתף ב־Facebook",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger לומד באופן אוטומטי לחסום עוקבנים בלתי נראים.",
-        "description": ""
-    },
     "report_fail": {
         "message": "אופס. משהו השתבש.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger החליף יישומון $WIDGET$ זה",
+        "message": "Privacy Badger החליף $START_ANCHOR_TAG$יישומון $WIDGET$ זה$END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "נתוני ענן הועלו בהצלחה.",
+        "message": "נתונים הועלו בהצלחה אל הענן",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "נתוני ענן לא יכלו להיעלות.",
+        "message": "נתונים לא יכלו להיעלות אל הענן",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger) הוא הרחבת דפדפן אשר לומדת באופן אוטומטי לחסום עוקבנים בלתי נראים. Privacy Badger נוצר על ידי הקרן של החזית האלקטרונית, ארגון ללא מטרות רווח שנלחם על זכויותיך באופן מקוון.",
+        "message": "Privacy Badger (privacybadger.org) הוא הרחבת דפדפן אשר לומדת באופן אוטומטי לחסום עוקבנים בלתי נראים. Privacy Badger נוצר על ידי הקרן של החזית האלקטרונית, ארגון ללא מטרות רווח שנלחם על זכויותיך באופן מקוון.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "Privacy Badger מושבת באתר זה",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "החלפת יישומונים",
+    "disabled_sites": {
+        "message": "אתרים מושבתים",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "בעת חסימת כפתורים חברתיים ויישומונים שימושיים פוטנציאלים אחרים (סרטון, שמע, תגובות), Privacy Badger יכול להחליף אותם בממלאי מקום של לחץ־כדי־לשפעל.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger מושבת באתרים הבאים. זה אומר כי Privacy Badger לא יחסום שום דבר כאשר תבקר באתרים הכתובים למטה, והוא לא ישלח את האות אל תעקוב או את האות בקרה גלובלית של פרטיות.</p><p>אם אתה חושב כי Privacy Badger שובר עמוד, או אם אתה רוצה להתיר לאתר מסוים לשתף או למכור את הנתונים שלך, אתה יכול להקליד את תחום האתר בתיבה למטה וללחוץ על הכפתור \"הוסף תחום\".</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "לדוגמה www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "הוסף תחום",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "הסר נבחרים",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "אנא הוסף תחום או כתובת תקפים",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "ההגדרה הבאה הוצאה משימוש ותוסר בעדכון עתידי של Privacy Badger:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "בקר בכתובת $LINK$ כדי ללמוד עוד.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "אני מבין",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/hu/messages.json b/src/_locales/hu/messages.json
new file mode 100644
index 00000000..d2b1510d
--- /dev/null
+++ b/src/_locales/hu/messages.json
@@ -0,0 +1,731 @@
+{
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "A Privacy Badger automatikusan megtanulja a láthatatlan követők tiltását.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Letiltása ennél az oldalnál",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Engedélyezése ennél az oldalnál",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Report broken site",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "verzió: $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
+    "badger_status_block": {
+        "message": "$DOMAIN$ tiltva",
+        "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
+        "placeholders": {
+            "domain": {
+                "content": "$1",
+                "example": "example.com"
+            }
+        }
+    },
+    "invalid_json": {
+        "message": "Érvénytelen JSON-file.",
+        "description": ""
+    },
+    "options_remove_origin_confirm": {
+        "message": "Biztosan el szeretné távolítani ezt a tartományt a Privacy Badgerből?",
+        "description": "Confirmation shown when you click to remove a domain from Privacy Badger's tracking domains list on the options page."
+    },
+    "badger_status_noaction": {
+        "message": "Nincs követés ennél a tartománynál: $DOMAIN$",
+        "description": "Tooltip shown when you hover over a non-tracking domain name with a green slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
+        "placeholders": {
+            "domain": {
+                "content": "$1",
+                "example": "example.com"
+            }
+        }
+    },
+    "non_tracker_tip": {
+        "message": "A Privacy Badger jelenleg csak azt ellenőrzi, hogy a harmadik felek használnak-e sütiket, HTML helyi tárolókat vagy vászon segítségével történő ujjlenyomat-készítést a böngészése nyomon követéséhez. Ezen tartományok némelyike olyan követési módszereket használhat, amelyeket a Privacy Badger nem ismer fel.",
+        "description": ""
+    },
+    "options_dnt_policy_setting": {
+        "message": "Annak ellenőrzése, hogy a <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>harmadik felek tartományai</a> betartják-e az <a target='_blank' href='https://www.eff.org/dnt-policy'>EFF „ne kövessenek” irányelvét</a>",
+        "description": "Checkbox label on the general settings page"
+    },
+    "donate_to_eff": {
+        "message": "Adományozás az EFF-nek",
+        "description": "Link shown in the popup; also a button on the intro page"
+    },
+    "intro_donate_subheading": {
+        "message": "Segítsen nekünk adományozással és az eszközeink támogatásának megosztásával",
+        "description": "Shown below the Donate button on the intro page."
+    },
+    "intro_not_an_adblocker": {
+        "message": "Nem reklámblokkoló, és más vagyok",
+        "description": "Intro page paragraph heading."
+    },
+    "report_success": {
+        "message": "Köszönjük! Megoldást fogunk találni rá.",
+        "description": ""
+    },
+    "dnt_tooltip": {
+        "message": "Ez a tartomány azt ígéri, hogy nem követi Önt",
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+    },
+    "breakage_warning_tooltip": {
+        "message": "A tartomány tiltása köztudottan megakadályozza a weboldalak helyes működését",
+        "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
+    },
+    "domain_slider_block_tooltip": {
+        "message": "Block entirely",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Block cookies",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Allow",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
+    "feed_the_badger_title": {
+        "message": "Kattintson, hogy visszaadja a tartomány vezérlését a Privacy Badger számára",
+        "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
+    },
+    "next_section": {
+        "message": "következő szakasz",
+        "description": "Image alt. text on a couple of \"scroll down\" arrow buttons on the intro page."
+    },
+    "extension_error_text": {
+        "message": "<a href='https://www.eff.org/privacybadger#faq-I-found-a-bug!-What-do-I-do-now?' target='_blank'>Mondjon el nekünk</a> valamit a következő hibáról:",
+        "description": "Shown in the popup when there is a problem with the user's Privacy Badger extension that we want to encourage the user to tell us about."
+    },
+    "data_settings": {
+        "message": "Adatok kezelése",
+        "description": "This is an options page tab heading."
+    },
+    "report_title": {
+        "message": "Hiba jelentése",
+        "description": ""
+    },
+    "options_domain_filter_block": {
+        "message": "letiltva",
+        "description": "Dropdown control setting on the Tracking Domains options page tab."
+    },
+    "options_webrtc_setting": {
+        "message": "A WebRTC megakadályozása a helyi IP-cím kiszivárogtatásában",
+        "description": "Checkbox label on the general settings page"
+    },
+    "intro_welcome": {
+        "message": "A Privacy Badger automatikusan megtanulja a láthatatlan követők tiltását. Szánjon rá egy percet, hogy meglássa hogyan.",
+        "description": "Intro page welcome paragraph."
+    },
+    "error_input": {
+        "message": "Mi a baj?",
+        "description": ""
+    },
+    "options_domain_list_tab": {
+        "message": "Követő tartományok",
+        "description": "This is an options page tab heading."
+    },
+    "share_button_title_twitter": {
+        "message": "Megosztás Twitteren",
+        "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
+    },
+    "first_run_text": {
+        "message": "Tudja meg, hogy a Privacy Badger hogyan védi a magánszféráját",
+        "description": "Part of a reminder to visit the intro page. Shown in popup until the user clicks on the reminder link or browses through the intro page."
+    },
+    "download": {
+        "message": "Letöltés",
+        "description": ""
+    },
+    "import": {
+        "message": "Importálás",
+        "description": ""
+    },
+    "options_widget_replacement_tab": {
+        "message": "Felületi elem cseréje",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "Közösségi gombok és egyéb lehetséges hasznos (videó, hang, hozzászólások) felületi elemek tiltásakor a Privacy Badger ki tudja cserélni azokat kattintásra aktiválódó helykitöltőkre.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
+    },
+    "options_social_widgets_checkbox": {
+        "message": "Felületi elem cseréjének engedélyezése",
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Felületi elem kivételek",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Ne cserélje ki a következő felületi elemeket:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Oldal kivételek",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Mindig engedélyezze a felületi elemeket ezeken az oldalakon:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_show_nontracking_domains_checkbox": {
+        "message": "Tartományok megjelenítése, amelyekről úgy tűnik, hogy nem követik Önt",
+        "description": "Checkbox label on the general settings page. Should match wording used in the 'non_tracker' message."
+    },
+    "report_button": {
+        "message": "Hiba elküldése",
+        "description": ""
+    },
+    "badger_status_allow": {
+        "message": "$DOMAIN$ engedélyezve",
+        "description": "Tooltip shown when you hover over a tracking but still allowed (green slider) domain name in the list of domains in the popup or under the Tracking Domains tab on the options page.",
+        "placeholders": {
+            "domain": {
+                "content": "$1",
+                "example": "example.com"
+            }
+        }
+    },
+    "privacy_badger_what_is": {
+        "message": "Mi a Privacy Badger?",
+        "description": ""
+    },
+    "options_domain_search": {
+        "message": "Tartományok keresése:",
+        "description": "Label for a text input box on the Tracking Domains options page tab."
+    },
+    "options_learn_setting": {
+        "message": "Tanulja meg az új követők tiltását a böngészésétől",
+        "description": "Checkbox label on the general settings page"
+    },
+    "local_learning_warning": {
+        "message": "A tanulás engedélyezése azonosíthatóbbá teheti Önt a weboldalak számára",
+        "description": "Tooltip on the general settings page"
+    },
+    "options_incognito_setting": {
+        "message": "Tanulás privát vagy inkognitó ablakokban",
+        "description": "Checkbox label on the general settings page"
+    },
+    "options_incognito_warning": {
+        "message": "A tanulás engedélyezése a privát vagy inkognitó ablakban nyomokat hagyhat a számítógépén a személyes böngészési előzményeiről. Alapértelmezetten a Privacy Badger tiltani fogja azokat a követőket, amelyek már tudnak a privát vagy inkognitó ablakokról, de nem fogja megtanulni az új követőket. Akkor lehet érdemes engedélyeznie ezt a beállítást, ha a böngészése nagy részét privát vagy inkognitó ablakban végzi.",
+        "description": "Tooltip on the general settings page"
+    },
+    "learning_prompt_text1": {
+        "message": "A Privacy Badger többé nem fog tanulni a böngészéséről alapértelmezetten.",
+        "description": "First part of a prompt to visit the blog."
+    },
+    "learning_prompt_text2": {
+        "message": "Kattintson lent, hogy többet tudjon meg.",
+        "description": "Second part of a prompt to visit the blog."
+    },
+    "learning_prompt_button": {
+        "message": "Tudja meg, hogy a Privacy Badger hogyan változik",
+        "description": "Button text, part of a prompt to visit the blog."
+    },
+    "show_counter_checkbox": {
+        "message": "Követők számának megjelenítése",
+        "description": "Checkbox label on the general settings page"
+    },
+    "what_is_a_tracker": {
+        "message": "Mi az a követő?",
+        "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
+    },
+    "intro_report_button": {
+        "message": "Please don't forget to click on 'Report broken site'. We respect your privacy so we don't send automatic reports.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
+    },
+    "options_title": {
+        "message": "Privacy Badger beállításai",
+        "description": ""
+    },
+    "report_terms": {
+        "message": "Ez a következő információkat fogja elküldeni automatikusan az EFF-nek: a jelenleg meglátogatott oldalt, a böngészője verzióját, a Privacy Badger verzióját, valamint az ezen az oldalon lévő összes csúszka állapotát.",
+        "description": ""
+    },
+    "options_domain_type_filter": {
+        "message": "Szűrés típus szerint:",
+        "description": "Label for a dropdown control on the Tracking Domains options page tab."
+    },
+    "import_successful": {
+        "message": "A követőlista és a beállítások sikeresen frissítve!",
+        "description": ""
+    },
+    "export_user_data": {
+        "message": "Felhasználói adatok exportálása",
+        "description": ""
+    },
+    "manage_data_intro": {
+        "message": "Felhasználói adatok importálása:<ul><li>Felülírja az általános beállításokat</li><li>Egyesíti a letiltott oldalak listáit</li><li>Egyesíti azokat az információkat, hogy a Privacy Badger milyen követőket látott</li><li>Felülírja a csúszka személyre szabásait</li></ul>",
+        "description": "A brief explanation of what happens when you import Badger user data. Shown above the import/export user data buttons under the Manage Data options page tab."
+    },
+    "reset": {
+        "message": "Visszaállítás",
+        "description": "Options page button, under the Manage Data tab"
+    },
+    "reset_data": {
+        "message": "Követő tartományok visszaállítása",
+        "description": "Caption above reset button"
+    },
+    "reset_data_confirm": {
+        "message": "A követő tartományok visszaállítása a következőket fogja tenni:\n\n  • Az összes adat törlése azzal kapcsolatban, amit a Privacy Badger megtanult a böngészéséről\n  • A követő tartományok listájának visszaállítása a legutolsó előre megtanított listára (látogassa meg a www.eff.org/badger-pretraining oldalt a további részletekért)",
+        "description": "Pop-up triggered when the reset_data button is clicked"
+    },
+    "remove_all": {
+        "message": "Összes eltávolítása",
+        "description": "Options page button, under the Manage Data tab"
+    },
+    "remove_all_data": {
+        "message": "Összes követő tartomány eltávolítása",
+        "description": "Caption above remove_all button"
+    },
+    "remove_all_data_confirm": {
+        "message": "Az összes követő tartomány eltávolítása a következőket fogja tenni:\n\n  • Minden törlése azzal kapcsolatban, amit a Privacy Badger a követőkről tud\n  • Azt okozza, hogy a Privacy Badger nem tilt semmit, amíg nincs lehetősége újra megtanulni a böngészését",
+        "description": "Pop-up triggered when the remove_all_data button is clicked"
+    },
+    "intro_text1": {
+        "message": "Önt mostantól védi a Privacy Badger.",
+        "description": "First part of a reminder to visit the intro page. Shown in popup until the user clicks on the reminder link or browses through the intro page."
+    },
+    "intro_text2": {
+        "message": "Annak megismeréséhez, hogy a Privacy Badger hogyan működik, kattintson a lenti gyors ismertetőért.",
+        "description": "Second part of a reminder to visit the intro page"
+    },
+    "options_webrtc_warning": {
+        "message": "A WebRTC kiszivárogtathatja a helyi IP-címet. Ne feledje, hogy ezen beállítás engedélyezése leronthatja az olyan webkonferencia alkalmazásoknál a teljesítményt, mint például a Google Hangouts.",
+        "description": "Tooltip on the general settings page"
+    },
+    "options_general_settings": {
+        "message": "Általános beállítások",
+        "description": "This is an options page tab heading."
+    },
+    "options_privacy_settings": {
+        "message": "Adatvédelem",
+        "description": "Subheading on the general settings options page."
+    },
+    "options_advanced_settings": {
+        "message": "Speciális",
+        "description": "Subheading on the general settings options page."
+    },
+    "intro_next_button": {
+        "message": "Bemutató megtekintése",
+        "description": "Intro page welcome button."
+    },
+    "badger_status_cookieblock": {
+        "message": "A(z) $DOMAIN$ tartományból tiltott sütik",
+        "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
+        "placeholders": {
+            "domain": {
+                "content": "$1",
+                "example": "example.com"
+            }
+        }
+    },
+    "options_domain_filter_cookieblock": {
+        "message": "részlegesen tiltva",
+        "description": "Dropdown control setting on the Tracking Domains options page tab."
+    },
+    "firstRun_title": {
+        "message": "Köszönjük, hogy telepítette a Privacy Badger kiegészítőt!",
+        "description": ""
+    },
+    "import_select_file": {
+        "message": "Válasszon egy fájlt az importáláshoz.",
+        "description": ""
+    },
+    "tooltip_cookieblock": {
+        "message": "Állítsa középre a csúszkát a sütik tiltásához",
+        "description": ""
+    },
+    "intro_learns": {
+        "message": "Automatikusan tanul",
+        "description": "Intro page paragraph heading"
+    },
+    "intro_learns_paragraph": {
+        "message": "Ahelyett, hogy listát tartana fent arról, hogy mit kell tiltani, a Privacy Badger automatikusan felfedezi a követőket a viselkedésük alapján.",
+        "description": "Intro page paragraph"
+    },
+    "intro_beyond_ads": {
+        "message": "Elkapja az alattomos követőket",
+        "description": "Intro page paragraph heading."
+    },
+    "intro_beyond_ads_paragraph": {
+        "message": "A láthatatlan követés mindenféle módon történhet, a reklámok csak a jéghegy csúcsát jelentik. A Privacy Badger elküldi a <a href='https://globalprivacycontrol.org/' target='_blank'>globális adatvédelmi szabályozás jelzést</a>, hogy lemondjon az Ön nevében az adatmegosztásról és az adateladásról, valamint a <a href='https://www.eff.org/issues/do-not-track' target='_blank'>ne kövessen jelzést</a>, hogy közölje a vállalatokkal, hogy ne kövessék Önt. Ha azok figyelmen kívül hagyják a kéréseit, akkor a Privacy Badger meg fogja tanulni tiltani azokat – legyenek azok hirdetők vagy bármilyen fajta követők.",
+        "description": "Intro page paragraph."
+    },
+    "report_close": {
+        "message": "Bezárás",
+        "description": ""
+    },
+    "import_user_data": {
+        "message": "Felhasználói adatok importálása",
+        "description": ""
+    },
+    "options_domain_filter_dnt": {
+        "message": "compliant with EFF's DNT policy",
+        "description": "Dropdown control setting on the Tracking Domains options page tab."
+    },
+    "popup_help_button": {
+        "message": "Súgó",
+        "description": "Tooltip that comes up when you hover over the question mark button in the upper right corner of the popup."
+    },
+    "options_domain_filter_allow": {
+        "message": "engedélyezve",
+        "description": "Dropdown control setting on the Tracking Domains options page tab."
+    },
+    "intro_donate_heading": {
+        "message": "Az adatvédelem csapatsport!",
+        "description": "Part of the 'donate' section on the intro page."
+    },
+    "options_domain_filter_all": {
+        "message": "összes",
+        "description": "Dropdown control setting on the Tracking Domains options page tab."
+    },
+    "report_cancel": {
+        "message": "Mégse",
+        "description": ""
+    },
+    "tooltip_block": {
+        "message": "Mozgassa a csúszkát balra egy tartomány tiltásához",
+        "description": ""
+    },
+    "options_enable_dnt_checkbox": {
+        "message": "A „<a href='https://globalprivacycontrol.org/' target='_blank'>globális adatvédelmi szabályozás</a>” és a „<a href='https://www.eff.org/issues/do-not-track' target='_blank'>ne kövessen</a>” jelzések küldése a weboldalaknak",
+        "description": "Checkbox label for enabling/disabling the Sec-GPC and DNT signals, found on the general settings page"
+    },
+    "options_disable_google_nav_error_service": {
+        "message": "Meglátogatott webcímek küldésének letiltása a Google számára. Ez letiltja a hasonló oldalak javaslatait, ha egy oldal nem található.",
+        "description": "(Chrome only) Checkbox label found on the general settings page"
+    },
+    "options_disable_hyperlink_auditing": {
+        "message": "Prevent sites from tracking which links you click (\"hyperlink auditing\")",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_network_prediction": {
+        "message": "Előtöltés letiltása",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Disable Google's Federated Learning of Cohorts (FLoC)",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
+    "options_domain_filter_user": {
+        "message": "felhasználó által vezérelt",
+        "description": "Dropdown control setting on the Tracking Domains options page tab."
+    },
+    "popup_info_firstparty_protections": {
+        "message": "Link tracking protection active",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Some websites $LINK_START$use link tracking to follow you$LINK_END$ whenever you click a link to leave the website. Privacy Badger removes tracking from such links on this website.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
+    },
+    "popup_instructions": {
+        "message": "$COUNT$ lehetséges $LINK_START$követő$LINK_END$ tiltva",
+        "description": "Popup message shown when at least one tracker was blocked.",
+        "placeholders": {
+            "count": {
+                "content": "$1",
+                "example": "15"
+            },
+            "link_start": {
+                "content": "$2",
+                "example": "<a href='https://privacybadger.org/#What-is-a-third-party-tracker'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
+    },
+    "popup_instructions_no_trackers": {
+        "message": "Nincsenek $LINK_START$követők$LINK_END$ tiltva",
+        "description": "Text shown in the popup when there are no trackers on the page.",
+        "placeholders": {
+            "link_start": {
+                "content": "$1",
+                "example": "<a href='https://privacybadger.org/#What-is-a-third-party-tracker'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
+    },
+    "popup_blocked": {
+        "message": "Nincsenek harmadik féltől származó erőforrások ezen az oldalon. Éljen az adatvédelem!",
+        "description": "Text shown in the popup when showing non-tracking domains is enabled, and there are no third-party domains on the page."
+    },
+    "intro_by_eff": {
+        "message": "Az Electronic Frontier Foundation egy projektje",
+        "description": ""
+    },
+    "tooltip_allow": {
+        "message": "Mozgassa a csúszkát jobbra egy tartomány engedélyezéséhez",
+        "description": ""
+    },
+    "intro_privacy_note": {
+        "message": "A Privacy Badger SOHA nem fog megosztani adatokat a böngészéséről, hacsak nem választja azt, hogy megossza.",
+        "description": "Intro page paragraph."
+    },
+    "options_domain_list_trackers": {
+        "message": "A Privacy Badger eddig $COUNT$ lehetséges $TRACKER_LINK_START$követő tartomány$TRACKER_LINK_END$ letiltásáról döntött",
+        "description": "Shown on the Tracking Domains tab on the options page after Privacy Badger learned to block one or more domains",
+        "placeholders": {
+            "count": {
+                "content": "$1",
+                "example": "900"
+            },
+            "tracker_link_start": {
+                "content": "$2",
+                "example": "<a href='https://privacybadger.org/#What-is-a-third-party-tracker'>"
+            },
+            "tracker_link_end": {
+                "content": "</a>"
+            }
+        }
+    },
+    "options_domain_list_no_trackers": {
+        "message": "A Privacy Badger még nem észlelt semmilyen <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>követő tartományt</a> sem. Folytassa a böngészést!",
+        "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
+    },
+    "intro_not_an_adblocker_paragraph": {
+        "message": "A Privacy Badger akkor kezd el tiltani, ha meglátja ugyanazt a követőt három különböző weboldalon. Három csapás és vége!",
+        "description": "Intro page paragraph."
+    },
+    "options_domain_status_filter": {
+        "message": "Szűrés állapot szerint:",
+        "description": "Label for a dropdown control on the Tracking Domains options page tab."
+    },
+    "report_text": {
+        "message": "Röviden írja le a hibát lent.",
+        "description": ""
+    },
+    "intro_donate1": {
+        "message": "A Privacy Badger használatakor Ön is csatlakozik az <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundationhöz</a> és több millió más felhasználóhoz az adatvédelemért folytatott harcban. Nonprofit alapítványként küzdünk az Ön internetes jogaiért. Köszönjük, hogy csatlakozott hozzánk!",
+        "description": "Part of the 'donate' section on the intro page."
+    },
+    "options_domain_search_tooltip": {
+        "message": "Tartományok kizárásához tegyen egy „-” jelet a keresési kifejezés elé. Például a „.co -.com” meg fogja jeleníteni a .co és .co.uk tartományokat, de a .com tartományokat nem.",
+        "description": "Tooltip for an \"information\" icon next to the domain search input on the Tracking Domains options page tab."
+    },
+    "intro_disable_button": {
+        "message": "Ha úgy gondolja, hogy a Privacy Badger elront egy oldalt (például egy videó nem játszható le), akkor rákattinthat a „Letiltás” gombra a Privacy Badger azon az oldalon való kikapcsolásához.",
+        "description": "Intro page paragraph. The quoted string ('Disable') should match the verb used for the 'popup_disable_for_site' message."
+    },
+    "intro_link_policy": {
+        "message": "Adatvédelmi irányelv",
+        "description": "Shown at the bottom of the intro page, links to the EFF software and technology projects privacy policy."
+    },
+    "report_input_label": {
+        "message": "Leírás",
+        "description": ""
+    },
+    "not_yet_blocked_header": {
+        "message": "A Privacy Badger még nem döntötte el, hogy ezeket a tartományokat tiltani kell-e",
+        "description": "Popup domain list header text; separates blocked from haven't-yet-seen-enough-to-block potential trackers."
+    },
+    "options_show_not_yet_blocked": {
+        "message": "Tartományok megjelenítése, amelyek tiltásáról a Privacy Badger még nem döntött:",
+        "description": "Label for a checkbox on the Tracking Domains options page tab. Should match wording used in the 'not_yet_blocked_header' message."
+    },
+    "non_tracker": {
+        "message": "Az alábbi tartományokról úgy tűnik, hogy nem követik Önt",
+        "description": "Header text; separates tracking from non-tracking domains in the popup."
+    },
+    "popup_options_button": {
+        "message": "Beállítások",
+        "description": ""
+    },
+    "share_button_title_facebook": {
+        "message": "Megosztás Facebookon",
+        "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
+    },
+    "report_fail": {
+        "message": "Hoppá. Valami elromlott.",
+        "description": ""
+    },
+    "social_tooltip_pb_has_replaced": {
+        "message": "A Privacy Badger kicserélte az itt lévő $BUTTON$ gombot",
+        "description": "Tooltip shown over a replaced social button. For example, \"Privacy Badger has replaced this Facebook Like button\". See also the widget_placeholder_pb_has_replaced message.",
+        "placeholders": {
+            "button": {
+                "content": "$1",
+                "example": "Facebook Like"
+            }
+        }
+    },
+    "widget_placeholder_pb_has_replaced": {
+        "message": "A Privacy Badger kicserélte $START_ANCHOR_TAG$az itt lévő $WIDGET$ felületi elemet$END_ANCHOR_TAG$",
+        "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
+        "placeholders": {
+            "widget": {
+                "content": "$1",
+                "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
+            }
+        }
+    },
+    "allow_once": {
+        "message": "Engedélyezés egyszer",
+        "description": "Button in the placeholder shown in place of certain third-party (video, audio, commenting) widgets. Clicking it will allow the third-party widget to load this one time only."
+    },
+    "allow_on_site": {
+        "message": "Mindig engedélyezze ezen az oldalon",
+        "description": "Button in the placeholder shown in place of certain third-party (video, audio, commenting) widgets. Clicking this button will always allow the widget to load on this particular site."
+    },
+    "sync_intro": {
+        "message": "Felhőszinkronizálás:<ul><li>Firefox vagy Chrome szinkronizálás szükséges hozzá</li><li>A feltöltés felülírja az összes meglévő Privacy Badger adatot a felhőben</li><li>A letöltés egyesíti azon oldalak listáját, ahol a Privacy Badger le van tiltva</li></ul>",
+        "description": "A brief explanation of how syncing works. Shown above the upload/download cloud data buttons under the Manage Data options page tab."
+    },
+    "upload": {
+        "message": "Feltöltés",
+        "description": "Button label for uploading data to the cloud on Manage Data options page tab."
+    },
+    "upload_cloud": {
+        "message": "Letiltott oldalak exportálása a felhőbe",
+        "description": "Button title for uploading data to the cloud on Manage Data options page tab."
+    },
+    "download_cloud": {
+        "message": "Letiltott oldalak importálása a felhőből",
+        "description": "Button title for downloading data from the cloud on Manage Data options page tab."
+    },
+    "download_cloud_success": {
+        "message": "A felhőadatok sikeresen importálva.",
+        "description": "Message displayed to the user after successfully merging cloud data."
+    },
+    "download_cloud_failure": {
+        "message": "A felhőadatokat nem sikerült letölteni.",
+        "description": "Message displayed to the user after failing to download cloud data."
+    },
+    "upload_cloud_success": {
+        "message": "Az adatok sikeresen feltöltve a felhőbe",
+        "description": "Message displayed to the user after successfully uploading local data."
+    },
+    "upload_cloud_failure": {
+        "message": "Az adatokat nem sikerült feltölteni a felhőbe",
+        "description": "Message displayed to the user after failing to upload local data."
+    },
+    "download_cloud_no_data": {
+        "message": "Nincsenek letöltendő felhőadatok.",
+        "description": "'Error' message when there is on cloud data to download."
+    },
+    "share_title": {
+        "message": "Mondja el az ismerőseinek",
+        "description": "Title of the share overlay."
+    },
+    "popup_share_button": {
+        "message": "Megosztás",
+        "description": "Tooltip that comes up when you hover over the share button in the upper right corner of the popup."
+    },
+    "share_tracker_header": {
+        "message": "A Privacy Badger $COUNT$ lehetséges követőt tiltott a(z) $DOMAIN$ tartományon:",
+        "description": "Header above the list of tracking domains in the share message.",
+        "placeholders": {
+            "count": {
+                "content": "$1",
+                "example": "15"
+            },
+            "domain": {
+                "content": "$2",
+                "example": "example.com"
+            }
+        }
+    },
+    "share_base_message": {
+        "message": "A Privacy Badger (privacybadger.org) egy böngészőkiegészítő, amely automatikusan megtanulja a láthatatlan követők tiltását. A Privacy Badger alkalmazást az Electronic Frontier Foundation készítette, amely az Ön internetes jogaiért küzdő nonprofit alapítvány.",
+        "description": "The base message that is always included in the share message."
+    },
+    "copy_button_initial": {
+        "message": "Másolás a vágólapra",
+        "description": "Initial text of the copy button on the share overlay."
+    },
+    "copy_button_copied": {
+        "message": "Lemásolva",
+        "description": "On-click text of the copy button on the share overlay."
+    },
+    "popup_special_page_header": {
+        "message": "Nincs mit tenni ezen az oldalon",
+        "description": "Heading for popup_special_page_paragraph"
+    },
+    "popup_special_page_paragraph": {
+        "message": "A Privacy Badger nem működik az olyan különleges oldalakon, mint amelyen ez is. Próbáljon meg máshol böngészni.",
+        "description": "Shown in the popup for special browser pages such as the New Tab page and 'about:' pages."
+    },
+    "popup_disabled_site_header": {
+        "message": "A Privacy Badger le van tiltva ezen az oldalon",
+        "description": "Shown in the popup on disabled sites."
+    },
+    "disabled_sites": {
+        "message": "Letiltott oldalak",
+        "description": "Options page tab heading"
+    },
+    "disabled_for_these_domains": {
+        "message": "<p>A Privacy Badger le van tiltva a következő oldalakon. Ez azt jelenti, hogy a Privacy Badger semmit sem fog tiltani, ha meglátogatja az itt felsorolt oldalakat, és nem fog „ne kövessen” vagy „globális adatvédelmi szabályozás” jelzéseket küldeni.</p><p>Ha úgy gondolja, hogy a Privacy Badger elront egy oldalt, vagy engedélyezni szeretne egy bizonyos oldalt, hogy megossza vagy eladja az Ön adatait, akkor írja be annak az oldalnak a tartományát a lenti szövegdobozba, majd kattintson a „Tartomány hozzáadása” gombra.</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "például www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Tartomány hozzáadása",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Kijelöltek eltávolítása",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Adjon meg egy érvényes tartományt vagy URL-t",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "The following setting has been deprecated and will be removed in a future Privacy Badger update:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Látogassa meg a $LINK$ oldalt a további részletekért.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Megértettem",
+        "description": "Acknowledgement button text"
+    }
+}
\ No newline at end of file
diff --git a/src/_locales/it/messages.json b/src/_locales/it/messages.json
index b1185e20..2b123322 100644
--- a/src/_locales/it/messages.json
+++ b/src/_locales/it/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger impara automaticamente a bloccare i tracker invisibili.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Disattiva per questo sito",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Attiva per questo sito",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Segnala sito malfunzionante",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "versione $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "Bloccato $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "Controlla se i <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>domini di terze parti</a> rispettano la <a target='_blank' href='https://www.eff.org/dnt-policy'>politica Do Not Track della EFF</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Inserisci un dominio o URL valido.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "Dona alla EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Aiutaci donando e offrendo il tuo supporto per i nostri strumenti",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "Questo dominio si impegna a non tracciarti",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Bloccando questo dominio si rovinano alcuni siti web",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Blocca completamente",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Blocca i cookie",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Permetti",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "Clicca per restituire il controllo di questo dominio a Privacy Badger",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "Segnala un errore",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "es. www.domain.com, *.domain.net, domain.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Clicca qui per bloccare questo dominio dalle impostazioni dei cookie",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "bloccati",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "Importa",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Non sostituire i seguenti widget:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Sostituzione dei widget",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "Quando vengono bloccati i pulsanti social ed altri widget possibilmente utili (video, audio, commenti), Privacy Badger li può sostituire con segnaposto clicca-per-attivare.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "Attiva sostituzione dei widget",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Eccezioni widget",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Non sostituire i seguenti widget:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Eccezioni sito",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Permetti sempre i widget in questi siti:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "Mostra i domini che non sembra ti stiano tracciando",
@@ -198,8 +248,8 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "Non dimenticare di cliccare 'Privacy Badger ha dato problemi a questo sito'. Rispettiamo la tua privacy, quindi non inviamo segnalazioni automatiche.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Non dimenticare di cliccare 'Segnala sito malfunzionante'. Rispettiamo la tua privacy, quindi non inviamo segnalazioni automatiche.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Opzioni di Privacy Badger",
@@ -209,14 +259,6 @@
         "message": "Verranno inviate automaticamente le seguenti informazioni alla EFF: la pagina che stai visitando, la versione del browser, la versione di Privacy Badger e lo stato di tutti i pulsanti per questa pagina.",
         "description": ""
     },
-    "whitelisted_domains": {
-        "message": "Siti disattivati",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Attiva Privacy Badger per questo sito",
-        "description": ""
-    },
     "options_domain_type_filter": {
         "message": "Filtra per tipo:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
@@ -285,20 +327,6 @@
         "message": "Fai un giro",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Clicca qui per bloccare completamente questo dominio",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "versione $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "Cookie bloccati da $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "parzialmente bloccati",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Ho capito; mostrami comunque l'elenco dei domini traccianti",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Grazie per aver installato Privacy Badger!",
         "description": ""
@@ -325,10 +349,6 @@
         "message": "Seleziona un file da importare.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "Privacy Badger ha dato problemi a questo sito? Faccelo sapere!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "Sposta il pulsante al centro per bloccare i cookie",
         "description": ""
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "DNT-compatibili",
+        "message": "conforme alla politica DNT di EFF",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "La privacy è un gioco di squadra!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "Non dovresti aver bisogno di modificare nulla qui.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "tutti",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -395,19 +411,39 @@
     },
     "options_disable_google_nav_error_service": {
         "message": "Disattiva l'invio degli indirizzi web che visiti a Google. Ciò disattiva i suggerimenti per pagine simili quando una pagina non può essere trovata.",
-        "description": "Checkbox label found on the general settings page"
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Disattiva controllo dei link ipertestuali",
+        "message": "Impedisci ai siti di tracciare quali link clicchi (\"hyperlink auditing\")",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Disattiva il precaricamento",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Disattiva il Federated Learning of Cohorts di Google (FLoC)",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "utente-dipendenti",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger è disattivato nei seguenti siti. Ciò significa che Privacy Badger non bloccherà nulla mentre visiti i siti elencati qui e non invierà i segnali Do Not Track e Global Privacy Control.</p><p>Se pensi che con Privacy Badger non funzioni bene una pagina, o se volessi permettere a uno specifico sito di condividere o vendere i tuoi dati, puoi digitare il dominio di quella pagina nella casella sotto e cliccare il pulsante \"Aggiungi dominio\".</p><p>Altrimenti, quando la scheda della pagina è selezionata, puoi cliccare il pulsante di Privacy Badger nella barra degli strumenti e poi cliccare il pulsante \"Disattiva\".</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Protezione tracciamento link attiva",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Alcuni siti $LINK_START$usano il tracciamento dei link per seguirti$LINK_END$ quando clicchi un collegamento per lasciare il sito. Privacy Badger rimuove il tracciamento dai suddetti link in questo sito.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
         "message": "$COUNT$ potenziali $LINK_START$tracker$LINK_END$ bloccati",
@@ -447,22 +483,10 @@
         "message": "Un progetto della Electronic Frontier Foundation",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Aggiungi dominio",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Spostare il pulsante a destra per consentire un dominio",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Disattiva Privacy Badger per questo sito",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Clicca qui per permettere questo dominio",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privacy Badger non condivide MAI i tuoi dati di navigazione a meno che non lo scegli.",
         "description": "Intro page paragraph."
@@ -488,10 +512,6 @@
         "message": "Privacy Badger non ha ancora rilevato alcun <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>dominio tracciante</a> . Continua a navigare!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privacy Badger inizia a bloccare una volta visto lo stesso tracker su tre siti diversi. Tre colpi ed è fuori!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "Descrivi brevemente l'errore qui sotto.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Rimuovi selezionati",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "Quando usi Privacy Badger ti unisci alla <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a> e a milioni di altri utenti nella lotta per la privacy. Siamo senza scopo di lucro e combattiamo per i diritti nella rete. Grazie per la partecipazione!",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "Condividi su Facebook",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger impara automaticamente a bloccare i tracker invisibili.",
-        "description": ""
-    },
     "report_fail": {
         "message": "Ops. Qualcosa è andato storto.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger ha sostituito questo widget $WIDGET$",
+        "message": "Privacy Badger ha sostituito $START_ANCHOR_TAG$questo widget $WIDGET$ $END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Dati cloud inviati con successo.",
+        "message": "Dati inviati correttamente sul cloud",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Impossibile inviare i dati cloud.",
+        "message": "Invio dei dati sul cloud fallito",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger) è un'estensione del browser che impara automaticamente a bloccare i tracker invisibili. Privacy Badger è creato da Electronic Frontier Foundation, un'organizzazione senza scopo di lucro che combatte per i tuoi diritti nella rete.",
+        "message": "Privacy Badger (privacybadger.org) è un'estensione del browser che impara automaticamente a bloccare i tracker invisibili. Privacy Badger è creato da Electronic Frontier Foundation, un'organizzazione senza scopo di lucro che combatte per i tuoi diritti nella rete.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "Privacy Badger è disattivato in questo sito",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Sostituzione dei widget",
+    "disabled_sites": {
+        "message": "Siti disattivati",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "Quando vengono bloccati i pulsanti social ed altri widget possibilmente utili (video, audio, commenti), Privacy Badger li può sostituire con segnaposto clicca-per-attivare.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger è disattivato nei seguenti siti. Ciò significa che Privacy Badger non bloccherà nulla mentre visiti i siti elencati qui e non invierà i segnali Do Not Track e Global Privacy Control.</p><p>Se pensi che con Privacy Badger non funzioni bene una pagina, o se volessi permettere a uno specifico sito di condividere o vendere i tuoi dati, puoi digitare il dominio di quella pagina nella casella sotto e cliccare il pulsante \"Aggiungi dominio\".</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "es. www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Aggiungi dominio",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Rimuovi selezionati",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Inserisci un dominio o URL valido",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "La seguente impostazioni è stata deprecata e sarà rimossa in un aggiornamento futuro di Privacy Badger:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Visita $LINK$ per altre info.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Ho capito",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/ko/messages.json b/src/_locales/ko/messages.json
index 2ff65b22..83c035a5 100644
--- a/src/_locales/ko/messages.json
+++ b/src/_locales/ko/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger는 자동으로 보이지 않는 추적기를 차단하는 법을 학습합니다.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Disable for this site",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Enable for this site",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Report broken site",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "버전 $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "차단된 $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "<a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>제 3자 도메인</a>이 <a target='_blank' href='https://www.eff.org/dnt-policy'>EFF의 추적 금지 정책</a>을 준수하는지 확인합니다.",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "유효한 도메인 또는 URL을 추가하세요.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "EFF에게 기부",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "기부 또는 툴에 대한 지원을 공유함으로써 저희를 도와주세요.",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "이 도메인은 당신을 추적하지 않습니다.",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Blocking this domain is known to break websites",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Block entirely",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Block cookies",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Allow",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "Click to return control of this domain to Privacy Badger",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "오류 보고",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "예시, www.domain.com, *.domain.net, domain.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "이 도메인의 쿠키 설정을 차단하려면 여기를 클릭하세요.",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "차단",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "가져오기",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "다음 위젯을 교체하지 마세요:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "위젯 교체",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "소셜 버튼 및 기타 잠재적으로 유용한 (비디오, 오디오, 댓글) 위젯을 차단할 때 Privacy Badger는 이를 클릭하여 활성화하는 플레이스홀더로 대체할 수 있습니다.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "위젯 교체를 사용하도록 설정합니다.",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "예외 위젯",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "다음 위젯을 교체하지 마세요:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "예외 사이트",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "다음 사이트에서는 항상 위젯을 허용합니다:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "사용자를 추적하지 않는 것으로 보이는 도메인을 표시합니다.",
@@ -162,7 +212,7 @@
         "description": "Label for a text input box on the Tracking Domains options page tab."
     },
     "options_learn_setting": {
-        "message": "Learn to block new trackers from your browsing",
+        "message": "사용자의 검색에서 새 추적기를 차단하는 방법을 학습합니다.",
         "description": "Checkbox label on the general settings page"
     },
     "local_learning_warning": {
@@ -182,7 +232,7 @@
         "description": "First part of a prompt to visit the blog."
     },
     "learning_prompt_text2": {
-        "message": "Click below to learn more.",
+        "message": "더 알아보려면 아래를 클릭하세요.",
         "description": "Second part of a prompt to visit the blog."
     },
     "learning_prompt_button": {
@@ -198,8 +248,8 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "'Privacy Badger가 이 사이트를 파손했습니까?'를 클릭하는 것을 잊지 마세요. 우리는 당신의 프라이버시를 존중합니다. 그래서 우리는 자동으로 보고서를 보내지 않습니다.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Please don't forget to click on 'Report broken site'. We respect your privacy so we don't send automatic reports.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Privacy Badger 옵션",
@@ -209,14 +259,6 @@
         "message": "This will automatically send the following information to EFF: the page you're currently visiting, your browser version, the version of Privacy Badger, and the state of all of the sliders on this page.",
         "description": ""
     },
-    "whitelisted_domains": {
-        "message": "비활성화 사이트",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "이 사이트에 대해 Privacy Badger를 사용하도록 설정합니다.",
-        "description": ""
-    },
     "options_domain_type_filter": {
         "message": "유형별 필터:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
@@ -274,31 +316,17 @@
         "description": "This is an options page tab heading."
     },
     "options_privacy_settings": {
-        "message": "Privacy",
+        "message": "프라이버시",
         "description": "Subheading on the general settings options page."
     },
     "options_advanced_settings": {
-        "message": "Advanced",
+        "message": "고급",
         "description": "Subheading on the general settings options page."
     },
     "intro_next_button": {
         "message": "알아보기",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "이 도메인을 완전히 차단하려면 여기를 클릭하세요.",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "버전 $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "$DOMAIN$로부터 차단된 쿠키",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "부분적으로 차단",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "그래도 추적 도메인 목록을 확인하나요?",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Privacy Badger를 설치해 주셔서 감사합니다!",
         "description": ""
@@ -325,16 +349,12 @@
         "message": "가져올 파일을 선택하세요.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "Privacy Badger가 이 사이트를 파손했습니까? 우리에게 알려주세요!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "슬라이더를 중앙에 배치하여 쿠키를 차단합니다.",
         "description": ""
     },
     "intro_learns": {
-        "message": "Learns automatically",
+        "message": "자동으로 학습합니다.",
         "description": "Intro page paragraph heading"
     },
     "intro_learns_paragraph": {
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "추적 금지에 순응",
+        "message": "compliant with EFF's DNT policy",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "프라이버시는 팀 활동입니다!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "여기서 어떤 것도 수정할 필요가 없습니다.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "전체",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -390,27 +406,47 @@
         "description": ""
     },
     "options_enable_dnt_checkbox": {
-        "message": "Send websites the \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>\" and \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track</a>\" signals",
+        "message": "웹 사이트에 \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>\" 와 \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>추적 금지</a>\" 신호를 보냅니다.",
         "description": "Checkbox label for enabling/disabling the Sec-GPC and DNT signals, found on the general settings page"
     },
     "options_disable_google_nav_error_service": {
-        "message": "Disable sending web addresses you visit to Google. This disables suggestions for similar pages when a page can't be found.",
-        "description": "Checkbox label found on the general settings page"
+        "message": "방문한 웹 주소를 Google에 전송하는 것을 비활성화합니다. 이것은 페이지를 찾을 수 없을 때 유사한 페이지를 제안하는 것을 비활성화시킵니다.",
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Disable hyperlink auditing",
+        "message": "Prevent sites from tracking which links you click (\"hyperlink auditing\")",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "프리페칭 비활성화.",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Disable Google's Federated Learning of Cohorts (FLoC)",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "사용자 정의",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Link tracking protection active",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Some websites $LINK_START$use link tracking to follow you$LINK_END$ whenever you click a link to leave the website. Privacy Badger removes tracking from such links on this website.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
-        "message": "$COUNT$ potential $LINK_START$trackers$LINK_END$ blocked",
+        "message": "$COUNT$개의 잠재적인 $LINK_START$추적기$LINK_END$ 차단됨",
         "description": "Popup message shown when at least one tracker was blocked.",
         "placeholders": {
             "count": {
@@ -427,7 +463,7 @@
         }
     },
     "popup_instructions_no_trackers": {
-        "message": "No $LINK_START$trackers$LINK_END$ blocked",
+        "message": "차단된 $LINK_START$추적기$LINK_END$ 없음",
         "description": "Text shown in the popup when there are no trackers on the page.",
         "placeholders": {
             "link_start": {
@@ -440,29 +476,17 @@
         }
     },
     "popup_blocked": {
-        "message": "There are no third party resources on this page. Hooray for privacy!",
+        "message": "이 페이지에는 서드파티 리소스가 없습니다. 프라이버시를 위하여!",
         "description": "Text shown in the popup when showing non-tracking domains is enabled, and there are no third-party domains on the page."
     },
     "intro_by_eff": {
         "message": "Electronic Frontier Foundation의 프로젝트입니다.",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "도메인 추가",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "슬라이더를 오른쪽으로 이동하여 도메인을 허용합니다.",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "이 사이트에 대해 Privacy Badger를 사용하지 않도록 설정합니다.",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "이 도메인을 허용하려면 여기를 클릭하세요.",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privacy Badger는 사용자가 검색을 공유하도록 선택하지 않는 한 검색에 대한 데이터를 절대 공유하지 않습니다.",
         "description": "Intro page paragraph."
@@ -488,10 +512,6 @@
         "message": "Privacy Badger가 아직 <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>추적 도메인</a>을 감지하지 못했습니다. 계속 탐색하세요!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privacy Badger는 세 개의 다른 웹 사이트에서 동일한 추적기를 보면 차단하기 시작합니다. 삼진 아웃이에요!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "아래에 오류에 대해서 간략하게 설명해주세요.",
         "description": ""
     },
-    "remove_button": {
-        "message": "제거",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "Privacy Badger를 사용하면 개인 정보 보호를 위해 <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a>및 수백만 명의 다른 사용자와 함께합니다. 우리는 온라인에서 당신의 권리를 위해 싸우는 비영리 단체입니다. 참여해 주셔서 감사합니다!",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "페이스북에 공유",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger는 자동으로 보이지 않는 추적기를 차단하는 법을 학습합니다.",
-        "description": ""
-    },
     "report_fail": {
         "message": "앗, 뭔가 잘못됐어요.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger has replaced this $WIDGET$ widget",
+        "message": "Privacy Badger가 $START_ANCHOR_TAG$이 $WIDGET$ 위젯$END_ANCHOR_TAG$을 대체했습니다.",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "클라우드 데이터가 성공적으로 업로드 되었습니다.",
+        "message": "데이터를 클라우드에 성공적으로 업로드하였습니다",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "클라우드 데이터를 업로드할 수 없습니다.",
+        "message": "데이터를 클라우드에 업로드할 수 없습니다",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -629,7 +649,7 @@
         "description": "Tooltip that comes up when you hover over the share button in the upper right corner of the popup."
     },
     "share_tracker_header": {
-        "message": "Privacy Badger blocked $COUNT$ potential trackers on $DOMAIN$:",
+        "message": "Privacy Badger가 $DOMAIN$에서 잠재적인 추적기를 $COUNT$개 차단했습니다:",
         "description": "Header above the list of tracking domains in the share message.",
         "placeholders": {
             "count": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger)는 보이지 않는 추적기를 자동으로 차단하는 방법을 학습하는 브라우저 확장 기능입니다. Privacy Badger는 온라인에서 당신의 권리를 위해 싸우는 비영리 단체인 Electronic Frontier Foundation에서 만들어졌습니다.",
+        "message": "Privacy Badger (privacybadger.org)는 보이지 않는 추적기를 자동으로 차단하는 방법을 학습하는 브라우저 확장 기능입니다. Privacy Badger는 온라인에서 당신의 권리를 위해 싸우는 비영리 단체인 Electronic Frontier Foundation에서 만들어졌습니다.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -663,15 +683,49 @@
         "description": "Shown in the popup for special browser pages such as the New Tab page and 'about:' pages."
     },
     "popup_disabled_site_header": {
-        "message": "Privacy Badger is disabled on this site",
+        "message": "이 사이트에서 Privacy Badger를 사용하지 않도록 설정했습니다.",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "위젯 교체",
+    "disabled_sites": {
+        "message": "비활성화 사이트",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "소셜 버튼 및 기타 잠재적으로 유용한 (비디오, 오디오, 댓글) 위젯을 차단할 때 Privacy Badger는 이를 클릭하여 활성화하는 플레이스홀더로 대체할 수 있습니다.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "예시, www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "도메인 추가",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "제거",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "유효한 도메인 또는 URL을 추가하세요.",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "The following setting has been deprecated and will be removed in a future Privacy Badger update:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "자세한 내용은 $LINK$ 참조.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "I understand",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/nl/messages.json b/src/_locales/nl/messages.json
index 392875cd..84d6d4f6 100755
--- a/src/_locales/nl/messages.json
+++ b/src/_locales/nl/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger leert automatisch onzichtbare volgers te blokkeren.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Uitschakelen op deze website",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Inschakelen op deze website",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Defect voor deze site rapporteren",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "versie $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "$DOMAIN$ geblokkeerd",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "Controleer of <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>domeinen van derde partijen</a> voldoen aan <a target='_blank' href='https://www.eff.org/dnt-policy'>het Niet-volgen-beleid (Do Not Track) van het EFF</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Voeg een geldig domein of URL toe.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "Aan EFF doneren",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Help ons door te doneren en uw steun voor onze hulpprogramma's te delen",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "Dit domein belooft u niet te volgen",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Het staat bekend dat door het blokkeren van dit domein sommige websites niet langer goed werken",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Volledig blokkeren",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Cookies blokkeren",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Toestaan",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "Klik om controle voor dit domein terug te geven aan Privacy Badger",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "Een fout melden",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "bv. www.domain.com, *.domain.net, domain.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Klik hier om cookies van dit domein te blokkeren",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "geblokkeerd",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "Importeren",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "De volgende widgets niet vervangen:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Widgets vervangen",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "Wanneer socialemedia-knoppen en andere potentieel nuttige widgets worden geblokkeerd, dan kan Privacy Badger ze vervangen door klikken-om-te-activeren-plaatsvervangers.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "Widgets vervangen inschakelen",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Widget-uitzonderingen",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "De volgende widgets niet vervangen:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Website-uitzonderingen",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Sta altijd widgets toe op deze websites:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "Geef domeinen weer welke u niet lijken te volgen",
@@ -166,7 +216,7 @@
         "description": "Checkbox label on the general settings page"
     },
     "local_learning_warning": {
-        "message": "Door leren in te schakelen wirdt je mogelijk meer identificeerbaar voor websites",
+        "message": "Door leren in te schakelen wordt u mogelijk meer identificeerbaar voor websites",
         "description": "Tooltip on the general settings page"
     },
     "options_incognito_setting": {
@@ -178,7 +228,7 @@
         "description": "Tooltip on the general settings page"
     },
     "learning_prompt_text1": {
-        "message": "Privacy Badger zal niet langer als standaard gedrag leren van jouw surfgedrag.",
+        "message": "Privacy Badger zal niet langer als standaard gedrag leren van uw surfgedrag.",
         "description": "First part of a prompt to visit the blog."
     },
     "learning_prompt_text2": {
@@ -198,23 +248,15 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "Vergeet niet op 'Een website melden die niet meer werkt' te klikken. Om uw privacy te respecteren verzenden we geen automatische meldingen.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Vergeet alstublieft niet om op 'Defect voor deze site' te klikken. Om uw privacy te respecteren versturen we dat niet automatisch.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Privacy Badger-opties",
         "description": ""
     },
     "report_terms": {
-        "message": "Dit zal automatisch de volgende gegevens naar het EFF verzenden: de webpagina die je momenteel bezoekt, de versie van je webbrowser, de versie van Privacy Badger en de instelling van alle schuifknoppen voor deze webpagina.",
-        "description": ""
-    },
-    "whitelisted_domains": {
-        "message": "Uitgeschakelde websites",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Privacy Badger inschakelen op deze website",
+        "message": "Dit zal automatisch de volgende gegevens naar het EFF verzenden: de webpagina die u momenteel bezoekt, de versie van uw webbrowser, de versie van Privacy Badger en de instelling van alle schuifknoppen voor deze webpagina.",
         "description": ""
     },
     "options_domain_type_filter": {
@@ -285,20 +327,6 @@
         "message": "Neem de rondleiding",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Klik hier om dit domein volledig te blokkeren",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "versie $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "Cookies geblokkeerd van $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "gedeeltelijk geblokkeerd",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Ik snap het; laat me de lijst met volgerdomeinen zien",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Bedankt voor het installeren van Privacy Badger!",
         "description": ""
@@ -325,10 +349,6 @@
         "message": "Kies een bestand om te importeren.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "Een website melden die niet meer werkt",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "Zet het schuifbalkje in het midden om cookies te blokkeren",
         "description": ""
@@ -338,7 +358,7 @@
         "description": "Intro page paragraph heading"
     },
     "intro_learns_paragraph": {
-        "message": "In plaats van lijsten bij te houden over wat je wilt blokkeren, zal Privacy Badger automatisch volgers ontdekken op basis van hun gedrag.",
+        "message": "In plaats van lijsten bij te houden over wat u wilt blokkeren, zal Privacy Badger automatisch volgers ontdekken op basis van hun gedrag.",
         "description": "Intro page paragraph"
     },
     "intro_beyond_ads": {
@@ -346,7 +366,7 @@
         "description": "Intro page paragraph heading."
     },
     "intro_beyond_ads_paragraph": {
-        "message": "Onzichtbaar volgen gebeurd op allerlei manieren; advertenties zijn slechts het zichtbare topje van de ijsberg. Privacy Badger verzendt het <a href='https://globalprivacycontrol.org/' target='_blank'>“Global Privacy Control”-signaal</a>, om niet mee te doen aan het doorgeven en verkopen van je data, en het <a href='https://www.eff.org/issues/do-not-track' target='_blank'>“Volg me niet”-signaal</a> om aan bedrijven aan te geven dat je niet gevolgd wil worden. Als ze je keuze niet respecteren, dan zal Privacy Badger leren om ze te blokkeren, ongeacht of ze adverteerders, volgers of iets anders zijn.",
+        "message": "Onzichtbaar volgen gebeurd op allerlei manieren; advertenties zijn slechts het zichtbare topje van de ijsberg. Privacy Badger verzendt het <a href='https://globalprivacycontrol.org/' target='_blank'>“Global Privacy Control”-signaal</a>, om niet mee te doen aan het doorgeven en verkopen van uw data, en het <a href='https://www.eff.org/issues/do-not-track' target='_blank'>“Volg me niet”-signaal</a> om aan bedrijven aan te geven dat u niet gevolgd wilt worden. Als ze uw keuze niet respecteren, dan zal Privacy Badger leren om ze te blokkeren, ongeacht of ze adverteerders, volgers of iets anders zijn.",
         "description": "Intro page paragraph."
     },
     "report_close": {
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "voldoet aan Niet-volgen-beleid",
+        "message": "volgt het 'niet volgen'-beleid van EEF",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "Privacy is een teamsport!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "Het zou voor u niet nodig moeten zijn om hier iets aan te passen.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "alle",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -394,20 +410,40 @@
         "description": "Checkbox label for enabling/disabling the Sec-GPC and DNT signals, found on the general settings page"
     },
     "options_disable_google_nav_error_service": {
-        "message": "Schakel het naar Google verzenden van webadressen die je bezoekt uit. Hierdoor worden ook suggesties voor vergelijkbare pagina's als een pagina niet kan worden gevonden uitgeschakeld.",
-        "description": "Checkbox label found on the general settings page"
+        "message": "Schakel het naar Google verzenden van webadressen die u bezoekt uit. Hierdoor worden ook suggesties voor vergelijkbare pagina's als een pagina niet kan worden gevonden uitgeschakeld.",
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "‘Hyperlink auditing’ blokkeren",
+        "message": "Voorkom dat websites volgen op welke verwijzingen u klikt (\"hyperlink auditing\")",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Vooraf ophalen uitschakelen",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Googles Federated Learning of Cohorts (FLoC) uitschakelen",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "ingesteld door gebruiker",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is op de volgende websitess uitgeschakeld. Dit betekent dat Privacy Badger niets zal blokkeren op één van de websites in deze lijst, en dat het ook niet het “Volg me niet”- of “Global Privacy Control”-signaal zal verzenden.</p><p>Als je vermoedt dat Privacy Badger het laden van een bepaalde webpagina verstoort, of als je een bepaalde website wil toestaan om je data door te geven of verkopen, dan kun je de domeinnaam van die webpagina invullen in het invoerveld hieronder en op de knop \"Domein toevoegen\" klikken.</p><p>Als je het tabblad met die webpagina al open en geselecteerd hebt kun jet als alternatief op de Privacy Badger-knop klikken de de werkbalk van je webbrowser en vervolgens op de knop ‘Uitschakelen’ klikken.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Bescherming tegen volgen op welke verwijzing u klikt is ingeschakeld",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Sommige websites $LINK_START$volgen op welke verwijzing u klikt$LINK_END$ waarmee u hun website verlaat. Privacy Badger verwijdert die mogelijkheid waardoor de website niet kan zien naar welke andere website u doorklikt.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
         "message": "$COUNT$ potentiele $LINK_START$volgers$LINK_END$ geblokkeerd",
@@ -447,22 +483,10 @@
         "message": "Een project van de Electronic Frontier Foundation",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Domein toevoegen",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Schuif de balk naar rechts om een domein toe te staan",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Privacy Badger uitschakelen op deze website",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Klik hier om dit domein toe te laten",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privacy Badger zal NOOIT uw surfgedrag delen, tenzij u hiervoor kiest.",
         "description": "Intro page paragraph."
@@ -488,10 +512,6 @@
         "message": "Privacy Badger heeft nog geen <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>volgerdomeinen</a> gedetecteerd. Blijf browsen!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privacy Badger begint met blokkeren zodra het dezelfde volger op drie verschillende websites ziet. Drie slag en ze zijn uit!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "Omschrijf de fout in het kort.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Verwijder geselecteerde",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "Wanneer u Privacy Badger gebruikt vecht u met de <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a> en miljoenen andere gebruikers in de strijd voor privacy. Wij zijn een organisatie zonder winstoogmerk die vecht voor uw online rechten. Bedankt voor het deelnemen!",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "Op Facebook delen",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger leert automatisch onzichtbare volgers te blokkeren.",
-        "description": ""
-    },
     "report_fail": {
         "message": "Oeps. Er is iets misgegaan.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger heeft deze $WIDGET$-widget vervangen",
+        "message": "Privacy Badger heeft $START_ANCHOR_TAG$deze $WIDGET$-widget$END_ANCHOR_TAG$ vervangen",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Cloudgegevens succesvol geüpload.",
+        "message": "Gegevens succesvol geüpload naar de cloud",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Cloudgegevens konden niet worden geüpload.",
+        "message": "Gegevens kunnen niet worden geüpload naar de cloud",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger) is een browserextensie die automatisch leert om onzichtbare volgers te blokkeren. Privacy Badger is gemaakt door de Electronic Frontier Foundation, een organisatie zonder winstoogmerk die vecht voor uw online rechten.",
+        "message": "Privacy Badger (privacybadger.org) is een browserextensie die automatisch leert om onzichtbare volgers te blokkeren. Privacy Badger is gemaakt door de Electronic Frontier Foundation, een organisatie zonder winstoogmerk die vecht voor uw online rechten.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "Privacy Badger is voor deze website uitgeschakeld",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Widgets vervangen",
+    "disabled_sites": {
+        "message": "Uitgeschakelde websites",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "Wanneer socialemedia-knoppen en andere potentieel nuttige widgets worden geblokkeerd, dan kan Privacy Badger ze vervangen door klikken-om-te-activeren-plaatsvervangers.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger is op de volgende websitess uitgeschakeld. Dit betekent dat Privacy Badger niets zal blokkeren op één van de websites in deze lijst, en dat het ook niet het “Volg me niet”- of “Global Privacy Control”-signaal zal verzenden.</p><p>Als u vermoedt dat Privacy Badger het laden van een bepaalde webpagina verstoort, of als u een bepaalde website wil toestaan om uw data door te geven of verkopen, dan kunt u de domeinnaam van die webpagina invullen in het invoerveld hieronder en op de knop \"Domein toevoegen\" klikken.</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "bv. www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Domein toevoegen",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Verwijder geselecteerde",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Voeg een geldig domein of URL toe",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "De volgende instelling zal uit een toekomstige versie van Privacy Badger worden verwijderd:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Bezoek $LINK$ voor meer informatie.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Ik snap het",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/pl/messages.json b/src/_locales/pl/messages.json
index c64dfacc..e8016d7e 100644
--- a/src/_locales/pl/messages.json
+++ b/src/_locales/pl/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger automatycznie uczy się blokować niewidoczne elementy śledzące.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Wyłącz na tej witrynie",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Włącz na tej witrynie",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Zgłoś problem ze stroną",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "wersja $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "Zablokowany $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "Sprawdź czy <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>domeny stron trzecich</a> są zgodne z <a target='_blank' href='https://www.eff.org/dnt-policy'>polityką o nieszpiegowaniu EFF</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Wprowadź poprawną domenę lub URL.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "Darowizna na EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Wspomóż nas poprzez dotacje bądź zaoferuj wsparcie dla naszych narzędzi",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "Ta domena obiecuje Ci nie szpiegować.",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Zablokowanie tej domeny może spowodować, że strony internetowe przestaną działać poprawnie",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Blokuj całkowicie",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Blokuj ciasteczka",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Odblokuj",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "Kliknij, aby Privacy Badger zdecydował za Ciebie jak obchodzić się z tą domeną",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "Zgłoś problem",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "np. www.domena.com, *.domena.net, domena.pl",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Kliknij tutaj, aby uniemożliwić tej domenie ustawiać ciasteczka",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "zablokowane",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "Import",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Nie zastępuj następujących widżetów:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Zastępowanie widżetów",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "Podczas blokowania przycisków mediów społecznościowych i innych potencjalnie użytecznych widżetów (filmów, dźwięków, komentarzy), Privacy Badger może zastępować je przyciskami (które nie ładują się automatycznie).",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "Zastępuj widżety",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Wyjątki: widżety",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Nie zastępuj następujących widżetów:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Wyjątki: witryny",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Zawsze odblokuj widżety na następujących witrynach:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "Wyświetla domeny, które chyba Cię nie szpiegują",
@@ -178,15 +228,15 @@
         "description": "Tooltip on the general settings page"
     },
     "learning_prompt_text1": {
-        "message": "Privacy Badger will no longer learn from your browsing by default.",
+        "message": "Privacy Badger nie będzie już uczył się na podstawie Twojego przeglądania sieci.",
         "description": "First part of a prompt to visit the blog."
     },
     "learning_prompt_text2": {
-        "message": "Click below to learn more.",
+        "message": "Kliknij poniżej, aby dowiedzieć się więcej.",
         "description": "Second part of a prompt to visit the blog."
     },
     "learning_prompt_button": {
-        "message": "Learn how Privacy Badger is changing",
+        "message": "Więcej informacji o tym, jak zmienia się Privacy Badger",
         "description": "Button text, part of a prompt to visit the blog."
     },
     "show_counter_checkbox": {
@@ -198,8 +248,8 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "Nie zapomnij kliknąć „Czy Privacy Badger zepsuł tę stronę?”. Szanujemy Twoją prywatność, więc nie wysyłamy raportów automatycznie.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Nie zapomnij kliknąć „Zgłoś problem ze stroną”. Szanujemy Twoją prywatność, więc nie wysyłamy raportów automatycznie.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Ustawienia Privacy Badger",
@@ -209,14 +259,6 @@
         "message": "Następujące informacje zostaną automatycznie wysłane do EFF: obecnie odwiedzana strona, wersja przeglądarki, wersja Privacy Badgera i stan wszystkich suwaków na tej stronie.",
         "description": ""
     },
-    "whitelisted_domains": {
-        "message": "Nieblokowane witryny",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Włącz Privacy Badger na tej witrynie",
-        "description": ""
-    },
     "options_domain_type_filter": {
         "message": "Filtruj wg rodzaju:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
@@ -285,20 +327,6 @@
         "message": "Wprowadzenie",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Kliknij tutaj, aby całkowicie zablokować tę domenę",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "wersja $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "Zablokowano ciasteczka z $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "częściowo zablokowane",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Tak, rozumiem, ale proszę wyświetlić mi listę szpiegujących domen.",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Dziękujemy za zainstalowanie Privacy Badgera!",
         "description": ""
@@ -325,20 +349,16 @@
         "message": "Wybierz plik do zaimportowania.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "Czy Privacy Badger zepsuł tę stronę? Zgłoś to nam!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "Wycentruj suwak, aby zablokować ciasteczka",
         "description": ""
     },
     "intro_learns": {
-        "message": "Learns automatically",
+        "message": "Automatycznie się uczy",
         "description": "Intro page paragraph heading"
     },
     "intro_learns_paragraph": {
-        "message": "Instead of keeping lists of what to block, Privacy Badger automatically discovers trackers based on their behavior.",
+        "message": "Zamiast korzystać z list blokowanych elementów, rozszerzenie Privacy Badger automatycznie odkrywa elementy śledzące na podstawie ich zachowania.",
         "description": "Intro page paragraph"
     },
     "intro_beyond_ads": {
@@ -346,7 +366,7 @@
         "description": "Intro page paragraph heading."
     },
     "intro_beyond_ads_paragraph": {
-        "message": "Invisible tracking happens in all sorts of ways; ads are just the visible tip of the iceberg. Privacy Badger sends the <a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control signal</a>, to opt you out of data sharing and selling, and the <a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track signal</a> to tell companies not to track you. If they ignore your wishes, Privacy Badger will learn to block them—whether they are advertisers or trackers of other kinds.",
+        "message": "Niewidoczne elementy śledzące działają na różne sposoby, reklamy to tylko czubek góry lodowej. Privacy Badger wysyła <a href='https://globalprivacycontrol.org/' target='_blank'>żądanie Global Privacy Control</a>, aby wyrazić rezygnację z udostępniania i sprzedawania danych oraz <a href='https://www.eff.org/issues/do-not-track' target='_blank'>żądanie DNT (nie śledź mnie)</a>, aby poprosić firmy o nieśledzenie. Jeżeli zignorują one Twoje prośby, rozszerzenie Privacy Badger zablokuje je wszystkie – zarówno reklamy, elementy śledzące i inne.",
         "description": "Intro page paragraph."
     },
     "report_close": {
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "zgodne z DNT",
+        "message": "zgodna z polityką o nieszpiegowaniu EFF",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "Prywatność to sport zespołowy!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "Nie powinieneś mieć potrzeby zmieniać czegokolwiek tutaj.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "wszystkie",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -390,27 +406,47 @@
         "description": ""
     },
     "options_enable_dnt_checkbox": {
-        "message": "Send websites the \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>\" and \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track</a>\" signals",
+        "message": "Wysyłaj do stron żądania „<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>” i „<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Nie Śledź Mnie</a>” (DNT)",
         "description": "Checkbox label for enabling/disabling the Sec-GPC and DNT signals, found on the general settings page"
     },
     "options_disable_google_nav_error_service": {
         "message": "Wyłącz wysyłanie adresów stron internetowych do Google. Opcja ta wyłącza sugestie podobnych stron wyświetlanych kiedy żądana strona nie została znaleziona.",
-        "description": "Checkbox label found on the general settings page"
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Wyłącz sprawdzanie odnośników",
+        "message": "Nie pozwól witrynom na śledzenie Cię za pomocą kliknięć («hyperlink auditing»)",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Wyłącz wstępne pobieranie",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Wyłącz mechanizm FLoC (Federated Learning of Cohorts) firmy Google",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "ustawione przez użytkownika",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Ochrona przed szpiegującymi odnośnikami aktywna",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Niektóre witryny $LINK_START$używają śledzenia odnośników$LINK_END$, aby śledzić kiedy klikasz odnośnik za pomocą którego opuszczasz witrynę. Rozszerzenie Privacy Badger usuwa śledzenie z takich odnośników na tej witrynie.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
-        "message": "Zablokowanych potencjalnych $LINK_START$elementów śledzących$LINK_END$: $COUNT$",
+        "message": "Zablokowanych możliwych $LINK_START$elementów śledzących$LINK_END$: $COUNT$",
         "description": "Popup message shown when at least one tracker was blocked.",
         "placeholders": {
             "count": {
@@ -447,28 +483,16 @@
         "message": "Projekt Electronic Frontier Foundation",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Dodaj domenę",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Przesuń suwak w prawo, aby odblokować domenę",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Wyłącz Privacy Badgera na tej witrynie",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Kliknij tutaj, aby odblokować tę domenę",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privacy Badger NIGDY prześle dane dotyczące Twojej aktywności w Sieci, o ile sam o tym nie zdecydujesz.",
         "description": "Intro page paragraph."
     },
     "options_domain_list_trackers": {
-        "message": "Privacy Badger has decided to block $COUNT$ potential $TRACKER_LINK_START$tracking domains$TRACKER_LINK_END$ so far",
+        "message": "Jak dotąd rozszerzenie Privacy Badger zdecydowało o zablokowaniu $COUNT$ możliwych $TRACKER_LINK_START$szpiegujących domen$TRACKER_LINK_END$",
         "description": "Shown on the Tracking Domains tab on the options page after Privacy Badger learned to block one or more domains",
         "placeholders": {
             "count": {
@@ -488,10 +512,6 @@
         "message": "Privacy Badger nie wykrył jakichkolwiek <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>szpiegujących domen</a> do tej pory. Serfuj śmiało!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privacy Badger blokuje element śledzący po zauważeniu go na trzech różnych witrynach. Trzy uderzenia i koniec!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "Zwięźle opisz problem poniżej.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Usuń zaznaczone",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "Podczas korzystania z Privacy Badgera stajesz się członkiem <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a> wraz z milionami użytkowników walczącymi o prywatność. Jesteśmy organizacją non-profit walczącą o Twoje prawa w Sieci. Dziękujemy za dołączenie do nas!",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "Udostępnij na Facebooku",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger automatycznie uczy się blokować niewidoczne elementy śledzące.",
-        "description": ""
-    },
     "report_fail": {
         "message": "O nie, coś się schrzaniło.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger zastąpił ten widżet $WIDGET$",
+        "message": "Privacy Badger zastąpił $START_ANCHOR_TAG$ten widżet $WIDGET$ $END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Pomyślnie wysłano dane na serwer.",
+        "message": "Pomyślnie wysłano dane na serwer",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Nie udało się wysłać danych na serwer.",
+        "message": "Nie udało się wysłać danych na serwer",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -629,7 +649,7 @@
         "description": "Tooltip that comes up when you hover over the share button in the upper right corner of the popup."
     },
     "share_tracker_header": {
-        "message": "Privacy Badger zablokował $COUNT$ potencjalnych elementów śledzących na $DOMAIN$:",
+        "message": "Privacy Badger zablokował $COUNT$ możliwych elementów śledzących na $DOMAIN$:",
         "description": "Header above the list of tracking domains in the share message.",
         "placeholders": {
             "count": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger) jest rozszerzeniem przeglądarkowym, które automatycznie uczy się blokować niewidzialne elementy śledzące. Privacy Badger jest dziełem Electronic Frontier Foundation – organizacji non-profit walczącej o Twoje prawa w Sieci.",
+        "message": "Privacy Badger (privacybadger.org) jest rozszerzeniem przeglądarkowym, które automatycznie uczy się blokować niewidzialne elementy śledzące. Privacy Badger jest dziełem Electronic Frontier Foundation – organizacji non-profit walczącej o Twoje prawa w Sieci.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "Privacy Badger jest wyłączony na tej witrynie",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Zastępowanie widżetów",
+    "disabled_sites": {
+        "message": "Nieblokowane witryny",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "Podczas blokowania przycisków mediów społecznościowych i innych potencjalnie użytecznych widżetów (filmów, dźwięków, komentarzy), Privacy Badger może zastępować je przyciskami (które nie ładują się automatycznie).",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger jest wyłączony dla następujących domen. Oznacza to, że nic będzie blokowane podczas wizyty na stronach wpisanych poniżej i nie zostaną wysłane żądania „Nie Śledź Mnie” (DNT) i „Global Privacy Control”.</p><p>Jeżeli uważasz, że Privacy Badger psuje jakąś stronę lub chciał(a)byś tej stronie umożliwić udostępnianie lub sprzedaż Twoich danych, wpisz domenę tej strony w pole poniżej i kliknij w przycisk „dodaj domenę”.</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "np. www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Dodaj domenę",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Usuń zaznaczone",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Wprowadź poprawną domenę lub URL",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "Następujące ustawienie jest przestarzałe i zostanie usunięte z przyszłej wersji rozszerzenia Privacy Badger:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Przeczytaj $LINK$ aby dowiedzieć się więcej.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Rozumiem",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/pt_BR/messages.json b/src/_locales/pt_BR/messages.json
index 1367310d..919f84b6 100644
--- a/src/_locales/pt_BR/messages.json
+++ b/src/_locales/pt_BR/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "O Privacy Badger aprende automaticamente a bloquear rastreadores invisíveis.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Desabilitar para este site",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Habilitar para este site",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Relatar site quebrado",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "versão $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "$DOMAIN$ bloqueado",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "Verificar se os <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>domínios de terceiros</a> estão em conformidade com a <a target='_blank' href='https://www.eff.org/dnt-policy'>política de Não Rastrear da EFF</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Por favor, adicione uma URL ou um domínio válido.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "Doar para EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Ajude-nos doando e compartilhando seu apoio para nossas ferramentas",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "Este domínio prometeu não rastreá-lo",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Bloquear este domínio é conhecido por quebrar sites",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Bloquear totalmente",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Bloquear cookies",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Permitir",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "Clique para retornar o controle deste domínio para o Privacy Badger",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "Relatar um erro",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "ex. www.dominio.com, *.dominio.net, dominio.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Clique aqui para bloquear este domínio de usar cookies",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "bloqueado",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "Importar",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Não substituir os seguintes widgets:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Substituição de widgets",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "Quando bloquear botões de redes sociais e outros widgets potencialmente úteis (de vídeo, áudio, comentários), o Privacy Badger pode substitui-los por espaços reservados do tipo clique-para-ativar.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "Habilitar substituição de widgets",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Exceções de widgets",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Não substituir os seguintes widgets:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Exceções de sites",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Sempre permitir widgets nestes sites:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "Mostrar domínios que parecem não estar rastreando você",
@@ -162,11 +212,11 @@
         "description": "Label for a text input box on the Tracking Domains options page tab."
     },
     "options_learn_setting": {
-        "message": "Learn to block new trackers from your browsing",
+        "message": "Aprenda a bloquear novos rastreadores de sua navegação",
         "description": "Checkbox label on the general settings page"
     },
     "local_learning_warning": {
-        "message": "Enabling learning may make you more identifiable to websites",
+        "message": "Habilitar a aprendizagem pode torná-lo mais identificável para sites",
         "description": "Tooltip on the general settings page"
     },
     "options_incognito_setting": {
@@ -178,15 +228,15 @@
         "description": "Tooltip on the general settings page"
     },
     "learning_prompt_text1": {
-        "message": "Privacy Badger will no longer learn from your browsing by default.",
+        "message": "Privacy Badger não vai mais aprender de sua navegação por padrão.",
         "description": "First part of a prompt to visit the blog."
     },
     "learning_prompt_text2": {
-        "message": "Click below to learn more.",
+        "message": "Clique abaixo para saber mais.",
         "description": "Second part of a prompt to visit the blog."
     },
     "learning_prompt_button": {
-        "message": "Learn how Privacy Badger is changing",
+        "message": "Aprenda como Privacy Badger está mudando",
         "description": "Button text, part of a prompt to visit the blog."
     },
     "show_counter_checkbox": {
@@ -198,23 +248,15 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "Por favor, não esqueça de clicar em \"O Privacy Badger quebrou este site\". Nós respeitamos sua privacidade já que não enviamos relatórios automáticos.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Não se esqueça de clicar em 'Relatar site quebrado'. Respeitamos sua privacidade, por isso não enviamos relatórios automáticos.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Opções do Privacy Badger",
         "description": ""
     },
     "report_terms": {
-        "message": "This will automatically send the following information to EFF: the page you're currently visiting, your browser version, the version of Privacy Badger, and the state of all of the sliders on this page.",
-        "description": ""
-    },
-    "whitelisted_domains": {
-        "message": "Sites desativados",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Ativar o Privacy Badger para este site",
+        "message": "Isso enviará automaticamente as seguintes informações para a EFF: a página que você está visitando no momento, a versão do seu navegador, a versão do Privacy Badger e o estado de todos os controles deslizantes nesta página.",
         "description": ""
     },
     "options_domain_type_filter": {
@@ -274,31 +316,17 @@
         "description": "This is an options page tab heading."
     },
     "options_privacy_settings": {
-        "message": "Privacy",
+        "message": "Privacidade",
         "description": "Subheading on the general settings options page."
     },
     "options_advanced_settings": {
-        "message": "Advanced",
+        "message": "Avançado",
         "description": "Subheading on the general settings options page."
     },
     "intro_next_button": {
         "message": "Saber como funciona",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Clique aqui para bloquear totalmente este domínio",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "versão $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "Cookies bloqueados de $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "parcialmente bloqueado",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Compreendo; por favor, mostre-me a lista de domínios de rastreamento.",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Obrigado por instalar o Privacy Badger!",
         "description": ""
@@ -325,20 +349,16 @@
         "message": "Por favor, selecione um arquivo para importar.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "O Privacy Badger quebrou este site? Deixe-nos saber!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "Centralize o controle deslizante para bloquear cookies",
         "description": ""
     },
     "intro_learns": {
-        "message": "Learns automatically",
+        "message": "Aprende automaticamente",
         "description": "Intro page paragraph heading"
     },
     "intro_learns_paragraph": {
-        "message": "Instead of keeping lists of what to block, Privacy Badger automatically discovers trackers based on their behavior.",
+        "message": "Em vez de manter listas do que bloquear, o Privacy Badger descobre automaticamente rastreadores com base no comportamento deles.",
         "description": "Intro page paragraph"
     },
     "intro_beyond_ads": {
@@ -346,7 +366,7 @@
         "description": "Intro page paragraph heading."
     },
     "intro_beyond_ads_paragraph": {
-        "message": "Invisible tracking happens in all sorts of ways; ads are just the visible tip of the iceberg. Privacy Badger sends the <a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control signal</a>, to opt you out of data sharing and selling, and the <a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track signal</a> to tell companies not to track you. If they ignore your wishes, Privacy Badger will learn to block them—whether they are advertisers or trackers of other kinds.",
+        "message": "O rastreamento invisível acontece de todas as maneiras; os anúncios são apenas a ponta visível do iceberg. O Privacy Badger envia o sinal <a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>, para cancelar o compartilhamento e venda de dados, e o sinal <a href='https://www.eff.org/issues/do-not-track' target='_blank'>Não Rastrear</a> para avisar às empresas para não rastreá-lo. Se eles ignorarem seus desejos, Privacy Badger aprenderá a bloqueá-los – sejam eles anunciantes ou rastreadores de outros tipos.",
         "description": "Intro page paragraph."
     },
     "report_close": {
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "Compatível com DNT",
+        "message": "compatível com a política de Não Rastrear da EFF",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "A privacidade é um esporte de equipe!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "Você não precisa modificar nada aqui.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "todos",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -390,27 +406,47 @@
         "description": ""
     },
     "options_enable_dnt_checkbox": {
-        "message": "Send websites the \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>\" and \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track</a>\" signals",
+        "message": "Enviar aos sites os sinais \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>\" e \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Não Rastrear</a>\"",
         "description": "Checkbox label for enabling/disabling the Sec-GPC and DNT signals, found on the general settings page"
     },
     "options_disable_google_nav_error_service": {
-        "message": "Disable sending web addresses you visit to Google. This disables suggestions for similar pages when a page can't be found.",
-        "description": "Checkbox label found on the general settings page"
+        "message": "Desabilitar o envio de endereços web que você visita para o Google. Isso desabilita sugestões para páginas semelhantes quando uma página não pode ser encontrada.",
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Disable hyperlink auditing",
+        "message": "Impedir que os sites rastreiem quais links você clica (\"auditoria de hiperlink\")",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Desabilitar pré-busca",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Desativar o Aprendizado Federado de Coortes (FLoC) do Google",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "controlado pelo usuário",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Proteção de rastreamento de link ativa",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Alguns sites $LINK_START$usam o rastreamento de links para segui-lo$LINK_END$ sempre que você clica em um link para sair do site. O Privacy Badger remove o rastreamento de tais links neste site.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
-        "message": "$COUNT$ potential $LINK_START$trackers$LINK_END$ blocked",
+        "message": "$COUNT$ $LINK_START$rastreadores$LINK_END$ potenciais bloqueados",
         "description": "Popup message shown when at least one tracker was blocked.",
         "placeholders": {
             "count": {
@@ -427,7 +463,7 @@
         }
     },
     "popup_instructions_no_trackers": {
-        "message": "No $LINK_START$trackers$LINK_END$ blocked",
+        "message": "Nenhum $LINK_START$rastreador$LINK_END$ bloqueado",
         "description": "Text shown in the popup when there are no trackers on the page.",
         "placeholders": {
             "link_start": {
@@ -440,35 +476,23 @@
         }
     },
     "popup_blocked": {
-        "message": "There are no third party resources on this page. Hooray for privacy!",
+        "message": "Não há recursos de terceiros nesta página. Viva a privacidade!",
         "description": "Text shown in the popup when showing non-tracking domains is enabled, and there are no third-party domains on the page."
     },
     "intro_by_eff": {
         "message": "Um projeto da Electronic Frontier Foundation",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Adicionar domínio",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Mova o controle deslizante para a direita para permitir um domínio",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Desabilitar o Privacy Badger para este site",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Clique aqui para permitir este domínio",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "O Privacy Badger NUNCA compartilhará dados sobre sua navegação, a menos que você escolha compartilhá-los.",
         "description": "Intro page paragraph."
     },
     "options_domain_list_trackers": {
-        "message": "Privacy Badger has decided to block $COUNT$ potential $TRACKER_LINK_START$tracking domains$TRACKER_LINK_END$ so far",
+        "message": "Privacy Badger decidiu bloquear $COUNT$ $TRACKER_LINK_START$domínios de rastreamento$TRACKER_LINK_END$ potencial até agora",
         "description": "Shown on the Tracking Domains tab on the options page after Privacy Badger learned to block one or more domains",
         "placeholders": {
             "count": {
@@ -488,10 +512,6 @@
         "message": "O Privacy Badger ainda não detectou nenhum <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>domínio de rastreamento</a>. Continue navegando.",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "O Privacy Badger começa a bloquear uma vez que vê o mesmo rastreador em três sites diferentes. Três strikes e está fora!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "Descreva brevemente o erro abaixo.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Remover selecionado",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "Quando você usa o Privacy Badger, você se junta à <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a> e outros milhões de usuários na luta pela privacidade. Somos uma organização sem fins lucrativos que luta pelos seus direitos on-line. Obrigado por se juntar a nós.",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "Compartilhar no Facebook",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "O Privacy Badger aprende automaticamente a bloquear rastreadores invisíveis.",
-        "description": ""
-    },
     "report_fail": {
         "message": "Oops. Algo deu errado.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "O Privacy Badger substituiu esse $WIDGET$ widget",
+        "message": "O Privacy Badger substituiu $START_ANCHOR_TAG$esse $WIDGET$ widget $END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Os dados foram enviados com sucesso para a nuvem.",
+        "message": "Os dados foram enviados com sucesso para a nuvem",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Não foi possível enviar os dados para a nuvem.",
+        "message": "Não foi possível enviar os dados para a nuvem",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -629,7 +649,7 @@
         "description": "Tooltip that comes up when you hover over the share button in the upper right corner of the popup."
     },
     "share_tracker_header": {
-        "message": "Privacy Badger blocked $COUNT$ potential trackers on $DOMAIN$:",
+        "message": "Privacy Badger bloqueou $COUNT$ rastreadores potenciais em $DOMAIN$:",
         "description": "Header above the list of tracking domains in the share message.",
         "placeholders": {
             "count": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "O Privacy Badger (www.eff.org/privacybadger) é uma extensão de navegador que aprende automaticamente a bloquear rastreadores invisíveis. O Privacy Badger é feito pela Electronic Frontier Foundation, uma organização sem fins lucrativos que luta pelos seus direitos online.",
+        "message": "O Privacy Badger (privacybadger.org) é uma extensão de navegador que aprende automaticamente a bloquear rastreadores invisíveis. O Privacy Badger é feito pela Electronic Frontier Foundation, uma organização sem fins lucrativos que luta pelos seus direitos online.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "O Privacy Badger está desabilitado neste site",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Substituição de widgets",
+    "disabled_sites": {
+        "message": "Sites desativados",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "Quando bloquear botões de redes sociais e outros widgets potencialmente úteis (de vídeo, áudio, comentários), o Privacy Badger pode substitui-los por espaços reservados do tipo clique-para-ativar.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>O Privacy Badger está desabilitado nos sites a seguir. Isso significa que o Privacy Badger não bloqueará nada quando você visitar os sites listados aqui e não enviará os sinais Não Rastrear ou Global Privacy Control.</p><p>Se você acha que o Privacy Badger está quebrando uma página, ou gostaria de permitir que um determinado site compartilhe ou venda seus dados, você pode digitar o domínio dessa página na caixa abaixo e clicar no botão \"Adicionar domínio\".</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "ex. www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Adicionar domínio",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Remover selecionado",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Por favor, adicione uma URL ou um domínio válido",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "A configuração a seguir foi descontinuada e será removida em uma atualização futura do Privacy Badger:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Visite $LINK$ para saber mais.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Compreendo",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/pt_PT/messages.json b/src/_locales/pt_PT/messages.json
index fd321a00..b3fc06b8 100644
--- a/src/_locales/pt_PT/messages.json
+++ b/src/_locales/pt_PT/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "O Privacy Badger aprende automaticamente a bloquear rastreadores invisíveis.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Desativar para este site",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Ativar para este site",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Reportar site estragado",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "versão $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "$DOMAIN$ bloqueado",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "Verificar se os <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>domínios de terceiros</a> estão em conformidade com a <a target='_blank' href='https://www.eff.org/dnt-policy'>política de Não Rastrear da EFF</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Por favor, adicione um URL ou um domínio válido.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "Fazer um donativo à EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Ajude-nos com um donativo e partilhando o seu apoio às nossas ferramentas",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "Este domínio prometeu não rastreá-lo",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
-        "message": "Bloqueando este domínio é conhecido por quebrar os sítios da Internet",
+        "message": "Bloquear este domínio normalmente dá problemas ao ver as páginas da Internet",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Bloquear totalmente",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Bloquear cookies",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Permitir",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "Clicar para devolver o controlo deste domínio ao Privacy Badger",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -76,21 +114,13 @@
         "description": "Shown in the popup when there is a problem with the user's Privacy Badger extension that we want to encourage the user to tell us about."
     },
     "data_settings": {
-        "message": "Gerir Dados",
+        "message": "Gerir dados",
         "description": "This is an options page tab heading."
     },
     "report_title": {
-        "message": "Reportar um Erro",
+        "message": "Reportar um erro",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "por ex. www.dominio.com, *.dominio.net, dominio.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Clique aqui para impedir que este domínio use cookies",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "bloqueado",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -108,7 +138,7 @@
         "description": ""
     },
     "options_domain_list_tab": {
-        "message": "Domínios de Rastreamento",
+        "message": "Domínios de rastreamento",
         "description": "This is an options page tab heading."
     },
     "share_button_title_twitter": {
@@ -127,13 +157,33 @@
         "message": "Importar",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Não substituir os seguintes widgets:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Substituição de widgets",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "Ao bloquear botões sociais e outros widgets possivelmente úteis (para vídeo, áudio, comentários, etc.), o Privacy Badger pode substituí-los por marcadores de lugar que se podem clicar para ativá-los.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "Permitir a substituição do widget",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Exceções de widget",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Não substituir os seguintes widgets:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Exceções de sites",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Permitir sempre widgets nestes sites:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "Mostrar domínios que não parecem estar a rastreá-lo",
@@ -162,31 +212,31 @@
         "description": "Label for a text input box on the Tracking Domains options page tab."
     },
     "options_learn_setting": {
-        "message": "Learn to block new trackers from your browsing",
+        "message": "Aprender a bloquear novos rastreadores com a sua navegação",
         "description": "Checkbox label on the general settings page"
     },
     "local_learning_warning": {
-        "message": "Enabling learning may make you more identifiable to websites",
+        "message": "Ativar a aprendizagem de bloquear novos rastreadores pode torná-lo mais identificável nos sites",
         "description": "Tooltip on the general settings page"
     },
     "options_incognito_setting": {
-        "message": "Aprender em janelas Privadas/Anónimas",
+        "message": "Aprender em janelas privadas/anónimas",
         "description": "Checkbox label on the general settings page"
     },
     "options_incognito_warning": {
-        "message": "Ativar o aprendizado em janelas Privadas/Anónimas/Incógnito pode deixar rastros do seu histórico de navegação privada no seu computador. Por padrão, o Privacy Badger irá bloquear rastreadores já conhecidos em janelas Privadas/Anónimas/Incógnito, mas não aprenderá sobre novos rastreadores. Pode querer ativar esta opção caso utilize muito o modo de navegação em janelas Privadas/Anónimas/Incógnito.",
+        "message": "Ativar a aprendizagem em janelas privadas/anónimas/incógnito pode deixar rastos do seu histórico de navegação privada no seu computador. Por padrão, o Privacy Badger irá bloquear rastreadores já conhecidos em janelas privadas/anónimas/incógnito, mas não aprenderá nada sobre os novos rastreadores. Pode querer ativar esta opção caso utilize muito o modo de navegação em janelas privadas/anónimas/incógnito.",
         "description": "Tooltip on the general settings page"
     },
     "learning_prompt_text1": {
-        "message": "Privacy Badger will no longer learn from your browsing by default.",
+        "message": "O Privacy Badger deixará de aprender com a sua navegação, por padrão.",
         "description": "First part of a prompt to visit the blog."
     },
     "learning_prompt_text2": {
-        "message": "Click below to learn more.",
+        "message": "Clique abaixo para saber mais.",
         "description": "Second part of a prompt to visit the blog."
     },
     "learning_prompt_button": {
-        "message": "Learn how Privacy Badger is changing",
+        "message": "Saiba como o Privacy Badger está a ser alterado",
         "description": "Button text, part of a prompt to visit the blog."
     },
     "show_counter_checkbox": {
@@ -198,23 +248,15 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "Por favor não esqueça de clicar em \"O Privacy Badger estragou este site? Diga-nos!\" se quiser ajudar-nos. Nós respeitamos a sua privacidade por isso os relatórios de problemas não são enviados automaticamente.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Por favor não se esqueça de clicar em 'Reportar site estragado'. Respeitamos a sua privacidade, por isso não são enviados relatórios automáticos.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Opções do Privacy Badger",
         "description": ""
     },
     "report_terms": {
-        "message": "This will automatically send the following information to EFF: the page you're currently visiting, your browser version, the version of Privacy Badger, and the state of all of the sliders on this page.",
-        "description": ""
-    },
-    "whitelisted_domains": {
-        "message": "Sites desativados",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Ativar o Privacy Badger para este site",
+        "message": "Isto irá enviar automaticamente a seguinte informação para a EFF: a página que está a visitar atualmente, a versão do seu navegador, a versão do Privacy Badger e o estado de todos os controlos deslizantes nesta página.",
         "description": ""
     },
     "options_domain_type_filter": {
@@ -226,11 +268,11 @@
         "description": ""
     },
     "export_user_data": {
-        "message": "Exportar dados de utilizador",
+        "message": "Exportar dados do utilizador",
         "description": ""
     },
     "manage_data_intro": {
-        "message": "Importar dados do utilizador:<ul><li>Substitui as configurações gerais</li><li>Combina as listas de sites desativados</li><li>Combina informações sobre os rastreadores que o Privacy Badger detetou</li><li> Substitui personalizações do controlo deslizante</li></ul>",
+        "message": "Importar dados do utilizador:<ul><li>Substitui as configurações gerais</li><li>Combina as listas de sites desativados</li><li>Combina informações sobre os rastreadores que o Privacy Badger detetou</li><li>Substitui personalizações do controlo deslizante</li></ul>",
         "description": "A brief explanation of what happens when you import Badger user data. Shown above the import/export user data buttons under the Manage Data options page tab."
     },
     "reset": {
@@ -246,7 +288,7 @@
         "description": "Pop-up triggered when the reset_data button is clicked"
     },
     "remove_all": {
-        "message": "Remover tudo",
+        "message": "Remover todos",
         "description": "Options page button, under the Manage Data tab"
     },
     "remove_all_data": {
@@ -270,35 +312,21 @@
         "description": "Tooltip on the general settings page"
     },
     "options_general_settings": {
-        "message": "Configurações Gerais",
+        "message": "Configurações gerais",
         "description": "This is an options page tab heading."
     },
     "options_privacy_settings": {
-        "message": "Privacy",
+        "message": "Privacidade",
         "description": "Subheading on the general settings options page."
     },
     "options_advanced_settings": {
-        "message": "Advanced",
+        "message": "Avançado",
         "description": "Subheading on the general settings options page."
     },
     "intro_next_button": {
         "message": "Saber como funciona",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Clique aqui para bloquear totalmente este domínio",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "versão $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "Cookies bloqueados de $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,32 +341,24 @@
         "message": "parcialmente bloqueado",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Compreendo, mesmo assim quero ver a lista de domínios de rastreamento.",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Obrigado por instalar o Privacy Badger!",
         "description": ""
     },
     "import_select_file": {
-        "message": "Por favor, selecione um ficheiro para importar.",
+        "message": "Por favor, selecione um ficheiro a importar.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "O Privacy Badger estragou este site? Diga-nos!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
-        "message": "Centralize o controlo deslizante para bloquear cookies",
+        "message": "Mova o controlo deslizante para o centro para bloquear apenas os cookies",
         "description": ""
     },
     "intro_learns": {
-        "message": "Learns automatically",
+        "message": "Aprende automaticamente",
         "description": "Intro page paragraph heading"
     },
     "intro_learns_paragraph": {
-        "message": "Instead of keeping lists of what to block, Privacy Badger automatically discovers trackers based on their behavior.",
+        "message": "Em vez de manter listas do que é para bloquear, o Privacy Badger descobre automaticamente os rastreadores baseado comportamento destes.",
         "description": "Intro page paragraph"
     },
     "intro_beyond_ads": {
@@ -346,7 +366,7 @@
         "description": "Intro page paragraph heading."
     },
     "intro_beyond_ads_paragraph": {
-        "message": "Invisible tracking happens in all sorts of ways; ads are just the visible tip of the iceberg. Privacy Badger sends the <a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control signal</a>, to opt you out of data sharing and selling, and the <a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track signal</a> to tell companies not to track you. If they ignore your wishes, Privacy Badger will learn to block them—whether they are advertisers or trackers of other kinds.",
+        "message": "Os rastreadores invisíveis aparecem de muitas maneiras; os anúncios são apenas a ponta do icebergue. O Privacy Badger envia o sinal de <a href='https://globalprivacycontrol.org/' target='_blank'>controlo da privacidade global (Global Privacy Control)</a> para indicar que optou por não querer partilhar, vender e enviar os seus dados, e o sinal <a href='https://www.eff.org/issues/do-not-track' target='_blank'>não rastrear (Do Not Track)</a> para dizer às empresas para não o rastrearem. Se eles ignorarem as suas indicações, o Privacy Badger irá aprender a bloqueá-los —quer eles sejam anunciantes, rastreadores ou outtos.",
         "description": "Intro page paragraph."
     },
     "report_close": {
@@ -354,11 +374,11 @@
         "description": ""
     },
     "import_user_data": {
-        "message": "Importar dados de utilizador",
+        "message": "Importar dados do utilizador",
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "Compatível com DNT",
+        "message": "conforme a política de Não Rastrear da EFF",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "A privacidade é um desporto de equipa!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "Não deve precisar de alterar nada aqui.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "todos",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -390,27 +406,47 @@
         "description": ""
     },
     "options_enable_dnt_checkbox": {
-        "message": "Send websites the \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>\" and \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track</a>\" signals",
+        "message": "Enviar para os sites os sinais de \"<a href='https://globalprivacycontrol.org/' target='_blank'>controlo da privacidade global (Global Privacy Control)</a>\" e \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>não rastrear (Do Not Track)</a>\"",
         "description": "Checkbox label for enabling/disabling the Sec-GPC and DNT signals, found on the general settings page"
     },
     "options_disable_google_nav_error_service": {
-        "message": "Disable sending web addresses you visit to Google. This disables suggestions for similar pages when a page can't be found.",
-        "description": "Checkbox label found on the general settings page"
+        "message": "Desativar o envio de endereços web que visita para o Google. Isto também desativa as sugestões para páginas similares quando uma página não é encontrada.",
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Disable hyperlink auditing",
+        "message": "Impede que os sites façam os rastreamento dos links que clica (\"auditoria de hiperligações\")",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_network_prediction": {
+        "message": "Desativar pré-carregamento",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_floc": {
+        "message": "Desativar o Federated Learning of Cohorts do Google (FLoC)",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "controlado pelo utilizador",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Proteção de rastreamento de links ativa",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Alguns sites $LINK_START$usam o rastreamento de links para o seguir$LINK_END$ sempre que clica num link para aceder a outro site. O Privacy Badger remove o rastreamento de tais links neste site.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
-        "message": "$COUNT$ potential $LINK_START$trackers$LINK_END$ blocked",
+        "message": "$COUNT$ $LINK_START$rastreadores potenciais$LINK_END$ bloqueados",
         "description": "Popup message shown when at least one tracker was blocked.",
         "placeholders": {
             "count": {
@@ -427,7 +463,7 @@
         }
     },
     "popup_instructions_no_trackers": {
-        "message": "No $LINK_START$trackers$LINK_END$ blocked",
+        "message": "Nenhuns $LINK_START$rastreadores$LINK_END$ bloqueados",
         "description": "Text shown in the popup when there are no trackers on the page.",
         "placeholders": {
             "link_start": {
@@ -440,35 +476,23 @@
         }
     },
     "popup_blocked": {
-        "message": "There are no third party resources on this page. Hooray for privacy!",
+        "message": "Não existem recursos de terceiros nesta página. Viva a privacidade!",
         "description": "Text shown in the popup when showing non-tracking domains is enabled, and there are no third-party domains on the page."
     },
     "intro_by_eff": {
         "message": "Um projeto da Electronic Frontier Foundation",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Adicionar domínio",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Mova o controlo deslizante para a direita para permitir um domínio",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Desativar o Privacy Badger para este site",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Clique aqui para permitir este domínio",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "O Privacy Badger NUNCA partilhará dados sobre a sua navegação, a não ser que escolha partilhá-los.",
         "description": "Intro page paragraph."
     },
     "options_domain_list_trackers": {
-        "message": "Privacy Badger has decided to block $COUNT$ potential $TRACKER_LINK_START$tracking domains$TRACKER_LINK_END$ so far",
+        "message": "O Privacy Badger decidiu bloquear $COUNT$ potenciais $TRACKER_LINK_START$domínios de rastreamento$TRACKER_LINK_END$ até agora",
         "description": "Shown on the Tracking Domains tab on the options page after Privacy Badger learned to block one or more domains",
         "placeholders": {
             "count": {
@@ -485,13 +509,9 @@
         }
     },
     "options_domain_list_no_trackers": {
-        "message": "O Privacy Badger ainda não detetou nenhum <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>domínio de rastreamento</a>. Continue a navegar.",
+        "message": "O Privacy Badger ainda não detetou nenhum <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>domínio de rastreamento</a>. Continue a navegar!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "O Privacy Badger começa a bloquear após detetar o mesmo rastreador em três sites diferentes. Três golpes e está fora!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "Descreva brevemente o erro abaixo.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Remover selecionado",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "Quando usa o Privacy Badger, está a junta-se à <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a> e a outros milhões de utilizadores na luta pela privacidade. Somos uma organização sem fins lucrativos que luta pelos seus direitos na Internet. Obrigado por se juntar a nós.",
         "description": "Part of the 'donate' section on the intro page."
@@ -537,7 +553,7 @@
         "description": "Label for a checkbox on the Tracking Domains options page tab. Should match wording used in the 'not_yet_blocked_header' message."
     },
     "non_tracker": {
-        "message": "Os domínios abaixo não parecem estar a rastreá-lo",
+        "message": "Os domínios abaixo parecem não estar a rastreá-lo",
         "description": "Header text; separates tracking from non-tracking domains in the popup."
     },
     "popup_options_button": {
@@ -548,10 +564,6 @@
         "message": "Partilhar no Facebook",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "O Privacy Badger aprende automaticamente a bloquear rastreadores invisíveis.",
-        "description": ""
-    },
     "report_fail": {
         "message": "Ups. Algo correu mal.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "O Privacy Badger substituiu este widget $WIDGET$",
+        "message": "O Privacy Badger substituiu $START_ANCHOR_TAG$este widget $WIDGET$ $END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Os dados foram enviados com sucesso para a nuvem.",
+        "message": "Os dados foram enviados com sucesso para a nuvem",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Não foi possível enviar os dados para a nuvem.",
+        "message": "Não foi possível enviar os dados para a nuvem",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -629,7 +649,7 @@
         "description": "Tooltip that comes up when you hover over the share button in the upper right corner of the popup."
     },
     "share_tracker_header": {
-        "message": "Privacy Badger blocked $COUNT$ potential trackers on $DOMAIN$:",
+        "message": "O Privacy Badger bloqueou $COUNT$ potenciais rastreadores em $DOMAIN$:",
         "description": "Header above the list of tracking domains in the share message.",
         "placeholders": {
             "count": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "O Privacy Badger (www.eff.org/privacybadger) é uma extensão de navegador que aprende automaticamente a bloquear rastreadores invisíveis. O Privacy Badger é feito pela Electronic Frontier Foundation, uma organização sem fins lucrativos que luta pelos seus direitos na Internet.",
+        "message": "O Privacy Badger (privacybadger.org) é uma extensão de navegador que aprende automaticamente a bloquear rastreadores invisíveis. O Privacy Badger é feito pela Electronic Frontier Foundation, uma organização sem fins lucrativos que luta pelos seus direitos na Internet.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "O Privacy Badger está desactivado neste site",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Substituição de Widgets",
+    "disabled_sites": {
+        "message": "Sites desativados",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "Ao bloquear botões sociais e outros widgets possivelmente úteis (para vídeo, áudio, comentários, etc.), o Privacy Badger pode substituí-los por marcadores de lugar que clicam para ativar.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>O Privacy Badger está desativado nos seguintes sites. Isto significa que o Privacy Badger não irá bloquear nada ao visitar os sites apresentados aqui e não irá ser enviado o sinal de não rastrear (Do Not Track) nem o sinal de controlo da privacidade global (Global Privacy Control).</p><p>Se acha que o Privacy Badger está a perturbar o funcionamento normal de uma página ou pretende que um site partilhe e venda os seus dados, pode introduzir o site na caixa abaixo e clicar no botão \"Adicionar domínio\".</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "por ex. www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Adicionar domínio",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Remover selecionados",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Por favor, adicione um URL ou um domínio válido",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "A seguinte configuração foi descontinuada e será removida numa atualização posterior do Privacy Badger:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Visite $LINK$ para saber mais.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Compreendo",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json
index 4e38f638..530a8891 100644
--- a/src/_locales/ru/messages.json
+++ b/src/_locales/ru/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger автоматически учится блокировать невидимые трекеры.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Отключить на этом сайте",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Включить на этом сайте",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Сообщить о неполадках на сайте",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "версия $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "Заблокирован $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "Проверять, соблюдают ли <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>сторонние домены</a> <a target='_blank' href='https://www.eff.org/dnt-policy'>политику EFF «Do Not Track»</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Пожалуйста, добавьте действительный домен или URL.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "Пожертвовать EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Помогите нам пожертвованиями и вашей поддержкой наших инструментов",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "Этот домен обещает не отслеживать вас",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Блокирование этого домена вызывает неполадки на веб-сайтах",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Заблокировать полностью",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Заблокировать файлы cookie",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Разрешить",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "Щелкните, чтобы вернуть этот домен под контроль Privacy Badger",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "Сообщить об ошибке",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "например: www.domain.com, *.domain.net, domain.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Щелкните здесь, чтобы заблокировать создание файлов cookie с этого домена",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "заблокированные",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "Импортировать",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Не заменят следующих виджетов:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Замена виджетов",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "При блокирование кнопок социальных сетей и других потенциально полезных виджетов (видео, аудио, комментарии), Privacy Badger можеt заменить их специальными элементами.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "Включить замену виджетов",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Исключенные виджеты",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Не заменят следующих виджетов:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Исключенные сайты",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Всегда разрешать виджеты на следующих сайтах:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "Отображать домены у которых отслеживающая активность не обнаружена",
@@ -199,7 +249,7 @@
     },
     "intro_report_button": {
         "message": "Пожалуйста, не забывайте нажимать на кнопку 'Сообщить о неполадках на сайте'. Мы уважаем вашу приватность, поэтому не отправляем отчеты автоматически.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Настройки Privacy Badger",
@@ -209,14 +259,6 @@
         "message": "Это действие автоматически отправит в EFF следующую информацию: адрес страници, на которой вы находитесь в данный момент, версию вашего браузера, версию Privacy Badger и состояние всех переключателей на этой страницe.",
         "description": ""
     },
-    "whitelisted_domains": {
-        "message": "Отключенные сайты",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Включить Privacy Badger на этом сайте",
-        "description": ""
-    },
     "options_domain_type_filter": {
         "message": "Фильтр по типу:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
@@ -285,20 +327,6 @@
         "message": "Пройти тур",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Щелкните здесь, чтобы заблокировать этот домен полностью",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "версия $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "Заблокированы файлы cookie от $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "частично заблокированные",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Понятно; пожалуйста, покажите список доменов с трекерами",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Спасибо вам за то, что установили Privacy Badger!",
         "description": ""
@@ -325,10 +349,6 @@
         "message": "Пожалуйста, выберите файл для импорта.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "Сообщить о неполадках на сайте",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "Передвиньте переключатель в центр, чтобы заблокировать файлы cookie",
         "description": ""
@@ -346,7 +366,7 @@
         "description": "Intro page paragraph heading."
     },
     "intro_beyond_ads_paragraph": {
-        "message": "Невидимое отслеживание осуществляется многими способами; реклама — лишь видимая вершина айсберга. Privacy Badger отправляет <a href='https://globalprivacycontrol.org/' target='_blank'>сигнал Global Privacy Control</a>, чтобы отказаться от разпростровления и продажи ваших данных, и отправляет <a href='https://www.eff.org/issues/do-not-track' target='_blank'>сигнал Do Not Track</a> компаниям, говоря им не отслеживать вас. Если они игнорируют ваши желания, Privacy Badger научится блокировать их вне зависимости от того, рекламные они трекеры или нет.",
+        "message": "Невидимое отслеживание осуществляется многими способами; реклама — лишь видимая вершина айсберга. Privacy Badger отправляет <a href='https://globalprivacycontrol.org/' target='_blank'>сигнал Global Privacy Control</a>, чтобы отказаться от разпростровления и продажи ваших данных, и отправляет <a href='https://www.eff.org/issues/do-not-track' target='_blank'>сигнал Do Not Track</a> компаниям, говоря им не отслеживать вас. Если они игнорируют ваши желания, Privacy Badger научится блокировать их — будь то рекламодатели, или другие трекеры.",
         "description": "Intro page paragraph."
     },
     "report_close": {
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "DNT-зависимые",
+        "message": "соблюдающие политику EFF «DNT»",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "Приватность — это командная работа!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "Вам не придется здесь ничего менять.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "все",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -395,19 +411,39 @@
     },
     "options_disable_google_nav_error_service": {
         "message": "Отключить отправление адресов посещаемых веб-страниц в Google (это отключит предложение вариантов когда страница не найдена)",
-        "description": "Checkbox label found on the general settings page"
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Отключить аудит гиперссылок",
+        "message": "Запретить сайтам следить, на какие ссылки вы нажимаете («аудит гиперссылок»)",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_network_prediction": {
+        "message": "Отключить предзагрузку",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_floc": {
+        "message": "Отключить Federated Learning of Cohorts (FLoC) от Google",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "измененные пользователем",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger отключен для данных сайтов. Это означает, что Privacy Badger не будет ничего блокировать на сайтах, находящихся в данном списке. Privacy Badger также не будет отправлять этим сайтам сигналы Do Not Track и Global Privacy Control.</p><p>Если вы считаете, что Privacy Badger вызывает неполадки на странице, или вы хотите позволить какой-то сайте разпростровлять или продавать ваши данные, вы можете напечатать домен данной страницы в поле ниже и нажать кнопку «Добавить домен».</p><p>Или же, если у вас открыта вкладка со страницей, вы можете выбрать Privacy Badger на панели инструментов и затем нажать кнопку «Отключить». ",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Защита от отслеживания ссылок активна",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Некоторые веб-сайты $LINK_START$используют слежения ссылок$LINK_END$, чтобы следить за вами при переходе по ссылке на другой веб-сайт. Privacy Badger удаляет слежения из таких ссылок на этом сайте.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
         "message": "Заблокировано $COUNT$ потенциальных $LINK_START$трекеров$LINK_END$",
@@ -447,22 +483,10 @@
         "message": "Проект Electronic Frontier Foundation",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Добавить домен",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Передвиньте переключатель вправо, чтобы разблокировать домен",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Отключить Privacy Badger на этом сайте",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Щелкните здесь, чтобы разблокировать этот домен",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privacy Badger НИКОГДА не будет делиться данными о вашей активности в Интернете, пока вы сами того не захотите.",
         "description": "Intro page paragraph."
@@ -488,10 +512,6 @@
         "message": "Privacy Badger не обнаружил ни одного <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>домена с трекерами</a>. Продолжайте просмотр Интернета.",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privacy Badger начинает блокировать трекер после того, как обнаруживает его на трёх разных веб-сайтах. Три удара — и все!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "Введите короткое описание ошибки.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Удалить выбранные элементы",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "Когда вы используете Privacy Badger, вы присоединяетесь к <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a> и миллионам других пользователей в борьбе за приватность. Мы — некоммерческая организация, борющаяся на ваши права в Интернете. Спасибо, что присоединились к нам!",
         "description": "Part of the 'donate' section on the intro page."
@@ -517,7 +533,7 @@
         "description": "Tooltip for an \"information\" icon next to the domain search input on the Tracking Domains options page tab."
     },
     "intro_disable_button": {
-        "message": "Если вы думаете, что Privacy Badger портит веб-страницу (например, не воспроизводится видео), вы можете нажать кнопку 'Отключить', чтобы выключить Privacy Badger для этого сайта.",
+        "message": "Если вы думаете, что Privacy Badger портит веб-страницу (например, не воспроизводится видео), вы можете нажать кнопку «Отключить», чтобы выключить Privacy Badger для этого сайта.",
         "description": "Intro page paragraph. The quoted string ('Disable') should match the verb used for the 'popup_disable_for_site' message."
     },
     "intro_link_policy": {
@@ -548,10 +564,6 @@
         "message": "Поделиться в Facebook",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger автоматически учится блокировать невидимые трекеры.",
-        "description": ""
-    },
     "report_fail": {
         "message": "Ой, что-то пошло не так.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger заменил виджет $WIDGET$",
+        "message": "Privacy Badger заменил $START_ANCHOR_TAG$виджет $WIDGET$ $END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Данные успешно загружены в облако.",
+        "message": "Данные успешно загружены в облако",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Данные не могут быть загружены в облако.",
+        "message": "Данные не могут быть загружены в облако",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger) — это расширение для браузера, которое автоматически учится блокировать невидимые трекеры. Privacy Badger разработан некоммерческой организацией Electronic Frontier Foundation, которая борется на ваши права в Интернете.",
+        "message": "Privacy Badger (privacybadger.org) — это расширение для браузера, которое автоматически учится блокировать невидимые трекеры. Privacy Badger разработан некоммерческой организацией Electronic Frontier Foundation, которая борется на ваши права в Интернете.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "Privacy Badger отключен на этом сайте",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Замена виджетов",
+    "disabled_sites": {
+        "message": "Отключенные сайты",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "При блокирование кнопок социальных сетей и других потенциально полезных виджетов (видео, аудио, комментарии), Privacy Badger можеt заменить их специальными элементами.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger отключен для данных сайтов. Это означает, что Privacy Badger не будет ничего блокировать на сайтах, находящихся в данном списке. Privacy Badger также не будет отправлять этим сайтам сигналы Do Not Track и Global Privacy Control.</p><p>Если вы считаете, что Privacy Badger вызывает неполадки на странице, или вы хотите позволить какой-то сайте разпростровлять или продавать ваши данные, вы можете напечатать домен данной страницы в поле ниже и нажать кнопку «Добавить домен».</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "например: www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Добавить домен",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Удалить выбранные элементы",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Пожалуйста, добавьте действительный домен или URL",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "Следующая настройка была устаревшей и будет удалена в одном из будущих обновлений Privacy Badger:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Для получения более подробной информации посетите $LINK$.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Понятно",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/sv/messages.json b/src/_locales/sv/messages.json
index 69befb51..ab894b5d 100644
--- a/src/_locales/sv/messages.json
+++ b/src/_locales/sv/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger lär sig automatiskt att blockera osynliga spårare.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Inaktivera för denna webbplats",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Aktivera för denna webbplats",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Rapportera bruten webbplats",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "version $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "Blockerade $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "Kontrollera om <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>tredjepartsdomäner</a> rättar sig efter <a target='_blank' href='https://www.eff.org/dnt-policy'>EFF:s Spåra inte policy</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Lägg till en giltig domän eller webbadress.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "Donera till EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Hjälp oss genom att donera och dela ditt stöd till våra verktyg",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "Denna domän lovar att inte spåra dig",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Blockering av denna domän är känt att bryta webbplatser",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Blockera helt",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Blockera kakor",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Tillåt",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "Klicka för att återställa kontrollen över denna domän till Privacy Badger",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "Påpeka ett fel",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "t.ex. www.domain.com, *.domain.net, domain.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Klicka här för att blockera den här domänen från att ställa in cookies",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "blockerad",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "Importera",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Ersätt inte följande gränssnittskomponenter:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Gränssnittskomponentsersättning",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "Vid blockering av sociala knappar och andra potentiellt användbara gränssnittskomponenter (video, ljud, kommentarer) kan Privacy Badger ersätta med klick-för-att-aktivera platshållare.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "Aktivera gränssnittskomponentsersättning",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Gränssnittskomponentsundantag",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Ersätt inte följande gränssnittskomponenter:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Webbplatsundantag",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Tillåt alltid gränssnittskomponenter på dessa webbplatser:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "Visa domäner som inte verkar spåra dig",
@@ -162,11 +212,11 @@
         "description": "Label for a text input box on the Tracking Domains options page tab."
     },
     "options_learn_setting": {
-        "message": "Learn to block new trackers from your browsing",
+        "message": "Lär sig att blockera nya spårare från din surfning",
         "description": "Checkbox label on the general settings page"
     },
     "local_learning_warning": {
-        "message": "Enabling learning may make you more identifiable to websites",
+        "message": "Att aktivera lärande kan göra dig mer identifierbar för webbplatser",
         "description": "Tooltip on the general settings page"
     },
     "options_incognito_setting": {
@@ -178,19 +228,19 @@
         "description": "Tooltip on the general settings page"
     },
     "learning_prompt_text1": {
-        "message": "Privacy Badger will no longer learn from your browsing by default.",
+        "message": "Privacy Badger lär sig inte längre av din surfning som standard.",
         "description": "First part of a prompt to visit the blog."
     },
     "learning_prompt_text2": {
-        "message": "Click below to learn more.",
+        "message": "Klicka nedan för att lära dig mer.",
         "description": "Second part of a prompt to visit the blog."
     },
     "learning_prompt_button": {
-        "message": "Learn how Privacy Badger is changing",
+        "message": "Lär dig hur Privacy Badger förändras",
         "description": "Button text, part of a prompt to visit the blog."
     },
     "show_counter_checkbox": {
-        "message": "Visa räkningen av spårare",
+        "message": "Visa antal spårare",
         "description": "Checkbox label on the general settings page"
     },
     "what_is_a_tracker": {
@@ -198,8 +248,8 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "Glöm inte att klicka på \"Bröt Privacy Badger denna webbplats\". Vi respekterar din integritet så vi skickar inte automatiska rapporter.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Vänligen glöm inte att klicka på \"Rapportera bruten webbplats\". Vi respekterar din integritet så vi skickar inte automatiska rapporter.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Privacy Badger-inställningar",
@@ -209,14 +259,6 @@
         "message": "Detta skickar automatiskt följande information till EFF: sidan du för närvarande besöker, din webbläsarversion, versionen av Privacy Badger och lägen för alla skjutreglagen för den här sidan.",
         "description": ""
     },
-    "whitelisted_domains": {
-        "message": "Inaktiverade webbplatser",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Aktivera Privacy Badger för denna webbplats",
-        "description": ""
-    },
     "options_domain_type_filter": {
         "message": "Filtrera efter typ:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
@@ -274,31 +316,17 @@
         "description": "This is an options page tab heading."
     },
     "options_privacy_settings": {
-        "message": "Privacy",
+        "message": "Sekretess",
         "description": "Subheading on the general settings options page."
     },
     "options_advanced_settings": {
-        "message": "Advanced",
+        "message": "Avancerad",
         "description": "Subheading on the general settings options page."
     },
     "intro_next_button": {
         "message": "Ta turen",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Klicka här för att helt blockera den här domänen",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "version $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "Blockerade kakor från $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "delvis blockerad",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Jag förstår; visa mig spårningsdomänlistan ändå",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Tack för att du installerat Privacy Badger!",
         "description": ""
@@ -325,20 +349,16 @@
         "message": "Vänligen välj en fil att importera.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "Bröt Privacy Badger denna webbplats? Låt oss veta!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "Centrera skjutreglaget för att blockera kakor",
         "description": ""
     },
     "intro_learns": {
-        "message": "Learns automatically",
+        "message": "Lär sig automatiskt",
         "description": "Intro page paragraph heading"
     },
     "intro_learns_paragraph": {
-        "message": "Instead of keeping lists of what to block, Privacy Badger automatically discovers trackers based on their behavior.",
+        "message": "Istället för att hålla listor över vad som ska blockeras upptäcker Privacy Badger automatiskt spårare baserat på deras beteende.",
         "description": "Intro page paragraph"
     },
     "intro_beyond_ads": {
@@ -346,7 +366,7 @@
         "description": "Intro page paragraph heading."
     },
     "intro_beyond_ads_paragraph": {
-        "message": "Invisible tracking happens in all sorts of ways; ads are just the visible tip of the iceberg. Privacy Badger sends the <a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control signal</a>, to opt you out of data sharing and selling, and the <a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track signal</a> to tell companies not to track you. If they ignore your wishes, Privacy Badger will learn to block them—whether they are advertisers or trackers of other kinds.",
+        "message": "Osynlig spårning sker på alla möjliga sätt; annonser är bara den synliga toppen av isberget. Privacy Badger skickar <a href='https://globalprivacycontrol.org/' target='_blank'>Global sekretesstyrningssignal</a>, för att välja bort datadelning och försäljning, och <a href='https://www.eff.org/issues/do-not-track' target='_blank'>Spåra inte-signal</a> att berätta för företagen att inte spåra dig. Om de ignorerar dina önskemål kommer Privacy Badger att lära sig att blockera dem—oavsett om de är annonsörer eller spårare av andra slag.",
         "description": "Intro page paragraph."
     },
     "report_close": {
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "DNT-kompatibel",
+        "message": "överensstämmer med EFF:s Spåra inte-policy",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "Integritet är en lagsport!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "Du ska inte behöva ändra någonting här.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "alla",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -390,27 +406,47 @@
         "description": ""
     },
     "options_enable_dnt_checkbox": {
-        "message": "Send websites the \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>\" and \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track</a>\" signals",
+        "message": "Skicka webbplatser signalerna \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global sekretesstyrning</a>\" och \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Spåra inte</a>\"",
         "description": "Checkbox label for enabling/disabling the Sec-GPC and DNT signals, found on the general settings page"
     },
     "options_disable_google_nav_error_service": {
-        "message": "Disable sending web addresses you visit to Google. This disables suggestions for similar pages when a page can't be found.",
-        "description": "Checkbox label found on the general settings page"
+        "message": "Inaktivera att skicka webbadresser som du besöker till Google. Detta inaktiverar förslag på liknande sidor när en sida inte kan hittas.",
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Disable hyperlink auditing",
+        "message": "Förhindra webbplatser från att spåra vilka länkar du klickar på (\"hyperlänkgranskning\")",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Inaktivera förhämtning",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Inaktivera Googles federerade lärande av kohorter (FLoC)",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "användarstyrd",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Länkspårningsskydd aktivt",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Vissa webbplatser $LINK_START$använder länkspårning för att följa dig$LINK_END$ när du klickar på en länk för att lämna webbplatsen. Privacy Badger tar bort spårning från sådana länkar på denna webbplats.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
-        "message": "$COUNT$ potential $LINK_START$trackers$LINK_END$ blocked",
+        "message": "Potentiella $LINK_START$spårare$LINK_END$ blockerade: $COUNT$",
         "description": "Popup message shown when at least one tracker was blocked.",
         "placeholders": {
             "count": {
@@ -427,7 +463,7 @@
         }
     },
     "popup_instructions_no_trackers": {
-        "message": "No $LINK_START$trackers$LINK_END$ blocked",
+        "message": "Ingen $LINK_START$spårare$LINK_END$ blockerad",
         "description": "Text shown in the popup when there are no trackers on the page.",
         "placeholders": {
             "link_start": {
@@ -447,28 +483,16 @@
         "message": "Ett projekt av Electronic Frontier Foundation",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Lägg till domän",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Flytta skjutreglaget till höger för att tillåta en domän",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Inaktivera Privacy Badger för denna webbplats",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Klicka här för att registrera dig",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privacy Badger kommer ALDRIG att dela data om din surfning om du inte väljer att dela den.",
         "description": "Intro page paragraph."
     },
     "options_domain_list_trackers": {
-        "message": "Privacy Badger has decided to block $COUNT$ potential $TRACKER_LINK_START$tracking domains$TRACKER_LINK_END$ so far",
+        "message": "Privacy Badger har beslutat att blockera $COUNT$ potentiella $TRACKER_LINK_START$spårningsdomäner$TRACKER_LINK_END$ än så länge",
         "description": "Shown on the Tracking Domains tab on the options page after Privacy Badger learned to block one or more domains",
         "placeholders": {
             "count": {
@@ -488,10 +512,6 @@
         "message": "Privacy Badger har inte detekterat några <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>spårningsdomäner</a> ännu. Fortsätt surfa!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privacy Badger börjar blockera när den ser samma spårare på tre olika webbplatser. Tre strike och den är ute!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "Beskriv kortfattat felet nedan.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Ta bort valda",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "När du använder Privacy Badger, går du med i <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a> och miljontals andra användare i kampen för integritet. Vi är en ideell organisation som kämpar för dina rättigheter på nätet. Tack för att du blev en av oss!",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,16 +564,12 @@
         "message": "Dela på Facebook",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger lär sig automatiskt att blockera osynliga spårare.",
-        "description": ""
-    },
     "report_fail": {
         "message": "Hoppsan. Något gick snett.",
         "description": ""
     },
     "social_tooltip_pb_has_replaced": {
-        "message": "Privacy Badger har ersatt den här $BUTTON$-knappen",
+        "message": "Privacy Badger har ersatt denna $BUTTON$-knapp",
         "description": "Tooltip shown over a replaced social button. For example, \"Privacy Badger has replaced this Facebook Like button\". See also the widget_placeholder_pb_has_replaced message.",
         "placeholders": {
             "button": {
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger har ersatt den här $WIDGET$-gränssnittskomponenten",
+        "message": "Privacy Badger har ersatt $START_ANCHOR_TAG$denna $WIDGET$-gränssnittskomponent$END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -581,11 +601,11 @@
         "description": "Button in the placeholder shown in place of certain third-party (video, audio, commenting) widgets. Clicking it will allow the third-party widget to load this one time only."
     },
     "allow_on_site": {
-        "message": "Tillåt alltid på den här webbplatsen",
+        "message": "Tillåt alltid på denna webbplats",
         "description": "Button in the placeholder shown in place of certain third-party (video, audio, commenting) widgets. Clicking this button will always allow the widget to load on this particular site."
     },
     "sync_intro": {
-        "message": "Molnsynkronisering:<ul><li>Kräver Firefox/Chrome Sync</li><li>Sändningen skriver över alla befintliga Privacy Badger-data i molnet</li><li>Hämtning kombinerar listorna över webbplatser där din Badger är inaktiverad</li></ul>",
+        "message": "Molnsynkronisering:<ul><li>Kräver Firefox/Chrome Sync</li><li>Sändning skriver över alla befintliga Privacy Badger-data i molnet</li><li>Hämtning kombinerar listorna över webbplatser där din Badger är inaktiverad</li></ul>",
         "description": "A brief explanation of how syncing works. Shown above the upload/download cloud data buttons under the Manage Data options page tab."
     },
     "upload": {
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Molndata skickades.",
+        "message": "Data har laddats upp till molnet",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Molndata kunde inte skickas.",
+        "message": "Data kunde inte laddas upp till molnet",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -629,7 +649,7 @@
         "description": "Tooltip that comes up when you hover over the share button in the upper right corner of the popup."
     },
     "share_tracker_header": {
-        "message": "Privacy Badger blocked $COUNT$ potential trackers on $DOMAIN$:",
+        "message": "Potentiella spårare blockerade på $DOMAIN$ av Privacy Badger: $COUNT$",
         "description": "Header above the list of tracking domains in the share message.",
         "placeholders": {
             "count": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger) är ett webbläsartillägg som automatiskt lär sig att blockera osynliga spårare. Privacy Badger är gjord av Electronic Frontier Foundation, en ideell organisation som kämpar för dina rättigheter på nätet.",
+        "message": "Privacy Badger (privacybadger.org) är ett webbläsartillägg som automatiskt lär sig att blockera osynliga spårare. Privacy Badger är gjord av Electronic Frontier Foundation, en ideell organisation som kämpar för dina rättigheter på nätet.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -659,19 +679,53 @@
         "description": "Heading for popup_special_page_paragraph"
     },
     "popup_special_page_paragraph": {
-        "message": "Privacy Badger fungerar inte på särskilda sidor som den här. Prova att surfa någon annanstans.",
+        "message": "Privacy Badger fungerar inte på särskilda sidor som denna. Prova att surfa någon annanstans.",
         "description": "Shown in the popup for special browser pages such as the New Tab page and 'about:' pages."
     },
     "popup_disabled_site_header": {
         "message": "Privacy Badger är inaktiverad på denna webbplats",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Gränssnittskomponentsersättning",
+    "disabled_sites": {
+        "message": "Inaktiverade webbplatser",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "Vid blockering av sociala knappar och andra potentiellt användbara gränssnittskomponenter (video, ljud, kommentarer) kan Privacy Badger ersätta med klick-för-att-aktivera platshållare.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger är inaktiverat på följande webbplatser. Detta innebär att Privacy Badger inte blockerar någonting när du besöker de webbplatser som listas här, och det kommer inte att skicka signalerna Spåra inte eller Global sekretesstyrning.</p><p>Om du tror att Privacy Badger bryter en sida, eller om du vill tillåta att en viss webbplats delar eller säljer dina data, kan du skriva sidans domän i rutan nedan och klicka på knappen \"Lägg till domän\".</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "t.ex. www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Lägg till domän",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Ta bort valda",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Lägg till en giltig domän eller webbadress",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "Följande inställning har upphört att gälla och kommer att tas bort i en framtida uppdatering av Privacy Badger:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Besök $LINK$ för mer information.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Jag förstår",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/tr/messages.json b/src/_locales/tr/messages.json
index 876576d5..7f8ce290 100644
--- a/src/_locales/tr/messages.json
+++ b/src/_locales/tr/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger görünmez takipçileri engellemeyi otomatik olarak öğrenir.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Bu site için devre dışı bırak",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Bu site için etkinleştir",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Report broken site",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "versiyon $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "Engellendi $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "<a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>Üçüncü parti adreslerin</a> <a target='_blank' href='https://www.eff.org/dnt-policy'>EFF'nin Do Not Track poliçesine</a> uyup uymadığını kontrol et",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Lütfen geçerli bir adres veya URL girin.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "EFF'ye bağış yap",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Bağışta bulunarak ve araçlarımıza desteğinizi paylaşarak bize yardım edin",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "Bu adres sizi takip etmeme sözü veriyor.",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Bu domainin engellenmesinin websiteleri bozduğu biliniyor",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Block entirely",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Block cookies",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Allow",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "Bu domainin kontrolünü Privacy Badger'a bırakmak için tıklayın",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "Hata Rapor Et",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "örn. www.adres.com, *.adres.net, adres.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Bu adresin çerez kullanmasını engellemek için buraya tıkla",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "engellenmiş",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "İçeri aktar",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Şu widgetları değiştirme:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Widget Değiştirme",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "Sosyal butonları ve diğer potansiyel olarak yararlı (video, ses, yorum) widgetlarını engellerken, Privacy Badger onları tıkla-çalıştır yer tutucularla değiştirebilir.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "Widget değiştirmesini aç",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Widget İstisnaları",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Şu widgetları değiştirme:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Site İstisnaları",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Bu sitelerde her zaman widgetlara izin ver:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "Sizi izlemiyor gibi görünen adresleri göster",
@@ -162,11 +212,11 @@
         "description": "Label for a text input box on the Tracking Domains options page tab."
     },
     "options_learn_setting": {
-        "message": "Learn to block new trackers from your browsing",
+        "message": "Gezintinizden yeni takipçileri engellemeyi öğren",
         "description": "Checkbox label on the general settings page"
     },
     "local_learning_warning": {
-        "message": "Enabling learning may make you more identifiable to websites",
+        "message": "Öğrenmeyi etkinleştirmek sizi websitelere daha tanımlanabilir hale getirebilir",
         "description": "Tooltip on the general settings page"
     },
     "options_incognito_setting": {
@@ -178,15 +228,15 @@
         "description": "Tooltip on the general settings page"
     },
     "learning_prompt_text1": {
-        "message": "Privacy Badger will no longer learn from your browsing by default.",
+        "message": "Privacy Badger artık varsayılan olarak gezintinizden öğrenim yapmayacak.",
         "description": "First part of a prompt to visit the blog."
     },
     "learning_prompt_text2": {
-        "message": "Click below to learn more.",
+        "message": "Daha fazla bilgi için aşağıya tıklayın.",
         "description": "Second part of a prompt to visit the blog."
     },
     "learning_prompt_button": {
-        "message": "Learn how Privacy Badger is changing",
+        "message": "Privacy Badger'ın nasıl değiştiğini öğrenin",
         "description": "Button text, part of a prompt to visit the blog."
     },
     "show_counter_checkbox": {
@@ -198,23 +248,15 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "Lütfen 'Privacy Badger bu siteyi bozdu mu' butonuna tıklamayı unutmayın. Gizliliğinize önem veriyoruz ve bu yüzden otomatik raporlar göndermiyoruz.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Please don't forget to click on 'Report broken site'. We respect your privacy so we don't send automatic reports.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Privacy Badger Seçenekleri",
         "description": ""
     },
     "report_terms": {
-        "message": "This will automatically send the following information to EFF: the page you're currently visiting, your browser version, the version of Privacy Badger, and the state of all of the sliders on this page.",
-        "description": ""
-    },
-    "whitelisted_domains": {
-        "message": "Engellenmiş Siteler",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Bu Site İçin Privacy Badger'ı Etkinleştir",
+        "message": "Bu, şu bilgileri otomatik olarak EFF'ye gönderecektir: şu an ziyaret ettiğiniz sayfa, tarayıcı sürümünüz, Privacy Badger sürümü, ve bu sayfadaki tüm kaydırıcıların durumu.",
         "description": ""
     },
     "options_domain_type_filter": {
@@ -274,31 +316,17 @@
         "description": "This is an options page tab heading."
     },
     "options_privacy_settings": {
-        "message": "Privacy",
+        "message": "Gizlilik",
         "description": "Subheading on the general settings options page."
     },
     "options_advanced_settings": {
-        "message": "Advanced",
+        "message": "Gelişmiş",
         "description": "Subheading on the general settings options page."
     },
     "intro_next_button": {
         "message": "Tura çık",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Bu adresi tamamen engellemek için tıklayın",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "versiyon $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "Şuradan çerezler engellendi: $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "kısmen engellenmiş",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Anladım; yine de lütfen bana takip eden adreslerin listesini göster",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Privacy Badger'ı yüklediğiniz için teşekkürler!",
         "description": ""
@@ -325,20 +349,16 @@
         "message": "İçeri aktarmak için bir dosya seçin.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "Privacy Badger bu siteyi bozdu mu? Bizi bilgilendirin!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "Çerezleri engellemek için kaydırıcıyı ortalayın",
         "description": ""
     },
     "intro_learns": {
-        "message": "Learns automatically",
+        "message": "Otomatikmen öğrenir",
         "description": "Intro page paragraph heading"
     },
     "intro_learns_paragraph": {
-        "message": "Instead of keeping lists of what to block, Privacy Badger automatically discovers trackers based on their behavior.",
+        "message": "Neleri engelleyeceğinin listesini tutmak yerine, Privacy Badger takipçileri davranışlarına bakarak otomatik olarak keşfeder.",
         "description": "Intro page paragraph"
     },
     "intro_beyond_ads": {
@@ -346,7 +366,7 @@
         "description": "Intro page paragraph heading."
     },
     "intro_beyond_ads_paragraph": {
-        "message": "Invisible tracking happens in all sorts of ways; ads are just the visible tip of the iceberg. Privacy Badger sends the <a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control signal</a>, to opt you out of data sharing and selling, and the <a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track signal</a> to tell companies not to track you. If they ignore your wishes, Privacy Badger will learn to block them—whether they are advertisers or trackers of other kinds.",
+        "message": "Görünmez takip etme pek çok yolla gerçekleşir; reklamlar buzdağının sadece görünen kısmıdır. Privacy Badger <a href='https://globalprivacycontrol.org/' target='_blank'>Global Gizlilik Kontrol sinyali</a> göndererek sizi veri paylaşım ve satışından geri çeker, ve <a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track sinyali</a> göndererek şirektlere sizi takip etmemesini söyler. Eğer isteklerinizi yerine getirmezlerse, Privacy Badger onları engellemeyi öğrenir - ister reklam ister başka türlü bir takipçi olsun.",
         "description": "Intro page paragraph."
     },
     "report_close": {
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "DNT uyumlu",
+        "message": "compliant with EFF's DNT policy",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "Gizlilik bir takım sporudur!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "Buradaki hiçbir şeyi düzenlemeniz gerekmez.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "hepsi",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -390,27 +406,47 @@
         "description": ""
     },
     "options_enable_dnt_checkbox": {
-        "message": "Send websites the \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>\" and \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track</a>\" signals",
+        "message": "Websitelere \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Gizlilik Kontrolü</a>\" ve \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track</a>\" sinyali gönder",
         "description": "Checkbox label for enabling/disabling the Sec-GPC and DNT signals, found on the general settings page"
     },
     "options_disable_google_nav_error_service": {
-        "message": "Disable sending web addresses you visit to Google. This disables suggestions for similar pages when a page can't be found.",
-        "description": "Checkbox label found on the general settings page"
+        "message": "Google'a ziyaret ettiğiniz web adreslerini göndermeyi devre dışı bırak. Bu, bir sayfa bulunamadığında benzer sayfa önermeyi devre dışı bırakır.",
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Disable hyperlink auditing",
+        "message": "Sitelerin hangi linklere tıkladığınızı takip etmesini önleyin (\"hyperlink denetleme\")",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Prefetchingi devre dışı bırak",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Google'ın Federated Learning of Cohorts (FLoC)'unu engelleyin",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "kullanıcı kontrolünde",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Link takip koruması aktif",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Bazı siteler, çıkmak için bir linke tıkladığınızda $LINK_START$sizi takip etmek için link takip etme kullanır$LINK_END$. Privacy Badger, bu websitede bunun gibi takip etme özelliklerini kaldırır.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
-        "message": "$COUNT$ potential $LINK_START$trackers$LINK_END$ blocked",
+        "message": "$COUNT$ potansiyel $LINK_START$takipçi$LINK_END$ engellendi",
         "description": "Popup message shown when at least one tracker was blocked.",
         "placeholders": {
             "count": {
@@ -427,7 +463,7 @@
         }
     },
     "popup_instructions_no_trackers": {
-        "message": "No $LINK_START$trackers$LINK_END$ blocked",
+        "message": "Hiçbir $LINK_START$takipçi$LINK_END$ engellenmedi",
         "description": "Text shown in the popup when there are no trackers on the page.",
         "placeholders": {
             "link_start": {
@@ -440,35 +476,23 @@
         }
     },
     "popup_blocked": {
-        "message": "There are no third party resources on this page. Hooray for privacy!",
+        "message": "Bu sayfada hiçbir üçüncü parti kaynağı yok. Yaşasın gizlilik!",
         "description": "Text shown in the popup when showing non-tracking domains is enabled, and there are no third-party domains on the page."
     },
     "intro_by_eff": {
         "message": "Bir Electronic Frontier Foundation projesi",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Adres Ekle",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Bir adrese izin vermek için kaydırıcıyı sağa kaydırın",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Bu Site İçin Privacy Badger'ı Devre Dışı Bırak",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Bu adrese izin vermek için tıklayın",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privacy Badger siz istemediğiniz sürece gezintiniz hakkında ASLA veri paylaşmaz.",
         "description": "Intro page paragraph."
     },
     "options_domain_list_trackers": {
-        "message": "Privacy Badger has decided to block $COUNT$ potential $TRACKER_LINK_START$tracking domains$TRACKER_LINK_END$ so far",
+        "message": "Privacy Badger, şu ana kadar $COUNT$ potansiyel $TRACKER_LINK_START$takipçi adresi$TRACKER_LINK_END$ engellemeye karar verdi",
         "description": "Shown on the Tracking Domains tab on the options page after Privacy Badger learned to block one or more domains",
         "placeholders": {
             "count": {
@@ -488,10 +512,6 @@
         "message": "Privacy Badger hiçbir <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>takipçi adres</a> algılamadı. Gezinmeye devam!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privacy Badger, bir takipçiyi üç farklı websitesinde gördükten sonra engellemeye başlar.",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "Hatayı aşağıda kısaca özetleyin.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Seçilenleri kaldır",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "Privacy Badger kullandığınızda <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a>'a ve gizlilik için savaşan milyonlarca diğer kullanıcıya katılmış olursunuz. Biz çevrimiçi haklarınız için savaşan, kar amacı gütmeyen bir kuruluşuz. Bize katıldığınız için teşekkür ederiz!",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "Facebook'ta Paylaş",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger görünmez takipçileri engellemeyi otomatik olarak öğrenir.",
-        "description": ""
-    },
     "report_fail": {
         "message": "Tüh. Birşeyler ters gitti.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger bu $WIDGET$ widgetı değiştirdi",
+        "message": "Privacy Badger $START_ANCHOR_TAG$bu $WIDGET$ widgetı$END_ANCHOR_TAG$ değiştirdi",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Veri başarıyla buluta yüklendi.",
+        "message": "Veri başarıyla buluta yüklendi",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Veri, buluta yüklenemedi.",
+        "message": "Veri, buluta yüklenemedi",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -629,7 +649,7 @@
         "description": "Tooltip that comes up when you hover over the share button in the upper right corner of the popup."
     },
     "share_tracker_header": {
-        "message": "Privacy Badger blocked $COUNT$ potential trackers on $DOMAIN$:",
+        "message": "Privacy Badger $COUNT$ potansiyel takipçiyi $DOMAIN$ adresinde engelledi:",
         "description": "Header above the list of tracking domains in the share message.",
         "placeholders": {
             "count": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger), görünmez takipçileri otomatik olarak engellemeyi öğrenen bir tarayıcı eklentisidir. Privacy Badger, çevrimiçi haklarınız için savaşan, kar amacı gütmeyen bir kuruluş olan Electronic Frontier Foundation tarafından yapılmıştır.",
+        "message": "Privacy Badger (privacybadger.org), görünmez takipçileri otomatik olarak engellemeyi öğrenen bir tarayıcı eklentisidir. Privacy Badger, çevrimiçi haklarınız için savaşan, kar amacı gütmeyen bir kuruluş olan Electronic Frontier Foundation tarafından yapılmıştır.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "Privacy Badger bu sitede devre dışı bırakıldı",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Widget Değiştirme",
+    "disabled_sites": {
+        "message": "Engellenmiş Siteler",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "Sosyal butonları ve diğer potansiyel olarak yararlı (video, ses, yorum) widgetlarını engellerken, Privacy Badger onları tıkla-çalıştır yer tutucularla değiştirebilir.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger müteakip sitelerde devre dışı bırakıldı. Bu, Privacy Badger'ın bu listedeki sitelerde hiçbir şeyi engellemeyeceği anlamına gelir; aynı zamanda Do Not Track veya Global Gizlilik Kontrolü sinyallerini göndermez.</p><p>Eğer Privacy Badger'ın bir sayfayı bozduğunu düşünüyorsanız, veya belli bir sitenin verilerinizi paylaşmasına veya satmasına izin vermek istiyorsanız, sayfanın adresini aşağıdaki kutucuğa yazıp \"Adres Ekle\" butonuna tıklayın.</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "örn. www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Adres Ekle",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Seçilenleri kaldır",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Lütfen geçerli bir adres veya URL girin",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "The following setting has been deprecated and will be removed in a future Privacy Badger update:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Daha fazlasını öğrenmek için $LINK$ adresini ziyaret edin.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Anladım",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/uk/messages.json b/src/_locales/uk/messages.json
index 72621201..1ef670db 100644
--- a/src/_locales/uk/messages.json
+++ b/src/_locales/uk/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger автоматично навчається блокувати невидимі елементи стеження.",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "Вимкнути для цього сайту",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "Увімкнути для цього сайту",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "Report broken site",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "версія $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "Заблоковано $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "Перевіряти, чи <a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>сторонні домени</a> підтримують <a target='_blank' href='https://www.eff.org/dnt-policy'>політику EFF щодо відмови від стеження</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "Будь ласка, додайте дійсний домен чи URL-адресу.",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "Зробити внесок для EFF",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "Допоможіть нам, зробивши внесок і виявивши свою підтримку наших засобів",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "Цей домен обіцяє не стежити за вами",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "Блокування цього домену пошкоджує вебсайти",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "Заблокувати повністю",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "Заблокувати куки",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "Дозволити",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "Натисніть для повернення контролю над цим доменом до Privacy Badger",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "Звіт про помилку",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "наприклад, www.domain.com, *.domain.net, domain.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "Натисніть тут, щоб заблокувати встановлення куків з цього домена",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "заблоковані",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "Імпорт",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "Не замінювати такі віджети:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "Заміна віджетів",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "При блокуванні кнопок соціальних мереж та інших потенційно корисних віджетів (відео, аудіо, коментарі), Privacy Badger може замінювати їх спеціальними елементами з можливістю вибіркової активації.",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "Увімкнути заміну віджетів",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "Винятки віджетів",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "Не замінювати такі віджети:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "Винятки сайтів",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "Завжди дозволяти віджети на цих сайтах:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "Показувати домени, що не стежать за вами",
@@ -162,7 +212,7 @@
         "description": "Label for a text input box on the Tracking Domains options page tab."
     },
     "options_learn_setting": {
-        "message": "Навчитися блокувати нові елементи стеження під час перегляду",
+        "message": "Навчатися блокувати нові елементи стеження під час перегляду",
         "description": "Checkbox label on the general settings page"
     },
     "local_learning_warning": {
@@ -198,8 +248,8 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "Будь ласка, не забудьте натиснути на \"Privacy Badger пошкодив цей сайт? Повідомте нас!\". Ми поважаємо вашу приватність, і тому не надсилаємо автоматичні звіти.",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "Please don't forget to click on 'Report broken site'. We respect your privacy so we don't send automatic reports.",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Налаштування Privacy Badger",
@@ -209,14 +259,6 @@
         "message": "Ця дія призведе до автоматичного надсилання такої інформації до EFF: відвідувана сторінка, версія браузера, версія Privacy Badger, а також положення всіх перемикачів для цієї сторінки.",
         "description": ""
     },
-    "whitelisted_domains": {
-        "message": "Вимкнені сайти",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "Увімкнути Privacy Badger для цього сайту",
-        "description": ""
-    },
     "options_domain_type_filter": {
         "message": "Фільтр за типом:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
@@ -285,20 +327,6 @@
         "message": "Переглянути знайомство",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "Натисніть тут, щоб повністю заблокувати цей домен",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "версія $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "Заблоковано куки з $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "частково заблоковані",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "Я розумію. Будь ласка, все одно покажіть мені перелік доменів стеження",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "Дякуємо за встановлення Privacy Badger!",
         "description": ""
@@ -325,12 +349,8 @@
         "message": "Оберіть файл для імпорту.",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "Privacy Badger пошкодив цей сайт? Повідомте нас!",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
-        "message": "Встановіть перемикач посередині, щоб дозволити куки",
+        "message": "Встановіть перемикач посередині, щоб заблокувати куки",
         "description": ""
     },
     "intro_learns": {
@@ -346,7 +366,7 @@
         "description": "Intro page paragraph heading."
     },
     "intro_beyond_ads_paragraph": {
-        "message": "Invisible tracking happens in all sorts of ways; ads are just the visible tip of the iceberg. Privacy Badger sends the <a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control signal</a>, to opt you out of data sharing and selling, and the <a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track signal</a> to tell companies not to track you. If they ignore your wishes, Privacy Badger will learn to block them—whether they are advertisers or trackers of other kinds.",
+        "message": "Невидиме стеження відбувається різними способами; реклама — це лише вершина айсбергу. Privacy Badger надсилає <a href='https://globalprivacycontrol.org/' target='_blank'>сигнал Глобального контролю приватності (Global Privacy Control)</a>, щоб дати вам можливість відмовитися від обміну та продажу даних, а також <a href='https://www.eff.org/issues/do-not-track' target='_blank'>сигнал Не стежити (Do Not Track)</a>, щоб повідомити компанії не стежити за вами. Якщо вони ігнорують ваше бажання, Privacy Badger навчатиметься їх блокувати — чи то рекламодавці, чи інші елементи стеження.",
         "description": "Intro page paragraph."
     },
     "report_close": {
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "DNT-сумісні",
+        "message": "compliant with EFF's DNT policy",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "Приватність - це командна гра!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "Вам не слід щось тут змінювати.",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "всі",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -390,24 +406,44 @@
         "description": ""
     },
     "options_enable_dnt_checkbox": {
-        "message": "Send websites the \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>\" and \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track</a>\" signals",
+        "message": "Передавати вебсайтам сигнали \"<a href='https://globalprivacycontrol.org/' target='_blank'>Глобальний контроль приватності (Global Privacy Control)</a>\" та \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Не стежити (Do Not Track)</a>\"",
         "description": "Checkbox label for enabling/disabling the Sec-GPC and DNT signals, found on the general settings page"
     },
     "options_disable_google_nav_error_service": {
         "message": "Вимкнути надсилання відвідуваних веб адрес в Google. Ця дія вимикає пропозиції для схожих сторінок, коли сторінку не вдається знайти.",
-        "description": "Checkbox label found on the general settings page"
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "Вимкнути аудит гіперпосилань",
+        "message": "Не дозволяти сайтам стежити, на які посилання ви натискаєте (\"аудит гіперпосилань\")",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "Вимкнути попереднє завантаження",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "Вимкнути Federated Learning of Cohorts (FLoC) від Google",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "контрольовані користувачем",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "Захист від стеження посилань активний",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "Деякі вебсайти $LINK_START$використовують стеження посилань, щоб стежити за вами$LINK_END$ при переході за такими посиланнями. Privacy Badger вилучає стеження з таких посилань на цьому вебсайті.",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
         "message": "Заблоковано $COUNT$ потенційних $LINK_START$елементів стеження$LINK_END$",
@@ -447,22 +483,10 @@
         "message": "Проект Electronic Frontier Foundation",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "Додати домен",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "Змініть положення перемикача вправо, щоб дозволити домен",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "Вимкнути Privacy Badger для цього сайту",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "Натисніть тут, щоб дозволити цей домен",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privacy Badger НІКОЛИ нікому не передає ваші дані доки ви самі не захочете зробите це.",
         "description": "Intro page paragraph."
@@ -488,10 +512,6 @@
         "message": "Privacy Badger досі не виявив жодного <a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>домену стеження</a>. Продовжуйте перегляд!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privacy Badger починає блокування, як тільки він бачить, що один і той самий елемент стеження з'являється на трьох різних вебсайтах. Три попадання і він заблокований!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "Коротко опишіть помилку.",
         "description": ""
     },
-    "remove_button": {
-        "message": "Вилучити обрані",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "Використовуючи Privacy Badger, ви долучаєтесь до спільноти <a href='https://www.eff.org/' target='_blank'>Electronic Frontier Foundation</a> разом з мільйонами інших користувачів, які відстоюють приватність. Ми є некомерційною організацією, яка відстоює ваші права онлайн. Дякуємо, що приєдналися до нас!",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "Поширити на Facebook",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger автоматично навчається блокувати невидимі елементи стеження.",
-        "description": ""
-    },
     "report_fail": {
         "message": "Ой. Щось пішло не так.",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger замінив цей віджет $WIDGET$",
+        "message": "Privacy Badger замінив $START_ANCHOR_TAG$цей віджет $WIDGET$ $END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "Дані успішно вивантажено в хмарне сховище.",
+        "message": "Дані успішно вивантажено в хмарне сховище",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "Не вдалося вивантажити дані в хмарне сховище.",
+        "message": "Не вдалося вивантажити дані в хмарне сховище",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger) - це розширення для браузера, що автоматично навчається блокувати невидимі елементи стеження. Privacy Badger розроблено некомерційною організацією Electronic Frontier Foundation, яка відстоює ваші права онлайн.",
+        "message": "Privacy Badger (privacybadger.org) - це розширення для браузера, що автоматично навчається блокувати невидимі елементи стеження. Privacy Badger розроблено некомерційною організацією Electronic Frontier Foundation, яка відстоює ваші права онлайн.",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "Privacy Badger вимкнений на цьому сайті",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "Заміна віджетів",
+    "disabled_sites": {
+        "message": "Вимкнені сайти",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "При блокуванні кнопок соціальних мереж та інших потенційно корисних віджетів (відео, аудіо, коментарі), Privacy Badger може замінювати їх спеціальними елементами з можливістю вибіркової активації.",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger вимкнений для зазначених нижче сайтів. Це означає, що при відвідуванні перелічених тут сайтів Privacy Badger нічого не блокуватиме, а також не відправлятиме сигнали \"Не стежити\" (Do Not Track) чи \"Глобальний контроль приватності\" (Global Privacy Control).</p><p>Якщо ви вважаєте, що Privacy Badger пошкоджує сторінку, або бажаєте дозволити певному сайту ділитися та продавати ваші дані, ви можете ввести домени таких сторінок в полі внизу та натиснути кнопку \"Додати домен\".</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "наприклад, www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "Додати домен",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "Вилучити обрані",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "Будь ласка, додайте дійсний домен чи URL-адресу",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "The following setting has been deprecated and will be removed in a future Privacy Badger update:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "Для докладних відомостей відвідайте $LINK$.",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "Я розумію",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/zh_CN/messages.json b/src/_locales/zh_CN/messages.json
index d216921c..57c09a06 100644
--- a/src/_locales/zh_CN/messages.json
+++ b/src/_locales/zh_CN/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "隐私獾",
+        "description": ""
+    },
+    "description": {
+        "message": "隐私獾会自动学习去阻止不可见的追踪器。",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "在当前的网站上禁用",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "在当前的网站上启用",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "报告显示异常的网站",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "版本 $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "已屏蔽 $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -28,20 +58,16 @@
         }
     },
     "non_tracker_tip": {
-        "message": "隐私獾只检查第三方域名是否在使用 Cookies、HTML5 本地存储和 canvas 指纹来追踪你的浏览记录。 有些域名可能使用了隐私獾无法检测的追踪方式。",
+        "message": "隐私獾只检查第三方域名是否在使用 Cookie、HTML5 本地存储或 canvas 指纹来追踪您的浏览记录。 有些域名可能使用了隐私獾无法检测的追踪方式。",
         "description": ""
     },
     "options_dnt_policy_setting": {
         "message": "检查<a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>第三方域名</a>是否遵守<a target='_blank' href='https://www.eff.org/dnt-policy'>电子前哨基金会的“请勿追踪”政策</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "请添加一个有效的域名或者 URL。",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "向电子前哨基金会捐款",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "捐款并分享对我们工具的支持来帮助我们",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "这个域名承诺不会追踪你",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "已知屏蔽此域名会破坏网站",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "完全屏蔽",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "屏蔽 Cookies",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "允许",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "点击让隐私獾重新控制此域名",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "报告错误",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "例如 www.domain.com, *.domain.net, domain.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "点击这里屏蔽此域名的 Cookies",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "已屏蔽",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "导入",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "不要替换以下小部件:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "小部件替换",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "当屏蔽社交媒体按钮和其他可能有用的小部件(如音视频和评论区)时,隐私獾可以将他们替换成“点击以启用”的占位部件。",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "开启小部件替换",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "例外小部件",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "不要替换以下小部件:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "例外网站",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "总是在以下网站允许小部件:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "显示看起来没有追踪你的域名",
@@ -162,11 +212,11 @@
         "description": "Label for a text input box on the Tracking Domains options page tab."
     },
     "options_learn_setting": {
-        "message": "Learn to block new trackers from your browsing",
+        "message": "在您浏览时学习屏蔽新的追踪器",
         "description": "Checkbox label on the general settings page"
     },
     "local_learning_warning": {
-        "message": "Enabling learning may make you more identifiable to websites",
+        "message": "开启学习可能让您更容易被网站识别",
         "description": "Tooltip on the general settings page"
     },
     "options_incognito_setting": {
@@ -174,19 +224,19 @@
         "description": "Checkbox label on the general settings page"
     },
     "options_incognito_warning": {
-        "message": "启用“在隐私/无痕模式学习”后,你的隐私浏览历史可能会在电脑中留下痕迹。默认设置下,隐私獾会在隐私/无痕模式时屏蔽已知的追踪器,但不会学习新的追踪器。如果你平时经常使用隐私/无痕模式的话,你可能想要启用这个选项。",
+        "message": "启用“在隐私/无痕模式学习”后,你的隐私浏览历史可能会在电脑中留下痕迹。默认设置下,隐私獾会在隐私/无痕模式时屏蔽已知的追踪器,但不会学习新的追踪器。如果你平时经常使用隐私/无痕模式的话,您可能想要启用这个选项。",
         "description": "Tooltip on the general settings page"
     },
     "learning_prompt_text1": {
-        "message": "Privacy Badger will no longer learn from your browsing by default.",
+        "message": "隐私獾默认不会从您的浏览行为中学习。",
         "description": "First part of a prompt to visit the blog."
     },
     "learning_prompt_text2": {
-        "message": "Click below to learn more.",
+        "message": "点击下面以了解更多。",
         "description": "Second part of a prompt to visit the blog."
     },
     "learning_prompt_button": {
-        "message": "Learn how Privacy Badger is changing",
+        "message": "了解隐私獾的如何改变",
         "description": "Button text, part of a prompt to visit the blog."
     },
     "show_counter_checkbox": {
@@ -199,7 +249,7 @@
     },
     "intro_report_button": {
         "message": "请不要忘记点击“报告隐私獾导致的显示异常的网站”。我们尊重您的隐私,因此我们不自动发送报告。",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "隐私獾设置",
@@ -209,14 +259,6 @@
         "message": "这将会向电子前哨基金会发送这些信息:你当前正在访问的页面、浏览器版本、隐私獾版本以及本页面所有滑块的状态。",
         "description": ""
     },
-    "whitelisted_domains": {
-        "message": "已禁用的域名",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "在当前的网站上启用隐私獾",
-        "description": ""
-    },
     "options_domain_type_filter": {
         "message": "按类型过滤:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
@@ -285,20 +327,6 @@
         "message": "了解一下",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "点击这里以完全屏蔽此域名",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "版本 $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "屏蔽此网站的 cookies $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "部分被屏蔽",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "我明白;无论如何,请显示追踪域名列表",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "感谢你安装隐私獾!",
         "description": ""
@@ -325,20 +349,16 @@
         "message": "请选择一个你要导入的文件。",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "报告隐私獾导致的显示异常的网站",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "将滑块移至中间来屏蔽 cookies",
         "description": ""
     },
     "intro_learns": {
-        "message": "Learns automatically",
+        "message": "自动学习",
         "description": "Intro page paragraph heading"
     },
     "intro_learns_paragraph": {
-        "message": "Instead of keeping lists of what to block, Privacy Badger automatically discovers trackers based on their behavior.",
+        "message": "隐私獾不会保存一个屏蔽列表,而是根据追踪器的行为自动发现它们。",
         "description": "Intro page paragraph"
     },
     "intro_beyond_ads": {
@@ -346,7 +366,7 @@
         "description": "Intro page paragraph heading."
     },
     "intro_beyond_ads_paragraph": {
-        "message": "Invisible tracking happens in all sorts of ways; ads are just the visible tip of the iceberg. Privacy Badger sends the <a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control signal</a>, to opt you out of data sharing and selling, and the <a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track signal</a> to tell companies not to track you. If they ignore your wishes, Privacy Badger will learn to block them—whether they are advertisers or trackers of other kinds.",
+        "message": "不可见的追踪以各种形式发生;广告只是可见的冰山一角。隐私獾向追踪器发送<a href='https://globalprivacycontrol.org/' target='_blank'>“全局隐私控制”信号</a>以让您拒绝数据分享和贩卖,同时发送<a href='https://www.eff.org/issues/do-not-track' target='_blank'>“请勿追踪”信号</a>,告诉公司以停止追踪您。如果它们拒绝您的意愿,您的隐私獾将会学着阻止它们——无论它们是广告、追踪器或是其他的东西。",
         "description": "Intro page paragraph."
     },
     "report_close": {
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "DNT(请勿追踪) 兼容",
+        "message": "符合电子前哨基金会的“请勿追踪”政策",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "保护隐私人人有责!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "你应该无需更改这里的任何东西。",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "全部",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -390,27 +406,47 @@
         "description": ""
     },
     "options_enable_dnt_checkbox": {
-        "message": "Send websites the \"<a href='https://globalprivacycontrol.org/' target='_blank'>Global Privacy Control</a>\" and \"<a href='https://www.eff.org/issues/do-not-track' target='_blank'>Do Not Track</a>\" signals",
+        "message": "向网站发送<a href='https://globalprivacycontrol.org/' target='_blank'>“全局隐私控制”</a>和<a href='https://www.eff.org/issues/do-not-track' target='_blank'>“请勿追踪”</a>信号",
         "description": "Checkbox label for enabling/disabling the Sec-GPC and DNT signals, found on the general settings page"
     },
     "options_disable_google_nav_error_service": {
         "message": "禁止向谷歌发送你访问的网址。如果此项开启,在找不到要访问的网页时将不会显示有关类似网页的建议。",
-        "description": "Checkbox label found on the general settings page"
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "禁用超链接审计",
+        "message": "禁止网站追踪您点击了哪些链接(“超链接审计”)",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "禁用预读取",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "禁用谷歌的同类群组联合学习(FLoC)",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "用户控制",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger is disabled on the following sites. This means that Privacy Badger will not block anything when you visit the sites listed here, and it will not send the Do Not Track or Global Privacy Control signals.</p><p>If you think Privacy Badger is breaking a page, or you would like to allow a particular site to share or sell your data, you can type that page's domain in the box below and click the \"Add domain\" button.</p><p>Alternatively, when you already have the page's tab selected, you can just click on Privacy Badger's button in the browser toolbar and then click the \"Disable\" button.</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "已启用链接追踪保护",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "一些网站在您点击链接离开网站时$LINK_START$使用链接追踪$LINK_END$来跟踪您。隐私獾移除这个网站上这种链接的追踪功能。",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
-        "message": "$COUNT$ potential $LINK_START$trackers$LINK_END$ blocked",
+        "message": "屏蔽了$COUNT$个潜在的$LINK_START$追踪器$LINK_END$",
         "description": "Popup message shown when at least one tracker was blocked.",
         "placeholders": {
             "count": {
@@ -427,7 +463,7 @@
         }
     },
     "popup_instructions_no_trackers": {
-        "message": "No $LINK_START$trackers$LINK_END$ blocked",
+        "message": "没有被屏蔽的$LINK_START$追踪器$LINK_END$",
         "description": "Text shown in the popup when there are no trackers on the page.",
         "placeholders": {
             "link_start": {
@@ -447,28 +483,16 @@
         "message": "一个电子前哨基金会的项目",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "添加域名",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "将滑块移至右边来允许一个域名",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "在当前的网站上禁用隐私獾",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "点击这里以允许这个域名",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "除非你主动分享,否则隐私獾永远都不会上传你的浏览记录。",
         "description": "Intro page paragraph."
     },
     "options_domain_list_trackers": {
-        "message": "Privacy Badger has decided to block $COUNT$ potential $TRACKER_LINK_START$tracking domains$TRACKER_LINK_END$ so far",
+        "message": "到现在为止,隐私獾决定屏蔽$COUNT$个潜在的$TRACKER_LINK_START$追踪域名$TRACKER_LINK_END$",
         "description": "Shown on the Tracking Domains tab on the options page after Privacy Badger learned to block one or more domains",
         "placeholders": {
             "count": {
@@ -488,10 +512,6 @@
         "message": "隐私獾还没有检测到任何<a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>追踪域名</a>。继续浏览吧!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "隐私獾",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "隐私獾会在三个网站发现同一个追踪器后开始屏蔽。三振出局!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "在下面简要描述发生的错误。",
         "description": ""
     },
-    "remove_button": {
-        "message": "删除所选",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "当您使用隐私獾,您就和<a href='https://www.eff.org/' target='_blank'>电子前哨基金会</a>和成千上万的其它用户一道共同保卫隐私。我们是为您在线权利奋斗的非营利性组织。感谢您加入我们!",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "分享到 Facebook",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "隐私獾会自动学习去阻止不可见的追踪器。",
-        "description": ""
-    },
     "report_fail": {
         "message": "哎呀。出错了。",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "隐私獾已经替换了这个$WIDGET$小工具",
+        "message": "隐私獾已经替换了$START_ANCHOR_TAG$这个 $WIDGET$ 小部件$END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "成功上传数据到云端。",
+        "message": "成功上传数据到云端",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "无法上传数据到云端。",
+        "message": "无法上传数据到云端",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -629,7 +649,7 @@
         "description": "Tooltip that comes up when you hover over the share button in the upper right corner of the popup."
     },
     "share_tracker_header": {
-        "message": "Privacy Badger blocked $COUNT$ potential trackers on $DOMAIN$:",
+        "message": "隐私獾在$DOMAIN$屏蔽了$COUNT$个潜在的追踪器:",
         "description": "Header above the list of tracking domains in the share message.",
         "placeholders": {
             "count": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "隐私獾(www.eff.org/privacybadger)是一款浏览器扩展,它能够自动学习去屏蔽不可见的追踪器。隐私獾由一家为您在线权利而战的非营利组织——电子前哨基金会创造。",
+        "message": "隐私獾(privacybadger.org)是一款浏览器扩展,它能够自动学习去屏蔽不可见的追踪器。隐私獾由一家为您在线权利而战的非营利组织——电子前哨基金会创造。",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "隐私獾在此站点被禁用",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "小部件替换",
+    "disabled_sites": {
+        "message": "已禁用的域名",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "当屏蔽社交媒体按钮和其他可能有用的小部件(如音视频和评论区)时,隐私獾可以将他们替换成“点击以启用”的占位部件。",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>隐私獾已在以下网站上禁用。您浏览这些网站时,隐私獾不会屏蔽任何东西,也不会发送请勿追踪或全局隐私控制信号。</p><p>如果您认为隐私獾破坏了某个页面,或者您希望允许一个特定的网站分享和贩卖您的数据,请在下面的文本框中输入那个页面的域名,然后点击“添加域名”按钮。</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "例如 www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "添加域名",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "删除所选",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "请添加一个有效的域名或者 URL",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "以下这些设置已经被弃用,并将在未来的隐私獾更新中被移除:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "访问 $LINK$ 以了解更多。",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "我明白",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/_locales/zh_TW/messages.json b/src/_locales/zh_TW/messages.json
index 717851da..4f19a51c 100644
--- a/src/_locales/zh_TW/messages.json
+++ b/src/_locales/zh_TW/messages.json
@@ -1,4 +1,34 @@
 {
+    "name": {
+        "message": "Privacy Badger",
+        "description": ""
+    },
+    "description": {
+        "message": "Privacy Badger 會自動學習並阻擋不可見的追蹤器。",
+        "description": ""
+    },
+    "popup_disable_for_site": {
+        "message": "對此網站停用",
+        "description": "Button in the popup."
+    },
+    "popup_enable_for_site": {
+        "message": "對此網站啟用",
+        "description": "Button in the popup, visible if Privacy Badger is disabled on the current site"
+    },
+    "report_broken_site": {
+        "message": "回報損壞的網站",
+        "description": "Button in the popup."
+    },
+    "version": {
+        "message": "版本 $VERSION_STRING$",
+        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
+        "placeholders": {
+            "version_string": {
+                "content": "$1",
+                "example": "2018.8.1"
+            }
+        }
+    },
     "badger_status_block": {
         "message": "封鎖 $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a red slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -35,13 +65,9 @@
         "message": "檢查<a target='_blank' href='https://www.eff.org/privacybadger/faq#What-is-a-third-party-tracker'>第三方網域</a>是否遵守<a target='_blank' href='https://www.eff.org/dnt-policy'>EFF 的 Do Not Track 政策</a>",
         "description": "Checkbox label on the general settings page"
     },
-    "invalid_domain": {
-        "message": "請新增有效的網域或 URL。",
-        "description": ""
-    },
     "donate_to_eff": {
         "message": "捐款給 EFF 電子前鋒基金會",
-        "description": "Button shown in the popup and on the intro page."
+        "description": "Link shown in the popup; also a button on the intro page"
     },
     "intro_donate_subheading": {
         "message": "透過捐款與分享對我們的工具的支援來協助我們",
@@ -57,12 +83,24 @@
     },
     "dnt_tooltip": {
         "message": "此網域承諾不會追蹤您",
-        "description": "Tooltip shown when you hover over a DNT-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
+        "description": "Tooltip shown when you hover over an EFF's DNT policy-compliant domain name in the list of domains in the popup or under the Tracking Domains tab on the options page."
     },
     "breakage_warning_tooltip": {
         "message": "已知封鎖此網域會破壞網站",
         "description": "Tooltip for a warning icon that appears when move a domain slider to 'red' (block) for a domain that was automatically set to 'yellow' (block cookies)."
     },
+    "domain_slider_block_tooltip": {
+        "message": "完全封鎖",
+        "description": "Tooltip shown when you hover over the leftmost part of a domain slider"
+    },
+    "domain_slider_cookieblock_tooltip": {
+        "message": "封鎖 cookies",
+        "description": "Tooltip shown when you hover over the center part of a domain slider"
+    },
+    "domain_slider_allow_tooltip": {
+        "message": "允許",
+        "description": "Tooltip shown when you hover over the rightmost part of a domain slider"
+    },
     "feed_the_badger_title": {
         "message": "點擊以將此網域的控制權還給 Privacy Badger",
         "description": "Tooltip shown when you hover over an undo arrow that appears when you move a domain slider away from its automatic setting."
@@ -83,14 +121,6 @@
         "message": "回報錯誤",
         "description": ""
     },
-    "whitelist_form_domain_input_placeholder": {
-        "message": "範例:www.domain.com, *.domain.net, domain.org",
-        "description": "Placeholder text for the Add domain input under the Disabled Sites tab on the options page."
-    },
-    "domain_slider_cookieblock_tooltip": {
-        "message": "在此點按以從設定 cookies 阻擋此網域",
-        "description": "Tooltip shown when you hover over the center part of a slider shown for each domain in the domain list."
-    },
     "options_domain_filter_block": {
         "message": "已阻擋",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -127,13 +157,33 @@
         "message": "匯入",
         "description": ""
     },
-    "options_hide_social_widgets": {
-        "message": "不要取代下列的小工具:",
-        "description": "Multiple selection box on the widget replacement tab"
+    "options_widget_replacement_tab": {
+        "message": "小工具取代",
+        "description": "Options page tab heading"
+    },
+    "options_widget_replacement_desc": {
+        "message": "當阻擋社群媒體按鈕與其他可能有用(影片、音訊、留言)的小工具時,Privacy Badger 可以使用點擊啟用的按鈕來取代它們。",
+        "description": "Introduction to the Widget Replacement tab on the options page"
     },
     "options_social_widgets_checkbox": {
         "message": "啟用小工具取代",
-        "description": "Checkbox label on the widget replacement tab"
+        "description": "Checkbox label on the Widget Replacement tab"
+    },
+    "options_widget_exceptions_header": {
+        "message": "小工具異常",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_hide_social_widgets": {
+        "message": "不要取代下列的小工具:",
+        "description": "Label for a form on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_header": {
+        "message": "網站異常",
+        "description": "Header text on the Widget Replacement tab"
+    },
+    "options_widget_site_exceptions_label": {
+        "message": "一律在這些網站上允許小工具:",
+        "description": "Label for a form on the Widget Replacement tab"
     },
     "options_show_nontracking_domains_checkbox": {
         "message": "顯示似乎未在追蹤您的網域",
@@ -198,8 +248,8 @@
         "description": "Tooltip that comes up when you hover over the 'tracking domains' link under the Tracking Domains tab on the options page."
     },
     "intro_report_button": {
-        "message": "請不要忘記點按「回報 Privacy Badger 導致顯示異常的網站」。我們尊重您的隱私,所以我們不會自動傳送回報。",
-        "description": "Intro page paragraph. The quoted message ('Did Privacy Badger break this site') should match the first part of the translation for the 'report_broken_site' message."
+        "message": "請不要忘記點擊「回報損壞的網站」。我們尊重您的隱私,所以不會自動傳送回報。",
+        "description": "Intro page paragraph. The quoted message ('Report broken site') should match the translation for the 'report_broken_site' message."
     },
     "options_title": {
         "message": "Privacy Badger 設定",
@@ -209,14 +259,6 @@
         "message": "將會自動回報下列資訊給 EFF 電子前鋒基金會:您目前造訪的頁面、瀏覽器版本、Privacy Badger 版本,以及此頁面所有滾動條的狀態。",
         "description": ""
     },
-    "whitelisted_domains": {
-        "message": "停用的網站",
-        "description": "This is an options page tab heading."
-    },
-    "popup_enable_for_site": {
-        "message": "在目前網站開啟 Privacy Badger",
-        "description": ""
-    },
     "options_domain_type_filter": {
         "message": "以類型過濾:",
         "description": "Label for a dropdown control on the Tracking Domains options page tab."
@@ -285,20 +327,6 @@
         "message": "看看教學",
         "description": "Intro page welcome button."
     },
-    "domain_slider_block_tooltip": {
-        "message": "點按此處以完全阻擋此網域",
-        "description": "Tooltip shown when you hover over the leftmost part of a slider shown for each domain in the domain list."
-    },
-    "version": {
-        "message": "版本 $VERSION_STRING$",
-        "description": "Shows Privacy Badger's version in the popup. For example, \"version 2018.8.1\".",
-        "placeholders": {
-            "version_string": {
-                "content": "$1",
-                "example": "2018.8.1"
-            }
-        }
-    },
     "badger_status_cookieblock": {
         "message": "封鎖此網站的 cookie $DOMAIN$",
         "description": "Tooltip shown when you hover over a domain name with a yellow slider in the list of domains in the popup or under the Tracking Domains tab on the options page.",
@@ -313,10 +341,6 @@
         "message": "部份阻擋",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "show_tracking_domains_acknowledgement": {
-        "message": "我了解;無論如何都顯示追蹤網域清單給我",
-        "description": "Acknowledgement shown next to the checkbox required to reveal the tracking domains list on the options page."
-    },
     "firstRun_title": {
         "message": "感謝您安裝 Privacy Badger!",
         "description": ""
@@ -325,10 +349,6 @@
         "message": "請選擇要匯入的檔案",
         "description": ""
     },
-    "report_broken_site": {
-        "message": "回報 Privacy Badger 導致顯示異常的網站",
-        "description": "Button in the popup."
-    },
     "tooltip_cookieblock": {
         "message": "將滾動條滑到中間封鎖該網域的 cookie",
         "description": ""
@@ -358,7 +378,7 @@
         "description": ""
     },
     "options_domain_filter_dnt": {
-        "message": "相容於 DNT",
+        "message": "符合 EFF 的 DNT 政策",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
     "popup_help_button": {
@@ -373,10 +393,6 @@
         "message": "隱私是一場團隊比賽!",
         "description": "Part of the 'donate' section on the intro page."
     },
-    "show_tracking_domains_message": {
-        "message": "您應該不需要修改這裡的任何東西。",
-        "description": "Shown above the acknowledgement checkbox required to reveal the tracking domains list on the options page. This is the second paragraph; the first paragraph is the message under the \"intro_not_an_adblocker_paragraph\" key."
-    },
     "options_domain_filter_all": {
         "message": "全部",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
@@ -395,19 +411,39 @@
     },
     "options_disable_google_nav_error_service": {
         "message": "停用將您造訪的網址傳送給 Google 的功能。這會在找不到網頁時停用相似頁面的建議。",
-        "description": "Checkbox label found on the general settings page"
+        "description": "(Chrome only) Checkbox label found on the general settings page"
     },
     "options_disable_hyperlink_auditing": {
-        "message": "停用超連結審核",
+        "message": "阻止網站追蹤您點擊的連結(「超連結審核」)",
         "description": "Checkbox label found on the general settings page"
     },
+    "options_disable_network_prediction": {
+        "message": "停用預讀功能",
+        "description": "Checkbox label found on the general settings page"
+    },
+    "options_disable_floc": {
+        "message": "停用 Google 的同類群組聯合學習 (FLoC)",
+        "description": "(Chrome only) Checkbox label on the general settings page."
+    },
     "options_domain_filter_user": {
         "message": "使用者控制",
         "description": "Dropdown control setting on the Tracking Domains options page tab."
     },
-    "disabled_for_these_domains": {
-        "message": "<p>Privacy Badger 已在下列的網站中停用。這代表了 Privacy Badger 將不會在您造訪在這裡列出來的網站時阻擋任何東西,其也將不會傳送「Do Not Track」或全域隱私控制訊號。</p><p>若您覺得 Privacy Badger 把頁面弄壞了,或您希望與特定的網站分享或販售您的資料,那麼您可以透過在下方的輸入框中輸入網域並點按「新增網域」按鈕來新增網域。</p><p>或者是當您已經選取了網頁的分頁,您也可以點選在瀏覽器工具列中的 Privacy Badger 按鈕並點選「停用」按鈕。</p>",
-        "description": ""
+    "popup_info_firstparty_protections": {
+        "message": "連結追蹤保護作用中",
+        "description": "Clickable status header text in the popup. Shown when Privacy Badger's link tracking protection is active (for example, on facebook.com)."
+    },
+    "popup_info_firstparty_description": {
+        "message": "每當您點擊連結離開網站時,部份網站就會$LINK_START$使用連結追蹤來追蹤您$LINK_END$。Privacy Badger 移除了網站上這類連結的追蹤。",
+        "description": "Text revealed by clicking on the link tracking protection header in the popup",
+        "placeholders": {
+            "link_start": {
+                "content": "<a href='https://privacybadger.org/#What-about-tracking-by-the-sites-I-actively-visit%2c-like-NYTimes.com-or-Facebook.com' target='_blank'>"
+            },
+            "link_end": {
+                "content": "</a>"
+            }
+        }
     },
     "popup_instructions": {
         "message": "$COUNT$ 個潛在的 $LINK_START$追蹤器$LINK_END$ 已封鎖",
@@ -447,22 +483,10 @@
         "message": "EFF 電子前鋒基金會的專案",
         "description": ""
     },
-    "add_domain_button": {
-        "message": "新增網域",
-        "description": ""
-    },
     "tooltip_allow": {
         "message": "將滾動條滑到右邊允許該網域",
         "description": ""
     },
-    "popup_disable_for_site": {
-        "message": "在目前網站停用 Privacy Badger",
-        "description": "Button in the popup."
-    },
-    "domain_slider_allow_tooltip": {
-        "message": "點按此處以允許此網域",
-        "description": "Tooltip shown when you hover over the rightmost part of a slider shown for each domain in the domain list."
-    },
     "intro_privacy_note": {
         "message": "Privacy Badger 在您選擇分享關於您的瀏覽資料前,將永遠不會分享它們。",
         "description": "Intro page paragraph."
@@ -488,10 +512,6 @@
         "message": "Privacy Badger 未偵測到任何<a target='_blank' tabindex=-1 title='i18n_what_is_a_tracker' class='tooltip' href='https://www.eff.org/privacybadger#faq-What-is-a-third-party-tracker?'>追蹤網域</a>。繼續瀏覽!",
         "description": "Shown on the Tracking Domains tab on the options page if all tracking domains have been removed."
     },
-    "name": {
-        "message": "Privacy Badger",
-        "description": ""
-    },
     "intro_not_an_adblocker_paragraph": {
         "message": "Privacy Badger 將會在三個不同的網頁上發現同一個追蹤器時開始阻擋該追蹤器。三振出局!",
         "description": "Intro page paragraph."
@@ -504,10 +524,6 @@
         "message": "在下面簡要描述發生的錯誤。",
         "description": ""
     },
-    "remove_button": {
-        "message": "刪除所選",
-        "description": "This is the label for the 'Remove selected' buttons."
-    },
     "intro_donate1": {
         "message": "當您使用 Privacy Badger,您就會加入<a href='https://www.eff.org/' target='_blank'>電子前鋒基金會 (EFF)</a>與其他數百萬個使用者一同為隱私而戰。我們是一個為您的線上權利而戰的非營利組織。感謝您加入我們!",
         "description": "Part of the 'donate' section on the intro page."
@@ -548,10 +564,6 @@
         "message": "在 Facebook 上分享",
         "description": "Text that comes up when you hover over the social sharing buttons on the intro page."
     },
-    "description": {
-        "message": "Privacy Badger 會自動學習並阻擋不可見的追蹤器。",
-        "description": ""
-    },
     "report_fail": {
         "message": "哎呀。出錯了。",
         "description": ""
@@ -567,12 +579,20 @@
         }
     },
     "widget_placeholder_pb_has_replaced": {
-        "message": "Privacy Badger 已經取代了 $WIDGET$ 小工具",
+        "message": "Privacy Badger 已經取代了 $START_ANCHOR_TAG$ $WIDGET$ 小工具$END_ANCHOR_TAG$",
         "description": "Text shown inside a replaced widget's placeholder. For example, \"Privacy Badger has replaced this Google reCAPTCHA widget\". See also the social_tooltip_pb_has_replaced message.",
         "placeholders": {
             "widget": {
                 "content": "$1",
                 "example": "Google reCAPTCHA"
+            },
+            "start_anchor_tag": {
+                "content": "$2",
+                "example": "<a href='https://vimeo.com/76979871'>"
+            },
+            "end_anchor_tag": {
+                "content": "$3",
+                "example": "</a>"
             }
         }
     },
@@ -609,11 +629,11 @@
         "description": "Message displayed to the user after failing to download cloud data."
     },
     "upload_cloud_success": {
-        "message": "雲端資料上傳成功。",
+        "message": "資料已成功上傳至雲端",
         "description": "Message displayed to the user after successfully uploading local data."
     },
     "upload_cloud_failure": {
-        "message": "雲端資料無法上傳。",
+        "message": "資料無法上傳至雲端",
         "description": "Message displayed to the user after failing to upload local data."
     },
     "download_cloud_no_data": {
@@ -643,7 +663,7 @@
         }
     },
     "share_base_message": {
-        "message": "Privacy Badger (www.eff.org/privacybadger) 是一個會自動學習阻擋不可見追蹤器的瀏覽器附加元件。Privacy Badger 由電子前鋒基金會製作,它是一個為您的線上權利戰鬥的非營利組織。",
+        "message": "Privacy Badger (privacybadger.org) 是一個會自動學習阻擋不可見追蹤器的瀏覽器附加元件。Privacy Badger 由電子前鋒基金會製作,它是一個為您的線上權利戰鬥的非營利組織。",
         "description": "The base message that is always included in the share message."
     },
     "copy_button_initial": {
@@ -666,12 +686,46 @@
         "message": "Privacy Badger 已對此網站停用",
         "description": "Shown in the popup on disabled sites."
     },
-    "options_widget_replacement_tab": {
-        "message": "小工具取代",
+    "disabled_sites": {
+        "message": "停用的網站",
         "description": "Options page tab heading"
     },
-    "options_widget_replacement_desc": {
-        "message": "當阻擋社群媒體按鈕與其他可能有用(影片、音訊、留言)的小工具時,Privacy Badger 可以使用點擊啟用的按鈕來取代它們。",
-        "description": "Introduction to the Widget Replacement tab on the options page."
+    "disabled_for_these_domains": {
+        "message": "<p>Privacy Badger 已在下列的網站中停用。這代表了 Privacy Badger 將不會在您造訪在這裡列出來的網站時阻擋任何東西,其也將不會傳送「Do Not Track」或全域隱私控制訊號。</p><p>若您覺得 Privacy Badger 把頁面弄壞了,或您希望與特定的網站分享或販售您的資料,那麼您可以透過在下方的輸入框中輸入網域並點按「新增網域」按鈕來新增網域。</p>",
+        "description": "Shown on the options page under the Disabled Sites tab. 'Add domain' should match the 'add_domain_button' message."
+    },
+    "allowlist_domain_input_placeholder": {
+        "message": "範例:www.example.com, *.example.net, example.org",
+        "description": "Placeholder for a text input under the Disabled Sites tab on the options page"
+    },
+    "add_domain_button": {
+        "message": "新增網域",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "remove_button": {
+        "message": "刪除所選",
+        "description": "Button found under the Disabled Sites tab on the options page"
+    },
+    "invalid_domain": {
+        "message": "請新增有效的網域或 URL",
+        "description": "Error shown when attempting to add an invalid domain to the list of disabled sites"
+    },
+    "deprecated_setting": {
+        "message": "以下設定已被棄用,並將於未來的 Privacy Badger 更新中被移除:",
+        "description": "Followed by the options_webrtc_setting message ('Prevent WebRTC...')"
+    },
+    "learn_more_link": {
+        "message": "請見 $LINK$ 以取得更多資訊。",
+        "description": "Reusable 'learn more link' message",
+        "placeholders": {
+            "link": {
+                "content": "$1",
+                "example": "<a href='https://example.com'>example.com</a>"
+            }
+        }
+    },
+    "acknowledgement_action": {
+        "message": "我了解",
+        "description": "Acknowledgement button text"
     }
 }
\ No newline at end of file
diff --git a/src/data/cname_domains.json b/src/data/cname_domains.json
new file mode 100644
index 00000000..52d5dbad
--- /dev/null
+++ b/src/data/cname_domains.json
@@ -0,0 +1,14017 @@
+{
+  "a8.01cloud.jp": "trck.a8.net",
+  "a8.cyclemarket.jp": "trck.a8.net",
+  "a8.denki-koji.work": "trck.a8.net",
+  "a8.denwa-hikari.com": "trck.a8.net",
+  "a8.eonet.jp": "trck.a8.net",
+  "a8.erasutamo.onlinestaff.jp": "trck.a8.net",
+  "a8.fit-theme.com": "trck.a8.net",
+  "a8.geo-online.co.jp": "trck.a8.net",
+  "a8.haptic.co.jp": "trck.a8.net",
+  "a8.hitohana.tokyo": "trck.a8.net",
+  "a8.i-netservice.net": "trck.a8.net",
+  "a8.instokyo.com": "trck.a8.net",
+  "a8.lavie-official.jp": "trck.a8.net",
+  "a8.lens-labo.com": "trck.a8.net",
+  "a8.looop-denki.com": "trck.a8.net",
+  "a8.makeshop.jp": "trck.a8.net",
+  "a8.nosh.jp": "trck.a8.net",
+  "a8.payse.basefood.co.jp": "trck.a8.net",
+  "a8.print-netsquare.com": "trck.a8.net",
+  "a8.remix-denki.com": "trck.a8.net",
+  "a8.sakuratravel.jp": "trck.a8.net",
+  "a8.sennendo.jp": "trck.a8.net",
+  "a8.shopserve.jp": "trck.a8.net",
+  "a8.ssl.aispr.jp": "trck.a8.net",
+  "a8.tone.ne.jp": "trck.a8.net",
+  "a8.tour-sys.com": "trck.a8.net",
+  "a8.uqmobile-shop.jp": "trck.a8.net",
+  "a8.virus-gekitai.com": "trck.a8.net",
+  "a8.web-hikari.net": "trck.a8.net",
+  "a8.webist-cri.com": "trck.a8.net",
+  "a8.yuzen-official.com": "trck.a8.net",
+  "a8aspconv.xn--biglobe-kc9k.com": "trck.a8.net",
+  "a8aspconv.xn--ocn-ws1e.jp": "trck.a8.net",
+  "a8click.you-up.com": "trck.a8.net",
+  "a8clk.app.offerbox.jp": "trck.a8.net",
+  "a8clk.apply-shop.menu.inc": "trck.a8.net",
+  "a8clk.asp.jcity.co.jp": "trck.a8.net",
+  "a8clk.autoc-one.jp": "trck.a8.net",
+  "a8clk.bstyle.store": "trck.a8.net",
+  "a8clk.camerakaitori.jp": "trck.a8.net",
+  "a8clk.campaigns.speed-kaitori.jp": "trck.a8.net",
+  "a8clk.chat-wifi.site": "trck.a8.net",
+  "a8clk.cv.mensfashion.cc": "trck.a8.net",
+  "a8clk.cv.warau.jp": "trck.a8.net",
+  "a8clk.dospara.co.jp": "trck.a8.net",
+  "a8clk.hurugicom.jp": "trck.a8.net",
+  "a8clk.justy-consul.com": "trck.a8.net",
+  "a8clk.kaitori-beerecords.jp": "trck.a8.net",
+  "a8clk.kaitori-retrog.jp": "trck.a8.net",
+  "a8clk.kenkoukazoku.co.jp": "trck.a8.net",
+  "a8clk.life.bang.co.jp": "trck.a8.net",
+  "a8clk.low-ya.com": "trck.a8.net",
+  "a8clk.macpaw.com": "trck.a8.net",
+  "a8clk.manage.conoha.jp": "trck.a8.net",
+  "a8clk.minnadeooyasan.com": "trck.a8.net",
+  "a8clk.netowl.jp": "trck.a8.net",
+  "a8clk.order.lpio.jp": "trck.a8.net",
+  "a8clk.osoujihonpo.com": "trck.a8.net",
+  "a8clk.petitjob.jp": "trck.a8.net",
+  "a8clk.point-land.net": "trck.a8.net",
+  "a8clk.rarejob.com": "trck.a8.net",
+  "a8clk.rental.geo-online.co.jp": "trck.a8.net",
+  "a8clk.reserve.retty.me": "trck.a8.net",
+  "a8clk.shokutakubin.com": "trck.a8.net",
+  "a8clk.shop.sunsorit.co.jp": "trck.a8.net",
+  "a8clk.skima.jp": "trck.a8.net",
+  "a8clk.skynet-c.jp": "trck.a8.net",
+  "a8clk.teacon.jp": "trck.a8.net",
+  "a8clk.titivate.jp": "trck.a8.net",
+  "a8clk.wi-ho.net": "trck.a8.net",
+  "a8clk.www.cledepeau-beaute.com": "trck.a8.net",
+  "a8clk.www.nortonstore.jp": "trck.a8.net",
+  "a8clk.xserver.ne.jp": "trck.a8.net",
+  "a8clk.yourmystar.jp": "trck.a8.net",
+  "a8cv.464981.com": "trck.a8.net",
+  "a8cv.550909.com": "trck.a8.net",
+  "a8cv.a-resort.jp": "trck.a8.net",
+  "a8cv.akihabara-x.jp": "trck.a8.net",
+  "a8cv.all-plan.co.jp": "trck.a8.net",
+  "a8cv.amiami.jp": "trck.a8.net",
+  "a8cv.araiba.net": "trck.a8.net",
+  "a8cv.bettysbeauty.jp": "trck.a8.net",
+  "a8cv.brandeuse.jp": "trck.a8.net",
+  "a8cv.broadbandservice.jp": "trck.a8.net",
+  "a8cv.busbookmark.jp": "trck.a8.net",
+  "a8cv.coopnet.or.jp": "trck.a8.net",
+  "a8cv.direct-teleshop.jp": "trck.a8.net",
+  "a8cv.english-bootcamp.com": "trck.a8.net",
+  "a8cv.entry.renet.jp": "trck.a8.net",
+  "a8cv.greed-island.ne.jp": "trck.a8.net",
+  "a8cv.housingbazar.jp": "trck.a8.net",
+  "a8cv.ishibashi.co.jp": "trck.a8.net",
+  "a8cv.minana-jp.com": "trck.a8.net",
+  "a8cv.minnano-eikaiwa.com": "trck.a8.net",
+  "a8cv.modern-deco.jp": "trck.a8.net",
+  "a8cv.omni7.jp": "trck.a8.net",
+  "a8cv.online.bell-road.com": "trck.a8.net",
+  "a8cv.p-antiaging.com": "trck.a8.net",
+  "a8cv.sakura-forest.com": "trck.a8.net",
+  "a8cv.shibarinashi-wifi.jp": "trck.a8.net",
+  "a8cv.shop.matsuo1956.jp": "trck.a8.net",
+  "a8cv.signalift.com": "trck.a8.net",
+  "a8cv.store.alpen-group.jp": "trck.a8.net",
+  "a8cv.try-fs.com": "trck.a8.net",
+  "a8cv.unito.life": "trck.a8.net",
+  "a8cv.untenmenkyo-yi.com": "trck.a8.net",
+  "a8cv.workman.jp": "trck.a8.net",
+  "a8cv.www.bedstyle.jp": "trck.a8.net",
+  "a8cv.ygm-clinic.or.jp": "trck.a8.net",
+  "a8cv.you-shoku.net": "trck.a8.net",
+  "a8cv2.hoken-choice.com": "trck.a8.net",
+  "a8cventry.uqwimax.jp": "trck.a8.net",
+  "a8onlineshop.trendmicro.co.jp": "trck.a8.net",
+  "a8sup.chapup.jp": "trck.a8.net",
+  "a8trck.aisatsujo.jp": "trck.a8.net",
+  "a8trck.worldone.to": "trck.a8.net",
+  "a8trk.www.std-lab.jp": "trck.a8.net",
+  "acv.cmf-hikari.net": "trck.a8.net",
+  "afi.ssl.gmobb.jp": "trck.a8.net",
+  "aficv.finebase.jp": "trck.a8.net",
+  "analytics.villagehouse.jp": "trck.a8.net",
+  "cart.matsuzaka-steak.com": "trck.a8.net",
+  "cv.a-internet.jp": "trck.a8.net",
+  "cv.drive-hikari.net": "trck.a8.net",
+  "cv.online.ysroad.co.jp": "trck.a8.net",
+  "shopping.cellpure.co.jp": "trck.a8.net",
+  "sub.booksdream-mypage.com": "trck.a8.net",
+  "summary.bookoffonline.co.jp": "trck.a8.net",
+  "trck.rework-s.com": "trck.a8.net",
+  "trcka8net.irobot-jp.com": "trck.a8.net",
+  "al.office-com.jp": "mm.actionlink.jp",
+  "aaaa.gakkikaitori.co.jp": "4e405524-rycpokjr.cname.ebis.ne.jp",
+  "ac-3.mix.tokyo": "5e958d74-ugbtnbbz.cname.ebis.ne.jp",
+  "ad-ebis.bookpass.auone.jp": "0cd5dd46-f9cqqk3h.cname.ebis.ne.jp",
+  "ad-ebis.mynavi-job20s.jp": "272dd850-1tkscuog.cname.ebis.ne.jp",
+  "ad-track.paravi.jp": "4f9cdbe0-unrhytys.cname.ebis.ne.jp",
+  "ad.aucfan.com": "63caa179-uynsk4n4.cname.ebis.ne.jp",
+  "ad.aucview.com": "8a79c862-uynsk4n4.cname.ebis.ne.jp",
+  "ad.autorace.jp": "60222f89-dui9p9au.cname.ebis.ne.jp",
+  "ad.kddi-fs.com": "a210b17a-hwsehbyq.cname.ebis.ne.jp",
+  "ad.takasu.co.jp": "055b1f86-ycxd4a4u.cname.ebis.ne.jp",
+  "ad.tempstaff.co.jp": "ced1998e-sj9u6ch7.cname.ebis.ne.jp",
+  "ad.udition.jp": "bba13219-ehtgvvgm.cname.ebis.ne.jp",
+  "ad1.tone.ne.jp": "e566cdfc-dvrv5nhw.cname.ebis.ne.jp",
+  "adbq.bk.mufg.jp": "ceac5848-wpvbdb7j.cname.ebis.ne.jp",
+  "adebis-52667624.wowma.jp": "52e84b1b-f9cqqk3h.cname.ebis.ne.jp",
+  "adebis-morijuku.morijuku.com": "30a5817d-lkhaegjw.cname.ebis.ne.jp",
+  "adebis-saimu.vbest.jp": "099c079b-vmcsnsvr.cname.ebis.ne.jp",
+  "adebis.angfa-store.jp": "c266cf71-oq0xkpcx.cname.ebis.ne.jp",
+  "adebis.daiwahouse.co.jp": "af715239-g5riys9k.cname.ebis.ne.jp",
+  "adebis.demae-can.com": "748da21f-kuqpafku.cname.ebis.ne.jp",
+  "adebis.e-ohaka.com": "f923e064-jwm2vvcx.cname.ebis.ne.jp",
+  "adebis.fenet.jp": "35e79adf-qjtkq0iz.cname.ebis.ne.jp",
+  "adebis.harutaka.jp": "77898d5b-lkppvk2g.cname.ebis.ne.jp",
+  "adebis.irobot-jp.com": "861e71a7-mhybr5iz.cname.ebis.ne.jp",
+  "adebis.juku.st": "95e65062-vpau4sdp.cname.ebis.ne.jp",
+  "adebis.kaonavi.jp": "d1e4432d-tbf9k4fs.cname.ebis.ne.jp",
+  "adebis.kose.co.jp": "435017b6-hcwlnnyg.cname.ebis.ne.jp",
+  "adebis.koutsujiko.jp": "c1d1d278-4j4tjcfr.cname.ebis.ne.jp",
+  "adebis.livable.co.jp": "07d020a3-crscrcp3.cname.ebis.ne.jp",
+  "adebis.nursery.co.jp": "5032afa8-66fsga6n.cname.ebis.ne.jp",
+  "adebis.qeee.jp": "80ad1e32-pvfpecyh.cname.ebis.ne.jp",
+  "adebis.real-style.co.jp": "d473741d-bagmsfc6.cname.ebis.ne.jp",
+  "adebis.report.clinic": "34213ab6-xnj2xrq7.cname.ebis.ne.jp",
+  "adebis.satori.marketing": "0ecb3018-xpsz9xxb.cname.ebis.ne.jp",
+  "adebis.sbpayment.jp": "e889caf6-3qe9sa9a.cname.ebis.ne.jp",
+  "adebis.shiseido.co.jp": "bcc4d612-qmmdzant.cname.ebis.ne.jp",
+  "adebis.thd-web.jp": "a6a5d774-vsrgbn9q.cname.ebis.ne.jp",
+  "adebis.theclinic.jp": "44f2417e-guakxgpf.cname.ebis.ne.jp",
+  "adebis.tipness.co.jp": "359e2360-u9necda2.cname.ebis.ne.jp",
+  "adebis.tohshin.co.jp": "06fb9eec-clhowtg1.cname.ebis.ne.jp",
+  "adebis.toitoitoi.clinic": "b773e430-snfbdnnq.cname.ebis.ne.jp",
+  "adebis.tokyuhotels.co.jp": "02a8f7d5-th1skucf.cname.ebis.ne.jp",
+  "adebis.urban-research.jp": "c9b592e5-3ddhh4av.cname.ebis.ne.jp",
+  "adebis01.job-con.jp": "a5ede5f5-sn9wfkl3.cname.ebis.ne.jp",
+  "adebis02.juku.st": "95e65062-y5awr3vc.cname.ebis.ne.jp",
+  "adebis8628.matsui.co.jp": "a6688744-0p7lzdhu.cname.ebis.ne.jp",
+  "adebiscname.auone.jp": "0cd5dd46-3fyehbqu.cname.ebis.ne.jp",
+  "adebisu.wowow.co.jp": "eceb7b9f-6a92yces.cname.ebis.ne.jp",
+  "admeasure.hh-online.jp": "bceaceed-neqq92z2.cname.ebis.ne.jp",
+  "adpromo.peppynet.com": "d4aca7c0-gwd6au9d.cname.ebis.ne.jp",
+  "aesus.so-net.ne.jp": "e42672f4-rqq2zpub.cname.ebis.ne.jp",
+  "axjfkc.kobayashi.co.jp": "fe1d7165-mmpoiy89.cname.ebis.ne.jp",
+  "bbbb.goace.jp": "cb8eb280-2eexez7z.cname.ebis.ne.jp",
+  "beeline.beeline-tire.co.jp": "ae331b42-b3j1fwdu.cname.ebis.ne.jp",
+  "belegend2019.belegend.jp": "b6ed666a-bagmsfc6.cname.ebis.ne.jp",
+  "campaign-direct.eisai.jp": "9473cf8f-y4rfthkp.cname.ebis.ne.jp",
+  "cmass.massmedian.co.jp": "4625f83e-ua37naea.cname.ebis.ne.jp",
+  "cname-ade.hankoya.com": "31e48120-fbzwhcnp.cname.ebis.ne.jp",
+  "cname-adebis.nice2meet.us": "9f1e7ac9-zmhmrwhh.cname.ebis.ne.jp",
+  "cname.crank-in.net": "043aff42-optsirog.cname.ebis.ne.jp",
+  "cname.ebis.folio-sec.com": "bd4ef0f6-ywapzf2c.cname.ebis.ne.jp",
+  "cname.finess.jp": "8f087789-nkcrsmeh.cname.ebis.ne.jp",
+  "cname.jaic-college.jp": "28398c99-cswptfaa.cname.ebis.ne.jp",
+  "cname.jf-d.jp": "b3dfd045-acrymmnj.cname.ebis.ne.jp",
+  "cname.kyusai.co.jp": "4a5353c5-wrr2jzhu.cname.ebis.ne.jp",
+  "cname.lions-mansion.jp": "e6ffde45-yp7fpvcr.cname.ebis.ne.jp",
+  "cname.mebiusseiyaku.co.jp": "8084b5d3-mqxnlcy4.cname.ebis.ne.jp",
+  "cname1.shakenkan.co.jp": "dfd1c48f-kdknv6tt.cname.ebis.ne.jp",
+  "cnameebis.usagi-online.com": "a4ba7b93-e2mmxp45.cname.ebis.ne.jp",
+  "cnebis.chocola.com": "7955b170-gaz6wmaw.cname.ebis.ne.jp",
+  "cnebis.eisai.jp": "9473cf8f-gaz6wmaw.cname.ebis.ne.jp",
+  "cnebis.i-no-science.com": "8b44cc88-gaz6wmaw.cname.ebis.ne.jp",
+  "ct.xn--0et88ccz6awh1a.biz": "2cd1a98a-bagmsfc6.cname.ebis.ne.jp",
+  "cvs.kireimo.jp": "518dea17-lwmskzks.cname.ebis.ne.jp",
+  "digital.anicom-sompo.co.jp": "3fcda11b-dmcr4rty.cname.ebis.ne.jp",
+  "eb.bewithyou.jp": "37fe71c4-kfga9uze.cname.ebis.ne.jp",
+  "ebis-cname.mirai-japan.co.jp": "0dd3ff25-rfkfzrfu.cname.ebis.ne.jp",
+  "ebis-tracking.tcb-beauty.net": "bebe7a28-6pusefyf.cname.ebis.ne.jp",
+  "ebis.as-1.co.jp": "89b01a4a-rgypc97e.cname.ebis.ne.jp",
+  "ebis.biyo-job.com": "dae17865-vqh9uah6.cname.ebis.ne.jp",
+  "ebis.bulk.co.jp": "730fac49-ezdvkv2x.cname.ebis.ne.jp",
+  "ebis.c-3-esthe.com": "23d55728-ssmshbez.cname.ebis.ne.jp",
+  "ebis.ce-parfait.com": "87bfa869-gchgrbwl.cname.ebis.ne.jp",
+  "ebis.codecamp.jp": "2c9c5766-qkdlymcx.cname.ebis.ne.jp",
+  "ebis.hokensoudannavi.jp": "a0c6f4cd-wqcfddrl.cname.ebis.ne.jp",
+  "ebis.jobcan.ne.jp": "ac8dd399-7xybwgkv.cname.ebis.ne.jp",
+  "ebis.kubara.jp": "ce122a7c-hgyagqzw.cname.ebis.ne.jp",
+  "ebis.la-coco.com": "a8ba4949-zsbmdhqh.cname.ebis.ne.jp",
+  "ebis.lululun.com": "2cc59598-pr6qwglj.cname.ebis.ne.jp",
+  "ebis.n-pri.jp": "d8891d4f-5qfabvkt.cname.ebis.ne.jp",
+  "ebis.nomu-silica.jp": "17a0a051-yhrqdvjf.cname.ebis.ne.jp",
+  "ebis.okasan-online.co.jp": "d64474bb-20mouroy.cname.ebis.ne.jp",
+  "ebis.onamae.com": "64642ff0-29kvavam.cname.ebis.ne.jp",
+  "ebis.pasonatech.co.jp": "a0dd7a11-rrtv6uew.cname.ebis.ne.jp",
+  "ebis.rabo.cat": "3c40b540-dfevquvl.cname.ebis.ne.jp",
+  "ebis.radishbo-ya.co.jp": "a24bb2f5-q4vseaye.cname.ebis.ne.jp",
+  "ebis.randstad.co.jp": "68d30b5c-gxw6vfjd.cname.ebis.ne.jp",
+  "ebis.rozetta.jp": "18aeb18f-orvgub9g.cname.ebis.ne.jp",
+  "ebis.sbismile.co.jp": "e2d9b43b-hutbyrck.cname.ebis.ne.jp",
+  "ebis.seibu-k.co.jp": "3a3d0355-kkto8pe9.cname.ebis.ne.jp",
+  "ebis.sekisuiheim.com": "fc0a624f-lxzgwtkr.cname.ebis.ne.jp",
+  "ebis.sekisuihouse.co.jp": "608975dd-6hbgpszs.cname.ebis.ne.jp",
+  "ebis.sekisuihouse.com": "728d5fcc-6hbgpszs.cname.ebis.ne.jp",
+  "ebis.smakon.jp": "26349a15-esqb2ypb.cname.ebis.ne.jp",
+  "ebis.studio-alice.co.jp": "65583296-u9rwf5hz.cname.ebis.ne.jp",
+  "ebis.studioindi.jp": "2ab268f1-uxwrqv9t.cname.ebis.ne.jp",
+  "ebis.sunstar-shop.jp": "d15d1b36-j5hap6dz.cname.ebis.ne.jp",
+  "ebis01.zkai.co.jp": "2feef04e-wnxavwja.cname.ebis.ne.jp",
+  "ebis2020.hoiku-job.net": "f3054804-quxzshgd.cname.ebis.ne.jp",
+  "ebis202001.joyfit.jp": "3c39ea6e-px3cltrd.cname.ebis.ne.jp",
+  "ebisanalysis.mouse-jp.co.jp": "62eeb5c5-qzuayf3m.cname.ebis.ne.jp",
+  "ebiscname.clark.ed.jp": "d9a8eccf-fgsftzrs.cname.ebis.ne.jp",
+  "ebiscname.j-esthe.com": "98d6d446-llbfadyx.cname.ebis.ne.jp",
+  "ebiscname.urr.jp": "c35cf548-urr.cname.ebis.ne.jp",
+  "ebisfracora.fracora.com": "c990b46a-cy6kqhld.cname.ebis.ne.jp",
+  "ebisstore.tamagokichi.com": "49bd8542-7sbpa3f6.cname.ebis.ne.jp",
+  "ebs.green-osaka.com": "2f9a3c60-kwb4jtrt.cname.ebis.ne.jp",
+  "greenjapan-cname.green-japan.com": "b9f16cb4-srrg93nh.cname.ebis.ne.jp",
+  "isebis.takamiclinic.or.jp": "2effafae-p5xsryk6.cname.ebis.ne.jp",
+  "isebis.yutoriform.com": "ad332265-3fbqyybv.cname.ebis.ne.jp",
+  "itp.phoebebeautyup.com": "4c291f26-leoqufvo.cname.ebis.ne.jp",
+  "jj85xnjq.ybqwah.ntt.com": "ae17c42a-hcl31hrm.cname.ebis.ne.jp",
+  "maz.zba.jp": "852e231d-ct0ymnok.cname.ebis.ne.jp",
+  "mgn.ebis.andbe-official.com": "eae7dd77-nztumxtt.cname.ebis.ne.jp",
+  "msr.p-antiaging.com": "3714e864-qge7cq9v.cname.ebis.ne.jp",
+  "nadeshiko2019.kirei-nadeshiko.jp": "4dc90a8e-bagmsfc6.cname.ebis.ne.jp",
+  "ncc.nip-col.jp": "4b8bc2d8-ugw33ckr.cname.ebis.ne.jp",
+  "nlp-japan.life-and-mind.com": "aa9c1a10-bxd3nsfc.cname.ebis.ne.jp",
+  "partner.haru-shop.jp": "112991d3-surmt4v9.cname.ebis.ne.jp",
+  "proteinhikaku2019.proteinhikaku.com": "99ebdab6-bagmsfc6.cname.ebis.ne.jp",
+  "qxhydkz8.hmjdaw.ntt.com": "ae17c42a-alqe4sgf.cname.ebis.ne.jp",
+  "real-fitness2019.real-fitness.jp": "df09ac2e-bagmsfc6.cname.ebis.ne.jp",
+  "seo.tkc110.jp": "1241cdd8-znrwzwlu.cname.ebis.ne.jp",
+  "sep02.hinagiku-life.jp": "f199b50c-gy66xg6s.cname.ebis.ne.jp",
+  "tracking.mysurance.co.jp": "c07c2fd1-ccb9p988.cname.ebis.ne.jp",
+  "tracking.nokai.jp": "454c6615-hd5f4dhg.cname.ebis.ne.jp",
+  "tukuru.cotta.jp": "417df397-9zxfa7mv.cname.ebis.ne.jp",
+  "urerucname.manara.jp": "82590653-c7rwefvl.cname.ebis.ne.jp",
+  "us9recc3.simseller.goo.ne.jp": "70f6c026-alqe4sgf.cname.ebis.ne.jp",
+  "www2.hnavi.co.jp": "b5e8d6c4-bzcut99h.cname.ebis.ne.jp",
+  "y8hxgv9m.kobetsu.co.jp": "9fc5109a-rgq6b9zp.cname.ebis.ne.jp",
+  "71efe2183b8663ad5bf9d7a9320aeb48.leboncoin.fr": "71efe2183b8663ad5bf9d7a9320aeb48-leboncoin-fr-cddc.at-o.net",
+  "a.20minutes.fr": "a-20minutes-fr-cddc.at-o.net",
+  "a.pourquoidocteur.fr": "a-pourquoidocteur-fr-cddc.at-o.net",
+  "a1.api.bbc.co.uk": "a1-api-bbc-co-uk-cddc.at-o.net",
+  "abncx.amv.fr": "abncx-amv-fr-cddc.at-o.net",
+  "ana.tv5unis.ca": "ana-tv5unis-ca-cddc.at-o.net",
+  "arrietty.nrj.fr": "arrietty-nrj-fr-cddc.at-o.net",
+  "at-cddc.actu-juridique.fr": "at-cddc-actu-juridique-fr-cddc.at-o.net",
+  "at.badische-zeitung.de": "at-badische-zeitung-de-cddc.at-o.net",
+  "at.pagesjaunes.fr": "at-pagesjaunes-fr-cddc.at-o.net",
+  "atconnect.npo.nl": "atconnect-npo-nl-cddc.at-o.net",
+  "ati-a1.946d001b783803c1.xhst.bbci.co.uk": "a1-api-bbc-co-uk-cddc.at-o.net",
+  "atxqb.psychologies.com": "atxqb-psychologies-com-cddc.at-o.net",
+  "avocado.laprovence.com": "avocado-laprovence-com-cddc.at-o.net",
+  "buf.lemonde.fr": "buf-lemonde-fr-cddc.at-o.net",
+  "c.atinternet-solutions.com": "c-atinternet-solutions-com-cddc.at-o.net",
+  "c0012.brsimg.com": "c0012-brsimg-com-cddc.at-o.net",
+  "checkpointcharlie.heizung.de": "checkpointcharlie-heizung-de-cddc.at-o.net",
+  "chihiro.nostalgie.fr": "chihiro-nostalgie-fr-cddc.at-o.net",
+  "col.idealista.com": "col-idealista-com-cddc.at-o.net",
+  "col.idealista.it": "col-idealista-it-cddc.at-o.net",
+  "col.idealista.pt": "col-idealista-pt-cddc.at-o.net",
+  "collect.meilleurtaux.com": "collect-meilleurtaux-com-cddc.at-o.net",
+  "conimicutlighthouse.viessmann-us.com": "conimicutlighthouse-viessmann-us-com-cddc.at-o.net",
+  "culture.intermedes.com": "culture-intermedes-com-cddc.at-o.net",
+  "d.uni-medias.com": "d-uni-medias-com-cddc.at-o.net",
+  "da.maif.fr": "da-maif-fr-cddc.at-o.net",
+  "faucons.viessmann.fr": "faucons-viessmann-fr-cddc.at-o.net",
+  "hal.courrierinternational.com": "hal-courrierinternational-com-cddc.at-o.net",
+  "hd.pe.fr": "hd-pe-fr-cddc.at-o.net",
+  "hmg.handelsblatt.com": "hmg-handelsblatt-com-cddc.at-o.net",
+  "hmg.wiwo.de": "hmg-wiwo-de-cddc.at-o.net",
+  "image.ard.de": "image-ard-de-cddc.at-o.net",
+  "image.mdr.de": "image-mdr-de-cddc.at-o.net",
+  "insights.biallo.de": "insights-biallo-de-cddc.at-o.net",
+  "insights.sport1.de": "insights-sport1-de-cddc.at-o.net",
+  "johannes.voith.com": "johannes-voith-com-cddc.at-o.net",
+  "kiki.rireetchansons.fr": "kiki-rireetchansons-fr-cddc.at-o.net",
+  "lem.nouvelobs.com": "lem-nouvelobs-com-cddc.at-o.net",
+  "logs1257.at.pagesjaunes.fr": "logs1257-at-pagesjaunes-fr-cddc.at-o.net",
+  "mango.seloger.com": "mango-seloger-com-cddc.at-o.net",
+  "mkt.usz.ch": "mkt-usz-ch-cddc.at-o.net",
+  "mond.post.ch": "mond-post-ch-cddc.at-o.net",
+  "mond.postauto.ch": "mond-postauto-ch-cddc.at-o.net",
+  "montpalatin.handicap.fr": "montpalatin-handicap-fr-cddc.at-o.net",
+  "pear.ca-eko-globetrotter.fr": "pear-ca-eko-globetrotter-fr-cddc.at-o.net",
+  "ponyo.cheriefm.fr": "ponyo-cheriefm-fr-cddc.at-o.net",
+  "res.elle.fr": "res-elle-fr-cddc.at-o.net",
+  "res.femina.fr": "res-femina-fr-cddc.at-o.net",
+  "res.francedimanche.fr": "res-francedimanche-fr-cddc.at-o.net",
+  "res.programme-television.org": "res-programme-television-org-cddc.at-o.net",
+  "res.public.fr": "res-public-fr-cddc.at-o.net",
+  "ressources.caradisiac.com": "ressources-caradisiac-com-cddc.at-o.net",
+  "ressources.centraleauto.com": "ressources-centraleauto-com-cddc.at-o.net",
+  "ressources.lacentrale.fr": "ressources-lacentrale-fr-cddc.at-o.net",
+  "ressources.mavoiturecash.fr": "ressources-mavoiturecash-fr-cddc.at-o.net",
+  "ressources.promoneuve.fr": "ressources-promoneuve-fr-cddc.at-o.net",
+  "rsc.lepoint.fr": "rsc-lepoint-fr-cddc.at-o.net",
+  "salzwerk.viessmann.de": "salzwerk-viessmann-de-cddc.at-o.net",
+  "sheeta.nrj-play.fr": "sheeta-nrj-play-fr-cddc.at-o.net",
+  "st1.lg.avendrealouer.fr": "st1-lg-avendrealouer-fr-cddc.at-o.net",
+  "steinbackhaus.viessmann.com": "steinbackhaus-viessmann-com-cddc.at-o.net",
+  "steinernehaus.viessmann.at": "steinernehaus-viessmann-at-cddc.at-o.net",
+  "strawberry.basf.com": "strawberry-basf-com-cddc.at-o.net",
+  "tm.urssaf.fr": "tm-urssaf-fr-cddc.at-o.net",
+  "torropinto.viessmann.es": "torropinto-viessmann-es-cddc.at-o.net",
+  "tse.telerama.fr": "tse-telerama-fr-cddc.at-o.net",
+  "waati.quechoisir.org": "waati-quechoisir-org-cddc.at-o.net",
+  "wareneingang.edeka.de": "wareneingang-edeka-de-cddc.at-o.net",
+  "wasserkraftwerkkessel.viessmann.ch": "wasserkraftwerkkessel-viessmann-ch-cddc.at-o.net",
+  "waterlooberlin.viessmann.ca": "waterlooberlin-viessmann-ca-cddc.at-o.net",
+  "wvvw.france24.com": "wvvw-france24-com-cddc.at-o.net",
+  "wvvw.francemediasmonde.com": "wvvw-francemediasmonde-com-cddc.at-o.net",
+  "wvvw.infomigrants.net": "wvvw-infomigrants-net-cddc.at-o.net",
+  "wvvw.mc-doualiya.com": "wvvw-mc-doualiya-com-cddc.at-o.net",
+  "wvvw.rfi.fr": "wvvw-rfi-fr-cddc.at-o.net",
+  "y1.arte.tv": "y1-arte-tv-cddc.at-o.net",
+  "zaventemdijleland.viessmann.be": "zaventemdijleland-viessmann-be-cddc.at-o.net",
+  "zelten.fritz-berger.de": "zelten-fritz-berger-de-cddc.at-o.net",
+  "zug.sbb.ch": "zug-sbb-ch-cddc.at-o.net",
+  "3347.wolf-gordon.com": "forpci38.actonsoftware.com",
+  "a10695.actonservice.com": "forpci63.actonsoftware.com",
+  "a11058.actonservice.com": "ci67.actonsoftware.com",
+  "a11413003.actonservice.com": "ci69.actonsoftware.com",
+  "a11522.actonservice.com": "ci70.actonsoftware.com",
+  "a11868.actonservice.com": "adepci1.actonsoftware.com",
+  "a12254.actonservice.com": "ci73.actonsoftware.com",
+  "a12329.actonservice.com": "ci73.actonsoftware.com",
+  "a12433.actonservice.com": "ci74.actonsoftware.com",
+  "a12533.actonservice.com": "forpci74.actonsoftware.com",
+  "a13016.actonservice.com": "forpcid14.actonsoftware.com",
+  "a13080.actonservice.com": "forpcid13.actonsoftware.com",
+  "a13188.actonservice.com": "forpci77.actonsoftware.com",
+  "a13354.actonservice.com": "ci78.actonsoftware.com",
+  "a13557.actonservice.com": "ci100.actonsoftware.com",
+  "a13678.actonservice.com": "aiepci3.actonsoftware.com",
+  "a14164.actonservice.com": "forpcid13.actonsoftware.com",
+  "a14338.actonservice.com": "ci82.actonsoftware.com",
+  "a14374.actonservice.com": "forpci82.actonsoftware.com",
+  "a14378.actonservice.com": "forpci82.actonsoftware.com",
+  "a14518.actonservice.com": "ci83.actonsoftware.com",
+  "a14732.actonservice.com": "forpci84.actonsoftware.com",
+  "a14786.actonservice.com": "forpci84.actonsoftware.com",
+  "a15662.actonservice.com": "forpci88.actonsoftware.com",
+  "a15838.actonservice.com": "forpci89.actonsoftware.com",
+  "a16030.actonservice.com": "ci90.actonsoftware.com",
+  "a16054.actonservice.com": "forpci90.actonsoftware.com",
+  "a16096.actonservice.com": "forpci90.actonsoftware.com",
+  "a16097.actonservice.com": "cid3.actonsoftware.com",
+  "a16133.actonservice.com": "forpci90.actonsoftware.com",
+  "a16161.actonservice.com": "forpci90.actonsoftware.com",
+  "a16241.actonservice.com": "ci300.actonsoftware.com",
+  "a16385.actonservice.com": "forpci87.actonsoftware.com",
+  "a16468.actonservice.com": "ci90.actonsoftware.com",
+  "a16475.actonservice.com": "forpcid13.actonsoftware.com",
+  "a16502.actonservice.com": "forpci92.actonsoftware.com",
+  "a16523.actonservice.com": "forpci92.actonsoftware.com",
+  "a16531.actonservice.com": "forpci92.actonsoftware.com",
+  "a16537.actonservice.com": "forpci92.actonsoftware.com",
+  "a16567.actonservice.com": "forpci92.actonsoftware.com",
+  "a16589.actonservice.com": "forpci92.actonsoftware.com",
+  "a16611.actonservice.com": "forpci92.actonsoftware.com",
+  "a16634.actonservice.com": "forpcid13.actonsoftware.com",
+  "a16734.actonservice.com": "ci92.actonsoftware.com",
+  "a16781.actonservice.com": "forpci93.actonsoftware.com",
+  "a16858.actonservice.com": "forpcid13.actonsoftware.com",
+  "a16859.actonservice.com": "forpcid13.actonsoftware.com",
+  "a16861.actonservice.com": "forpcid13.actonsoftware.com",
+  "a16863.actonservice.com": "cid3.actonsoftware.com",
+  "a16865.actonservice.com": "forpci93.actonsoftware.com",
+  "a16893.actonservice.com": "ci93.actonsoftware.com",
+  "a17095.actonservice.com": "forpcid13.actonsoftware.com",
+  "a17098.actonservice.com": "cid3.actonsoftware.com",
+  "a17100.actonservice.com": "cid3.actonsoftware.com",
+  "a17121.actonservice.com": "forpcid13.actonsoftware.com",
+  "a17122.actonservice.com": "forpcid13.actonsoftware.com",
+  "a17217.actonservice.com": "forpcid13.actonsoftware.com",
+  "a17277.actonservice.com": "cid3.actonsoftware.com",
+  "a17292.actonservice.com": "forpci94.actonsoftware.com",
+  "a17301.actonservice.com": "forpcid13.actonsoftware.com",
+  "a17302.actonservice.com": "forpcid13.actonsoftware.com",
+  "a17332.actonservice.com": "forpci94.actonsoftware.com",
+  "a17348.actonservice.com": "forpcid13.actonsoftware.com",
+  "a17352.actonservice.com": "ci94.actonsoftware.com",
+  "a17367.actonservice.com": "forpci94.actonsoftware.com",
+  "a17401.actonservice.com": "forpci95.actonsoftware.com",
+  "a17416.actonservice.com": "forpci95.actonsoftware.com",
+  "a17436.actonservice.com": "forpci95.actonsoftware.com",
+  "a17455.actonservice.com": "forpci95.actonsoftware.com",
+  "a17481.actonservice.com": "forpcid13.actonsoftware.com",
+  "a17514.actonservice.com": "forpci95.actonsoftware.com",
+  "a17538.actonservice.com": "forpci95.actonsoftware.com",
+  "a17637.actonservice.com": "adepci4.actonsoftware.com",
+  "a17638.actonservice.com": "adepci4.actonsoftware.com",
+  "a17700.actonservice.com": "cid3.actonsoftware.com",
+  "a17746.actonservice.com": "forpci96.actonsoftware.com",
+  "a17756.actonservice.com": "forpcid13.actonsoftware.com",
+  "a17758.actonservice.com": "forpcid13.actonsoftware.com",
+  "a17759.actonservice.com": "cid3.actonsoftware.com",
+  "a17760.actonservice.com": "cid3.actonsoftware.com",
+  "a17788.actonservice.com": "forpci96.actonsoftware.com",
+  "a17803.actonservice.com": "ci96.actonsoftware.com",
+  "a17869.actonservice.com": "forpcid13.actonsoftware.com",
+  "a17870.actonservice.com": "forpcid13.actonsoftware.com",
+  "a17883.actonservice.com": "forpci96.actonsoftware.com",
+  "a18886.actonservice.com": "forpcid13.actonsoftware.com",
+  "a19537.actonservice.com": "forpcid13.actonsoftware.com",
+  "a19609.actonservice.com": "cid3.actonsoftware.com",
+  "a19612.actonservice.com": "forpcid13.actonsoftware.com",
+  "a2.avomeen.com": "forpci66.actonsoftware.com",
+  "a22037.actonservice.com": "forpcid13.actonsoftware.com",
+  "a22368.actonservice.com": "cid3.actonsoftware.com",
+  "a23509.actonservice.com": "forpcid13.actonsoftware.com",
+  "a24395.actonservice.com": "forpci69.actonsoftware.com",
+  "a24396.actonservice.com": "ci69.actonsoftware.com",
+  "a24489.actonservice.com": "forpci69.actonsoftware.com",
+  "a24506.actonservice.com": "ci69.actonsoftware.com",
+  "a24540.actonservice.com": "forpci69.actonsoftware.com",
+  "a24606.actonservice.com": "aiepci6.actonsoftware.com",
+  "a24727.actonservice.com": "forpcid13.actonsoftware.com",
+  "a24730.actonservice.com": "forpcid13.actonsoftware.com",
+  "a24733.actonservice.com": "forpcid13.actonsoftware.com",
+  "a24780.actonservice.com": "forpci69.actonsoftware.com",
+  "a24812.actonservice.com": "adepci4.actonsoftware.com",
+  "a24820.actonservice.com": "forpci72.actonsoftware.com",
+  "a24853.actonservice.com": "forpci72.actonsoftware.com",
+  "a24858.actonservice.com": "forpci72.actonsoftware.com",
+  "a24868.actonservice.com": "ci72.actonsoftware.com",
+  "a24962.actonservice.com": "ci72.actonsoftware.com",
+  "a24982.actonservice.com": "ci72.actonsoftware.com",
+  "a24985.actonservice.com": "forpci72.actonsoftware.com",
+  "a25095.actonservice.com": "forpcid13.actonsoftware.com",
+  "a25152.actonservice.com": "forpci72.actonsoftware.com",
+  "a25224.actonservice.com": "forpci72.actonsoftware.com",
+  "a25309.actonservice.com": "ci72.actonsoftware.com",
+  "a25351.actonservice.com": "ci73.actonsoftware.com",
+  "a25381.actonservice.com": "ci73.actonsoftware.com",
+  "a25406.actonservice.com": "ci73.actonsoftware.com",
+  "a25513.actonservice.com": "ci73.actonsoftware.com",
+  "a25526.actonservice.com": "ci73.actonsoftware.com",
+  "a25545.actonservice.com": "ci73.actonsoftware.com",
+  "a25546.actonservice.com": "forpci73.actonsoftware.com",
+  "a25572.actonservice.com": "ci73.actonsoftware.com",
+  "a25598.actonservice.com": "ci73.actonsoftware.com",
+  "a25601.actonservice.com": "ci73.actonsoftware.com",
+  "a25604001.actonservice.com": "ci73.actonsoftware.com",
+  "a25611.actonservice.com": "ci73.actonsoftware.com",
+  "a25728.actonservice.com": "forpci73.actonsoftware.com",
+  "a25752.actonservice.com": "forpci73.actonsoftware.com",
+  "a25797.actonservice.com": "ci73.actonsoftware.com",
+  "a25855.actonservice.com": "ci73.actonsoftware.com",
+  "a25888.actonservice.com": "ci73.actonsoftware.com",
+  "a25929001.actonservice.com": "forpci73.actonsoftware.com",
+  "a25994.actonservice.com": "forpci73.actonsoftware.com",
+  "a25998.actonservice.com": "forpci73.actonsoftware.com",
+  "a26020.actonservice.com": "ci73.actonsoftware.com",
+  "a26043.actonservice.com": "ci73.actonsoftware.com",
+  "a26065.actonservice.com": "ci73.actonsoftware.com",
+  "a26138.actonservice.com": "forpci81.actonsoftware.com",
+  "a26168.actonservice.com": "forpci81.actonsoftware.com",
+  "a26175.actonservice.com": "forpcid13.actonsoftware.com",
+  "a26177.actonservice.com": "forpci81.actonsoftware.com",
+  "a26251.actonservice.com": "forpci81.actonsoftware.com",
+  "a26268.actonservice.com": "forpci81.actonsoftware.com",
+  "a26362.actonservice.com": "forpci81.actonsoftware.com",
+  "a26394.actonservice.com": "ci81.actonsoftware.com",
+  "a26521.actonservice.com": "ci81.actonsoftware.com",
+  "a26582.actonservice.com": "forpci81.actonsoftware.com",
+  "a26632.actonservice.com": "ci81.actonsoftware.com",
+  "a26665.actonservice.com": "forpci81.actonsoftware.com",
+  "a26695.actonservice.com": "forpci81.actonsoftware.com",
+  "a26698.actonservice.com": "forpci81.actonsoftware.com",
+  "a26758.actonservice.com": "ci81.actonsoftware.com",
+  "a26781.actonservice.com": "forpci91.actonsoftware.com",
+  "a26807.actonservice.com": "ci91.actonsoftware.com",
+  "a26826.actonservice.com": "ci91.actonsoftware.com",
+  "a26879.actonservice.com": "forpci91.actonsoftware.com",
+  "a26965.actonservice.com": "ci91.actonsoftware.com",
+  "a26996.actonservice.com": "forpci91.actonsoftware.com",
+  "a27059.actonservice.com": "forpci91.actonsoftware.com",
+  "a27061.actonservice.com": "forpci91.actonsoftware.com",
+  "a27067.actonservice.com": "forpci91.actonsoftware.com",
+  "a27070.actonservice.com": "forpci91.actonsoftware.com",
+  "a27075.actonservice.com": "forpci91.actonsoftware.com",
+  "a27081.actonservice.com": "forpci91.actonsoftware.com",
+  "a27084.actonservice.com": "forpci91.actonsoftware.com",
+  "a27092.actonservice.com": "forpci91.actonsoftware.com",
+  "a27199.actonservice.com": "forpci91.actonsoftware.com",
+  "a27205.actonservice.com": "forpci91.actonsoftware.com",
+  "a27337.actonservice.com": "forpci91.actonsoftware.com",
+  "a27384.actonservice.com": "forpci91.actonsoftware.com",
+  "a27421.actonservice.com": "forpci91.actonsoftware.com",
+  "a27461.actonservice.com": "forpci91.actonsoftware.com",
+  "a27700.actonservice.com": "forpci92.actonsoftware.com",
+  "a27728.actonservice.com": "forpci92.actonsoftware.com",
+  "a27815.actonservice.com": "forpci92.actonsoftware.com",
+  "a27844.actonservice.com": "forpci92.actonsoftware.com",
+  "a27890.actonservice.com": "forpci92.actonsoftware.com",
+  "a27899.actonservice.com": "forpci92.actonsoftware.com",
+  "a27902.actonservice.com": "forpci92.actonsoftware.com",
+  "a27942.actonservice.com": "forpci92.actonsoftware.com",
+  "a27952.actonservice.com": "forpci92.actonsoftware.com",
+  "a28028.actonservice.com": "forpcid6.actonsoftware.com",
+  "a28030.actonservice.com": "forpci92.actonsoftware.com",
+  "a28031.actonservice.com": "forpci92.actonsoftware.com",
+  "a28048001.actonservice.com": "forpci92.actonsoftware.com",
+  "a28071.actonservice.com": "adepci1.actonsoftware.com",
+  "a28115.actonservice.com": "forpci92.actonsoftware.com",
+  "a28133.actonservice.com": "forpci92.actonsoftware.com",
+  "a28320.actonservice.com": "forpci93.actonsoftware.com",
+  "a28348.actonservice.com": "adepci1.actonsoftware.com",
+  "a28351.actonservice.com": "adepci1.actonsoftware.com",
+  "a28390.actonservice.com": "forpci93.actonsoftware.com",
+  "a28440.actonservice.com": "forpci93.actonsoftware.com",
+  "a28481.actonservice.com": "forpci73.actonsoftware.com",
+  "a28619.actonservice.com": "forpci93.actonsoftware.com",
+  "a28627.actonservice.com": "forpci93.actonsoftware.com",
+  "a28720.actonservice.com": "forpci93.actonsoftware.com",
+  "a28788.actonservice.com": "forpcid13.actonsoftware.com",
+  "a28791.actonservice.com": "forpci93.actonsoftware.com",
+  "a28891.actonservice.com": "adepci1.actonsoftware.com",
+  "a28914.actonservice.com": "forpci93.actonsoftware.com",
+  "a28962.actonservice.com": "forpci93.actonsoftware.com",
+  "a29045.actonservice.com": "forpci96.actonsoftware.com",
+  "a29047.actonservice.com": "forpci96.actonsoftware.com",
+  "a29071.actonservice.com": "aiepci2.actonsoftware.com",
+  "a29088.actonservice.com": "forpci96.actonsoftware.com",
+  "a29091.actonservice.com": "adepci4.actonsoftware.com",
+  "a29152.actonservice.com": "forpci96.actonsoftware.com",
+  "a29171.actonservice.com": "forpci96.actonsoftware.com",
+  "a29238.actonservice.com": "forpci96.actonsoftware.com",
+  "a29251.actonservice.com": "forpci96.actonsoftware.com",
+  "a29282.actonservice.com": "forpci96.actonsoftware.com",
+  "a29315.actonservice.com": "adepci1.actonsoftware.com",
+  "a29322.actonservice.com": "adepci1.actonsoftware.com",
+  "a29330.actonservice.com": "adepci1.actonsoftware.com",
+  "a29364.actonservice.com": "forpci96.actonsoftware.com",
+  "a29586.actonservice.com": "forpci97.actonsoftware.com",
+  "a29763.actonservice.com": "forpci97.actonsoftware.com",
+  "a29794.actonservice.com": "forpci97.actonsoftware.com",
+  "a29798.actonservice.com": "forpci97.actonsoftware.com",
+  "a29817.actonservice.com": "forpcid13.actonsoftware.com",
+  "a29866.actonservice.com": "forpci97.actonsoftware.com",
+  "a29868.actonservice.com": "forpci97.actonsoftware.com",
+  "a30667.actonservice.com": "forpcid13.actonsoftware.com",
+  "a30668.actonservice.com": "forpcid13.actonsoftware.com",
+  "a31734.actonservice.com": "adepci1.actonsoftware.com",
+  "a32270.actonservice.com": "forpcid13.actonsoftware.com",
+  "a33167.actonservice.com": "adepci4.actonsoftware.com",
+  "a33393.actonservice.com": "forpcid13.actonsoftware.com",
+  "a33994.actonservice.com": "forpci31.actonsoftware.com",
+  "a34357.actonservice.com": "adepci4.actonsoftware.com",
+  "a34436.actonservice.com": "aiepci3.actonsoftware.com",
+  "a34549.actonservice.com": "adepci1.actonsoftware.com",
+  "a35511.actonservice.com": "forpcid13.actonsoftware.com",
+  "a35617.actonservice.com": "forpcid13.actonsoftware.com",
+  "a35827.actonservice.com": "forpcid13.actonsoftware.com",
+  "a35907.actonservice.com": "adepci4.actonsoftware.com",
+  "a36025.actonservice.com": "adepci1.actonsoftware.com",
+  "a36117.actonservice.com": "aiepci3.actonsoftware.com",
+  "a36210.actonservice.com": "forpcid13.actonsoftware.com",
+  "a36216.actonservice.com": "aiepci3.actonsoftware.com",
+  "a36535.actonservice.com": "aiepci3.actonsoftware.com",
+  "a36590.actonservice.com": "forpcid13.actonsoftware.com",
+  "a37023.actonservice.com": "adepci1.actonsoftware.com",
+  "a37518.actonservice.com": "forpcid13.actonsoftware.com",
+  "a37641.actonservice.com": "adepci4.actonsoftware.com",
+  "a37941.actonservice.com": "forpcid13.actonsoftware.com",
+  "a38028.actonservice.com": "aiepci3.actonsoftware.com",
+  "a38031.actonservice.com": "adepci1.actonsoftware.com",
+  "a38137.actonservice.com": "adepci1.actonsoftware.com",
+  "a38761.actonservice.com": "forpcid13.actonsoftware.com",
+  "a38820.actonservice.com": "forpcid18.actonsoftware.com",
+  "a39176.actonservice.com": "adepci4.actonsoftware.com",
+  "a39539.actonservice.com": "adepci1.actonsoftware.com",
+  "a39744.actonservice.com": "adepci4.actonsoftware.com",
+  "a39780.actonservice.com": "forpcid20.actonsoftware.com",
+  "a39804.actonservice.com": "adepci1.actonsoftware.com",
+  "a40452.actonservice.com": "adepci1.actonsoftware.com",
+  "a40554.actonservice.com": "forpcid13.actonsoftware.com",
+  "a40587.actonservice.com": "aiepci3.actonsoftware.com",
+  "a40905.actonservice.com": "aiepci3.actonsoftware.com",
+  "a40907.actonservice.com": "aiepci3.actonsoftware.com",
+  "a40916.actonservice.com": "aiepci3.actonsoftware.com",
+  "a40917.actonservice.com": "aiepci3.actonsoftware.com",
+  "a41166.actonservice.com": "aiepci3.actonsoftware.com",
+  "a41550.actonservice.com": "aiepci5.actonsoftware.com",
+  "a41553.actonservice.com": "adepci500.actonsoftware.com",
+  "a41556.actonservice.com": "adepci500.actonsoftware.com",
+  "a41628.actonservice.com": "forpci88.actonsoftware.com",
+  "a41643.actonservice.com": "adepci4.actonsoftware.com",
+  "a42368.actonservice.com": "aiepci5.actonsoftware.com",
+  "a42384.actonservice.com": "adepci4.actonsoftware.com",
+  "a42579.actonservice.com": "forpci11.actonsoftware.com",
+  "a42623.actonservice.com": "forpci11.actonsoftware.com",
+  "a42628.actonservice.com": "forpci11.actonsoftware.com",
+  "a42920.actonservice.com": "forpci11.actonsoftware.com",
+  "a42927.actonservice.com": "forpci11.actonsoftware.com",
+  "a43094.actonservice.com": "forpcid11.actonsoftware.com",
+  "a43246.actonservice.com": "forpci11.actonsoftware.com",
+  "a43253.actonservice.com": "aiepci5.actonsoftware.com",
+  "a43256.actonservice.com": "forpci11.actonsoftware.com",
+  "a43285.actonservice.com": "forpci11.actonsoftware.com",
+  "a43286.actonservice.com": "forpci11.actonsoftware.com",
+  "a43290.actonservice.com": "forpci11.actonsoftware.com",
+  "a43309.actonservice.com": "forpci11.actonsoftware.com",
+  "a43317.actonservice.com": "forpci11.actonsoftware.com",
+  "a43347.actonservice.com": "forpci11.actonsoftware.com",
+  "a43354.actonservice.com": "forpci11.actonsoftware.com",
+  "a43366.actonservice.com": "forpci11.actonsoftware.com",
+  "a43375.actonservice.com": "forpci11.actonsoftware.com",
+  "a43376.actonservice.com": "forpci11.actonsoftware.com",
+  "a43378.actonservice.com": "forpci11.actonsoftware.com",
+  "a43380.actonservice.com": "forpci11.actonsoftware.com",
+  "a43381.actonservice.com": "forpci11.actonsoftware.com",
+  "a43385.actonservice.com": "forpci11.actonsoftware.com",
+  "a43406.actonservice.com": "forpci11.actonsoftware.com",
+  "a43410.actonservice.com": "acapcid1.actonsoftware.com",
+  "a43411.actonservice.com": "forpci11.actonsoftware.com",
+  "a43424.actonservice.com": "acapcid1.actonsoftware.com",
+  "a43428.actonservice.com": "forpci11.actonsoftware.com",
+  "a43444.actonservice.com": "forpci11.actonsoftware.com",
+  "a43445.actonservice.com": "adepci3.actonsoftware.com",
+  "a43474.actonservice.com": "forpci2.actonsoftware.com",
+  "a43478.actonservice.com": "forpci2.actonsoftware.com",
+  "a43486.actonservice.com": "forpci2.actonsoftware.com",
+  "a43527.actonservice.com": "forpci2.actonsoftware.com",
+  "a43533.actonservice.com": "forpci2.actonsoftware.com",
+  "a43539.actonservice.com": "forpci2.actonsoftware.com",
+  "a43542.actonservice.com": "forpci2.actonsoftware.com",
+  "a43546.actonservice.com": "forpci2.actonsoftware.com",
+  "a43547.actonservice.com": "aiepci4.actonsoftware.com",
+  "a43548.actonservice.com": "forpci2.actonsoftware.com",
+  "a43550.actonservice.com": "forpci2.actonsoftware.com",
+  "a43557.actonservice.com": "forpci2.actonsoftware.com",
+  "a43569.actonservice.com": "forpci2.actonsoftware.com",
+  "a43571.actonservice.com": "forpci2.actonsoftware.com",
+  "a43576.actonservice.com": "forpcid12.actonsoftware.com",
+  "a43591.actonservice.com": "forpci2.actonsoftware.com",
+  "a43596.actonservice.com": "forpci2.actonsoftware.com",
+  "a43601.actonservice.com": "adepci3.actonsoftware.com",
+  "a43607.actonservice.com": "forpci2.actonsoftware.com",
+  "a43611.actonservice.com": "forpci2.actonsoftware.com",
+  "a43613.actonservice.com": "forpci2.actonsoftware.com",
+  "a43614.actonservice.com": "forpci2.actonsoftware.com",
+  "a43626.actonservice.com": "forpci2.actonsoftware.com",
+  "a43628.actonservice.com": "forpci2.actonsoftware.com",
+  "a43634.actonservice.com": "forpci2.actonsoftware.com",
+  "a43672.actonservice.com": "forpci2.actonsoftware.com",
+  "a43677.actonservice.com": "forpci2.actonsoftware.com",
+  "a43678.actonservice.com": "aiepci4.actonsoftware.com",
+  "a43685.actonservice.com": "forpci2.actonsoftware.com",
+  "a43711.actonservice.com": "forpci2.actonsoftware.com",
+  "a43715.actonservice.com": "forpci2.actonsoftware.com",
+  "a43723.actonservice.com": "aiepci5.actonsoftware.com",
+  "a43737.actonservice.com": "forpci2.actonsoftware.com",
+  "a43750.actonservice.com": "forpci2.actonsoftware.com",
+  "a43765.actonservice.com": "forpci2.actonsoftware.com",
+  "a43766.actonservice.com": "forpci2.actonsoftware.com",
+  "a43772.actonservice.com": "forpci2.actonsoftware.com",
+  "a43778.actonservice.com": "forpci2.actonsoftware.com",
+  "a43782.actonservice.com": "forpci2.actonsoftware.com",
+  "a43784.actonservice.com": "aiepci5.actonsoftware.com",
+  "a43785.actonservice.com": "forpci2.actonsoftware.com",
+  "a43792.actonservice.com": "forpci2.actonsoftware.com",
+  "a43794.actonservice.com": "forpci2.actonsoftware.com",
+  "a43797.actonservice.com": "forpci2.actonsoftware.com",
+  "a43801.actonservice.com": "forpci2.actonsoftware.com",
+  "a43807.actonservice.com": "forpci2.actonsoftware.com",
+  "a43818.actonservice.com": "forpci3.actonsoftware.com",
+  "a43820.actonservice.com": "forpci3.actonsoftware.com",
+  "a43838.actonservice.com": "forpci3.actonsoftware.com",
+  "a43839.actonservice.com": "forpci3.actonsoftware.com",
+  "a43860.actonservice.com": "aiepci4.actonsoftware.com",
+  "a43869.actonservice.com": "forpci3.actonsoftware.com",
+  "a43871.actonservice.com": "forpci3.actonsoftware.com",
+  "a43875.actonservice.com": "forpci3.actonsoftware.com",
+  "a43889.actonservice.com": "forpci3.actonsoftware.com",
+  "a43910.actonservice.com": "forpci3.actonsoftware.com",
+  "a43918.actonservice.com": "forpci3.actonsoftware.com",
+  "a43933.actonservice.com": "forpci3.actonsoftware.com",
+  "a43939.actonservice.com": "forpci3.actonsoftware.com",
+  "a43951.actonservice.com": "forpci3.actonsoftware.com",
+  "a43966.actonservice.com": "forpci11.actonsoftware.com",
+  "a43968.actonservice.com": "forpci39.actonsoftware.com",
+  "a43972.actonservice.com": "forpci39.actonsoftware.com",
+  "a43976.actonservice.com": "forpci39.actonsoftware.com",
+  "a43982.actonservice.com": "adepci3.actonsoftware.com",
+  "a43993.actonservice.com": "forpci39.actonsoftware.com",
+  "a43999.actonservice.com": "forpci39.actonsoftware.com",
+  "a44022.actonservice.com": "adepci2.actonsoftware.com",
+  "a44090.actonservice.com": "forpci80.actonsoftware.com",
+  "a44102.actonservice.com": "adepci2.actonsoftware.com",
+  "a44112.actonservice.com": "forpci80.actonsoftware.com",
+  "a44116.actonservice.com": "forpci80.actonsoftware.com",
+  "a44119.actonservice.com": "aiepci3.actonsoftware.com",
+  "a44130.actonservice.com": "aiepci3.actonsoftware.com",
+  "a44172.actonservice.com": "forpci40.actonsoftware.com",
+  "a44177.actonservice.com": "forpci40.actonsoftware.com",
+  "a44178.actonservice.com": "forpci40.actonsoftware.com",
+  "a44182.actonservice.com": "aiepci4.actonsoftware.com",
+  "a44184.actonservice.com": "forpci40.actonsoftware.com",
+  "a44193.actonservice.com": "forpci11.actonsoftware.com",
+  "a44195.actonservice.com": "forpci40.actonsoftware.com",
+  "a44200.actonservice.com": "adepci2.actonsoftware.com",
+  "a44211.actonservice.com": "forpci11.actonsoftware.com",
+  "a44214.actonservice.com": "forpci40.actonsoftware.com",
+  "a44233.actonservice.com": "forpci40.actonsoftware.com",
+  "a44251.actonservice.com": "adepci2.actonsoftware.com",
+  "a44272.actonservice.com": "forpci40.actonsoftware.com",
+  "a44273.actonservice.com": "forpci40.actonsoftware.com",
+  "a44274.actonservice.com": "forpci40.actonsoftware.com",
+  "a44281.actonservice.com": "forpci40.actonsoftware.com",
+  "a44287.actonservice.com": "forpci40.actonsoftware.com",
+  "a44289.actonservice.com": "forpci40.actonsoftware.com",
+  "a44293.actonservice.com": "forpci43.actonsoftware.com",
+  "a44311.actonservice.com": "aiepci4.actonsoftware.com",
+  "a44313.actonservice.com": "forpci11.actonsoftware.com",
+  "a44315.actonservice.com": "forpci43.actonsoftware.com",
+  "a44316.actonservice.com": "forpci43.actonsoftware.com",
+  "a44321.actonservice.com": "forpci43.actonsoftware.com",
+  "a44329.actonservice.com": "adepci3.actonsoftware.com",
+  "a44332.actonservice.com": "forpci43.actonsoftware.com",
+  "a44354.actonservice.com": "forpci43.actonsoftware.com",
+  "a44356.actonservice.com": "forpci43.actonsoftware.com",
+  "a44358.actonservice.com": "forpci43.actonsoftware.com",
+  "a44371.actonservice.com": "forpci43.actonsoftware.com",
+  "a44529.actonservice.com": "aiepci3.actonsoftware.com",
+  "a44557.actonservice.com": "forpci98.actonsoftware.com",
+  "a8780.actonservice.com": "forpci1.actonsoftware.com",
+  "aad.actonservice.com": "forpci29.actonsoftware.com",
+  "aagon.actonservice.com": "adepci4.actonsoftware.com",
+  "aamcompany.actonservice.com": "forpci35.actonsoftware.com",
+  "abclegal.actonservice.com": "forpci72.actonsoftware.com",
+  "absinfo.eagle.org": "forpci90.actonsoftware.com",
+  "acadian-asset.actonservice.com": "forpci61.actonsoftware.com",
+  "acclaro.actonservice.com": "forpci90.actonsoftware.com",
+  "accuride.actonservice.com": "forpci32.actonsoftware.com",
+  "accutrain.actonservice.com": "forpci34.actonsoftware.com",
+  "accuzip.actonservice.com": "forpci96.actonsoftware.com",
+  "acendas.actonservice.com": "forpci63.actonsoftware.com",
+  "act-on-marketing.advancedsolutionsplm.com": "forpci33.actonsoftware.com",
+  "act-on.ioactive.com": "forpci32.actonsoftware.com",
+  "act-on.up.edu.pe": "forpci38.actonsoftware.com",
+  "act.boxerproperty.com": "forpci30.actonsoftware.com",
+  "act.colorlines.com": "forpci58.actonsoftware.com",
+  "act.convergencetraining.com": "forpci37.actonsoftware.com",
+  "act.cwsglobal.org": "forpci61.actonsoftware.com",
+  "act.lanap.com": "forpci91.actonsoftware.com",
+  "act.online.engineering.nyu.edu": "forpci57.actonsoftware.com",
+  "act.pivotpointsecurity.com": "forpci54.actonsoftware.com",
+  "act.soneticscorp.com": "forpci61.actonsoftware.com",
+  "act.wernerelectric.com": "forpci94.actonsoftware.com",
+  "actie.milieudefensie.nl": "adepci3.actonsoftware.com",
+  "action.advisorycloud.com": "forpcid19.actonsoftware.com",
+  "acton.marcusevans-events.com": "aiepci2.actonsoftware.com",
+  "acton.simpleviewinc.com": "forpci24.actonsoftware.com",
+  "acton.tourismireland.com": "aiepci2.actonsoftware.com",
+  "acton.trefis.com": "forpci30.actonsoftware.com",
+  "acton.unifilabs.com": "forpci61.actonsoftware.com",
+  "adm.adminstrumentengineering.com.au": "forpci59.actonsoftware.com",
+  "admissions.easterncollege.ca": "forpci38.actonsoftware.com",
+  "admissions.setonhill.edu": "forpci38.actonsoftware.com",
+  "admissions.trios.com": "forpci32.actonsoftware.com",
+  "advantage.rsabroker.ca": "forpci25.actonsoftware.com",
+  "advisers.kingstonsmith.co.uk": "aiepci2.actonsoftware.com",
+  "advisor.raa.com": "forpci32.actonsoftware.com",
+  "advisorycloud-dev.actonservice.com": "forpci6.actonsoftware.com",
+  "advocacy.ahip.org": "forpci32.actonsoftware.com",
+  "advtek.actonservice.com": "forpci95.actonsoftware.com",
+  "aeromark.actonservice.com": "aiepci4.actonsoftware.com",
+  "africafr.promo.skf.com": "adepci4.actonsoftware.com",
+  "agcs-knowledge.allianz.com": "aiepci2.actonsoftware.com",
+  "aip.actonservice.com": "forpci31.actonsoftware.com",
+  "airefcoinc.actonservice.com": "forpci96.actonsoftware.com",
+  "alereinc.actonservice.com": "forpci79.actonsoftware.com",
+  "alicat.actonservice.com": "forpci61.actonsoftware.com",
+  "alwayscare.starmountlife.com": "forpci93.actonsoftware.com",
+  "americanmarketinggroup.actonservice.com": "forpci11.actonsoftware.com",
+  "americanportfolios.actonservice.com": "forpci93.actonsoftware.com",
+  "americanroller.actonservice.com": "forpci54.actonsoftware.com",
+  "americantower.redit.com": "forpci43.actonsoftware.com",
+  "amimon.actonservice.com": "forpci84.actonsoftware.com",
+  "anytime.digitaljobs.gr": "aiepci1.actonsoftware.com",
+  "ao-mkt.tableausoftware.com": "forpci46.actonsoftware.com",
+  "ao.jsitel.com": "forpci90.actonsoftware.com",
+  "aom.smartbrief.com": "forpci32.actonsoftware.com",
+  "aomarketing.karlschumacher.com": "forpci31.actonsoftware.com",
+  "aon.smartbrief.com": "forpci36.actonsoftware.com",
+  "apbspeakers.actonservice.com": "forpci82.actonsoftware.com",
+  "apcerpharma.actonservice.com": "forpci77.actonsoftware.com",
+  "apply.bluetrustloans.com": "forpcid14.actonsoftware.com",
+  "apply.maxlend.com": "forpcid14.actonsoftware.com",
+  "ar.promo.skf.com": "adepci4.actonsoftware.com",
+  "aragenbio.actonservice.com": "forpci79.actonsoftware.com",
+  "aragonresearch.actonservice.com": "forpci33.actonsoftware.com",
+  "argyleforum.actonservice.com": "forpcid11.actonsoftware.com",
+  "arrayasolutions.actonservice.com": "forpci31.actonsoftware.com",
+  "ascassociation.actonservice.com": "forpci86.actonsoftware.com",
+  "association.locktonaffinity.net": "forpci34.actonsoftware.com",
+  "astromed.actonservice.com": "forpci92.actonsoftware.com",
+  "atbs.actonservice.com": "forpci96.actonsoftware.com",
+  "au.promo.skf.com": "adepci4.actonsoftware.com",
+  "authentic3d.actonservice.com": "forpci87.actonsoftware.com",
+  "autozone.actonservice.com": "forpcid16.actonsoftware.com",
+  "avma.avmaplit.com": "acapcid1.actonsoftware.com",
+  "axion-biosystems.actonservice.com": "forpci54.actonsoftware.com",
+  "bakercommunications.actonservice.com": "forpci87.actonsoftware.com",
+  "ballantine.actonservice.com": "forpci25.actonsoftware.com",
+  "ballymoregroup.actonservice.com": "aiepci5.actonsoftware.com",
+  "baltics.promo.skf.com": "adepci4.actonsoftware.com",
+  "baptist-health.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "baptisthealth.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "bayshoresystems.actonservice.com": "forpci11.actonsoftware.com",
+  "bcanl.bca-autoveiling.nl": "aiepci6.actonsoftware.com",
+  "bcc-ltd.actonservice.com": "forpci11.actonsoftware.com",
+  "bcob.uncc.edu": "forpci73.actonsoftware.com",
+  "bdoaustralia.bdo.com.au": "forpci25.actonsoftware.com",
+  "beanstalkmarketing.actonservice.com": "aiepci1.actonsoftware.com",
+  "beaumont.actonservice.com": "forpci24.actonsoftware.com",
+  "bellabusinesssolutions.actonservice.com": "forpci54.actonsoftware.com",
+  "benelux.promo.skf.com": "adepci4.actonsoftware.com",
+  "beringer.actonservice.com": "forpci34.actonsoftware.com",
+  "bestbuy.actonservice.com": "forpci61.actonsoftware.com",
+  "beyondmeasure.rigoltech.com": "forpci73.actonsoftware.com",
+  "bg.promo.skf.com": "adepci4.actonsoftware.com",
+  "bgiamericas.actonservice.com": "forpci33.actonsoftware.com",
+  "bioanalyticalmarketing.eurofins-info.com": "forpci36.actonsoftware.com",
+  "bjc.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "blackhillsgroup.actonservice.com": "forpci83.actonsoftware.com",
+  "blauw.actonservice.com": "aiepci2.actonsoftware.com",
+  "blog.trinityconsultants.com": "forpci31.actonsoftware.com",
+  "bluedata.actonservice.com": "forpci72.actonsoftware.com",
+  "bluemarblepayroll.actonservice.com": "forpci89.actonsoftware.com",
+  "bold.windstreamwholesale.com": "forpci40.actonsoftware.com",
+  "bowl.actonservice.com": "forpci82.actonsoftware.com",
+  "br.promo.skf.com": "adepci4.actonsoftware.com",
+  "briefing.actonservice.com": "forpci87.actonsoftware.com",
+  "brukernano.actonservice.com": "adepci4.actonsoftware.com",
+  "bulkbookstore.actonservice.com": "forpci32.actonsoftware.com",
+  "burnswhite.actonservice.com": "forpci38.actonsoftware.com",
+  "business.franchiseforsale.com": "forpci2.actonsoftware.com",
+  "business.franchiseopportunities.com": "forpci61.actonsoftware.com",
+  "businessgrouphealth.actonservice.com": "forpci24.actonsoftware.com",
+  "butlercc.actonservice.com": "forpci11.actonsoftware.com",
+  "buzz.logility.com": "forpci11.actonsoftware.com",
+  "c-c-l.actonservice.com": "aiepci2.actonsoftware.com",
+  "c4cm.actonservice.com": "forpci92.actonsoftware.com",
+  "c4contexture.actonservice.com": "aiepci2.actonsoftware.com",
+  "ca.promo.skf.com": "adepci1.actonsoftware.com",
+  "calmradio.actonservice.com": "forpci35.actonsoftware.com",
+  "camisado.actonservice.com": "forpci6.actonsoftware.com",
+  "campaign.csrxp.org": "forpci94.actonsoftware.com",
+  "campaigns.hygiena.com": "forpci54.actonsoftware.com",
+  "campaigns.primaverabss.com": "aiepci6.actonsoftware.com",
+  "care.petcureoncology.com": "forpci34.actonsoftware.com",
+  "cargas.actonservice.com": "forpci11.actonsoftware.com",
+  "cargurus.actonservice.com": "forpci73.actonsoftware.com",
+  "carolina.actonservice.com": "forpci36.actonsoftware.com",
+  "carswellmedia.thomsonreuterscanada.ca": "ci101.actonsoftware.com",
+  "cc.pennstatehealth.org": "forpci29.actonsoftware.com",
+  "ccbjournal.actonservice.com": "forpci11.actonsoftware.com",
+  "celigo.actonservice.com": "forpci95.actonsoftware.com",
+  "centrastate.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "certify.nasm.org": "cid106.actonsoftware.com",
+  "ch.sharpmarketing.eu": "aiepci3.actonsoftware.com",
+  "channel.sovereigncomms.co.nz": "forpci41.actonsoftware.com",
+  "channelblender.actonservice.com": "ci101.actonsoftware.com",
+  "chartec.actonservice.com": "forpci34.actonsoftware.com",
+  "chevalierusa.actonservice.com": "forpci26.actonsoftware.com",
+  "chiefexecutive.actonservice.com": "forpci54.actonsoftware.com",
+  "chromatography.mac-mod.com": "forpci38.actonsoftware.com",
+  "cil.isotope.com": "forpci53.actonsoftware.com",
+  "circadence.actonservice.com": "forpci36.actonsoftware.com",
+  "cisco-eagle.actonservice.com": "forpci33.actonsoftware.com",
+  "citizensclimate.actonservice.com": "forpci96.actonsoftware.com",
+  "ciyacton.ciy.com": "forpci46.actonsoftware.com",
+  "cl.promo.skf.com": "adepci4.actonsoftware.com",
+  "cla.actonservice.com": "forpci69.actonsoftware.com",
+  "classroominc.actonservice.com": "forpci61.actonsoftware.com",
+  "cleanservices.actonservice.com": "aiepci2.actonsoftware.com",
+  "click.aabacosmallbusiness.com": "forpci1.actonsoftware.com",
+  "click.amazingfacts.org": "forpci93.actonsoftware.com",
+  "click.datanyze.com": "forpci11.actonsoftware.com",
+  "click.holidaylettingslistings.com": "forpci69.actonsoftware.com",
+  "click.lmbcustomersupport.com": "forpcid18.actonsoftware.com",
+  "click.quickenloansnow.com": "forpcid18.actonsoftware.com",
+  "clicks.lowermybills.com": "forpci88.actonsoftware.com",
+  "cliftons.actonservice.com": "aiepci3.actonsoftware.com",
+  "clipcanvas.actonservice.com": "forpci87.actonsoftware.com",
+  "cloudhosting.actonservice.com": "forpci46.actonsoftware.com",
+  "cmme.actonservice.com": "aiepci5.actonsoftware.com",
+  "cns-service.actonservice.com": "forpci75.actonsoftware.com",
+  "co.promo.skf.com": "adepci4.actonsoftware.com",
+  "cobweb.actonservice.com": "aiepci6.actonsoftware.com",
+  "college.business.oregonstate.edu": "forpci11.actonsoftware.com",
+  "com.gardio.se": "aiepci1.actonsoftware.com",
+  "comline.actonservice.com": "forpci80.actonsoftware.com",
+  "commercial.davey.com": "forpci54.actonsoftware.com",
+  "commondreams.actonservice.com": "forpci29.actonsoftware.com",
+  "comms.adss.com": "aiepci1.actonsoftware.com",
+  "comms.aia.co.nz": "forpci41.actonsoftware.com",
+  "communicatie.nti.nl": "aiepci6.actonsoftware.com",
+  "communication.treston.com": "adepci4.actonsoftware.com",
+  "communications.afmc.org": "forpci27.actonsoftware.com",
+  "communications.all-risks.com": "forpci11.actonsoftware.com",
+  "communications.ameritrustgroup.com": "forpci24.actonsoftware.com",
+  "communications.ch-investments.co.uk": "aiepci5.actonsoftware.com",
+  "communications.marlboroughgroup.com": "aiepci4.actonsoftware.com",
+  "communications.optimagfx.com": "forpci72.actonsoftware.com",
+  "communications.parmenion-im.co.uk": "aiepci6.actonsoftware.com",
+  "communications.prodways.com": "aiepci5.actonsoftware.com",
+  "communications.siffron.com": "forpci32.actonsoftware.com",
+  "communications.taylorcorp.com": "forpci91.actonsoftware.com",
+  "communique.assetzproperty.com": "forpci63.actonsoftware.com",
+  "companywebcast.actonservice.com": "aiepci2.actonsoftware.com",
+  "conceptarthouse.actonservice.com": "forpci88.actonsoftware.com",
+  "connect.atonix.com": "forpci80.actonsoftware.com",
+  "connect.audalianexia.com": "aiepci2.actonsoftware.com",
+  "connect.ciena.com": "forpci3.actonsoftware.com",
+  "connect.digi.com": "forpci29.actonsoftware.com",
+  "connect.lightriver.com": "forpci40.actonsoftware.com",
+  "connect.mchdata.com": "forpci33.actonsoftware.com",
+  "connect.mikrocentrum.nl": "adepci4.actonsoftware.com",
+  "connect.munsonhealthcare.org": "forpcid13.actonsoftware.com",
+  "connect.myokuma.com": "forpci59.actonsoftware.com",
+  "connect.nelsonschmidt.com": "forpci59.actonsoftware.com",
+  "connect.prowareness.nl": "aiepci5.actonsoftware.com",
+  "connect.radianttech.net": "forpci96.actonsoftware.com",
+  "connect.rallypoint.com": "forpci55.actonsoftware.com",
+  "connect.rush.edu": "forpcid13.actonsoftware.com",
+  "connect.saintlukeskc.org": "forpcid13.actonsoftware.com",
+  "connect.shopezrentals.com": "forpci69.actonsoftware.com",
+  "connect.shoprentone.com": "forpci82.actonsoftware.com",
+  "connect.tghgo.org": "forpcid13.actonsoftware.com",
+  "connect.uofuhealth.org": "forpcid13.actonsoftware.com",
+  "connexuscu.actonservice.com": "forpci31.actonsoftware.com",
+  "construsoft.actonservice.com": "aiepci3.actonsoftware.com",
+  "consulting.ramboll.com": "adepci4.actonsoftware.com",
+  "contact.adaptavist.com": "forpci38.actonsoftware.com",
+  "contact.marathon-sports-ec.com": "forpci90.actonsoftware.com",
+  "contactcenter.presenceco.com": "forpci40.actonsoftware.com",
+  "content.brain-storm-email.com": "forpci88.actonsoftware.com",
+  "content.callbridge.com": "forpci92.actonsoftware.com",
+  "content.circlesstudio.com": "forpci34.actonsoftware.com",
+  "content.davidhaleweb.com": "forpci26.actonsoftware.com",
+  "content.demand-on.com": "aiepci2.actonsoftware.com",
+  "content.distium.com": "forpci85.actonsoftware.com",
+  "content.enlightiumacademy.com": "forpci32.actonsoftware.com",
+  "content.fabasoft.com": "adepci3.actonsoftware.com",
+  "content.familyfeatures.com": "forpci59.actonsoftware.com",
+  "content.formalifesciencemarketing.com": "forpci39.actonsoftware.com",
+  "content.freeconference.com": "forpci97.actonsoftware.com",
+  "content.harrisproductsgroup.com": "forpci93.actonsoftware.com",
+  "content.logile.com": "forpci31.actonsoftware.com",
+  "content.mhs.net": "forpcid13.actonsoftware.com",
+  "content.msufcu.org": "forpci11.actonsoftware.com",
+  "content.ndm.net": "forpci56.actonsoftware.com",
+  "content.northcdatacenters.info": "adepci4.actonsoftware.com",
+  "content.ohiohealth.com": "forpcid13.actonsoftware.com",
+  "content.recordpoint.com": "aiepci6.actonsoftware.com",
+  "content.rightsourcemarketing.com": "forpci11.actonsoftware.com",
+  "content.sffirecu.org": "forpci38.actonsoftware.com",
+  "content.wacom.com": "forpci11.actonsoftware.com",
+  "contractormarketing.hudsonink.com": "forpci32.actonsoftware.com",
+  "conveyor.lewcoinc.com": "forpci55.actonsoftware.com",
+  "corporate-marketing.hrs.com": "adepci4.actonsoftware.com",
+  "corporate.averydennison.com": "forpci69.actonsoftware.com",
+  "crbcunninghams.actonservice.com": "aiepci3.actonsoftware.com",
+  "crm.casabaca.com": "forpci92.actonsoftware.com",
+  "crm.childrens.com": "forpcid13.actonsoftware.com",
+  "crmonline.actonservice.com": "forpci89.actonsoftware.com",
+  "cta.onguard.com": "forpci59.actonsoftware.com",
+  "ctg.actonservice.com": "forpci38.actonsoftware.com",
+  "culliganwaterco.actonservice.com": "forpci11.actonsoftware.com",
+  "cvhp.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "cz.promo.skf.com": "adepci4.actonsoftware.com",
+  "dacocorp.actonservice.com": "forpci58.actonsoftware.com",
+  "datafiletechnologies.actonservice.com": "forpci23.actonsoftware.com",
+  "de.bca-news.com": "aiepci6.actonsoftware.com",
+  "de.promo.skf.com": "adepci4.actonsoftware.com",
+  "dealercontent.homehardware.ca": "forpci61.actonsoftware.com",
+  "dealerrelations.cargurus.com": "forpci87.actonsoftware.com",
+  "dedola.actonservice.com": "forpci31.actonsoftware.com",
+  "deltafaucet.actonservice.com": "forpci70.actonsoftware.com",
+  "dev-tacticalma.actonservice.com": "forpci6.actonsoftware.com",
+  "development.oregon4biz.com": "forpci84.actonsoftware.com",
+  "devotionalclicks.amazingfacts.org": "forpci43.actonsoftware.com",
+  "dextersolutions.actonservice.com": "forpci73.actonsoftware.com",
+  "dfw.bakerbrothersplumbing.com": "forpci73.actonsoftware.com",
+  "dialog.anderson-negele.com": "adepci4.actonsoftware.com",
+  "dialog.dqs.de": "adepci1.actonsoftware.com",
+  "digi.maestro.fi": "adepci4.actonsoftware.com",
+  "digital.opsbase.com": "aiepci4.actonsoftware.com",
+  "digital.setpointis.com": "forpci2.actonsoftware.com",
+  "digitalcurrent.actonservice.com": "forpci54.actonsoftware.com",
+  "digitalmarketing.gogsg.com": "forpci54.actonsoftware.com",
+  "digitalmarketing.nglantz.com": "forpci23.actonsoftware.com",
+  "digitalmarketing.smu.edu.sg": "forpci34.actonsoftware.com",
+  "dignityhealth.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "diningalliance.actonservice.com": "forpci69.actonsoftware.com",
+  "direct.t-mobile.com": "forpci3.actonsoftware.com",
+  "discover.covenanthealthcare.com": "forpcid13.actonsoftware.com",
+  "discover.interlochen.org": "forpci23.actonsoftware.com",
+  "discover.maringeneral.org": "forpcid13.actonsoftware.com",
+  "discover.proshipinc.com": "forpci44.actonsoftware.com",
+  "dmcplc.actonservice.com": "aiepci3.actonsoftware.com",
+  "dppublishinginc.actonservice.com": "forpci36.actonsoftware.com",
+  "dqs.actonservice.com": "adepci1.actonsoftware.com",
+  "dryvit.actonservice.com": "forpci81.actonsoftware.com",
+  "durst-group.actonservice.com": "forpci11.actonsoftware.com",
+  "dymic.actonservice.com": "forpci24.actonsoftware.com",
+  "e.equuscs.com": "forpci90.actonsoftware.com",
+  "e.kc-education.com": "forpci42.actonsoftware.com",
+  "e.replacementdevicelawsuit.com": "forpci3.actonsoftware.com",
+  "e.unchealthcare.org": "forpcid13.actonsoftware.com",
+  "eco.actonservice.com": "forpci11.actonsoftware.com",
+  "econolite.actonservice.com": "forpci79.actonsoftware.com",
+  "ecp.bdoaustralia.bdo.com.au": "forpci26.actonsoftware.com",
+  "ed.2.west.com": "forpci72.actonsoftware.com",
+  "edeals.rhymebiz.com": "forpci76.actonsoftware.com",
+  "edm.mcw.com.au": "aiepci2.actonsoftware.com",
+  "edriving.actonservice.com": "aiepci5.actonsoftware.com",
+  "edu-us.schneider-electric.com": "forpci55.actonsoftware.com",
+  "education.axonify.com": "forpci25.actonsoftware.com",
+  "education.graduateprogram.org": "forpci86.actonsoftware.com",
+  "education.greatbatch.com": "forpci92.actonsoftware.com",
+  "edward.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "eeco-net.actonservice.com": "forpci77.actonsoftware.com",
+  "efgam.actonservice.com": "aiepci1.actonsoftware.com",
+  "elastoproxy.actonservice.com": "forpci89.actonsoftware.com",
+  "elcaminohospital.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "elconfidencialdigital.actonservice.com": "adepci4.actonsoftware.com",
+  "electrifai.actonservice.com": "forpci11.actonsoftware.com",
+  "elgas.actonservice.com": "forpci80.actonsoftware.com",
+  "elogic-learning.actonservice.com": "forpci29.actonsoftware.com",
+  "em-info2.thermofisher.com": "forpci11.actonsoftware.com",
+  "email.allantgroup.com": "forpci57.actonsoftware.com",
+  "email.axisintegrated.ca": "forpci35.actonsoftware.com",
+  "email.bowl.com": "forpci82.actonsoftware.com",
+  "email.cobsbread.com": "forpci91.actonsoftware.com",
+  "email.eomega.org": "forpci52.actonsoftware.com",
+  "email.lynnimaging.com": "forpci42.actonsoftware.com",
+  "email.mccoys.com": "forpci22.actonsoftware.com",
+  "email.participaction.com": "forpci42.actonsoftware.com",
+  "email.vollrathco.com": "forpci45.actonsoftware.com",
+  "emarketing.landisgyr.com": "forpci48.actonsoftware.com",
+  "emarketing.moveo.com": "forpci47.actonsoftware.com",
+  "emea.kollmorgen.com": "forpci25.actonsoftware.com",
+  "emisgroupplc.actonservice.com": "aiepci3.actonsoftware.com",
+  "enews.learninga-z.com": "forpci26.actonsoftware.com",
+  "engage.atriosystems.com": "forpci96.actonsoftware.com",
+  "engage.ca.victorinsurance.com": "aiepci6.actonsoftware.com",
+  "engage.dovetailinsurance.com": "aiepci6.actonsoftware.com",
+  "engage.encon.ca": "aiepci6.actonsoftware.com",
+  "engage.physicstoday.org": "forpci31.actonsoftware.com",
+  "engage.td.org": "forpci44.actonsoftware.com",
+  "engage.us.victorinsurance.com": "aiepci6.actonsoftware.com",
+  "enrichmentjourneys.actonservice.com": "forpci63.actonsoftware.com",
+  "equippo.actonservice.com": "forpci71.actonsoftware.com",
+  "equity.e2g.com": "forpci80.actonsoftware.com",
+  "erepublic.actonservice.com": "forpci87.actonsoftware.com",
+  "es.sharpmarketing.eu": "aiepci3.actonsoftware.com",
+  "eschsupply.actonservice.com": "forpci96.actonsoftware.com",
+  "eservices.lubetech.com": "forpci2.actonsoftware.com",
+  "esri.nl.actonservice.com": "aiepci3.actonsoftware.com",
+  "essentiahealth.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "estore.biscoind.com": "forpci81.actonsoftware.com",
+  "etude.epidemiologie-pop-ge.ch": "adepci3.actonsoftware.com",
+  "evergage1.actonservice.com": "forpci72.actonsoftware.com",
+  "eversource.actonservice.com": "forpci89.actonsoftware.com",
+  "evolution.promo.skf.com": "adepci4.actonsoftware.com",
+  "exdmarketing.smu.edu.sg": "forpci70.actonsoftware.com",
+  "experience.faiu.com": "forpci40.actonsoftware.com",
+  "experience.rehmann.com": "forpci38.actonsoftware.com",
+  "experience.rochesterregional.org": "forpcid13.actonsoftware.com",
+  "experts.actonservice.com": "forpci79.actonsoftware.com",
+  "experts.cutter.com": "forpci1.actonsoftware.com",
+  "explore.code3esg.com": "forpci86.actonsoftware.com",
+  "explore.coursefinders.com": "aiepci2.actonsoftware.com",
+  "explore.landcentral.com": "forpci22.actonsoftware.com",
+  "extra.landorandfitch.com": "aiepci4.actonsoftware.com",
+  "eyc-marketing.eyc.com": "forpci93.actonsoftware.com",
+  "fac.fanucamerica.com": "forpci2.actonsoftware.com",
+  "facetwealth.actonservice.com": "forpci58.actonsoftware.com",
+  "fastenermkt.averydennison.com": "forpci24.actonsoftware.com",
+  "fdiinc.actonservice.com": "forpci38.actonsoftware.com",
+  "fedsched.actonservice.com": "forpci23.actonsoftware.com",
+  "feedme.littlefieldagency.com": "forpci11.actonsoftware.com",
+  "fiber.zayo.com": "forpci3.actonsoftware.com",
+  "fiduciaryfirst.actonservice.com": "forpci71.actonsoftware.com",
+  "financialeducation-info.uchicago.edu": "forpci73.actonsoftware.com",
+  "financialservices.teranet.ca": "forpci23.actonsoftware.com",
+  "finley.finleyusa.com": "forpci59.actonsoftware.com",
+  "flexibleplan.actonservice.com": "forpci33.actonsoftware.com",
+  "flexpod.ynsecureserver.net": "forpci93.actonsoftware.com",
+  "floorforce.actonservice.com": "forpci73.actonsoftware.com",
+  "fly.caljetelite.com": "forpci31.actonsoftware.com",
+  "fmbankva.actonservice.com": "forpci63.actonsoftware.com",
+  "foodpackaging.kpfilms.com": "aiepci4.actonsoftware.com",
+  "forms.cooperaerobics.com": "forpci23.actonsoftware.com",
+  "forms.testoil.com": "forpci35.actonsoftware.com",
+  "fr.promo.skf.com": "adepci4.actonsoftware.com",
+  "fr.sharpmarketing.eu": "aiepci3.actonsoftware.com",
+  "franchiserecruitment.bakersdelight.com.au": "forpci32.actonsoftware.com",
+  "franchising.pizzapizza.ca": "forpci38.actonsoftware.com",
+  "franklin.edu.actonservice.com": "forpci29.actonsoftware.com",
+  "frankwatching.actonservice.com": "aiepci5.actonsoftware.com",
+  "frenchgerleman.actonservice.com": "forpci76.actonsoftware.com",
+  "fsresidential.actonservice.com": "forpci33.actonsoftware.com",
+  "ftfnews.actonservice.com": "forpci76.actonsoftware.com",
+  "fundraising.centuryresources.com": "forpci50.actonsoftware.com",
+  "gas-sensing.spec-sensors.com": "forpci75.actonsoftware.com",
+  "gassales.eversource.com": "forpci89.actonsoftware.com",
+  "gatan.actonservice.com": "forpci69.actonsoftware.com",
+  "genesishealth.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "geo.bluedot.io": "forpci11.actonsoftware.com",
+  "geonetric.actonservice.com": "forpci24.actonsoftware.com",
+  "get.hydrosystemsco.com": "forpci93.actonsoftware.com",
+  "globalcommunications.sc.com": "aiepci2.actonsoftware.com",
+  "globalmed.actonservice.com": "forpci31.actonsoftware.com",
+  "go.acclaro.com": "forpci90.actonsoftware.com",
+  "go.acelisconnectedhealth.com": "forpci27.actonsoftware.com",
+  "go.ahmmarketing.com": "forpci27.actonsoftware.com",
+  "go.avistone.com": "forpci33.actonsoftware.com",
+  "go.bayshoresystems.com": "forpci11.actonsoftware.com",
+  "go.bciburke.com": "forpci91.actonsoftware.com",
+  "go.bil-jac.com": "forpci34.actonsoftware.com",
+  "go.bitnami.com": "forpci51.actonsoftware.com",
+  "go.biz.uiowa.edu": "forpci94.actonsoftware.com",
+  "go.c4weld.com": "forpci61.actonsoftware.com",
+  "go.cybernet.us": "forpci11.actonsoftware.com",
+  "go.diagraph.com": "forpci91.actonsoftware.com",
+  "go.dukane.com": "forpci54.actonsoftware.com",
+  "go.durst-group.com": "forpci11.actonsoftware.com",
+  "go.eacpds.com": "forpci73.actonsoftware.com",
+  "go.foremostmedia.com": "forpci72.actonsoftware.com",
+  "go.fvtc.edu": "forpci2.actonsoftware.com",
+  "go.getherculestires.com": "forpci11.actonsoftware.com",
+  "go.getreadyforthefuture.com": "forpci2.actonsoftware.com",
+  "go.godunnage.com": "forpci92.actonsoftware.com",
+  "go.gpcom.com": "forpci43.actonsoftware.com",
+  "go.hartnessintl.com": "forpci93.actonsoftware.com",
+  "go.infopulse.com": "aiepci2.actonsoftware.com",
+  "go.isbamutual.com": "forpci54.actonsoftware.com",
+  "go.lanair.com": "forpci91.actonsoftware.com",
+  "go.loveshaw.com": "forpci91.actonsoftware.com",
+  "go.marfeel.com": "aiepci2.actonsoftware.com",
+  "go.matthewsautomation.com": "forpci24.actonsoftware.com",
+  "go.matthewsmarking.com": "forpci24.actonsoftware.com",
+  "go.mitchell1.com": "forpci29.actonsoftware.com",
+  "go.mktgcampaigns.com": "forpci81.actonsoftware.com",
+  "go.mtasolutions.com": "forpci2.actonsoftware.com",
+  "go.mvtec.com": "adepci2.actonsoftware.com",
+  "go.noregon.com": "forpci11.actonsoftware.com",
+  "go.oroinc.com": "forpci11.actonsoftware.com",
+  "go.peppermarketing.com.au": "forpci69.actonsoftware.com",
+  "go.pgx.com": "forpci35.actonsoftware.com",
+  "go.pheasant.com": "forpci91.actonsoftware.com",
+  "go.phhlending.com": "forpci11.actonsoftware.com",
+  "go.polarkingmobile.com": "forpci2.actonsoftware.com",
+  "go.psiseminars.com": "forpci38.actonsoftware.com",
+  "go.reico.com": "forpci33.actonsoftware.com",
+  "go.rex-bac-t.com": "forpci91.actonsoftware.com",
+  "go.riosalado.edu": "forpci95.actonsoftware.com",
+  "go.segra.com": "forpci61.actonsoftware.com",
+  "go.simco-ion.com": "forpci2.actonsoftware.com",
+  "go.streakwave.com": "forpci96.actonsoftware.com",
+  "go.tdyne.com": "forpci2.actonsoftware.com",
+  "go.transversal.com": "aiepci1.actonsoftware.com",
+  "go.unifysquare.com": "forpci59.actonsoftware.com",
+  "go.unitusccu.com": "forpci11.actonsoftware.com",
+  "go.uscad.com": "forpci81.actonsoftware.com",
+  "go.wireco.com": "forpci61.actonsoftware.com",
+  "go.wm.plantemoran.com": "forpci52.actonsoftware.com",
+  "go.wrmeadows.com": "forpci27.actonsoftware.com",
+  "go.zic.co.nz": "forpci33.actonsoftware.com",
+  "go2.renault.co.nz": "forpci22.actonsoftware.com",
+  "goldenhelix.actonservice.com": "forpci54.actonsoftware.com",
+  "goldenpaints.actonservice.com": "forpci33.actonsoftware.com",
+  "goshenhealth.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "goto.benchmarkeducation.com": "forpci32.actonsoftware.com",
+  "goto.newmarklearning.com": "forpci36.actonsoftware.com",
+  "gowhiteowl.actonservice.com": "forpci58.actonsoftware.com",
+  "gr.promo.skf.com": "adepci4.actonsoftware.com",
+  "graystone-eye.actonservice.com": "forpci54.actonsoftware.com",
+  "greenbeacon.actonservice.com": "forpci83.actonsoftware.com",
+  "greif.actonservice.com": "forpci31.actonsoftware.com",
+  "grow.bridgepointconsulting.com": "forpci69.actonsoftware.com",
+  "guardiancu.actonservice.com": "forpci61.actonsoftware.com",
+  "gundersenhealth.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "hackensackumc.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "hallmarkhealth.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "halo.actonservice.com": "forpci75.actonsoftware.com",
+  "hcacapitaldivision.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "hcacentralwesttexas.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "hcaeastflorida.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "hcafarwest.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "hcagulfcoast.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "hcahealthcare.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "hcamidamerica.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "hcanorthflorida.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "hcanorthtexas.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "hcasouthatlantic.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "hcawestflorida.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "healthgrades.actonservice.com": "forpcid13.actonsoftware.com",
+  "healthonecares.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "healthquest.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "healthy.spartanburgregional.com": "forpcid13.actonsoftware.com",
+  "heartland.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "helens.actonservice.com": "adepci1.actonsoftware.com",
+  "hello.emergeinteractive.com": "forpci58.actonsoftware.com",
+  "hello.epochpi.com": "forpci92.actonsoftware.com",
+  "hfd.bridgetowermedia.com": "forpci61.actonsoftware.com",
+  "hub.hubfinancial.com": "acapcid1.actonsoftware.com",
+  "hub.hubinternational.com": "acapcid1.actonsoftware.com",
+  "id.promo.skf.com": "adepci4.actonsoftware.com",
+  "ihc.cellmarque.com": "forpci56.actonsoftware.com",
+  "in.promo.skf.com": "adepci4.actonsoftware.com",
+  "industry.promo.skf.com": "adepci4.actonsoftware.com",
+  "info-fsi.stanford.edu": "forpci30.actonsoftware.com",
+  "info.accutrain.com": "forpci34.actonsoftware.com",
+  "info.ahip.org": "forpci32.actonsoftware.com",
+  "info.alicat.com": "forpci61.actonsoftware.com",
+  "info.ascassociation.org": "forpci86.actonsoftware.com",
+  "info.aspcapro.org": "forpci29.actonsoftware.com",
+  "info.axionbiosystems.com": "forpci54.actonsoftware.com",
+  "info.battelle.org": "forpci39.actonsoftware.com",
+  "info.beaumont.org": "forpci24.actonsoftware.com",
+  "info.bestuursacademie.nl": "aiepci6.actonsoftware.com",
+  "info.bnp-news.de": "adepci4.actonsoftware.com",
+  "info.boundtree.com": "forpci49.actonsoftware.com",
+  "info.briefing.com": "forpci87.actonsoftware.com",
+  "info.calmradio.com": "forpci35.actonsoftware.com",
+  "info.ccbjournal.com": "forpci11.actonsoftware.com",
+  "info.celigo.com": "forpci95.actonsoftware.com",
+  "info.charityvillage.com": "forpci2.actonsoftware.com",
+  "info.chicagolandchamber.org": "forpci77.actonsoftware.com",
+  "info.cignex.com": "forpci31.actonsoftware.com",
+  "info.citymarketingamersfoort.nl": "adepci4.actonsoftware.com",
+  "info.commondreams.org": "forpci29.actonsoftware.com",
+  "info.computrain.nl": "aiepci6.actonsoftware.com",
+  "info.cresinsurance.com": "forpci29.actonsoftware.com",
+  "info.critical-logic.com": "forpci23.actonsoftware.com",
+  "info.crowdtap.com": "forpci58.actonsoftware.com",
+  "info.datasci.com": "forpci73.actonsoftware.com",
+  "info.dgq.de": "aiepci6.actonsoftware.com",
+  "info.dril-quip.com": "forpci92.actonsoftware.com",
+  "info.eco.ca": "forpci11.actonsoftware.com",
+  "info.edriving.com": "aiepci5.actonsoftware.com",
+  "info.electrifai.net": "forpci11.actonsoftware.com",
+  "info.em-ametek.com": "forpci69.actonsoftware.com",
+  "info.email-bkfs.com": "forpci34.actonsoftware.com",
+  "info.emersonecologics.com": "forpci53.actonsoftware.com",
+  "info.emishealth.com": "aiepci3.actonsoftware.com",
+  "info.epsbooks.com": "forpci47.actonsoftware.com",
+  "info.esriindonesia.co.id": "adepci500.actonsoftware.com",
+  "info.esrimalaysia.com.my": "adepci500.actonsoftware.com",
+  "info.fosterslaw.ca": "forpci3.actonsoftware.com",
+  "info.foundationsoft.com": "forpci94.actonsoftware.com",
+  "info.franchisegator.com": "forpci43.actonsoftware.com",
+  "info.franklin.edu": "franklin-edu.actonservice.com",
+  "info.freedom-iot.com": "forpci36.actonsoftware.com",
+  "info.furykeywest.com": "forpci2.actonsoftware.com",
+  "info.gcaaltium.com": "forpci31.actonsoftware.com",
+  "info.goldmine.com": "forpci47.actonsoftware.com",
+  "info.gradability.com.au": "performance.actonservice.com",
+  "info.graystone-eye.com": "forpci54.actonsoftware.com",
+  "info.greif.com": "forpci31.actonsoftware.com",
+  "info.guardiancu.org": "guardiancu.actonservice.com",
+  "info.halo.com": "halo.actonservice.com",
+  "info.harvardapparatus.com": "forpci3.actonsoftware.com",
+  "info.healthcareittoday.com": "forpci43.actonsoftware.com",
+  "info.heartflow.com": "forpci88.actonsoftware.com",
+  "info.hiway.org": "forpci33.actonsoftware.com",
+  "info.iatspayments.com": "forpci86.actonsoftware.com",
+  "info.icslearn.co.uk": "aiepci1.actonsoftware.com",
+  "info.ielts.com.au": "ci201.actonsoftware.com",
+  "info.insurancehotline.com": "forpci24.actonsoftware.com",
+  "info.itw-air.com": "forpci11.actonsoftware.com",
+  "info.itwcce.com": "forpci97.actonsoftware.com",
+  "info.jadelearning.com": "forpci54.actonsoftware.com",
+  "info.jccc.edu": "forpci44.actonsoftware.com",
+  "info.jwpepper.com": "jwpepper.actonsoftware.com",
+  "info.kahnlitwin.com": "forpci36.actonsoftware.com",
+  "info.kanetix.ca": "forpci24.actonsoftware.com",
+  "info.kratosdefense.com": "kratosdefense.actonservice.com",
+  "info.marshpcs.com": "forpci87.actonsoftware.com",
+  "info.mediacy.com": "forpci86.actonsoftware.com",
+  "info.meonuk.com": "aiepci6.actonsoftware.com",
+  "info.meriwest.com": "forpci58.actonsoftware.com",
+  "info.meyerandassoc.com": "forpci29.actonsoftware.com",
+  "info.mma-ne.com": "forpci92.actonsoftware.com",
+  "info.multitech.com": "forpci92.actonsoftware.com",
+  "info.museumofthebible.org": "forpci36.actonsoftware.com",
+  "info.nakisa.com": "forpci11.actonsoftware.com",
+  "info.natlenvtrainers.com": "forpci61.actonsoftware.com",
+  "info.neptune-software.com": "aiepci6.actonsoftware.com",
+  "info.netec.com": "forpci42.actonsoftware.com",
+  "info.normecfoodcare.com": "forpci2.actonsoftware.com",
+  "info.rates.ca": "forpci54.actonsoftware.com",
+  "info.reachtech.com": "forpci50.actonsoftware.com",
+  "info.readytrainingonline.com": "forpci96.actonsoftware.com",
+  "info.schoolspecialtynews.com": "forpci35.actonsoftware.com",
+  "info.scottmadden.com": "forpci11.actonsoftware.com",
+  "info.secotools.com": "forpci43.actonsoftware.com",
+  "info.smartstrategyonline.com": "forpci93.actonsoftware.com",
+  "info.soundtrackyourbrand.com": "ci300.actonsoftware.com",
+  "info.southstarcapital.com": "forpci42.actonsoftware.com",
+  "info.theaba.org": "theaba.actonservice.com",
+  "info.thomsonlinear.com": "forpci29.actonsoftware.com",
+  "info.tpctraining.com": "forpci36.actonsoftware.com",
+  "info.truitycu.org": "forpci52.actonsoftware.com",
+  "info.txeee.engr.utexas.edu": "utexas.actonservice.com",
+  "info.uchealth.com": "forpcid13.actonsoftware.com",
+  "info.veoci.com": "forpci61.actonsoftware.com",
+  "info.vesselsvalue.com": "ci200.actonsoftware.com",
+  "info.washingtoninstitute.org": "forpci44.actonsoftware.com",
+  "info.zoomintel.com": "forpci11.actonsoftware.com",
+  "info.zuidema.nl": "zuidema.actonservice.com",
+  "inform.milestonegroup.com": "ci300.actonsoftware.com",
+  "information.remploy.co.uk": "ci200.actonsoftware.com",
+  "insights.alexandra.dk": "forpci34.actonsoftware.com",
+  "insights.radiometer.com": "radiometer.actonservice.com",
+  "insurance.thehullgroup.com": "forpci38.actonsoftware.com",
+  "ishainsight.actonservice.com": "forpci69.actonsoftware.com",
+  "jeffersonhealth.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "join.opencare.com": "forpci2.actonsoftware.com",
+  "jwpepper.actonsoftware.com": "a39780.actonservice.com",
+  "kforce.actonservice.com": "forpci36.actonsoftware.com",
+  "kumed.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "lakelandhealth.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "learn.corneagen.com": "forpci49.actonsoftware.com",
+  "lgm.averydennison.com": "forpci38.actonsoftware.com",
+  "links.asbury.org": "forpcid21.actonsoftware.com",
+  "loginvsi.actonservice.com": "forpci72.actonsoftware.com",
+  "logistics.osmworldwide.com": "forpci23.actonsoftware.com",
+  "lp.fsresidential.com": "fsresidential.actonservice.com",
+  "lp.solaredge.com": "forpci53.actonsoftware.com",
+  "ma.axiomatics.com": "forpci62.actonsoftware.com",
+  "mail.fathomdelivers.com": "forpci24.actonsoftware.com",
+  "mail.spandex.com": "ci200.actonsoftware.com",
+  "mailing.elconfidencialdigital.com": "elconfidencialdigital.actonservice.com",
+  "marcom.biodex.com": "forpci25.actonsoftware.com",
+  "marketing-info.cargurus.com": "forpci73.actonsoftware.com",
+  "marketing.12build.com": "aiepci3.actonsoftware.com",
+  "marketing.aad.org": "forpci29.actonsoftware.com",
+  "marketing.acieu.net": "forpci43.actonsoftware.com",
+  "marketing.all-wall.com": "forpci43.actonsoftware.com",
+  "marketing.alsearsmd.com": "forpcid6.actonsoftware.com",
+  "marketing.americanbathgroup.com": "forpci26.actonsoftware.com",
+  "marketing.amerra.com": "forpci45.actonsoftware.com",
+  "marketing.anchorage.net": "forpci61.actonsoftware.com",
+  "marketing.andaluciarealty.com": "forpci52.actonsoftware.com",
+  "marketing.aotourism.com": "forpci54.actonsoftware.com",
+  "marketing.arlington.org": "forpci2.actonsoftware.com",
+  "marketing.arrayasolutions.com": "forpci31.actonsoftware.com",
+  "marketing.artemiscm.com": "forpci54.actonsoftware.com",
+  "marketing.arysta-na.com": "forpci44.actonsoftware.com",
+  "marketing.asmarterwindow.com": "forpci33.actonsoftware.com",
+  "marketing.astm.org": "forpci56.actonsoftware.com",
+  "marketing.aten.com": "forpci72.actonsoftware.com",
+  "marketing.atlanticcitynj.com": "forpci11.actonsoftware.com",
+  "marketing.atlanticdiagnosticlaboratories.com": "forpci33.actonsoftware.com",
+  "marketing.autozonemecanicos.com": "forpcid16.actonsoftware.com",
+  "marketing.avantage.nl": "adepci1.actonsoftware.com",
+  "marketing.avidiahealth.com": "forpci33.actonsoftware.com",
+  "marketing.baltimore.org": "forpci58.actonsoftware.com",
+  "marketing.barbizon.com": "forpci62.actonsoftware.com",
+  "marketing.barnumfg.com": "massmutual.actonservice.com",
+  "marketing.bayhealth.org": "forpci49.actonsoftware.com",
+  "marketing.bcaespana.es": "ci202.actonsoftware.com",
+  "marketing.beneplace.com": "forpci33.actonsoftware.com",
+  "marketing.berktek.us": "forpci23.actonsoftware.com",
+  "marketing.bftwealth.com": "forpcid12.actonsoftware.com",
+  "marketing.blacktrace.com": "aiepci2.actonsoftware.com",
+  "marketing.blastone.com": "forpci36.actonsoftware.com",
+  "marketing.bloomingtonmn.org": "forpci61.actonsoftware.com",
+  "marketing.bluefcu.com": "warrenfcu.actonservice.com",
+  "marketing.bouldercoloradousa.com": "forpci11.actonsoftware.com",
+  "marketing.brandonindustries.com": "forpci3.actonsoftware.com",
+  "marketing.business-sweden.se": "ci202.actonsoftware.com",
+  "marketing.buyemp.com": "forpci22.actonsoftware.com",
+  "marketing.calchoice.com": "forpci35.actonsoftware.com",
+  "marketing.capsahealthcare.com": "forpci22.actonsoftware.com",
+  "marketing.cellero.com": "forpci93.actonsoftware.com",
+  "marketing.centra.org": "forpci63.actonsoftware.com",
+  "marketing.centreforaviation.com": "aiepci2.actonsoftware.com",
+  "marketing.cesco.com": "forpci35.actonsoftware.com",
+  "marketing.choosechicago.com": "forpci11.actonsoftware.com",
+  "marketing.cincinnatiusa.com": "forpci11.actonsoftware.com",
+  "marketing.comda.com": "forpci28.actonsoftware.com",
+  "marketing.construsoft.com": "construsoft.actonservice.com",
+  "marketing.course5i.com": "forpci34.actonsoftware.com",
+  "marketing.dacocorp.com": "forpci58.actonsoftware.com",
+  "marketing.deltechomes.com": "forpci46.actonsoftware.com",
+  "marketing.demagcranes.com": "adepci1.actonsoftware.com",
+  "marketing.destinationvancouver.com": "forpci11.actonsoftware.com",
+  "marketing.diningalliance.com": "forpci69.actonsoftware.com",
+  "marketing.discoverdenton.com": "forpci3.actonsoftware.com",
+  "marketing.discoverlehighvalley.com": "forpci61.actonsoftware.com",
+  "marketing.discovernewport.org": "forpci38.actonsoftware.com",
+  "marketing.discoverpuertorico.com": "forpci2.actonsoftware.com",
+  "marketing.discoverx.com": "forpci41.actonsoftware.com",
+  "marketing.dnacenter.com": "forpci97.actonsoftware.com",
+  "marketing.dreamstyleremodeling.com": "forpci58.actonsoftware.com",
+  "marketing.duckbrand.com": "forpci40.actonsoftware.com",
+  "marketing.dylangrayconsulting.com": "forpci2.actonsoftware.com",
+  "marketing.e-emphasys.com": "forpci69.actonsoftware.com",
+  "marketing.e-nor.com": "forpci59.actonsoftware.com",
+  "marketing.econolite.com": "forpci79.actonsoftware.com",
+  "marketing.ecosystemintegrity.com": "forpci34.actonsoftware.com",
+  "marketing.efgam.com": "aiepci1.actonsoftware.com",
+  "marketing.ehimrx.com": "forpci49.actonsoftware.com",
+  "marketing.envylabs.com": "forpci61.actonsoftware.com",
+  "marketing.epson.com.au": "forpci31.actonsoftware.com",
+  "marketing.equippo.com": "forpci71.actonsoftware.com",
+  "marketing.erepublic.com": "forpci87.actonsoftware.com",
+  "marketing.eriksen.com": "forpci58.actonsoftware.com",
+  "marketing.eschenbach.com": "forpci26.actonsoftware.com",
+  "marketing.etcnow.com": "forpci66.actonsoftware.com",
+  "marketing.eugenecascadescoast.org": "forpci61.actonsoftware.com",
+  "marketing.ewi.org": "forpci76.actonsoftware.com",
+  "marketing.experiencecolumbus.com": "forpci38.actonsoftware.com",
+  "marketing.explorecharleston.com": "forpci2.actonsoftware.com",
+  "marketing.exploreedmonton.com": "forpci2.actonsoftware.com",
+  "marketing.foxitsoftware1.com": "foxitsoftware.actonsoftware.com",
+  "marketing.genpak.com": "forpci30.actonsoftware.com",
+  "marketing.geowarehouse.ca": "forpci68.actonsoftware.com",
+  "marketing.glaciertanks.com": "forpci40.actonsoftware.com",
+  "marketing.globalpointofcare.abbott": "forpci79.actonsoftware.com",
+  "marketing.goldenpaints.com": "goldenpaints.actonservice.com",
+  "marketing.goprovidence.com": "forpci11.actonsoftware.com",
+  "marketing.gulfshores.com": "forpci61.actonsoftware.com",
+  "marketing.hexaware.com": "forpci27.actonsoftware.com",
+  "marketing.huntingandfishing.co.nz": "forpci31.actonsoftware.com",
+  "marketing.hvcb.org": "forpci61.actonsoftware.com",
+  "marketing.idquantique.com": "ci301.actonsoftware.com",
+  "marketing.igel.com": "igel-tech.actonservice.com",
+  "marketing.iloveny.com": "forpci61.actonsoftware.com",
+  "marketing.industrialspec.com": "forpci22.actonsoftware.com",
+  "marketing.influitive.com": "forpci28.actonsoftware.com",
+  "marketing.insigniam.com": "forpci81.actonsoftware.com",
+  "marketing.inventiconasia.com": "aiepci5.actonsoftware.com",
+  "marketing.iriworldwide.com": "forpci54.actonsoftware.com",
+  "marketing.irvingtexas.com": "forpci36.actonsoftware.com",
+  "marketing.iwebcontent.com": "forpci43.actonsoftware.com",
+  "marketing.jetlinx.com": "forpci31.actonsoftware.com",
+  "marketing.johncrane.com": "forpci96.actonsoftware.com",
+  "marketing.keylane.com": "aiepci5.actonsoftware.com",
+  "marketing.knoxville.org": "forpci38.actonsoftware.com",
+  "marketing.konecranes.com": "adepci2.actonsoftware.com",
+  "marketing.kozzyavm.com": "forpci85.actonsoftware.com",
+  "marketing.kpfilms.com": "aiepci4.actonsoftware.com",
+  "marketing.latourism.org": "forpci38.actonsoftware.com",
+  "marketing.lcmchealth.org": "forpcid13.actonsoftware.com",
+  "marketing.ledgeviewpartners.com": "forpci87.actonsoftware.com",
+  "marketing.lord.com": "forpci96.actonsoftware.com",
+  "marketing.lumenera.com": "forpci33.actonsoftware.com",
+  "marketing.luxurylink.com": "forpci52.actonsoftware.com",
+  "marketing.magnet.ie": "aiepci1.actonsoftware.com",
+  "marketing.magnetrol.com": "forpci51.actonsoftware.com",
+  "marketing.martin-eng.com": "forpci91.actonsoftware.com",
+  "marketing.martinhealth.org": "forpci66.actonsoftware.com",
+  "marketing.medfusion.com": "forpci55.actonsoftware.com",
+  "marketing.medprostaffing.com": "forpci27.actonsoftware.com",
+  "marketing.melitta.com": "forpci25.actonsoftware.com",
+  "marketing.merituspayment.com": "forpci23.actonsoftware.com",
+  "marketing.mimakiusa.com": "forpci29.actonsoftware.com",
+  "marketing.mobile.org": "forpci61.actonsoftware.com",
+  "marketing.moodypublishers.com": "forpci1.actonsoftware.com",
+  "marketing.motionsolutions.com": "forpci22.actonsoftware.com",
+  "marketing.mplsnw.com": "forpci11.actonsoftware.com",
+  "marketing.mypureradiance.com": "forpci92.actonsoftware.com",
+  "marketing.nada.org": "forpci35.actonsoftware.com",
+  "marketing.ncbrunswick.com": "forpci61.actonsoftware.com",
+  "marketing.netwoven.com": "forpci32.actonsoftware.com",
+  "marketing.neworleans.com": "forpci61.actonsoftware.com",
+  "marketing.njoyn.com": "forpci25.actonsoftware.com",
+  "marketing.norsat.com": "forpci24.actonsoftware.com",
+  "marketing.nowplayingutah.com": "forpci35.actonsoftware.com",
+  "marketing.omnifymarketing.com": "forpci73.actonsoftware.com",
+  "marketing.on1.com": "forpcid8.actonsoftware.com",
+  "marketing.onesteuartlane.com": "forpci36.actonsoftware.com",
+  "marketing.openworksweb.com": "forpci54.actonsoftware.com",
+  "marketing.orionhealth.com": "adepci2.actonsoftware.com",
+  "marketing.orolia.com": "forpci26.actonsoftware.com",
+  "marketing.pal-v.com": "adepci1.actonsoftware.com",
+  "marketing.paysafe.com": "forpci23.actonsoftware.com",
+  "marketing.petsit.com": "forpci84.actonsoftware.com",
+  "marketing.piazzaavm.com.tr": "forpci85.actonsoftware.com",
+  "marketing.pinkerton.com": "forpci34.actonsoftware.com",
+  "marketing.pipelinepub.com": "pipelinepub.actonservice.com",
+  "marketing.poconomountains.com": "forpci54.actonsoftware.com",
+  "marketing.prep101.com": "forpci81.actonsoftware.com",
+  "marketing.processmaker.com": "forpci30.actonsoftware.com",
+  "marketing.pronaca.com": "forpci92.actonsoftware.com",
+  "marketing.ptw.com": "forpci32.actonsoftware.com",
+  "marketing.rdoequipment.com": "forpci81.actonsoftware.com",
+  "marketing.readinghorizons.com": "forpci81.actonsoftware.com",
+  "marketing.realcomm.com": "forpci36.actonsoftware.com",
+  "marketing.remine.com": "remine.actonservice.com",
+  "marketing.remotelock.com": "forpci27.actonsoftware.com",
+  "marketing.revgroup.com": "revgroup.actonservice.com",
+  "marketing.riogrande.com": "forpci57.actonsoftware.com",
+  "marketing.santabarbaraca.com": "forpci11.actonsoftware.com",
+  "marketing.scalematrix.com": "scalematrix.actonservice.com",
+  "marketing.sedgwick.com": "forpci36.actonsoftware.com",
+  "marketing.seemonterey.com": "forpci43.actonsoftware.com",
+  "marketing.seligsealing.com": "seligsealing.actonservice.com",
+  "marketing.shoplet.com": "forpci43.actonsoftware.com",
+  "marketing.shurtapemail.com": "forpci40.actonsoftware.com",
+  "marketing.skorsports.nl": "ci300.actonsoftware.com",
+  "marketing.smartvault.com": "forpci23.actonsoftware.com",
+  "marketing.soundtrackyourbrand.com": "ci301.actonsoftware.com",
+  "marketing.specgradeled.com": "forpci2.actonsoftware.com",
+  "marketing.splashtop.com": "forpcid9.actonsoftware.com",
+  "marketing.stahl.com": "stahl.actonservice.com",
+  "marketing.starmicronics.com": "forpci32.actonsoftware.com",
+  "marketing.stay-rlhc.com": "forpci58.actonsoftware.com",
+  "marketing.sunny.org": "forpci36.actonsoftware.com",
+  "marketing.superiorrecreationalproducts.com": "siibrands.actonservice.com",
+  "marketing.techdata.com.techdatamarketing.com": "forpci45.actonsoftware.com",
+  "marketing.technicalprospects.com": "technicalprospects.actonsoftware.com",
+  "marketing.technologyadvice.com": "technologyadvice.actonservice.com",
+  "marketing.thepalmbeaches.com": "forpci38.actonsoftware.com",
+  "marketing.thequinnsf.com": "forpci61.actonsoftware.com",
+  "marketing.theresortatsummerlin.com": "jwmarriottlv.actonsoftware.com",
+  "marketing.thermocalc.se": "thermocalc.actonservice.com",
+  "marketing.thisiscleveland.com": "forpci93.actonsoftware.com",
+  "marketing.thomassci.com": "forpci73.actonsoftware.com",
+  "marketing.thomsonreuterscanada.ca": "thomsonreuters.actonservice.com",
+  "marketing.tourismsaskatoon.com": "forpci61.actonsoftware.com",
+  "marketing.tourismwinnipeg.com": "forpci54.actonsoftware.com",
+  "marketing.translations.com": "forpci61.actonsoftware.com",
+  "marketing.transperfect.com": "forpci1.actonsoftware.com",
+  "marketing.transtar1.com": "forpci28.actonsoftware.com",
+  "marketing.travelks.com": "forpci34.actonsoftware.com",
+  "marketing.trustonefinancial.org": "forpci96.actonsoftware.com",
+  "marketing.ttcu.com": "forpci58.actonsoftware.com",
+  "marketing.ugamsolutions.com": "forpci53.actonsoftware.com",
+  "marketing.valleyforge.org": "forpci58.actonsoftware.com",
+  "marketing.vamac.com": "forpci38.actonsoftware.com",
+  "marketing.vantreo.com": "forpci11.actonsoftware.com",
+  "marketing.vault49.com": "forpci11.actonsoftware.com",
+  "marketing.virginia.org": "forpci39.actonsoftware.com",
+  "marketing.visitabq.org": "forpci61.actonsoftware.com",
+  "marketing.visitbatonrouge.com": "forpci36.actonsoftware.com",
+  "marketing.visitbellevuewa.com": "forpci61.actonsoftware.com",
+  "marketing.visitcharlottesville.org": "forpci11.actonsoftware.com",
+  "marketing.visitchattanooga.com": "forpci11.actonsoftware.com",
+  "marketing.visitdenver.com": "forpci38.actonsoftware.com",
+  "marketing.visitgreaterpalmsprings.com": "forpci38.actonsoftware.com",
+  "marketing.visithamiltoncounty.com": "forpci38.actonsoftware.com",
+  "marketing.visitjamaica.com": "forpci3.actonsoftware.com",
+  "marketing.visitloscabos.travel": "ci203.actonsoftware.com",
+  "marketing.visitnepa.org": "forpci61.actonsoftware.com",
+  "marketing.visitoakland.com": "forpci38.actonsoftware.com",
+  "marketing.visitomaha.com": "forpci3.actonsoftware.com",
+  "marketing.visitphoenix.com": "forpci40.actonsoftware.com",
+  "marketing.visitsacramento.com": "forpci61.actonsoftware.com",
+  "marketing.visitsaltlake.com": "forpci29.actonsoftware.com",
+  "marketing.visitsmcsv.com": "forpci80.actonsoftware.com",
+  "marketing.visitsouthwalton.com": "forpci61.actonsoftware.com",
+  "marketing.visitspc.com": "forpci58.actonsoftware.com",
+  "marketing.visitvancouverusa.com": "forpci61.actonsoftware.com",
+  "marketing.visitvirginiabeach.com": "forpci54.actonsoftware.com",
+  "marketing.visitwilliamsburg.com": "forpci11.actonsoftware.com",
+  "marketing.visualskus.com": "forpci96.actonsoftware.com",
+  "marketing.voltexelectrical.com.au": "forpci47.actonsoftware.com",
+  "marketing.washington.org": "forpci11.actonsoftware.com",
+  "marketing.wilsontool.com": "forpci51.actonsoftware.com",
+  "marketing.wolfgordon.com": "forpci38.actonsoftware.com",
+  "marsh.actonservice.com": "forpci87.actonsoftware.com",
+  "mbainfo.ust.hk": "forpci60.actonsoftware.com",
+  "mbna.bruker.com": "ci300.actonsoftware.com",
+  "mbns.bruker.com": "forpci34.actonsoftware.com",
+  "mc.bruker.com": "forpci37.actonsoftware.com",
+  "media.gotham.com": "forpci32.actonsoftware.com",
+  "media.pirtek.co.uk": "adepci4.actonsoftware.com",
+  "mediasource.actonservice.com": "forpci63.actonsoftware.com",
+  "message.alldata.com": "forpcid16.actonsoftware.com",
+  "metric.khkgears.us": "forpci61.actonsoftware.com",
+  "mhmp.bruker.com": "forpci27.actonsoftware.com",
+  "mkt.animalsafety.neogen.com": "forpci22.actonsoftware.com",
+  "mkt.emea.neogen.com": "forpci54.actonsoftware.com",
+  "mkt.foodsafety.neogen.com": "forpci22.actonsoftware.com",
+  "mkt.lifesciences.neogen.com": "forpci24.actonsoftware.com",
+  "mktg.lightspeed.com": "professionaltrading.actonservice.com",
+  "mktg.picarro.com": "picarro.actonservice.com",
+  "mktg.schlage.com": "forpci96.actonsoftware.com",
+  "mktg.senneca.com": "forpci2.actonsoftware.com",
+  "mktg.xeniumhr.com": "forpci50.actonsoftware.com",
+  "mm.morrellinc.com": "morrellinc.actonservice.com",
+  "mortgagefamily.actonservice.com": "forpci11.actonsoftware.com",
+  "motion.kollmorgen.com": "forpci25.actonsoftware.com",
+  "msufcu.actonservice.com": "forpci11.actonsoftware.com",
+  "my.carolina.com": "forpci36.actonsoftware.com",
+  "my.promo.skf.com": "ci300.actonsoftware.com",
+  "news.azcapitoltimes.com": "forpci50.actonsoftware.com",
+  "news.bridgetowermedia.com": "forpci91.actonsoftware.com",
+  "news.chiefexecutive.net": "forpci54.actonsoftware.com",
+  "news.clipcanvas.com": "forpci87.actonsoftware.com",
+  "news.dailyreporter.com": "forpci50.actonsoftware.com",
+  "news.finance-commerce.com": "forpci50.actonsoftware.com",
+  "news.libn.com": "forpci50.actonsoftware.com",
+  "news.mecktimes.com": "forpci50.actonsoftware.com",
+  "news.njbiz.com": "forpci33.actonsoftware.com",
+  "news.scbiznews.com": "forpci58.actonsoftware.com",
+  "news.thedailyrecord.com": "forpci49.actonsoftware.com",
+  "news.valawyersweekly.com": "forpci50.actonsoftware.com",
+  "newsletter.bcautoencheres.fr": "aiepci3.actonsoftware.com",
+  "newsletter.davey.com": "forpci54.actonsoftware.com",
+  "nu.esri.nl": "aiepci3.actonsoftware.com",
+  "oakstreet.actonservice.com": "forpci74.actonsoftware.com",
+  "objectpartners.actonservice.com": "forpci74.actonsoftware.com",
+  "ochsner.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "offers.jazelauto.com": "forpci72.actonsoftware.com",
+  "opportunity.businessbroker.net": "forpci61.actonsoftware.com",
+  "oroinc.actonservice.com": "forpci11.actonsoftware.com",
+  "outreach.allmy-data.com": "forpci60.actonsoftware.com",
+  "outreach.crossref.org": "forpci93.actonsoftware.com",
+  "outreach.semaconnect.com": "forpci38.actonsoftware.com",
+  "outreach.teex.info": "ci23.actonservice.com",
+  "page.evergage.com": "forpci72.actonsoftware.com",
+  "pages.cbecompanies.com": "forpci92.actonsoftware.com",
+  "pages.jobaline.com": "forpci42.actonsoftware.com",
+  "pages.srsmith.com": "forpci91.actonsoftware.com",
+  "pages.telemessage.com": "telemessage.actonsoftware.com",
+  "pages2.samcotech.com": "forpci35.actonsoftware.com",
+  "pasco.actonservice.com": "forpci54.actonsoftware.com",
+  "paynewest.actonservice.com": "forpci29.actonsoftware.com",
+  "pe.promo.skf.com": "ci300.actonsoftware.com",
+  "people.mbtionline.com": "forpci40.actonsoftware.com",
+  "performantcorp.actonservice.com": "forpci25.actonsoftware.com",
+  "pipelinepub.actonservice.com": "forpci71.actonsoftware.com",
+  "ple.pearlinsurance.com": "forpci49.actonsoftware.com",
+  "postgraduate.smu.edu.sg": "forpci70.actonsoftware.com",
+  "postgraduate2.smu.edu.sg": "forpci69.actonsoftware.com",
+  "promo.skf.com": "adepci4.actonsoftware.com",
+  "promos.sanmarcanada.com": "forpci41.actonsoftware.com",
+  "promos.trustedtours.com": "forpci56.actonsoftware.com",
+  "promotions.stationcasinos.com": "forpci11.actonsoftware.com",
+  "prospex.actonservice.com": "forpci76.actonsoftware.com",
+  "prowareness.actonservice.com": "aiepci2.actonsoftware.com",
+  "prudential.distribution.team.prudential.co.uk": "aiepci3.actonsoftware.com",
+  "qln.actonservice.com": "forpci92.actonsoftware.com",
+  "questions.theanswerco.com": "forpci73.actonsoftware.com",
+  "quidel.actonservice.com": "forpci74.actonsoftware.com",
+  "rbis-solutions.averydennison.com": "forpci38.actonsoftware.com",
+  "reactioncommerce.actonservice.com": "forpci38.actonsoftware.com",
+  "realcomm.actonservice.com": "forpci36.actonsoftware.com",
+  "realize.goldenspiralmarketing.com": "forpci3.actonsoftware.com",
+  "resources.davey.com": "forpci31.actonsoftware.com",
+  "resources.faronics.com": "forpci22.actonsoftware.com",
+  "resources.linengineering.com": "forpci31.actonsoftware.com",
+  "resources.recordpoint.com": "aiepci6.actonsoftware.com",
+  "resources.securew2.com": "forpci60.actonsoftware.com",
+  "rfxcel.actonservice.com": "forpci31.actonsoftware.com",
+  "rushmemorial.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "russia.promo.skf.com": "ci303.actonsoftware.com",
+  "s.usenix.org": "forpci24.actonsoftware.com",
+  "science.schoolspecialtynews.com": "forpci35.actonsoftware.com",
+  "scmarketing.colliers.com": "forpci69.actonsoftware.com",
+  "seahorseinfo.agilent.com": "seahorsebio.actonsoftware.com",
+  "sealingdev.actonservice.com": "forpci78.actonsoftware.com",
+  "segra.actonservice.com": "forpci61.actonsoftware.com",
+  "seniorliving.casadelascampanas.com": "forpci24.actonsoftware.com",
+  "seniorliving.crestwoodmanoronline.org": "forpci92.actonsoftware.com",
+  "seniorliving.harrogatelifecare.org": "forpci80.actonsoftware.com",
+  "seniorliving.lifespacecommunities.com": "forpci52.actonsoftware.com",
+  "seniorliving.monroevillageonline.org": "forpci92.actonsoftware.com",
+  "seniorliving.oaksatdenville.org": "forpci73.actonsoftware.com",
+  "seniorliving.vantagehouse.org": "forpci96.actonsoftware.com",
+  "service.charitiesaidfoundation.org.uk": "ci200.actonsoftware.com",
+  "service.frankwatching.com": "frankwatching.actonservice.com",
+  "shop.iwantclips.com": "iwantglobal.actonservice.com",
+  "solar.sharpmarketing.eu": "ci203.actonsoftware.com",
+  "sruk.srglobal.com": "srglobal.actonservice.com",
+  "subscriber.franchiseinsights.com": "forpci61.actonsoftware.com",
+  "success.act-on.com": "forpcid1.actonsoftware.com",
+  "success.ebmcatalyst.com": "forpci11.actonsoftware.com",
+  "success.etgroup.ca": "forpci60.actonsoftware.com",
+  "support.flex.com": "forpci54.actonsoftware.com",
+  "support2.flex.com": "forpci58.actonsoftware.com",
+  "symbio.actonservice.com": "forpci74.actonsoftware.com",
+  "t.ao.argyleforum.com": "forpcid11.actonsoftware.com",
+  "targetstore.actonservice.com": "forpci88.actonsoftware.com",
+  "taylorshellfish.actonservice.com": "forpci80.actonsoftware.com",
+  "teach.graduateprogram.org": "forpci43.actonsoftware.com",
+  "teamhodges.hodgesualumniandfriends.com": "forpci61.actonsoftware.com",
+  "thecea.actonservice.com": "forpci61.actonsoftware.com",
+  "think.phdinc.com": "forpci87.actonsoftware.com",
+  "tls.thelibrarystore.com": "forpci62.actonsoftware.com",
+  "tourism.visitorlando.com": "forpcid2.actonsoftware.com",
+  "towerfcu.actonservice.com": "forpci31.actonsoftware.com",
+  "tracking.experiencescottsdale.com": "forpci36.actonsoftware.com",
+  "tradeshows.aem.org": "forpci75.actonsoftware.com",
+  "travel.caradonna.com": "forpci86.actonsoftware.com",
+  "travelmarketreport.actonservice.com": "forpci11.actonsoftware.com",
+  "triconah.actonservice.com": "forpci11.actonsoftware.com",
+  "trust.mitutoyo.com": "forpci61.actonsoftware.com",
+  "trust.titanhq.com": "spamtitan.actonservice.com",
+  "try.ecisecurepay.com": "forpci27.actonsoftware.com",
+  "ugmarketing.smu.edu.sg": "smu.actonservice.com",
+  "updates.conexpoconagg.com": "forpci30.actonsoftware.com",
+  "us.onkyo.actonservice.com": "forpci61.actonsoftware.com",
+  "us.promo.skf.com": "adepci4.actonsoftware.com",
+  "utexas.actonservice.com": "forpci11.actonsoftware.com",
+  "value.kfcu.org": "kfcu.actonservice.com",
+  "vip.gophersport.com": "gophersport.actonservice.com",
+  "vsmeuw.promo.skf.com": "adepci1.actonsoftware.com",
+  "vsmnam.promo.skf.com": "adepci4.actonsoftware.com",
+  "vt.mak.com": "forpci24.actonsoftware.com",
+  "weare.ballymoregroup.com": "ci205.actonsoftware.com",
+  "webinars.clilearning.com": "forpci1.actonsoftware.com",
+  "wissen.sage.de": "a7510.actonsoftware.com",
+  "workwonders.hallstar.com": "forpci23.actonsoftware.com",
+  "ww2.vinhwellness.com": "forpci94.actonsoftware.com",
+  "ww4.recruitmentedu.com": "forpci80.actonsoftware.com",
+  "www.anritsu-apsr-response.com": "forpci42.actonsoftware.com",
+  "www.bcaeurope.eu": "ci203.actonsoftware.com",
+  "www.healthcare-distribution.com": "healthcaremarketing.actonsoftware.com",
+  "www.paydashboardinfo.com": "paydashboard.actonservice.com",
+  "www.wescam.info": "forpci31.actonsoftware.com",
+  "www1.drwilsons.com": "icahealth.actonservice.com",
+  "www2.2ndgear.com": "insightinvestments.actonservice.com",
+  "www2.bobcad.com": "forpci93.actonsoftware.com",
+  "www2.citizensclimatelobby.org": "forpci96.actonsoftware.com",
+  "www2.esri.se": "ci300.actonsoftware.com",
+  "www3.strsoftware.com": "forpci26.actonsoftware.com",
+  "www4.bimobject.com": "ci205.actonsoftware.com",
+  "yourcare.pennstatehealth.org": "forpcid13.actonsoftware.com",
+  "yourhealth.cooperhealth.org": "forpcid13.actonsoftware.com",
+  "yourhealth.promedica.org": "forpcid13.actonsoftware.com",
+  "yourupmcsusquehanna.hrm.healthgrades.com": "forpcid13.actonsoftware.com",
+  "a.acxiom.com": "acxiom.com.d2.sc.omtrdc.net",
+  "a.beliefnet.com": "foxentertainment.122.2o7.net",
+  "a.fox.com": "fox.com.d2.sc.omtrdc.net",
+  "a.foxsports.com": "foxsports.com.d2.sc.omtrdc.net",
+  "a.medtronic.com": "medtronic.com.sc.omtrdc.net",
+  "a.rohde-schwarz.com": "rohde-schwarz.com.ssl.sc.omtrdc.net",
+  "a.rohde-schwarz.com.cn": "rohde-schwarz.com.cn.ssl.sc.omtrdc.net",
+  "a.telus.com": "telus.com.sc.omtrdc.net",
+  "a.thexfactorusa.com": "foxentertainment.122.2o7.net",
+  "aa-metrics.aircard.jp": "aircard.jp.ssl.sc.omtrdc.net",
+  "aa-metrics.airreserve.net": "airreserve.net.ssl.sc.omtrdc.net",
+  "aa-metrics.airrsv.net": "airrsv.net.ssl.sc.omtrdc.net",
+  "aa-metrics.amuelle.jp": "amuelle.jp.ssl.sc.omtrdc.net",
+  "aa-metrics.beauty.hotpepper.jp": "beauty.hotpepper.jp.ssl.sc.omtrdc.net",
+  "aa-metrics.cocokarada.jp": "cocokarada.jp.ssl.sc.omtrdc.net",
+  "aa-metrics.golf-jalan.net": "golf-jalan.net.ssl.sc.omtrdc.net",
+  "aa-metrics.handy.airregi.jp": "handy.airregi.jp.ssl.sc.omtrdc.net",
+  "aa-metrics.hokench.com": "hokench.com.ssl.sc.omtrdc.net",
+  "aa-metrics.hotpepper.jp": "hotpepper.jp.ssl.sc.omtrdc.net",
+  "aa-metrics.hpbcosme.com": "hpbcosme.com.ssl.sc.omtrdc.net",
+  "aa-metrics.jalan.net": "jalan.net.ssl.sc.omtrdc.net",
+  "aa-metrics.ponparemall.com": "ponparemall.com.ssl.sc.omtrdc.net",
+  "aa-metrics.recruit-card.jp": "recruit-card.jp.ssl.sc.omtrdc.net",
+  "aa-metrics.restaurant-board.com": "restaurant-board.com.ssl.sc.omtrdc.net",
+  "aa-metrics.salonboard.com": "salonboard.com.ssl.sc.omtrdc.net",
+  "aa-metrics.tabroom.jp": "tabroom.jp.ssl.sc.omtrdc.net",
+  "aa-metrics.trip-ai.jp": "trip-ai.jp.ssl.sc.omtrdc.net",
+  "aa.analog.com": "analog.com.ssl.d2.sc.omtrdc.net",
+  "aa.athome.com": "athome.com.data.adobedc.net",
+  "aa.bathandbodyworks.com": "bathandbodyworks.com.data.adobedc.net",
+  "aa.cbsi.com": "cbsi.com.sc.omtrdc.net",
+  "aa.cbsnews.com": "cbsnews.com.sc.omtrdc.net",
+  "aa.cbssports.com": "cbssports.com.sc.omtrdc.net",
+  "aa.cnet.com": "cnet.com.sc.omtrdc.net",
+  "aa.db-finanzberatung.de": "db-finanzberatung.de.data.adobedc.net",
+  "aa.deutsche-bank.de": "deutsche-bank.de.data.adobedc.net",
+  "aa.dyson.at": "dyson.at.sc.omtrdc.net",
+  "aa.dyson.be": "dyson.be.sc.omtrdc.net",
+  "aa.dyson.ch": "dyson.ch.sc.omtrdc.net",
+  "aa.dyson.co.uk": "dyson.co.uk.sc.omtrdc.net",
+  "aa.dyson.com": "dyson.com.sc.omtrdc.net",
+  "aa.dyson.de": "dyson.de.sc.omtrdc.net",
+  "aa.dyson.dk": "dyson.dk.sc.omtrdc.net",
+  "aa.dyson.es": "dyson.es.sc.omtrdc.net",
+  "aa.dyson.fr": "dyson.fr.sc.omtrdc.net",
+  "aa.dyson.ie": "dyson.ie.sc.omtrdc.net",
+  "aa.dyson.it": "dyson.it.sc.omtrdc.net",
+  "aa.dyson.nl": "dyson.nl.sc.omtrdc.net",
+  "aa.dyson.pt": "dyson.pt.sc.omtrdc.net",
+  "aa.dyson.se": "dyson.se.sc.omtrdc.net",
+  "aa.dysoncanada.ca": "dysoncanada.ca.sc.omtrdc.net",
+  "aa.erwinmueller.com": "erwinmueller.com.ssl.sc.omtrdc.net",
+  "aa.gamespot.com": "gamespot.com.sc.omtrdc.net",
+  "aa.maxblue.de": "maxblue.de.data.adobedc.net",
+  "aa.mclaren.com": "mclaren.com.sc.omtrdc.net",
+  "aa.norisbank.de": "norisbank.de.data.adobedc.net",
+  "aa.paramountplus.com": "paramountplus.com.sc.omtrdc.net",
+  "aa.reebok.com": "reebok.com.ssl.sc.omtrdc.net",
+  "aa.tallink.com": "tallink.com.sc.omtrdc.net",
+  "aa.thedoctorstv.com": "thedoctorstv.com.sc.omtrdc.net",
+  "aa.tv.com": "tv.com.sc.omtrdc.net",
+  "aa.tvguide.com": "tvguide.com.sc.omtrdc.net",
+  "aa.wowma.jp": "wowma.jp.sc.omtrdc.net",
+  "aadata.april-international.com": "april-international.com.data.adobedc.net",
+  "aadata.april.fr": "april.fr.data.adobedc.net",
+  "aam.gumtree.com.au": "gumtree.com.au.sc.omtrdc.net",
+  "aamt.msnbc.com": "msnbc.com.ssl.sc.omtrdc.net",
+  "aamt.nbcnews.com": "nbcnews.com.ssl.sc.omtrdc.net",
+  "aamt.newsapp.telemundo.com": "newsapp.telemundo.com.ssl.sc.omtrdc.net",
+  "aamt.today.com": "today.com.ssl.sc.omtrdc.net",
+  "aanalytics.adelaide.edu.au": "adelaide.edu.au.ssl.sc.omtrdc.net",
+  "aarp.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "aas.bellemaison.jp": "bellemaison.jp.ssl.sc.omtrdc.net",
+  "aas.ismet.kz": "ismet.kz.ssl.sc.omtrdc.net",
+  "aas.mclaren.com": "mclaren.com.data.adobedc.net",
+  "aas.neom.com": "neom.com.data.adobedc.net",
+  "aas.visitsaudi.com": "visitsaudi.com.ssl.sc.omtrdc.net",
+  "abc.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "abc.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "abcnews.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "abcnews.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "abcotv.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "abcotv.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "access.hikaritv.net": "plala.d1.sc.omtrdc.net",
+  "acemetrics.aaa.com": "aaa.com.ssl.sc.omtrdc.net",
+  "adb-analytics.live-now.com": "live-now.com.data.adobedc.net",
+  "adb-secured.kijk.nl": "kijk.nl.ssl.sc.omtrdc.net",
+  "adb.kijk.nl": "kijk.nl.sc.omtrdc.net",
+  "adb.superrtl.de": "superrtl.de.sc.omtrdc.net",
+  "adb.toggo.de": "toggo.de.sc.omtrdc.net",
+  "adbmetrics.abc.es": "abc.es.sc.omtrdc.net",
+  "adbmetrics.blogasturias.com": "blogasturias.com.sc.omtrdc.net",
+  "adbmetrics.canal10tv.com": "canal10tv.com.sc.omtrdc.net",
+  "adbmetrics.caravantur.eus": "caravantur.eus.sc.omtrdc.net",
+  "adbmetrics.degustacastillayleon.es": "degustacastillayleon.es.sc.omtrdc.net",
+  "adbmetrics.diariosur.es": "diariosur.es.sc.omtrdc.net",
+  "adbmetrics.diariovasco.com": "diariovasco.com.sc.omtrdc.net",
+  "adbmetrics.elcomercio.es": "elcomercio.es.sc.omtrdc.net",
+  "adbmetrics.elcorreo.com": "elcorreo.com.sc.omtrdc.net",
+  "adbmetrics.hoy.es": "hoy.es.sc.omtrdc.net",
+  "adbmetrics.lasprovincias.es": "lasprovincias.es.sc.omtrdc.net",
+  "adbmetrics.laverdad.es": "laverdad.es.sc.omtrdc.net",
+  "adbmetrics.lomejordelvinoderioja.com": "lomejordelvinoderioja.com.sc.omtrdc.net",
+  "adbmetrics.miperiodicodigital.com": "miperiodicodigital.com.sc.omtrdc.net",
+  "adbmetrics.psicoactiva.com": "psicoactiva.com.sc.omtrdc.net",
+  "adbmetrics.surinenglish.com": "surinenglish.com.sc.omtrdc.net",
+  "adbmetrics.vehiculosdeocasion.eus": "vehiculosdeocasion.eus.sc.omtrdc.net",
+  "adbmetrics.vidasolidaria.com": "vidasolidaria.com.sc.omtrdc.net",
+  "adbsmetrics.ep.hmc.co.kr": "ep.hmc.co.kr.data.adobedc.net",
+  "adbsmetrics.genesis.com": "genesis.com.data.adobedc.net",
+  "adbsmetrics.hyundai.com": "hyundai.com.data.adobedc.net",
+  "adbsmetrics.kia.com": "kia.com.data.adobedc.net",
+  "adbsmetrics.kiavirtualexperience.com": "kiavirtualexperience.com.data.adobedc.net",
+  "adbsmetrics.koreanair.com": "koreanair.com.data.adobedc.net",
+  "adobe-nonsecure.cjone.com": "cjone.sc.omtrdc.net",
+  "adobe-secure.cjone.com": "cjone.com.data.adobedc.net",
+  "adobe.aeonbank.co.jp": "aeonbank.co.jp.ssl.sc.omtrdc.net",
+  "adobe.autoscout24.at": "autoscout24.at.d1.sc.omtrdc.net",
+  "adobe.autoscout24.be": "autoscout24.be.d1.sc.omtrdc.net",
+  "adobe.autoscout24.bg": "autoscout24.bg.d1.sc.omtrdc.net",
+  "adobe.autoscout24.com": "autoscout24.com.d1.sc.omtrdc.net",
+  "adobe.autoscout24.com.tr": "autoscout24.com.tr.d1.sc.omtrdc.net",
+  "adobe.autoscout24.com.ua": "autoscout24.com.ua.d1.sc.omtrdc.net",
+  "adobe.autoscout24.cz": "autoscout24.cz.d1.sc.omtrdc.net",
+  "adobe.autoscout24.de": "autoscout24.de.d1.sc.omtrdc.net",
+  "adobe.autoscout24.es": "autoscout24.es.d1.sc.omtrdc.net",
+  "adobe.autoscout24.fr": "autoscout24.fr.d1.sc.omtrdc.net",
+  "adobe.autoscout24.hr": "autoscout24.hr.d1.sc.omtrdc.net",
+  "adobe.autoscout24.it": "autoscout24.it.d1.sc.omtrdc.net",
+  "adobe.autoscout24.lu": "autoscout24.lu.d1.sc.omtrdc.net",
+  "adobe.autoscout24.nl": "autoscout24.nl.d1.sc.omtrdc.net",
+  "adobe.autoscout24.pl": "autoscout24.pl.d1.sc.omtrdc.net",
+  "adobe.autoscout24.ro": "autoscout24.ro.d1.sc.omtrdc.net",
+  "adobe.autoscout24.ru": "autoscout24.ru.d1.sc.omtrdc.net",
+  "adobe.autoscout24.se": "autoscout24.se.d1.sc.omtrdc.net",
+  "adobe.dynamic.ca": "dynamic.ca.d2.sc.omtrdc.net",
+  "adobe.falabella.com.ar": "falabella.com.ar.d2.sc.omtrdc.net",
+  "adobe.falabella.com.co": "falabella.com.d2.sc.omtrdc.net",
+  "adobe.falabella.com.pe": "falabella.com.pe.d2.sc.omtrdc.net",
+  "adobe.paybooc.co.kr": "paybooc.co.kr.sc.omtrdc.net",
+  "adobe.truckscout24.com": "truckscout24.com.d1.sc.omtrdc.net",
+  "adobe.truckscout24.de": "truckscout24.de.d1.sc.omtrdc.net",
+  "adobe.wacoal.jp": "wacoal.jp.sc.omtrdc.net",
+  "adobeanalytics-https.hds.com": "hds.com.ssl.sc.omtrdc.net",
+  "adobeanalytics-secure.girlscouts.org": "girlscouts.org.ssl.sc.omtrdc.net",
+  "adobeanalytics.actalentservices.com": "actalentservices.com.ssl.sc.omtrdc.net",
+  "adobeanalytics.aerotek.com": "aerotek.com.ssl.sc.omtrdc.net",
+  "adobeanalytics.allegisglobalsolutions.com": "allegisglobalsolutions.com.ssl.sc.omtrdc.net",
+  "adobeanalytics.allegisgroup.com": "allegisgroup.com.ssl.sc.omtrdc.net",
+  "adobeanalytics.astoncarter.com": "astoncarter.com.ssl.sc.omtrdc.net",
+  "adobeanalytics.bws.com.au": "bws.com.au.ssl.sc.omtrdc.net",
+  "adobeanalytics.danmurphys.com.au": "danmurphys.com.au.ssl.sc.omtrdc.net",
+  "adobeanalytics.easi.com": "easi.com.ssl.sc.omtrdc.net",
+  "adobeanalytics.geico.com": "geico.d1.sc.omtrdc.net",
+  "adobeanalytics.medline.com": "medline.com.sc.omtrdc.net",
+  "adobeanalytics.mlaglobal.com": "mlaglobal.com.ssl.sc.omtrdc.net",
+  "adobeanalytics.teksystems.com": "teksystems.com.ssl.sc.omtrdc.net",
+  "adobecorp.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "adobecorp.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "adobedc.demdex.net": "demdex.net.ssl.sc.omtrdc.net",
+  "adobes.marugame-seimen.com": "marugame-seimen.com.ssl.sc.omtrdc.net",
+  "adobes.pmi.org": "pmi.org.ssl.sc.omtrdc.net",
+  "adobetp.chegg.com": "chegg.com.sc.omtrdc.net",
+  "adobetps.chegg.com": "chegg.com.ssl.sc.omtrdc.net",
+  "adtd.douglas.at": "douglas.at.data.adobedc.net",
+  "adtd.douglas.be": "douglas.be.data.adobedc.net",
+  "adtd.douglas.ch": "douglas.ch.data.adobedc.net",
+  "adtd.douglas.de": "douglas.de.data.adobedc.net",
+  "adtd.douglas.nl": "douglas.nl.data.adobedc.net",
+  "adtd.douglas.pl": "douglas.pl.data.adobedc.net",
+  "adtmrs.delti.com": "delti.com.ssl.sc.omtrdc.net",
+  "adultswim.d2.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "adultswim.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "aem.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "aetv.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "aetv.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "al-smetrics.vizio.com": "vizio.com.ssl.sc.omtrdc.net",
+  "ametrics.finn.no": "finn.no.sc.omtrdc.net",
+  "an.avast.com": "avast.co.jp.ldc.d3.sc.omtrdc.net",
+  "an.constantcontact.com": "constantcontact.com.122.2o7.net",
+  "an.milb.com": "milb.com.112.2o7.net",
+  "an.mlb.com": "mlb.com.sc.omtrdc.net",
+  "an.worldbaseballclassic.com": "worldbaseballclassic.com.112.2o7.net",
+  "analytic.ae.com": "ae.com.122.2o7.net",
+  "analytic.buoyweather.com": "buoyweather.112.2o7.net",
+  "analytic.cibc.com": "cibc.com.d2.sc.omtrdc.net",
+  "analytic.fishtrack.com": "fishtrack.com.112.2o7.net",
+  "analytic.hotelclub.com": "hotelclub.com.112.2o7.net",
+  "analytic.simplyhealth.co.uk": "simplyhealth.co.uk.sc.omtrdc.net",
+  "analytic.surfline.com": "surfline.com.112.2o7.net",
+  "analytic.underarmour.com": "underarmour.com.sc.omtrdc.net",
+  "analytics-secure.dollargeneral.com": "dollargeneral.com.ssl.sc.omtrdc.net",
+  "analytics.adultswim.co.uk": "adultswim.co.uk.sc.omtrdc.net",
+  "analytics.ae.com": "ae.com.102.122.2o7.net",
+  "analytics.americanfunds.com": "americanfunds.com.ssl.sc.omtrdc.net",
+  "analytics.asml.com": "asml.com.ssl.sc.omtrdc.net",
+  "analytics.autozone.com": "autozone.com.122.2o7.net",
+  "analytics.bleacherreport.com": "bleacherreport.com.122.2o7.net",
+  "analytics.boing.es": "boing.es.sc.omtrdc.net",
+  "analytics.boomerangtv.co.uk": "boomerangtv.co.uk.sc.omtrdc.net",
+  "analytics.box.com": "box.com.sc.omtrdc.net",
+  "analytics.canaltnt.es": "canaltnt.es.sc.omtrdc.net",
+  "analytics.capitalgroup.com": "capitalgroup.com.ssl.sc.omtrdc.net",
+  "analytics.cartoonito.it": "cartoonito.it.sc.omtrdc.net",
+  "analytics.cartoonnetwork.co.uk": "cartoonnetwork.co.uk.sc.omtrdc.net",
+  "analytics.cartoonnetwork.jp": "cartoonnetwork.jp.sc.omtrdc.net",
+  "analytics.cartoonnetworkasia.com": "cartoonnetworkasia.com.sc.omtrdc.net",
+  "analytics.cartoonnetworkmena.com": "cartoonnetworkmena.com.sc.omtrdc.net",
+  "analytics.cdf.cl": "cdf.cl.sc.omtrdc.net",
+  "analytics.chilevision.cl": "chilevision.cl.sc.omtrdc.net",
+  "analytics.chvnoticias.cl": "chvnoticias.cl.sc.omtrdc.net",
+  "analytics.cibc.com": "cibc.com.ssl.d2.sc.omtrdc.net",
+  "analytics.cibcrewards.com": "cibcrewards.com.ssl.sc.omtrdc.net",
+  "analytics.cnnchile.com": "cnnchile.com.sc.omtrdc.net",
+  "analytics.concorsicartoonito.it": "concorsicartoonito.it.sc.omtrdc.net",
+  "analytics.data.lloydsbankinggroup.com": "data.lloydsbankinggroup.com.data.adobedc.net",
+  "analytics.eleague.com": "eleague.sc.omtrdc.net",
+  "analytics.esporteinterativo.com.br": "esporteinterativo.com.br.sc.omtrdc.net",
+  "analytics.fnbfremont.com": "fnbfremont.com.sc.omtrdc.net",
+  "analytics.futuro360.com": "futuro360.com.sc.omtrdc.net",
+  "analytics.haworth.com": "haworth.com.ssl.sc.omtrdc.net",
+  "analytics.hayneedle.com": "hayneedle.com.122.2o7.net",
+  "analytics.hotelclub.com": "data.102.112.2o7.net",
+  "analytics.ihg.com": "ihg.com.d1.sc.omtrdc.net",
+  "analytics.ishopchangi.com": "ishopchangi.com.data.adobedc.net",
+  "analytics.joincambridge.com": "joincambridge.com.data.adobedc.net",
+  "analytics.mail-corp.com": "mail-corp.com.122.2o7.net",
+  "analytics.metro-cc.ru": "metro-cc.ru.sc.omtrdc.net",
+  "analytics.metro-tr.com": "metro-tr.com.sc.omtrdc.net",
+  "analytics.metro.co.in": "metro.co.in.sc.omtrdc.net",
+  "analytics.metro.com.kz": "metro.com.kz.sc.omtrdc.net",
+  "analytics.metro.de": "metro.de.sc.omtrdc.net",
+  "analytics.metro.pk": "metro.pk.sc.omtrdc.net",
+  "analytics.metro.ua": "metro.ua.sc.omtrdc.net",
+  "analytics.mondotv.jp": "mondotv.jp.sc.omtrdc.net",
+  "analytics.nascar.com": "nascar.com.122.2o7.net",
+  "analytics.navyfederal.org": "navyfederal.org.ssl.d1.sc.omtrdc.net",
+  "analytics.ncaa.com": "ncaa.com.122.2o7.net",
+  "analytics.nordea.com": "nordea.com.ssl.sc.omtrdc.net",
+  "analytics.nordea.dk": "nordea.dk.ssl.sc.omtrdc.net",
+  "analytics.nordea.fi": "nordea.fi.ssl.sc.omtrdc.net",
+  "analytics.nordea.no": "nordea.no.ssl.sc.omtrdc.net",
+  "analytics.nordea.se": "nordea.se.ssl.sc.omtrdc.net",
+  "analytics.pgatour.com": "pgatour.com.122.2o7.net",
+  "analytics.pnc.com": "pnc.com.ssl.sc.omtrdc.net",
+  "analytics.pogo.tv": "pogo.tv.sc.omtrdc.net",
+  "analytics.popsci.com": "bonniercorp.122.2o7.net",
+  "analytics.prod.ori.hayneedle.com": "hayneedle.com.122.2o7.net",
+  "analytics.ratioform.it": "ratioform.it.ldc.d3.sc.omtrdc.net",
+  "analytics.simplyhealth.co.uk": "simplyhealth.co.uk.ssl.sc.omtrdc.net",
+  "analytics.sixt.ch": "sixt.ch.sc.omtrdc.net",
+  "analytics.sixt.cn": "sixt.cn.sc.omtrdc.net",
+  "analytics.sixt.com": "sixt.com.sc.omtrdc.net",
+  "analytics.sixt.de": "sixt.de.sc.omtrdc.net",
+  "analytics.sixt.es": "sixt.es.sc.omtrdc.net",
+  "analytics.sixt.fr": "sixt.fr.sc.omtrdc.net",
+  "analytics.sixt.it": "sixt.it.sc.omtrdc.net",
+  "analytics.sixt.jobs": "sixt.jobs.sc.omtrdc.net",
+  "analytics.sixt.jp": "sixt.jp.sc.omtrdc.net",
+  "analytics.sixt.nl": "sixt.nl.sc.omtrdc.net",
+  "analytics.sixtcarsales.de": "sixt.sixtcarsales.sc.omtrdc.net",
+  "analytics.spark.co.nz": "spark.co.nz.sc.omtrdc.net",
+  "analytics.sprint.com": "sprint.com.sc.omtrdc.net",
+  "analytics.surfline.com": "data.102.112.2o7.net",
+  "analytics.tabichan.jp": "tabichan.jp.sc.omtrdc.net",
+  "analytics.tbs.com": "tbs.com.d2.sc.omtrdc.net",
+  "analytics.tcm.com": "tcm.com.122.2o7.net",
+  "analytics.thingx.tv": "thingx.tv.122.2o7.net",
+  "analytics.tnt-tv.de": "tnt-tv.de.sc.omtrdc.net",
+  "analytics.tnt-tv.pl": "tnt-tv.pl.sc.omtrdc.net",
+  "analytics.tnt.africa": "tnt.africa.sc.omtrdc.net",
+  "analytics.tntdrama.com": "tntdrama.com.d2.sc.omtrdc.net",
+  "analytics.tntdramma.com": "tnt.tv.122.2o7.net",
+  "analytics.tntsports.com.ar": "tntsports.com.ar.sc.omtrdc.net",
+  "analytics.trutv.com": "trutv.com.sc.omtrdc.net",
+  "analytics.turnertv.com": "tbs.com.d2.sc.omtrdc.net",
+  "analytics.ubs.com": "ubs.com.ssl.sc.omtrdc.net",
+  "analytics.underarmour.com": "underarmour.com.ssl.sc.omtrdc.net",
+  "analytics.unive.nl": "unive.nl.data.adobedc.net",
+  "analytics.verizon.com": "verizon.com.d1.sc.omtrdc.net",
+  "analytics.verizonwireless.com": "usonly.sc.omtrdc.net",
+  "analytics.virginaustralia.com": "virginaustralia.com.102.122.2o7.net",
+  "analytics.virginmobileusa.com": "virginmobileusa.com.sc.omtrdc.net",
+  "analytics.yourbankcard.com": "yourbankcard.com.112.2o7.net",
+  "analyticsresults.datev.de": "datev.de.data.adobedc.net",
+  "analyticsssl.forcepoint.com": "forcepoint.com.ssl.sc.omtrdc.net",
+  "animeconsortiumjapan.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "ans.avast.com": "avast.co.jp.ssl.ldc.d3.sc.omtrdc.net",
+  "ans.milb.com": "milb.com.102.112.2o7.net",
+  "ans.mlb.com": "mlb.com.ssl.sc.omtrdc.net",
+  "appleworldwidedeveloper-stage.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "appleworldwidedeveloper.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "appmetrics.sprint.com": "sprint.com.sc.omtrdc.net",
+  "arkena.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "as.autobild.de": "autobild.de.ssl.sc.omtrdc.net",
+  "as.axelspringer.com": "axelspringer.com.ssl.sc.omtrdc.net",
+  "as.bild.de": "bild.de.ssl.sc.omtrdc.net",
+  "as.bz-berlin.de": "bz-berlin.de.ssl.sc.omtrdc.net",
+  "as.computerbild.de": "computerbild.de.ssl.sc.omtrdc.net",
+  "as.fitbook.de": "fitbook.de.ssl.sc.omtrdc.net",
+  "as.metal-hammer.de": "metal-hammer.de.ssl.sc.omtrdc.net",
+  "as.musikexpress.de": "musikexpress.de.ssl.sc.omtrdc.net",
+  "as.myhomebook.de": "myhomebook.de.ssl.sc.omtrdc.net",
+  "as.rollingstone.de": "rollingstone.de.ssl.sc.omtrdc.net",
+  "as.stylebook.de": "stylebook.de.ssl.sc.omtrdc.net",
+  "as.techbook.de": "techbook.de.ssl.sc.omtrdc.net",
+  "as.travelbook.de": "travelbook.de.ssl.sc.omtrdc.net",
+  "as.welt.de": "welt.de.ssl.sc.omtrdc.net",
+  "asc.solidworks.com": "solidworks.com.122.2o7.net",
+  "asd.bauhaus.at": "bauhaus.at.ssl.sc.omtrdc.net",
+  "asd.bauhaus.es": "bauhaus.es.ssl.sc.omtrdc.net",
+  "asd.bauhaus.hr": "bauhaus.hr.ssl.sc.omtrdc.net",
+  "asd.bauhaus.info": "bauhaus.info.ssl.sc.omtrdc.net",
+  "asd.nl.bauhaus": "nl.bauhaus.ssl.sc.omtrdc.net",
+  "astrogempakpoc.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "atlascopco.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "atresmedia.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "atsmetrics.adobe.com": "atsmicrosite.d1.sc.omtrdc.net",
+  "att.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "attorney.findlaw.com": "findlaw.com.sc.omtrdc.net",
+  "audience.standardchartered.com.tw": "standardchartered.com.tw.data.adobedc.net",
+  "automotivecom.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "awap.equifax.com": "equifax.com.sc.omtrdc.net",
+  "b.aecf.org": "aecf.org.112.2o7.net",
+  "b.escardio.org": "europeansocietyofcardiology.112.2o7.net",
+  "b.fox.com": "fox.com.ssl.d2.sc.omtrdc.net",
+  "b.foxsports.com": "foxsports.com.ssl.d2.sc.omtrdc.net",
+  "b.koodomobile.com": "koodomobile.com.ssl.sc.omtrdc.net",
+  "b.law.com": "law.com.ssl.sc.omtrdc.net",
+  "b.medtronic.com": "medtronic.com.ssl.sc.omtrdc.net",
+  "b.mynewplace.com": "mynewplace.com.112.2o7.net",
+  "b.publicmobile.ca": "publicmobile.ca.ssl.sc.omtrdc.net",
+  "b.rwjf.org": "rwjf.org.102.112.2o7.net",
+  "b.snow.com": "snow.com.ssl.d2.sc.omtrdc.net",
+  "b.telus.com": "telus.com.ssl.sc.omtrdc.net",
+  "bc.law.com": "law.com.sc.omtrdc.net",
+  "bellmedia.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "bentleysystems.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "bet.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "bismetrics.experian.com": "experian.com.ssl.d2.sc.omtrdc.net",
+  "biz1.kddi.com": "kddi.com.ssl.sc.omtrdc.net",
+  "bizjournals.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "brands.lookfantastic.com": "lookfantastic.com.112.2o7.net",
+  "bsinteractive.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "bskyb.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "byubroadcasting.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "c.rhapsody.com": "rhapsody.com.112.2o7.net",
+  "c.snow.com": "snow.com.d2.sc.omtrdc.net",
+  "cartoonnetworknewmedia.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "cartoonnetworknewmedia.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "cbcca.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "cbmetrics.clickbank.com": "clickbank.com.112.2o7.net",
+  "cbn.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "cbs.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "cbsdigitalmedia.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "cbsdigitalmedia.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "cbsinteractive.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "cbsnews-dev.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "cbsnews.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "cc.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "ccma.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "chartercommunicationsoperatingllc.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "chelseafc.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "christian.lifeway.com": "lifeway.com.d2.sc.omtrdc.net",
+  "christians.lifeway.com": "lifeway.com.ssl.d2.sc.omtrdc.net",
+  "churchofjesuschrist.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "ci.quickbooks.com": "quickbooks.com.122.2o7.net",
+  "cineplex.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "ciscojasper.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "cmon.congress.gov": "congress.gov.sc.omtrdc.net",
+  "cnn.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "code.randomhouse.com": "randomhouse.com.122.2o7.net",
+  "collect.allianz.ch": "allianz.ch.ssl.sc.omtrdc.net",
+  "collect.allianzcinema.ch": "allianzcinema.ch.ssl.sc.omtrdc.net",
+  "collect.allianzdriveincinema.ch": "allianzdriveincinema.ch.ssl.sc.omtrdc.net",
+  "collect.cap.ch": "cap.ch.ssl.sc.omtrdc.net",
+  "collect.elvia.ch": "elvia.ch.ssl.sc.omtrdc.net",
+  "collect.helsana.ch": "helsana.ch.data.adobedc.net",
+  "collection.saga.co.uk": "saga.co.uk.ssl.sc.omtrdc.net",
+  "comcastcom.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "comcastentertainmentgroup.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "corus.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "corus.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "coxcommunications.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "coxnet.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "crackle.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "cs.analytics.lego.com": "analytics.lego.com.ssl.d1.sc.omtrdc.net",
+  "d1.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "data-ssl.pnet.co.za": "pnet.co.za.data.adobedc.net",
+  "data-ssl.stepstone.at": "stepstone.at.ssl.sc.omtrdc.net",
+  "data-ssl.stepstone.be": "stepstone.be.data.adobedc.net",
+  "data-ssl.stepstone.de": "stepstone.de.ssl.sc.omtrdc.net",
+  "data-ssl.stepstone.fr": "stepstone.fr.data.adobedc.net",
+  "data-ssl.stepstone.nl": "stepstone.nl.data.adobedc.net",
+  "data.avid.com": "avid.com.112.2o7.net",
+  "data.bioplanet.be": "bioplanet.be.sc.omtrdc.net",
+  "data.collectandgo.be": "collectandgo.be.sc.omtrdc.net",
+  "data.collishop.be": "collishop.be.sc.omtrdc.net",
+  "data.colruyt.be": "colruyt.be.sc.omtrdc.net",
+  "data.colruytgroup.com": "colruytgroup.com.sc.omtrdc.net",
+  "data.dreambaby.be": "dreambaby.be.sc.omtrdc.net",
+  "data.dreamland.be": "dreamland.be.sc.omtrdc.net",
+  "data.email-discovery.cjm.adobe.com": "email-discovery.cjm.adobe.com.data.adobedc.net",
+  "data.email-disney.cjm.adobe.com": "email-disney.cjm.adobe.com.data.adobedc.net",
+  "data.email-kpn.cjm.adobe.com": "email-kpn.cjm.adobe.com.data.adobedc.net",
+  "data.email-lightroom.cjm.adobe.com": "email-lightroom.cjm.adobe.com.data.adobedc.net",
+  "data.email-merkle.cjm.adobe.com": "email-merkle.cjm.adobe.com.data.adobedc.net",
+  "data.email-mobiledx.cjm.adobe.com": "email-mobiledx.cjm.adobe.com.data.adobedc.net",
+  "data.email-signify.cjm.adobe.com": "email-signify.cjm.adobe.com.data.adobedc.net",
+  "data.email-tsb.cjm.adobe.com": "email-tsb.cjm.adobe.com.data.adobedc.net",
+  "data.lifesize.com": "lifesize.com.sc.omtrdc.net",
+  "data.stepstone.be": "stepstone.be.sc.omtrdc.net",
+  "data.stepstone.fr": "stepstone.fr.sc.omtrdc.net",
+  "data.stepstone.nl": "stepstone.nl.sc.omtrdc.net",
+  "data.wunderman-email.cjm.adobe.com": "wunderman-email.cjm.adobe.com.data.adobedc.net",
+  "data0.bell.ca": "bell.ca.sc.omtrdc.net",
+  "data1.bell.ca": "bell.ca.ssl.sc.omtrdc.net",
+  "data1.sparkasse.at": "sparkasse.at.ssl.sc.omtrdc.net",
+  "data1.virginmobile.ca": "virginmobile.ca.ssl.sc.omtrdc.net",
+  "data1.virginplus.ca": "virginplus.ca.data.adobedc.net",
+  "datag.polo.com": "polo.com.112.2o7.net",
+  "dc.allianz-autowelt.de": "allianz-autowelt.de.sc.omtrdc.net",
+  "dc.allianz.de": "allianz.de.sc.omtrdc.net",
+  "dc.audi.com": "audi.com.sc.omtrdc.net",
+  "dc.plussizetech.com": "plussizetech.com.122.2o7.net",
+  "dc.stenaline.co.uk": "stenaline.co.uk.data.adobedc.net",
+  "dc.stenaline.de": "stenaline.de.data.adobedc.net",
+  "dc.stenaline.ie": "stenaline.ie.data.adobedc.net",
+  "dc.stenaline.no": "stenaline.no.data.adobedc.net",
+  "dc.stenaline.pl": "stenaline.pl.data.adobedc.net",
+  "dc.stenaline.ru": "stenaline.ru.data.adobedc.net",
+  "dc.stenaline.se": "stenaline.se.data.adobedc.net",
+  "dc.stenalinetravel.com": "stenalinetravel.com.data.adobedc.net",
+  "dcs.audi.com": "audi.com.ssl.sc.omtrdc.net",
+  "dcs.esprit.at": "esprit.at.ssl.sc.omtrdc.net",
+  "dcs.esprit.be": "esprit.be.ssl.sc.omtrdc.net",
+  "dcs.esprit.co.uk": "esprit.co.uk.ssl.sc.omtrdc.net",
+  "dcs.esprit.com": "esprit.com.ssl.sc.omtrdc.net",
+  "dcs.esprit.cz": "esprit.cz.ssl.sc.omtrdc.net",
+  "dcs.esprit.de": "esprit.de.ssl.sc.omtrdc.net",
+  "dcs.esprit.dk": "esprit.dk.ssl.sc.omtrdc.net",
+  "dcs.esprit.es": "esprit.es.ssl.sc.omtrdc.net",
+  "dcs.esprit.eu": "esprit.eu.ssl.sc.omtrdc.net",
+  "dcs.esprit.fi": "esprit.fi.ssl.sc.omtrdc.net",
+  "dcs.esprit.fr": "esprit.fr.ssl.sc.omtrdc.net",
+  "dcs.esprit.nl": "esprit.nl.ssl.sc.omtrdc.net",
+  "dcs.esprit.se": "esprit.se.ssl.sc.omtrdc.net",
+  "dcs.espritshop.ch": "espritshop.ch.ssl.sc.omtrdc.net",
+  "dcs.espritshop.it": "espritshop.it.ssl.sc.omtrdc.net",
+  "dcs.espritshop.pl": "espritshop.pl.ssl.sc.omtrdc.net",
+  "dcs.felissimo.co.jp": "felissimo.co.jp.d1.sc.omtrdc.net",
+  "dcs.plussizetech.com": "plussizetech.com.102.122.2o7.net",
+  "dcs.reiseversicherung.de": "reiseversicherung.de.ssl.ldc.d3.sc.omtrdc.net",
+  "dell.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "digistat.westjet.com": "westjet.com.d1.sc.omtrdc.net",
+  "digistats.westjet.com": "westjet.com.ssl.d1.sc.omtrdc.net",
+  "dii1.bitiba.de": "bitiba.de.sc.omtrdc.net",
+  "dii2.bitiba.be": "bitiba.be.ssl.sc.omtrdc.net",
+  "dii2.bitiba.ch": "bitiba.ch.ssl.sc.omtrdc.net",
+  "dii2.bitiba.co.uk": "bitiba.co.uk.ssl.sc.omtrdc.net",
+  "dii2.bitiba.cz": "bitiba.cz.ssl.sc.omtrdc.net",
+  "dii2.bitiba.de": "bitiba.de.ssl.sc.omtrdc.net",
+  "dii2.bitiba.dk": "bitiba.dk.ssl.sc.omtrdc.net",
+  "dii2.bitiba.es": "bitiba.es.ssl.sc.omtrdc.net",
+  "dii2.bitiba.fi": "bitiba.fi.ssl.sc.omtrdc.net",
+  "dii2.bitiba.fr": "bitiba.fr.ssl.sc.omtrdc.net",
+  "dii2.bitiba.it": "bitiba.it.ssl.sc.omtrdc.net",
+  "dii2.bitiba.nl": "bitiba.nl.ssl.sc.omtrdc.net",
+  "dii2.bitiba.pl": "bitiba.pl.ssl.sc.omtrdc.net",
+  "dii2.bitiba.se": "bitiba.se.ssl.sc.omtrdc.net",
+  "dii2.zoochic-eu.ru": "zoochic-eu.ru.ssl.sc.omtrdc.net",
+  "dii2.zoohit.cz": "zoohit.cz.ssl.sc.omtrdc.net",
+  "dii2.zoohit.si": "zoohit.si.ssl.sc.omtrdc.net",
+  "dii2.zoohit.sk": "zoohit.sk.ssl.sc.omtrdc.net",
+  "dii2.zooplus.at": "zooplus.at.ssl.sc.omtrdc.net",
+  "dii2.zooplus.be": "zooplus.be.ssl.sc.omtrdc.net",
+  "dii2.zooplus.bg": "zooplus.bg.ssl.sc.omtrdc.net",
+  "dii2.zooplus.ch": "zooplus.ch.ssl.sc.omtrdc.net",
+  "dii2.zooplus.co.uk": "zooplus.co.uk.ssl.sc.omtrdc.net",
+  "dii2.zooplus.com": "zooplus.com.ssl.sc.omtrdc.net",
+  "dii2.zooplus.de": "zooplus.de.ssl.sc.omtrdc.net",
+  "dii2.zooplus.dk": "zooplus.dk.ssl.sc.omtrdc.net",
+  "dii2.zooplus.es": "zooplus.es.ssl.sc.omtrdc.net",
+  "dii2.zooplus.fi": "zooplus.fi.ssl.sc.omtrdc.net",
+  "dii2.zooplus.fr": "zooplus.fr.ssl.sc.omtrdc.net",
+  "dii2.zooplus.gr": "zooplus.gr.ssl.sc.omtrdc.net",
+  "dii2.zooplus.hr": "zooplus.hr.ssl.sc.omtrdc.net",
+  "dii2.zooplus.hu": "zooplus.hu.ssl.sc.omtrdc.net",
+  "dii2.zooplus.ie": "zooplus.ie.ssl.sc.omtrdc.net",
+  "dii2.zooplus.it": "zooplus.it.ssl.sc.omtrdc.net",
+  "dii2.zooplus.nl": "zooplus.nl.ssl.sc.omtrdc.net",
+  "dii2.zooplus.no": "zooplus.no.ssl.sc.omtrdc.net",
+  "dii2.zooplus.pl": "zooplus.pl.ssl.sc.omtrdc.net",
+  "dii2.zooplus.pt": "zooplus.pt.ssl.sc.omtrdc.net",
+  "dii2.zooplus.ro": "zooplus.ro.ssl.sc.omtrdc.net",
+  "dii2.zooplus.se": "zooplus.se.ssl.sc.omtrdc.net",
+  "directv.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "directvapplications.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "discovery.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "discovery.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "discoverydp.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "discoverydp.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "discoverynordics.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "dishpurchasingcorporation-stage.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "dishpurchasingcorporation.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "disneyinternational.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "dnsbl.test.att.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "dnsbl.test.espn.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "dnsbl.test.hulu-ios.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "dowjones.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "dowjones.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "dr.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "dtmssl.bobcat.com": "bobcat.com.ssl.d2.sc.omtrdc.net",
+  "dupont.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "eagle.kudzu.com": "kudzu.com.102.112.2o7.net",
+  "ecn-analytics-nssl.emc.com": "emc.comd2.sc.omtrdc.net",
+  "ecn-analytics.emc.com": "emc.com.ssl.d2.sc.omtrdc.net",
+  "edge.adobedc.net": "adobedc.net.ssl.sc.omtrdc.net",
+  "emetrics.bose.com": "bose.com.ssl.sc.omtrdc.net",
+  "epiroc.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "erutinmo.snagajob.com": "snagajob.com.sc.omtrdc.net",
+  "erutinmos.snagajob.com": "snagajob.com.ssl.sc.omtrdc.net",
+  "espn.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "espn.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "euronewsgroup.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "ewscripps.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "ewstv.abc15.com": "abc15.com.112.2o7.net",
+  "ewstv.abcactionnews.com": "abcactionnews.com.112.2o7.net",
+  "ewstv.kypost.com": "kypost.com.112.2o7.net",
+  "famedigitalasiapteltd.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "fandango.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "fandango.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "fipsta.clasen-bio.de": "clasen-bio.de.data.adobedc.net",
+  "fipsta.ravensberger-matratzen.de": "ravensberger-matratzen.de.ssl.sc.omtrdc.net",
+  "fipsta.urbanara.at": "urbanara.at.ssl.sc.omtrdc.net",
+  "fipsta.urbanara.ch": "urbanara.ch.ssl.sc.omtrdc.net",
+  "fipsta.urbanara.co.uk": "urbanara.co.uk.ssl.sc.omtrdc.net",
+  "fipsta.urbanara.de": "urbanara.de.ssl.sc.omtrdc.net",
+  "firstparty.alloyio.com": "alloyio.com.ssl.sc.omtrdc.net",
+  "fonecta.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "footlocker.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "fortis.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "foxentertainment.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "foxnews.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "foxsports.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "ftr2.external.xerox.com": "xerox.com.d1.sc.omtrdc.net",
+  "fullscreen.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "furnishings.bellacor.com": "bellacor.com.ssl.sc.omtrdc.net",
+  "gannett.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "grunerandjahr.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "gw-analytics.panasonic.com": "panasonicglobal.d3.sc.omtrdc.net",
+  "hallmarkcom.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "hb-fa-1.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "hbolag.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "hbolag.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "hits.guardian.co.uk": "guardian.co.uk.d1.sc.omtrdc.net",
+  "hkonline.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "home.usg.com": "usg.com.122.2o7.net",
+  "hub.firestonecompleteautocare.com": "firestonecompleteautocare.com.ssl.d1.sc.omtrdc.net",
+  "hubmetric.samsclub.com": "samsclub.com.sc.omtrdc.net",
+  "hubmetrics.samsclub.com": "samsclub.com.ssl.sc.omtrdc.net",
+  "hulu-ios.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "hulu-lr.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "hulu.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "hulu.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "i.americanblinds.com": "americanblinds.com.sc.omtrdc.net",
+  "i.justblinds.com": "justblinds.com.sc.omtrdc.net",
+  "icas.ikea.com": "ikea.com.sc.omtrdc.net",
+  "iflix.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "ig.ig.com": "ig.com.d2.sc.omtrdc.net",
+  "ig.igmarkets.com": "igmarkets.com.d2.sc.omtrdc.net",
+  "ig.nadex.com": "nadex.com.122.2o7.net",
+  "img.bwin.com": "bwin.com.d2.sc.omtrdc.net",
+  "img.bwin.com.mx": "bwin.com.mx.d2.sc.omtrdc.net",
+  "img.bwin.it": "bwin.it.d2.sc.omtrdc.net",
+  "img.gamebookers.com": "gamebookers.com.d2.sc.omtrdc.net",
+  "img.simply.bwin.com": "simply.bwin.com.d2.sc.omtrdc.net",
+  "independentdigital.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "info.afl.com.au": "afl.com.au.122.2o7.net",
+  "info.anz.com": "anz.com.d1.sc.omtrdc.net",
+  "info.anz.com.au": "anz.com.au.sc.omtrdc.net",
+  "info.m.seek.com.au": "info.m.seek.com.au.d1.sc.omtrdc.net",
+  "info.seek.com": "info.seek.com.d1.sc.omtrdc.net",
+  "info.telstra.com": "telstra.com.122.2o7.net",
+  "info.telstra.com.au": "telstra.com.au.sc.omtrdc.net",
+  "info.vodafone.com.au": "vodafone.com.au.d1.sc.omtrdc.net",
+  "infos.anz-originator.com.au": "anz-originator.com.au.ssl.sc.omtrdc.net",
+  "infos.anz.com": "anz.com.ssl.d1.sc.omtrdc.net",
+  "infos.anz.com.au": "anz.com.au.ssl.sc.omtrdc.net",
+  "infos.anzmortgagesolutions.com.au": "anzmortgagesolutions.com.au.ssl.sc.omtrdc.net",
+  "infos.b2dreamlab.com": "b2dreamlab.com.ssl.sc.omtrdc.net",
+  "infos.belong.com.au": "belong.com.au.ssl.sc.omtrdc.net",
+  "infos.budgetdirect.com.au": "budgetdirect.com.au.ssl.d1.sc.omtrdc.net",
+  "infos.telstra.com": "telstra.com.102.122.2o7.net",
+  "infos.telstra.com.au": "telstra.com.au.ssl.sc.omtrdc.net",
+  "infos.vodafone.com.au": "vodafone.com.au.ssl.d1.sc.omtrdc.net",
+  "infos.yellow.com.au": "data.102.122.2o7.net",
+  "intelligence.marykay.com": "marykay.122.2o7.net",
+  "intelligence.marykayintouch.com": "marykayintouch.122.2o7.net",
+  "jinair.sc.jinair.com": "sc.jinair.com.data.adobedc.net",
+  "jpaatr.astellas.jp": "astellas.jp.ssl.sc.omtrdc.net",
+  "k8s-mock-server-2.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "kohlermetrics.kohler.com": "kohleruscom.122.2o7.net",
+  "kohlermetricssecure.kohler.com": "kohler.com.102.122.2o7.net",
+  "lds.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "lewis.gct.com": "gct.com.ssl.d1.sc.omtrdc.net",
+  "lifeway.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "lww.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "m.delltechnologies.com": "delltechnologies.com.sc.omtrdc.net",
+  "m.edweek.org": "edweek.org.122.2o7.net",
+  "m.photoshelter.com": "photoshelter.com.112.2o7.net",
+  "m.trb.com": "trb.com.sc.omtrdc.net",
+  "m.univision.com": "univision.com.112.2o7.net",
+  "maling.dn.no": "dn.no.ssl.sc.omtrdc.net",
+  "maling.ue.dn.no": "dn.no.sc.omtrdc.net",
+  "marijkacom.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "marvel.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "mathworks.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "matrix.hbo.com": "hbo.com.sc.omtrdc.net",
+  "mcdmetric.aaa.com": "aaa.com.data.adobedc.net",
+  "mcdmetrics.aaa.com": "aaa.com.data.adobedc.net",
+  "mdws.1stchoicesavings.ca": "1stchoicesavings.ca.102.112.2o7.net",
+  "mdws.abcu.ca": "abcu.ca.ssl.sc.omtrdc.net",
+  "mdws.acadiancreditu.ca": "acadiancreditu.ca.ssl.sc.omtrdc.net",
+  "mdws.accesscu.ca": "accesscu.ca.ssl.sc.omtrdc.net",
+  "mdws.advancesavings.ca": "advancesavings.ca.102.112.2o7.net",
+  "mdws.aldergrovecu.ca": "aldergrovecu.ca.102.112.2o7.net",
+  "mdws.alterna.ca": "alterna.ca.102.112.2o7.net",
+  "mdws.assiniboine.mb.ca": "assiniboine.mb.ca.102.112.2o7.net",
+  "mdws.awccu.com": "awccu.com.102.112.2o7.net",
+  "mdws.banquelaurentienne.ca": "banquelaurentienne.ca.102.112.2o7.net",
+  "mdws.bayviewnb.com": "bayviewnb.com.ssl.sc.omtrdc.net",
+  "mdws.beaubear.ca": "beaubear.ca.102.112.2o7.net",
+  "mdws.belgianalliancecu.mb.ca": "belgianalliancecu.mb.ca.ssl.sc.omtrdc.net",
+  "mdws.biggarcu.com": "biggarcu.com.ssl.sc.omtrdc.net",
+  "mdws.blueshorefinancial.com": "blueshorefinancial.com.102.112.2o7.net",
+  "mdws.bowvalleycu.com": "bowvalleycu.com.102.112.2o7.net",
+  "mdws.caissepopclare.com": "caissepopclare.com.102.112.2o7.net",
+  "mdws.canadiandirectfinancial.com": "canadiandirectfinancial.com.102.112.2o7.net",
+  "mdws.carpathiacu.mb.ca": "carpathiacu.mb.ca.ssl.sc.omtrdc.net",
+  "mdws.caseracu.ca": "caseracu.ca.102.112.2o7.net",
+  "mdws.cataractsavings.ca": "cataractsavings.ca.102.112.2o7.net",
+  "mdws.cbcu.ca": "cbcu.ca.ssl.sc.omtrdc.net",
+  "mdws.cccu.ca": "cccu.ca.102.112.2o7.net",
+  "mdws.ccunl.ca": "ccunl.ca.102.112.2o7.net",
+  "mdws.cdcu.com": "cdcu.com.102.112.2o7.net",
+  "mdws.celeroibdemo.ca": "celeroibdemo.ca.102.112.2o7.net",
+  "mdws.chinookcu.com": "chinookcu.com.102.112.2o7.net",
+  "mdws.chinookfinancial.com": "chinookfinancial.com.ssl.sc.omtrdc.net",
+  "mdws.communitycreditunion.ns.ca": "communitycreditunion.ns.ca.ssl.sc.omtrdc.net",
+  "mdws.communityfirst-cu.com": "communityfirst-cu.com.102.112.2o7.net",
+  "mdws.communitytrust.ca": "communitytrust.ca.ssl.sc.omtrdc.net",
+  "mdws.comsavings.com": "comsavings.com.102.112.2o7.net",
+  "mdws.comtechcu.com": "comtechcu.com.102.112.2o7.net",
+  "mdws.comtechfirecu.com": "comtechfirecu.com.ssl.sc.omtrdc.net",
+  "mdws.conexus.ca": "conexus.ca.102.112.2o7.net",
+  "mdws.consolidatedcreditu.com": "consolidatedcreditu.com.102.112.2o7.net",
+  "mdws.copperfin.ca": "copperfin.ca.102.112.2o7.net",
+  "mdws.cornerstonecu.com": "cornerstonecu.com.102.112.2o7.net",
+  "mdws.cua.com": "cua.com.102.112.2o7.net",
+  "mdws.cvcu.bc.ca": "cvcu.bc.ca.102.112.2o7.net",
+  "mdws.cwbank.com": "cwbank.com.sc.omtrdc.net",
+  "mdws.diamondnorthcu.com": "diamondnorthcu.com.102.112.2o7.net",
+  "mdws.eaglerivercu.com": "eaglerivercu.com.102.112.2o7.net",
+  "mdws.eastcoastcu.ca": "eastcoastcu.ca.102.112.2o7.net",
+  "mdws.easternedgecu.com": "easternedgecu.com.102.112.2o7.net",
+  "mdws.eccu.ca": "eccu.ca.102.112.2o7.net",
+  "mdws.ekccu.com": "ekccu.com.102.112.2o7.net",
+  "mdws.encompasscu.ca": "encompasscu.ca.102.112.2o7.net",
+  "mdws.enderbyfinancial.com": "enderbyfinancial.com.102.112.2o7.net",
+  "mdws.entegra.ca": "entegra.ca.102.112.2o7.net",
+  "mdws.envisionfinancial.ca": "envisionfinancial.ca.102.112.2o7.net",
+  "mdws.estoniancu.com": "estoniancu.com.ssl.sc.omtrdc.net",
+  "mdws.ffcu.ca": "ffcu.ca.ssl.sc.omtrdc.net",
+  "mdws.firstcalgary.com": "firstcalgary.com.102.112.2o7.net",
+  "mdws.firstcu.ca": "firstcu.ca.102.112.2o7.net",
+  "mdws.firstontariocu.com": "firstontariocu.com.102.112.2o7.net",
+  "mdws.fnbc.ca": "fnbc.ca.102.112.2o7.net",
+  "mdws.frontlinecu.com": "frontlinecu.com.102.112.2o7.net",
+  "mdws.ganaraskacu.com": "ganaraskacu.com.102.112.2o7.net",
+  "mdws.gbccu.ca": "gbccu.ca.ssl.sc.omtrdc.net",
+  "mdws.gfcu.com": "gfcu.com.ssl.sc.omtrdc.net",
+  "mdws.gfdscu.com": "gfdscu.com.102.112.2o7.net",
+  "mdws.gffg.com": "gffg.com.102.112.2o7.net",
+  "mdws.gvccu.com": "gvccu.com.102.112.2o7.net",
+  "mdws.healthcarecu.ca": "healthcarecu.ca.ssl.sc.omtrdc.net",
+  "mdws.heritagecu.ca": "heritagecu.ca.102.112.2o7.net",
+  "mdws.hmecu.com": "hmecu.com.ssl.d1.sc.omtrdc.net",
+  "mdws.icsavings.ca": "icsavings.ca.102.112.2o7.net",
+  "mdws.implicity.ca": "implicity.ca.102.112.2o7.net",
+  "mdws.innovationcu.ca": "innovationcu.ca.102.112.2o7.net",
+  "mdws.inovacreditunion.coop": "inovacreditunion.coop.102.112.2o7.net",
+  "mdws.integriscu.ca": "integriscu.ca.102.112.2o7.net",
+  "mdws.interiorsavings.com": "interiorsavings.com.102.112.2o7.net",
+  "mdws.islandsavings.ca": "islandsavings.ca.102.112.2o7.net",
+  "mdws.kawarthacu.com": "kawarthacu.com.102.112.2o7.net",
+  "mdws.kindredcu.com": "kindredcu.com.ssl.sc.omtrdc.net",
+  "mdws.kscu.com": "kscu.com.102.112.2o7.net",
+  "mdws.lahaverivercreditunion.ca": "lahaverivercreditunion.ca.ssl.sc.omtrdc.net",
+  "mdws.lakelandcreditunion.com": "lakelandcreditunion.com.102.112.2o7.net",
+  "mdws.ldcu.ca": "ldcu.ca.102.112.2o7.net",
+  "mdws.lecu.ca": "lecu.ca.102.112.2o7.net",
+  "mdws.leroycu.ca": "leroycu.ca.ssl.sc.omtrdc.net",
+  "mdws.local183cu.ca": "local183cu.ca.ssl.sc.omtrdc.net",
+  "mdws.luminusfinancial.com": "luminusfinancial.com.102.112.2o7.net",
+  "mdws.mainstreetcu.ca": "mainstreetcu.ca.102.112.2o7.net",
+  "mdws.montaguecreditu.com": "data.102.112.2o7.net",
+  "mdws.nelsoncu.com": "nelsoncu.com.102.112.2o7.net",
+  "mdws.newrosscreditunion.ca": "newrosscreditunion.ca.102.112.2o7.net",
+  "mdws.nivervillecu.mb.ca": "nivervillecu.mb.ca.102.112.2o7.net",
+  "mdws.nlcu.com": "nlcu.com.102.112.2o7.net",
+  "mdws.northerncu.com": "northerncu.com.102.112.2o7.net",
+  "mdws.northsave.com": "northsave.com.102.112.2o7.net",
+  "mdws.noventis.ca": "noventis.ca.ssl.sc.omtrdc.net",
+  "mdws.npscu.ca": "npscu.ca.102.112.2o7.net",
+  "mdws.omista.com": "omista.com.102.112.2o7.net",
+  "mdws.peacehills.com": "peacehills.com.102.112.2o7.net",
+  "mdws.penfinancial.com": "penfinancial.com.102.112.2o7.net",
+  "mdws.prospera.ca": "prospera.ca.102.112.2o7.net",
+  "mdws.provincialcu.com": "provincialcu.com.102.112.2o7.net",
+  "mdws.pscu.ca": "pscu.ca.102.112.2o7.net",
+  "mdws.quintefirst.ca": "quintefirst.ca.ssl.sc.omtrdc.net",
+  "mdws.reddyk.net": "reddyk.net.102.112.2o7.net",
+  "mdws.rpcul.com": "rpcul.com.102.112.2o7.net",
+  "mdws.sdcu.com": "sdcu.com.102.112.2o7.net",
+  "mdws.stridecu.ca": "stridecu.ca.ssl.sc.omtrdc.net",
+  "mdws.sudburycu.com": "sudburycu.com.102.112.2o7.net",
+  "mdws.sunshineccu.com": "sunshineccu.com.102.112.2o7.net",
+  "mdws.synergycu.ca": "synergycu.ca.102.112.2o7.net",
+  "mdws.tandia.com": "tandia.com.102.112.2o7.net",
+  "mdws.tcufinancialgroup.com": "tcufinancialgroup.com.102.112.2o7.net",
+  "mdws.tignishcreditu.com": "tignishcreditu.com.102.112.2o7.net",
+  "mdws.tpcu.on.ca": "tpcu.on.ca.102.112.2o7.net",
+  "mdws.ubcu.ca": "ubcu.ca.102.112.2o7.net",
+  "mdws.ukrainiancu.com": "ukrainiancu.com.102.112.2o7.net",
+  "mdws.unitycu.ca": "unitycu.ca.102.112.2o7.net",
+  "mdws.valleycreditunion.com": "valleycreditunion.com.102.112.2o7.net",
+  "mdws.valleyfirst.com": "valleyfirst.com.102.112.2o7.net",
+  "mdws.vancity.com": "vancity.com.102.112.2o7.net",
+  "mdws.vantageone.net": "vantageone.net.102.112.2o7.net",
+  "mdws.vermilioncreditunion.com": "vermilioncreditunion.com.102.112.2o7.net",
+  "mdws.visioncu.ca": "visioncu.ca.102.112.2o7.net",
+  "mdws.wealthonebankofcanada.com": "wealthonebankofcanada.com.ssl.sc.omtrdc.net",
+  "mdws.weyburncu.ca": "weyburncu.ca.102.112.2o7.net",
+  "mdws.wfcu.ca": "wfcu.ca.102.112.2o7.net",
+  "mdws.wldcu.com": "wldcu.com.102.112.2o7.net",
+  "mdws.wpcu.ca": "wpcu.ca.ssl.sc.omtrdc.net",
+  "mdws.wscu.com": "wscu.com.102.112.2o7.net",
+  "mdws.yncu.com": "yncu.com.102.112.2o7.net",
+  "mdws.yourcu.com": "yourcu.com.102.112.2o7.net",
+  "measure.jstor.org": "jstor.org.ssl.d2.sc.omtrdc.net",
+  "med.aerochambervhc.com": "aerochambervhc.com.112.2o7.net",
+  "med.androderm.com": "androderm.com.112.2o7.net",
+  "med.aptalispharma.com": "aptalispharma.com.112.2o7.net",
+  "med.asacolhd.com": "asacolhd.com.112.2o7.net",
+  "med.avycaz.com": "avycaz.com.112.2o7.net",
+  "med.bystolic.com": "bystolic.com.112.2o7.net",
+  "med.bystolichcp.com": "bystolichcp.com.112.2o7.net",
+  "med.bystolicsavings.com": "bystolicsavings.com.112.2o7.net",
+  "med.canasa.com": "canasa.com.112.2o7.net",
+  "med.cerexa.com": "cerexa.com.112.2o7.net",
+  "med.dalvance.com": "dalvance.com.112.2o7.net",
+  "med.delzicol.com": "delzicol.com.112.2o7.net",
+  "med.enablex.com": "enablex.com.112.2o7.net",
+  "med.fetzima.com": "fetzima.com.112.2o7.net",
+  "med.frx.com": "frx.com.112.2o7.net",
+  "med.gelnique.com": "gelnique.com.112.2o7.net",
+  "med.liletta.com": "liletta.com.112.2o7.net",
+  "med.lilettahcp.com": "lilettahcp.com.112.2o7.net",
+  "med.linzesshcp.com": "linzesshcp.com.112.2o7.net",
+  "med.namenda.com": "namenda.com.112.2o7.net",
+  "med.namendaxrhcp.com": "namendaxrhcp.com.112.2o7.net",
+  "med.namzaric.com": "namzaric.com.112.2o7.net",
+  "med.rectiv.com": "rectiv.com.112.2o7.net",
+  "med.saphris.com": "saphris.com.112.2o7.net",
+  "med.saphrishcp.com": "saphrishcp.com.112.2o7.net",
+  "med.savella.com": "savella.com.112.2o7.net",
+  "med.savellahcp.com": "savellahcp.com.112.2o7.net",
+  "med.teflaro.com": "teflaro.com.112.2o7.net",
+  "med.ultresa.com": "ultresa.com.112.2o7.net",
+  "med.viibryd.com": "viibryd.com.112.2o7.net",
+  "med.viibrydhcp.com": "viibrydhcp.com.112.2o7.net",
+  "med.vraylar.com": "forestlabs.d1.sc.omtrdc.net",
+  "mediacorp.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "mediacorp.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "mediaset.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "mediaset.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "meds.asacolhd.com": "asacolhd.com.102.112.2o7.net",
+  "meds.asacolhdhcp.com": "data.102.112.2o7.net",
+  "meds.avycaz.com": "avycaz.com.102.112.2o7.net",
+  "meds.fetzima.com": "fetzima.com.102.112.2o7.net",
+  "meds.liletta.com": "liletta.com.102.112.2o7.net",
+  "meds.linzesshcp.com": "linzesshcp.com.102.112.2o7.net",
+  "meds.saphris.com": "data.102.112.2o7.net",
+  "meds.savella.com": "savella.com.102.112.2o7.net",
+  "meds.viibryd.com": "viibryd.com.102.112.2o7.net",
+  "meds.viibrydhcp.com": "viibrydhcp.com.102.112.2o7.net",
+  "met1.hp.com": "hp.com.d1.sc.omtrdc.net",
+  "met2.hp.com": "hp.com.ssl.d1.sc.omtrdc.net",
+  "metlife.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "metric-nonssl.nomura.co.jp": "nomura.co.jp.sc.omtrdc.net",
+  "metric.angieslist.com": "angieslist.com.112.2o7.net",
+  "metric.armstrong.com": "armstrong.com.112.2o7.net",
+  "metric.asos.com": "asos.d3.sc.omtrdc.net",
+  "metric.barclaycardus.com": "barclaycardus.com.sc.omtrdc.net",
+  "metric.billmelater.com": "billmelater.com.112.2o7.net",
+  "metric.billmelateroffers.com": "bill-me-later.com.112.2o7.net",
+  "metric.bizjournals.com": "bizjournals.sc.omtrdc.net",
+  "metric.bostonscientific.com": "bostonscientific.com.112.2o7.net",
+  "metric.carview.co.jp": "carview.co.jp.d1.sc.omtrdc.net",
+  "metric.crateandbarrel.com": "crateandbarrel.com.sc.omtrdc.net",
+  "metric.eddiev.com": "eddiev.com.sc.omtrdc.net",
+  "metric.fatcatalog.com": "fatcatalog.com.112.2o7.net",
+  "metric.fidmscholarshipfoundation.org": "fidm.com.112.2o7.net",
+  "metric.hatarako.net": "hatarako.net.sc.omtrdc.net",
+  "metric.hilton.com": "hilton.com.sc.omtrdc.net",
+  "metric.iccu.com": "iccu.com.sc.omtrdc.net",
+  "metric.infoworld.com": "infoworld.com.112.2o7.net",
+  "metric.ing.es": "ing.es.sc.omtrdc.net",
+  "metric.ingdirect.es": "ingdirect.es.sc.omtrdc.net",
+  "metric.jibjab.com": "jibjab.com.112.2o7.net",
+  "metric.kirklands.com": "kirklands.com.d1.sc.omtrdc.net",
+  "metric.lake.jp": "lake.jp.112.2o7.net",
+  "metric.langhamhotels.com": "langhamhotels.com.112.2o7.net",
+  "metric.makemytrip.com": "makemytrip.com.d2.sc.omtrdc.net",
+  "metric.malaysiaairlines.com": "malaysiaairlines.com.sc.omtrdc.net",
+  "metric.marthastewart.com": "marthastewart.com.122.2o7.net",
+  "metric.modcloth.com": "modcloth.com.122.2o7.net",
+  "metric.morganshotelgroup.com": "morganshotelgroup.com.112.2o7.net",
+  "metric.myfinancingprogram.com": "bill-me-later.com.112.2o7.net",
+  "metric.nationalgeographic.com": "nationalgeographic.com.112.2o7.net",
+  "metric.nea.org": "nea.org.112.2o7.net",
+  "metric.news.ktar.com": "news.ktar.com.112.2o7.net",
+  "metric.nissan.be": "nissan.be.ssl.d1.sc.omtrdc.net",
+  "metric.nissan.co.uk": "nissan.co.uk.ssl.d1.sc.omtrdc.net",
+  "metric.nissan.pt": "nissan.pt.ssl.d1.sc.omtrdc.net",
+  "metric.nissan.ua": "nissan.ua.ssl.d1.sc.omtrdc.net",
+  "metric.nomura.co.jp": "nomura.co.jp.ssl.sc.omtrdc.net",
+  "metric.nwsource.com": "nwsource.com.112.2o7.net",
+  "metric.olivegarden.com": "olivegarden.com.sc.omtrdc.net",
+  "metric.petinsurance.com": "petinsurance.com.112.2o7.net",
+  "metric.philosophy.com": "philosophy.com.sc.omtrdc.net",
+  "metric.rent.com": "rent.com.112.2o7.net",
+  "metric.restockit.com": "restockit.com.112.2o7.net",
+  "metric.royalmail.com": "royalmail.com.d1.sc.omtrdc.net",
+  "metric.samsclub.com": "samsclub.com.d1.sc.omtrdc.net",
+  "metric.schwab.com": "schwab.com.d1.sc.omtrdc.net",
+  "metric.sciencemag.org": "sciencemag.org.sc.omtrdc.net",
+  "metric.spencersonline.com": "spencersonline.com.112.2o7.net",
+  "metric.starz.com": "starz.122.2o7.net",
+  "metric.superpages.com": "superpages.com.122.2o7.net",
+  "metric.timewarnercable.com": "timewarnercable.com.sc.omtrdc.net",
+  "metric.trulia.com": "trulia.com.d2.sc.omtrdc.net",
+  "metric.tsite.jp": "tsite.jp.sc.omtrdc.net",
+  "metric.vodacom.co.za": "metric.vodacom.co.za.d2.sc.omtrdc.net",
+  "metric.vodafone.com.eg": "vodafone.com.eg.d2.sc.omtrdc.net",
+  "metric.volkswagen-nutzfahrzeuge.de": "volkswagen-nutzfahrzeuge.de.sc.omtrdc.net",
+  "metric.volkswagen.com": "volkswagen.com.sc.omtrdc.net",
+  "metric.volkswagen.de": "volkswagen.de.sc.omtrdc.net",
+  "metric.weshopnaked.com": "bill-me-later.com.112.2o7.net",
+  "metric.worldcat.org": "worldcat.org.112.2o7.net",
+  "metric.yellowpages.com": "yellowpages.com.sc.omtrdc.net",
+  "metric.yp.com": "yp.com.112.2o7.net",
+  "metrics-ieeexplore.ieee.org": "ieee.org.sc.omtrdc.net",
+  "metrics.3838.com": "3838.com.112.2o7.net",
+  "metrics.3m.com": "3m.com.sc.omtrdc.net",
+  "metrics.aa.com": "aa.com.d1.sc.omtrdc.net",
+  "metrics.aarp.org": "aarp.org.sc.omtrdc.net",
+  "metrics.abbott": "smetrics.abbott.sc.omtrdc.net",
+  "metrics.abbottfamily.co.id": "abbottfamily.co.id.112.2o7.net",
+  "metrics.abbvie.com": "abbvie.com.sc.omtrdc.net",
+  "metrics.acbj.com": "acbj.com.ssl.sc.omtrdc.net",
+  "metrics.accuweather.com": "accuweather.com.122.2o7.net",
+  "metrics.acehardware.com": "acehardware.com.112.2o7.net",
+  "metrics.actemra.com": "actemra.com.sc.omtrdc.net",
+  "metrics.actemrahcp.com": "actemrahcp.com.sc.omtrdc.net",
+  "metrics.activase.com": "activase.com.sc.omtrdc.net",
+  "metrics.active.com": "active.com.122.2o7.net",
+  "metrics.activecommunities.com": "activecommunities.com.sc.omtrdc.net",
+  "metrics.activenetwork.com": "activenetwork.com.sc.omtrdc.net",
+  "metrics.adacreisen.de": "adacreisen.de.ssl.d3.sc.omtrdc.net",
+  "metrics.adage.com": "adage.com.d1.sc.omtrdc.net",
+  "metrics.adelaidenow.com.au": "adelaidenow.com.au.ssl.sc.omtrdc.net",
+  "metrics.adt.com": "adt.com.112.2o7.net",
+  "metrics.aem.playstation.com": "aem.playstation.com.d1.sc.omtrdc.net",
+  "metrics.aetn.com": "aetn.com.d1.sc.omtrdc.net",
+  "metrics.aetnamedicare.com": "aetnamedicare.com.112.2o7.net",
+  "metrics.aftonbladet.se": "aftonbladet.se.d1.sc.omtrdc.net",
+  "metrics.agilent.com": "agilent.com.112.2o7.net",
+  "metrics.aia.com": "aia.com.d1.sc.omtrdc.net",
+  "metrics.airasia.com": "airasia.com.d1.sc.omtrdc.net",
+  "metrics.alecensa.com": "alecensa.com.sc.omtrdc.net",
+  "metrics.allaboutyou.com": "hearstdigital.122.2o7.net",
+  "metrics.allstate.com": "allstate.com.sc.omtrdc.net",
+  "metrics.ally.com": "ally.com.d1.sc.omtrdc.net",
+  "metrics.amaguiz.com": "amaguiz.com.d3.sc.omtrdc.net",
+  "metrics.ambetterhealthnet.com": "ambetterhealthnet.com.sc.omtrdc.net",
+  "metrics.amd.com": "amd.com.122.2o7.net",
+  "metrics.americanblinds.com": "americanblinds.com.122.2o7.net",
+  "metrics.americancityandcounty.com": "americancityandcounty.com.sc.omtrdc.net",
+  "metrics.americaninno.com": "americaninno.com.ssl.sc.omtrdc.net",
+  "metrics.americansignaturefurniture.com": "americansignaturefurniture.com.ssl.sc.omtrdc.net",
+  "metrics.ancestry.co.uk": "ancestry.co.uk.sc.omtrdc.net",
+  "metrics.ancestry.com": "ancestry.com.sc.omtrdc.net",
+  "metrics.angara.com": "angara.com.ldc.d4.sc.omtrdc.net",
+  "metrics.angi.com": "angi.com.sc.omtrdc.net",
+  "metrics.angieslist.com": "angieslist.com.102.112.2o7.net",
+  "metrics.anthem.com": "anthem.com.sc.omtrdc.net",
+  "metrics.apartmentfinder.com": "apartmentfinder.com.112.2o7.net",
+  "metrics.apartments.com": "apartments.com.112.2o7.net",
+  "metrics.apple.com": "appleglobal.112.2o7.net",
+  "metrics.argenta.be": "argenta.be.sc.omtrdc.net",
+  "metrics.argenta.eu": "argenta.eu.sc.omtrdc.net",
+  "metrics.argos.co.uk": "argos.co.uk.d1.sc.omtrdc.net",
+  "metrics.ariba.com": "ariba.com.sc.omtrdc.net",
+  "metrics.armstrongceilings.com": "armstrongceilings.com.ssl.sc.omtrdc.net",
+  "metrics.asdafinance.com": "asdafinance.com.122.2o7.net",
+  "metrics.asos.com": "asos.com.ssl.d3.sc.omtrdc.net",
+  "metrics.assurancewireless.com": "assurancewireless.com.sc.omtrdc.net",
+  "metrics.astrogaming.com": "astrogaming.com.d1.sc.omtrdc.net",
+  "metrics.atresmedia.com": "atresmedia.com.sc.omtrdc.net",
+  "metrics.atresplayer.com": "atresplayer.com.sc.omtrdc.net",
+  "metrics.au.com": "au.com.sc.omtrdc.net",
+  "metrics.autobytel.com": "autobytelcorp.112.2o7.net",
+  "metrics.autodesk.com": "autodesk.com.sc.omtrdc.net",
+  "metrics.automobilemag.com": "automobilemag.com.112.2o7.net",
+  "metrics.avalara.com": "avalara.com.sc.omtrdc.net",
+  "metrics.avastin-hcp.com": "avastin-hcp.com.sc.omtrdc.net",
+  "metrics.aviva.com.sg": "aviva.com.sg.sc.omtrdc.net",
+  "metrics.avnet.com": "avnet.com.122.2o7.net",
+  "metrics.azfamily.com": "biazfamilycom.122.2o7.net",
+  "metrics.babycenter.com": "babycenter.com.112.2o7.net",
+  "metrics.babycentre.co.uk": "babycentre.co.uk.112.2o7.net",
+  "metrics.baitoru-id.com": "baitoru-id.com.data.adobedc.net",
+  "metrics.baitoru.com": "baitoru.com.ssl.sc.omtrdc.net",
+  "metrics.baitorupro.com": "baitorupro.com.data.adobedc.net",
+  "metrics.bakeryandsnacks.com": "bakeryandsnacks.com.data.adobedc.net",
+  "metrics.bakeryinfo.co.uk": "bakeryinfo.co.uk.data.adobedc.net",
+  "metrics.bankinter.com": "bankinter.com.sc.omtrdc.net",
+  "metrics.barclaycardus.com": "barclaycardus.com.ssl.sc.omtrdc.net",
+  "metrics.barclays.co.uk": "barclays.co.uk.d3.sc.omtrdc.net",
+  "metrics.base.be": "base.be.sc.omtrdc.net",
+  "metrics.bcbsnc.com": "bcbsnc.com.sc.omtrdc.net",
+  "metrics.be.carrefour.eu": "be.carrefour.eu.sc.omtrdc.net",
+  "metrics.beachbody.com": "beachbody.com.122.2o7.net",
+  "metrics.beatsbydre.com": "beatsbydre.com.d1.sc.omtrdc.net",
+  "metrics.bestrecipes.com.au": "bestrecipes.com.au.ssl.sc.omtrdc.net",
+  "metrics.bet.com": "bet.com.sc.omtrdc.net",
+  "metrics.beveragedaily.com": "beveragedaily.com.data.adobedc.net",
+  "metrics.biaxin.com": "biaxin.com.112.2o7.net",
+  "metrics.bighospitality.co.uk": "bighospitality.co.uk.data.adobedc.net",
+  "metrics.billmelater.com": "data.102.112.2o7.net",
+  "metrics.bingle.com.au": "bingle.com.au.sc.omtrdc.net",
+  "metrics.biocompare.com": "biocompare.com.data.adobedc.net",
+  "metrics.biooncology.com": "biooncology.com.sc.omtrdc.net",
+  "metrics.biopharma-reporter.com": "biopharma-reporter.com.data.adobedc.net",
+  "metrics.bitdefender.com": "bitdefender.com.122.2o7.net",
+  "metrics.bizjournals.com": "bizjournals.com.ssl.sc.omtrdc.net",
+  "metrics.blackrock.com": "blackrock.com.d2.sc.omtrdc.net",
+  "metrics.blockbuster.com": "blockbuster.com.sc.omtrdc.net",
+  "metrics.bloomberg.com": "bloomberg.122.2o7.net",
+  "metrics.bmo.com": "bmo.com.d1.sc.omtrdc.net",
+  "metrics.bmwusa.com": "bmwfs.122.2o7.net",
+  "metrics.bodyandsoul.com.au": "bodyandsoul.com.au.ssl.sc.omtrdc.net",
+  "metrics.boostmobile.com": "boostmobile.com.ssl.sc.omtrdc.net",
+  "metrics.bose.com": "bose.com.sc.omtrdc.net",
+  "metrics.bostonglobe.com": "bostonglobe.com.sc.omtrdc.net",
+  "metrics.brocade.com": "brocade.com.122.2o7.net",
+  "metrics.bt.com": "bt.com.sc.omtrdc.net",
+  "metrics.business.comcast.com": "comcast0.112.2o7.net",
+  "metrics.buysearchsell.com.au": "buysearchsell.com.au.data.adobedc.net",
+  "metrics.cairnspost.com.au": "cairnspost.com.au.ssl.sc.omtrdc.net",
+  "metrics.caixabank.es": "caixabank.es.ssl.sc.omtrdc.net",
+  "metrics.cancer.gov": "cancer.gov.ssl.sc.omtrdc.net",
+  "metrics.capitalone.com": "capitalone.com.d1.sc.omtrdc.net",
+  "metrics.car.com": "autobytelcorp.112.2o7.net",
+  "metrics.caracoltv.com": "icck.d1.sc.omtrdc.net",
+  "metrics.caranddriver.com": "caranddriver.com.112.2o7.net",
+  "metrics.carbonite.com": "carbonite.com.112.2o7.net",
+  "metrics.cardizemla.com": "cardizemla.com.112.2o7.net",
+  "metrics.care.com": "care.com.112.2o7.net",
+  "metrics.carfax.com": "carfax.com.d1.sc.omtrdc.net",
+  "metrics.carnival.com": "carnival.com.sc.omtrdc.net",
+  "metrics.carphonewarehouse.com": "carphonewarehouse.com.sc.omtrdc.net",
+  "metrics.cars.com": "cars.com.sc.omtrdc.net",
+  "metrics.carters.com": "carters.com.sc.omtrdc.net",
+  "metrics.cartoonnetworkla.com": "elb-geoblockemea-940286427.eu-west-1.elb.amazonaws.com",
+  "metrics.casio.jp": "casio.jp.sc.omtrdc.net",
+  "metrics.cathflo.com": "cathflo.com.sc.omtrdc.net",
+  "metrics.catlife.com.tw": "catlife.com.tw.sc.omtrdc.net",
+  "metrics.cbc.ca": "cbc.ca.122.2o7.net",
+  "metrics.cbn.com": "cbn.com.sc.omtrdc.net",
+  "metrics.cdiscount.com": "cdiscount.com.d2.sc.omtrdc.net",
+  "metrics.cedars-sinai.org": "cedars-sinai.org.sc.omtrdc.net",
+  "metrics.cellcept.com": "cellcept.com.sc.omtrdc.net",
+  "metrics.centex.com": "pultehomes.122.2o7.net",
+  "metrics.centurylink.com": "centurylink.com.sc.omtrdc.net",
+  "metrics.chapters.indigo.ca": "chapters.indigo.ca.ssl.d1.sc.omtrdc.net",
+  "metrics.christies.com": "christies.com.sc.omtrdc.net",
+  "metrics.chron.com": "unavailable.hearstnp.com",
+  "metrics.citibank.com": "citibank.com.d2.sc.omtrdc.net",
+  "metrics.cloudera.com": "cloudera.com.sc.omtrdc.net",
+  "metrics.cluballiance.aaa.com": "cluballiance.aaa.com.sc.omtrdc.net",
+  "metrics.cnn.com": "cnn.122.2o7.net",
+  "metrics.coachfactory.com": "coachfactory.com.122.2o7.net",
+  "metrics.coalesse.com": "coalesse.com.ssl.sc.omtrdc.net",
+  "metrics.comcast.com": "comcast.com.ssl.sc.omtrdc.net",
+  "metrics.commonclaimsmistakesvideo.com": "commonclaimsmistakesvideo.com.sc.omtrdc.net",
+  "metrics.compactappliance.com": "compactappliance.com.112.2o7.net",
+  "metrics.comparethemarket.com": "comparethemarket.com.sc.omtrdc.net",
+  "metrics.confectionerynews.com": "confectionerynews.com.data.adobedc.net",
+  "metrics.consumerreports.org": "consumerreports.org.d2.sc.omtrdc.net",
+  "metrics.conveniencestore.co.uk": "conveniencestore.co.uk.data.adobedc.net",
+  "metrics.converse.com": "converse.com.d1.sc.omtrdc.net",
+  "metrics.copart.com": "copart.com.d1.sc.omtrdc.net",
+  "metrics.cort.com": "cort.com.ssl.sc.omtrdc.net",
+  "metrics.corus.ca": "corus.ca.sc.omtrdc.net",
+  "metrics.cosmeticsdesign-asia.com": "cosmeticsdesign-asia.com.data.adobedc.net",
+  "metrics.cosmeticsdesign-europe.com": "cosmeticsdesign-europe.com.data.adobedc.net",
+  "metrics.cosmeticsdesign.com": "cosmeticsdesign.com.data.adobedc.net",
+  "metrics.cosmopolitan.co.uk": "hearstdigital.122.2o7.net",
+  "metrics.costco.ca": "costco.ca.122.2o7.net",
+  "metrics.costco.com": "costco.com.sc.omtrdc.net",
+  "metrics.cotellic.com": "cotellic.com.sc.omtrdc.net",
+  "metrics.countryfinancial.com": "countryfinancial.com.sc.omtrdc.net",
+  "metrics.couriermail.com.au": "couriermail.com.au.ssl.sc.omtrdc.net",
+  "metrics.crateandbarrel.com": "crateandbarrel.com.ssl.sc.omtrdc.net",
+  "metrics.creditreport.com": "data.102.122.2o7.net",
+  "metrics.cru.org": "cru.org.sc.omtrdc.net",
+  "metrics.crystalcruises.com": "crystalcruises.com.122.2o7.net",
+  "metrics.csmonitor.com": "csmonitor.com.d2.sc.omtrdc.net",
+  "metrics.css.ch": "css.ch.sc.omtrdc.net",
+  "metrics.csu.edu.au": "csu.edu.au.sc.omtrdc.net",
+  "metrics.ctv.ca": "ctv.ca.122.2o7.net",
+  "metrics.currys.co.uk": "currys.co.uk.sc.omtrdc.net",
+  "metrics.cvs.com": "cvs.com.112.2o7.net",
+  "metrics.dailystrength.org": "sharecare.122.2o7.net",
+  "metrics.dailytelegraph.com.au": "dailytelegraph.com.au.ssl.sc.omtrdc.net",
+  "metrics.dairyreporter.com": "dairyreporter.com.data.adobedc.net",
+  "metrics.damart.fr": "data.102.112.2o7.net",
+  "metrics.darty.com": "darty.com.d3.sc.omtrdc.net",
+  "metrics.datafeedtoolbox.com": "datafeedtoolbox.com.d1.sc.omtrdc.net",
+  "metrics.dcshoes.com": "dcshoes.com.112.2o7.net",
+  "metrics.defenseone.com": "atlanticmedia.122.2o7.net",
+  "metrics.delhaizedirect.be": "groupedelhaize.d2.sc.omtrdc.net",
+  "metrics.delicious.com.au": "delicious.com.au.ssl.sc.omtrdc.net",
+  "metrics.delta.com": "delta.com.sc.omtrdc.net",
+  "metrics.deltafarmpress.com": "dakotafarmer.com.sc.omtrdc.net",
+  "metrics.delwebb.com": "pultehomes.122.2o7.net",
+  "metrics.dentalcompare.com": "metrics.dentalcompare.com.112.2o7.net",
+  "metrics.depakoteer.com": "depakoteer.com.112.2o7.net",
+  "metrics.der.com": "der.com.ssl.d3.sc.omtrdc.net",
+  "metrics.dertour.at": "dertour.at.ssl.d3.sc.omtrdc.net",
+  "metrics.dertour.de": "dertour.de.ssl.ldc.d3.sc.omtrdc.net",
+  "metrics.dertouristik.online": "dertouristik.online.ssl.sc.omtrdc.net",
+  "metrics.deutschlandcard.de": "deutschlandcard.de.122.2o7.net",
+  "metrics.dhc.co.jp": "dhc.co.jp.d1.sc.omtrdc.net",
+  "metrics.dhl.de": "dhl.de.sc.omtrdc.net",
+  "metrics.dickblick.com": "dickblick.com.112.2o7.net",
+  "metrics.dickssportinggoods.com": "dickssportinggoods.com.sc.omtrdc.net",
+  "metrics.digicert.com": "digicert.com.d1.sc.omtrdc.net",
+  "metrics.digitaleditions.com.au": "digitaleditions.com.au.ssl.sc.omtrdc.net",
+  "metrics.directtv.com": "directv.com.d2.sc.omtrdc.net",
+  "metrics.directv.com": "directv.com.d2.sc.omtrdc.net",
+  "metrics.discover.com": "discover.com.d1.sc.omtrdc.net",
+  "metrics.dish.co": "dish.co.sc.omtrdc.net",
+  "metrics.dish.com": "dish.com.sc.omtrdc.net",
+  "metrics.divosta.com": "pultehomes.122.2o7.net",
+  "metrics.diy.com": "diy.com.122.2o7.net",
+  "metrics.dnb.com": "dnb.com.sc.omtrdc.net",
+  "metrics.dockers-site.com": "dockers-site.com.ssl.sc.omtrdc.net",
+  "metrics.dockers.com": "dockers.com.ssl.sc.omtrdc.net",
+  "metrics.doctoroz.com": "doctoroz.com.122.2o7.net",
+  "metrics.dollar.com": "dollar.com.112.2o7.net",
+  "metrics.dollargeneral.com": "dollargeneral.com.112.2o7.net",
+  "metrics.dominos.com": "dominos.com.sc.omtrdc.net",
+  "metrics.drsfostersmith.com": "drsfostersmith.com.102.112.2o7.net",
+  "metrics.drugpricinglaw.com": "drugpricinglaw.com.sc.omtrdc.net",
+  "metrics.duluthtrading.com": "duluthtrading.com.ssl.d2.sc.omtrdc.net",
+  "metrics.dunkindonuts.com": "dunkindonuts.com.122.2o7.net",
+  "metrics.ecampus.com": "ecampus.com.d1.sc.omtrdc.net",
+  "metrics.eddiev.com": "eddiev.com.ssl.sc.omtrdc.net",
+  "metrics.ee.co.uk": "ee.co.uk.d3.sc.omtrdc.net",
+  "metrics.egencia.ae": "egencia.ae.data.adobedc.net",
+  "metrics.egencia.be": "egencia.be.data.adobedc.net",
+  "metrics.egencia.ca": "egencia.ca.data.adobedc.net",
+  "metrics.egencia.ch": "egencia.ch.data.adobedc.net",
+  "metrics.egencia.co.in": "egencia.co.in.data.adobedc.net",
+  "metrics.egencia.co.uk": "egencia.co.uk.data.adobedc.net",
+  "metrics.egencia.com": "egencia.com.data.adobedc.net",
+  "metrics.egencia.com.hk": "egencia.com.hk.data.adobedc.net",
+  "metrics.egencia.com.sg": "egencia.com.sg.data.adobedc.net",
+  "metrics.egencia.com.tr": "egencia.com.tr.data.adobedc.net",
+  "metrics.egencia.de": "egencia.de.data.adobedc.net",
+  "metrics.egencia.dk": "egencia.dk.data.adobedc.net",
+  "metrics.egencia.es": "egencia.es.data.adobedc.net",
+  "metrics.egencia.fi": "egencia.fi.data.adobedc.net",
+  "metrics.egencia.fr": "egencia.fr.data.adobedc.net",
+  "metrics.egencia.ie": "egencia.ie.data.adobedc.net",
+  "metrics.egencia.it": "egencia.it.data.adobedc.net",
+  "metrics.egencia.nl": "egencia.nl.data.adobedc.net",
+  "metrics.egencia.no": "egencia.no.data.adobedc.net",
+  "metrics.egencia.pl": "egencia.pl.data.adobedc.net",
+  "metrics.egencia.se": "egencia.se.data.adobedc.net",
+  "metrics.ehealthinsurance.com": "ehealthinsurance.com.d1.sc.omtrdc.net",
+  "metrics.ehstoday.com": "ehstoday.com.sc.omtrdc.net",
+  "metrics.eiu.com": "eiu.com.122.2o7.net",
+  "metrics.el-mundo.net": "el-mundo.net.d2.sc.omtrdc.net",
+  "metrics.element14.com": "element14.com.sc.omtrdc.net",
+  "metrics.elkjop.no": "elkjop.no.d1.sc.omtrdc.net",
+  "metrics.elle.co.jp": "elle.co.jp.122.2o7.net",
+  "metrics.elle.com": "elle.com.112.2o7.net",
+  "metrics.ellechina.com": "hfmcompany.122.2o7.net",
+  "metrics.ellentube.com": "ellentube.com.sc.omtrdc.net",
+  "metrics.elsevier.com": "elsevier.com.d1.sc.omtrdc.net",
+  "metrics.emicizumabinfo.com": "emicizumabinfo.com.data.adobedc.net",
+  "metrics.emirates.com": "emirates.com.d1.sc.omtrdc.net",
+  "metrics.ems.com": "ems.com.112.2o7.net",
+  "metrics.energyaustralia.com.au": "energyaustralia.com.au.d2.sc.omtrdc.net",
+  "metrics.enspryng-hcp.com": "enspryng-hcp.com.data.adobedc.net",
+  "metrics.enspryng.com": "enspryng.com.data.adobedc.net",
+  "metrics.enterprise.com": "enterprise.com.sc.omtrdc.net",
+  "metrics.equipmentwatch.com": "equipmentwatch.com.sc.omtrdc.net",
+  "metrics.erivedge.com": "erivedge.com.sc.omtrdc.net",
+  "metrics.esbriet.com": "esbriet.com.sc.omtrdc.net",
+  "metrics.esbriethcp.com": "esbriethcp.com.sc.omtrdc.net",
+  "metrics.escape.com.au": "escape.com.au.ssl.sc.omtrdc.net",
+  "metrics.esignal.com": "esignal.com.122.2o7.net",
+  "metrics.etihad.com": "etihad.com.d2.sc.omtrdc.net",
+  "metrics.eu.playstation.com": "eu.playstation.com.d1.sc.omtrdc.net",
+  "metrics.eurobet.it": "eurobet.it.d3.sc.omtrdc.net",
+  "metrics.evrysdi.com": "evrysdi.com.data.adobedc.net",
+  "metrics.ew.com": "ew.com.122.2o7.net",
+  "metrics.examinebiosimilars.com": "examinebiosimilars.com.sc.omtrdc.net",
+  "metrics.experts-exchange.com": "experts-exchange.com.112.2o7.net",
+  "metrics.express.com": "express.com.d1.sc.omtrdc.net",
+  "metrics.expressen.se": "expressen.122.2o7.net",
+  "metrics.faceipf.com": "faceipf.com.sc.omtrdc.net",
+  "metrics.farmfutures.com": "farmfutures.com.sc.omtrdc.net",
+  "metrics.farmindustrynews.com": "farmindustrynews.com.sc.omtrdc.net",
+  "metrics.farmprogress.com": "farmprogress.com.sc.omtrdc.net",
+  "metrics.farmprogressdaily.com": "farmprogressdaily.com.122.2o7.net",
+  "metrics.farmprogressshow.com": "farmprogressshow.com.sc.omtrdc.net",
+  "metrics.farnell.com": "farnell.com.sc.omtrdc.net",
+  "metrics.fcacert.com": "fcacert.com.d3.sc.omtrdc.net",
+  "metrics.fedex.com": "fedex.com.d2.sc.omtrdc.net",
+  "metrics.feednavigator.com": "feednavigator.com.data.adobedc.net",
+  "metrics.feedstuffs.com": "feedstuffs.com.sc.omtrdc.net",
+  "metrics.feedstuffsfoodlink.com": "feedstuffsfoodlink.com.122.2o7.net",
+  "metrics.fetnet.net": "fetnet.net.sc.omtrdc.net",
+  "metrics.fieldandstreamshop.com": "fieldandstreamshop.com.sc.omtrdc.net",
+  "metrics.fifa.com": "fifa.d2.sc.omtrdc.net",
+  "metrics.figis.com": "figis.com.102.112.2o7.net",
+  "metrics.filemaker.com": "filemaker.com.sc.omtrdc.net",
+  "metrics.fingerhut.com": "fingerhut.com.sc.omtrdc.net",
+  "metrics.finishline.com": "finishline.com.112.2o7.net",
+  "metrics.finn.no": "finn.no.d1.sc.omtrdc.net",
+  "metrics.fish.com": "fish.com.122.2o7.net",
+  "metrics.fleetowner.com": "fleetowner.com.sc.omtrdc.net",
+  "metrics.flightnetwork.com": "flightnetwork.com.sc.omtrdc.net",
+  "metrics.flyingmag.com": "flyingmag.com.112.2o7.net",
+  "metrics.fnac.com": "fnac.com.112.2o7.net",
+  "metrics.fnac.es": "fnac.es.112.2o7.net",
+  "metrics.food-management.com": "food-management.com.sc.omtrdc.net",
+  "metrics.foodmanufacture.co.uk": "foodmanufacture.co.uk.data.adobedc.net",
+  "metrics.foodnavigator-asia.com": "foodnavigator-asia.com.data.adobedc.net",
+  "metrics.foodnavigator-latam.com": "foodnavigator-latam.com.data.adobedc.net",
+  "metrics.foodnavigator-usa.com": "foodnavigator-usa.com.data.adobedc.net",
+  "metrics.foodnavigator.com": "foodnavigator.com.data.adobedc.net",
+  "metrics.ford.com": "ford.com.sc.omtrdc.net",
+  "metrics.forecourttrader.co.uk": "forecourttrader.co.uk.data.adobedc.net",
+  "metrics.foreignpolicy.com": "foreignpolicy.com.sc.omtrdc.net",
+  "metrics.fortinet.com": "fortinet.com.ssl.sc.omtrdc.net",
+  "metrics.foxnews.com": "foxnews.com.d1.sc.omtrdc.net",
+  "metrics.foxsports.com.au": "foxsports.com.au.ssl.sc.omtrdc.net",
+  "metrics.fpl.com": "fpl.com.sc.omtrdc.net",
+  "metrics.freecreditreport.com": "freecreditreport.com.ssl.sc.omtrdc.net",
+  "metrics.fressnapf.at": "fressnapf.at.ssl.sc.omtrdc.net",
+  "metrics.fressnapf.de": "fressnapf.de.ssl.sc.omtrdc.net",
+  "metrics.frontier.com": "frontier.com.d2.sc.omtrdc.net",
+  "metrics.frontline.com": "frontline.com.sc.omtrdc.net",
+  "metrics.ftd.ca": "ftd.ca.122.2o7.net",
+  "metrics.ftd.com": "ftd.com.122.2o7.net",
+  "metrics.fuzeon.com": "fuzeon.com.sc.omtrdc.net",
+  "metrics.g-shock.sg": "g-shock.sg.sc.omtrdc.net",
+  "metrics.gap.co.jp": "gap.co.jp.d1.sc.omtrdc.net",
+  "metrics.gap.co.uk": "gap.co.uk.d1.sc.omtrdc.net",
+  "metrics.gap.com": "gap.com.112.2o7.net",
+  "metrics.gap.eu": "gap.eu.d1.sc.omtrdc.net",
+  "metrics.gazyva.com": "gazyva.com.sc.omtrdc.net",
+  "metrics.gcimetrics.com": "gcimetrics.com.d1.sc.omtrdc.net",
+  "metrics.geelongadvertiser.com.au": "geelongadvertiser.com.au.ssl.sc.omtrdc.net",
+  "metrics.gehealthcare.com": "gehealthcare.com.sc.omtrdc.net",
+  "metrics.genentech-access.com": "genentech-access.com.sc.omtrdc.net",
+  "metrics.genentech-forum.com": "genentech-forum.com.sc.omtrdc.net",
+  "metrics.generac.com": "generac.com.122.2o7.net",
+  "metrics.genesis.es": "genesis.es.102.122.2o7.net",
+  "metrics.gengraf.com": "gengraf.com.112.2o7.net",
+  "metrics.gftforex.com": "gftforex.com.d1.sc.omtrdc.net",
+  "metrics.global.nba.com": "global.nba.com.sc.omtrdc.net",
+  "metrics.glucerna.net": "glucerna.net.112.2o7.net",
+  "metrics.gnc.com": "gnc.com.112.2o7.net",
+  "metrics.goldbook.ca": "goldbook.ca.122.2o7.net",
+  "metrics.goldcoastbulletin.com.au": "goldcoastbulletin.com.au.ssl.sc.omtrdc.net",
+  "metrics.golfgalaxy.com": "golfgalaxy.com.sc.omtrdc.net",
+  "metrics.gomedigap.com": "gomedigap.com.sc.omtrdc.net",
+  "metrics.goodhousekeeping.co.uk": "hearstdigital.122.2o7.net",
+  "metrics.govexec.com": "atlanticmedia.122.2o7.net",
+  "metrics.govpro.com": "govpro.com.122.2o7.net",
+  "metrics.gq.com.au": "gq.com.au.ssl.sc.omtrdc.net",
+  "metrics.greatbritishpubawards.co.uk": "greatbritishpubawards.co.uk.data.adobedc.net",
+  "metrics.greenflag.com": "directline.com.d3.sc.omtrdc.net",
+  "metrics.greenies.com": "greenies.com.102.112.2o7.net",
+  "metrics.grundfos.com": "grundfos.com.sc.omtrdc.net",
+  "metrics.guess.hk": "guess.hk.ssl.sc.omtrdc.net",
+  "metrics.handbag.com": "hearstdigital.122.2o7.net",
+  "metrics.harley-davidson.com": "harley-davidson.com.122.2o7.net",
+  "metrics.hatarako.net": "hatarako.net.ssl.sc.omtrdc.net",
+  "metrics.hbogo.com": "hbogo.com.122.2o7.net",
+  "metrics.heraldsun.com.au": "heraldsun.com.au.ssl.sc.omtrdc.net",
+  "metrics.homeadvisor.com": "homeadvisor.com.d2.sc.omtrdc.net",
+  "metrics.hyundaiusa.com": "hyundaiusa.com.sc.omtrdc.net",
+  "metrics.iconfitness.com": "iconfitness.com.d1.sc.omtrdc.net",
+  "metrics.ing.es": "ing.es.ssl.sc.omtrdc.net",
+  "metrics.ingredion.com": "ingredion.com.sc.omtrdc.net",
+  "metrics.intralinks.com": "intralinks.com.122.2o7.net",
+  "metrics.investools.com": "investools.com.112.2o7.net",
+  "metrics.ionos.at": "ionos.at.ssl.sc.omtrdc.net",
+  "metrics.ionos.ca": "ionos.ca.ssl.sc.omtrdc.net",
+  "metrics.ionos.co.uk": "ionos.co.uk.ssl.sc.omtrdc.net",
+  "metrics.ionos.com": "ionos.com.ssl.sc.omtrdc.net",
+  "metrics.ionos.de": "ionos.de.ssl.sc.omtrdc.net",
+  "metrics.ionos.es": "ionos.es.ssl.sc.omtrdc.net",
+  "metrics.ionos.fr": "ionos.fr.ssl.sc.omtrdc.net",
+  "metrics.ionos.it": "ionos.it.ssl.sc.omtrdc.net",
+  "metrics.ionos.mx": "ionos.mx.ssl.sc.omtrdc.net",
+  "metrics.ireport.com": "cnnireport.122.2o7.net",
+  "metrics.its.de": "its.de.ssl.d3.sc.omtrdc.net",
+  "metrics.ivivva.com": "ivivva.com.122.2o7.net",
+  "metrics.iwakifc.com": "iwakifc.com.sc.omtrdc.net",
+  "metrics.jahnreisen.de": "jahnreisen.de.ssl.d3.sc.omtrdc.net",
+  "metrics.jeld-wen.com": "jeld-wen.com.d2.sc.omtrdc.net",
+  "metrics.jeppesen.com": "jeppesen.com.102.112.2o7.net",
+  "metrics.jh-profishop.de": "jh-profishop.de.ssl.sc.omtrdc.net",
+  "metrics.jm-lexus.com": "lexusdealers.112.2o7.net",
+  "metrics.jobs.ie": "jobs.ie.sc.omtrdc.net",
+  "metrics.jp.sonystyle.com": "jp.sonystyle.com.112.2o7.net",
+  "metrics.juiceplus.com": "juiceplus.com.sc.omtrdc.net",
+  "metrics.kadcyla.com": "kadcyla.com.sc.omtrdc.net",
+  "metrics.kawai-juku.ac.jp": "kawai-juku.ac.jp.sc.omtrdc.net",
+  "metrics.kbb.com": "kbb.com.112.2o7.net",
+  "metrics.keno.com.au": "keno.com.au.ssl.sc.omtrdc.net",
+  "metrics.kenwood.com": "kenwood.com.sc.omtrdc.net",
+  "metrics.keysight.com": "keysight.d1.sc.omtrdc.net",
+  "metrics.kgw.com": "bikgwcom.122.2o7.net",
+  "metrics.kidsnews.com.au": "kidsnews.com.au.ssl.sc.omtrdc.net",
+  "metrics.kidspot.com.au": "kidspot.com.au.ssl.sc.omtrdc.net",
+  "metrics.kimberly-clark.com": "kimberlyclark.d2.sc.omtrdc.net",
+  "metrics.king5.com": "biking5com.122.2o7.net",
+  "metrics.kirklands.com": "kirklands.com.ssl.d1.sc.omtrdc.net",
+  "metrics.knowyourhdl.com": "knowyourhdl.com.112.2o7.net",
+  "metrics.knowyourtrigs.com": "knowyourtrigs.com.112.2o7.net",
+  "metrics.kone-major-projects.com": "kone-major-projects.com.d2.sc.omtrdc.net",
+  "metrics.kone-marine.com": "kone-marine.com.d2.sc.omtrdc.net",
+  "metrics.kone.ae": "kone.ae.d2.sc.omtrdc.net",
+  "metrics.kone.at": "kone.at.d2.sc.omtrdc.net",
+  "metrics.kone.bi": "kone.bi.d2.sc.omtrdc.net",
+  "metrics.kone.ch": "kone.ch.d2.sc.omtrdc.net",
+  "metrics.kone.co.il": "kone.co.il.sc.omtrdc.net",
+  "metrics.kone.co.uk": "kone.co.uk.d2.sc.omtrdc.net",
+  "metrics.kone.com": "kone.com.d2.sc.omtrdc.net",
+  "metrics.kone.cz": "kone.cz.d2.sc.omtrdc.net",
+  "metrics.kone.dk": "kone.dk.d2.sc.omtrdc.net",
+  "metrics.kone.hr": "kone.hr.d2.sc.omtrdc.net",
+  "metrics.kone.ie": "kone.ie.d2.sc.omtrdc.net",
+  "metrics.lacaixa.es": "lacaixa.es.ssl.d1.sc.omtrdc.net",
+  "metrics.langhamhotels.com": "langhamhotels.com.102.112.2o7.net",
+  "metrics.lucentis.com": "lucentis.com.sc.omtrdc.net",
+  "metrics.lululemon.co.uk": "lululemon.co.uk.sc.omtrdc.net",
+  "metrics.lululemon.com": "lululemon.com.d2.sc.omtrdc.net",
+  "metrics.lululemon.com.au": "lululemon.com.au.sc.omtrdc.net",
+  "metrics.makemytrip.com": "makemytrip.com.ssl.d2.sc.omtrdc.net",
+  "metrics.manheim.com": "manheim.com.d1.sc.omtrdc.net",
+  "metrics.marriott.com": "marriott.com.d2.sc.omtrdc.net",
+  "metrics.mastercard.com": "mastercard.com.sc.omtrdc.net",
+  "metrics.mathworks.com": "mathworks.com.d1.sc.omtrdc.net",
+  "metrics.maxizoo.be": "maxizoo.be.data.adobedc.net",
+  "metrics.maxizoo.fr": "maxizoo.fr.data.adobedc.net",
+  "metrics.maxizoo.it": "maxizoo.it.data.adobedc.net",
+  "metrics.maxizoo.pl": "maxizoo.pl.ssl.sc.omtrdc.net",
+  "metrics.mcdonalds.com": "mcdonalds.com.sc.omtrdc.net",
+  "metrics.meiers-weltreisen.de": "meiers-weltreisen.de.ssl.d3.sc.omtrdc.net",
+  "metrics.mibcookies.rbs.com": "mibcookies.rbs.com.122.2o7.net",
+  "metrics.miles-and-more.com": "miles-and-more.com.sc.omtrdc.net",
+  "metrics.misumi-ec.com": "misumi.d2.sc.omtrdc.net",
+  "metrics.mobilebanking.scotiabank.com": "mobilebanking.scotiabank.com.122.2o7.net",
+  "metrics.modcloth.com": "modcloth.com.102.122.2o7.net",
+  "metrics.moodys.com": "moodys.com.sc.omtrdc.net",
+  "metrics.moosejaw.com": "moosejaw.com.112.2o7.net",
+  "metrics.morningadvertiser.co.uk": "morningadvertiser.co.uk.data.adobedc.net",
+  "metrics.mouse-jp.co.jp": "mouse-jp.co.jp.sc.omtrdc.net",
+  "metrics.msvoice.com": "msvoice.com.sc.omtrdc.net",
+  "metrics.mycareforward.com": "mycareforward.com.sc.omtrdc.net",
+  "metrics.myhumiraprodemo.com": "myhumiraprodemo.com.112.2o7.net",
+  "metrics.mypartnersincare.com": "mypartnersincare.com.112.2o7.net",
+  "metrics.myprime.com": "myprime.com.ssl.d2.sc.omtrdc.net",
+  "metrics.mysanantonio.com": "unavailable.hearstnp.com",
+  "metrics.mytributes.com.au": "mytributes.com.au.data.adobedc.net",
+  "metrics.myturnstone.com": "myturnstone.com.ssl.sc.omtrdc.net",
+  "metrics.myvi.in": "myvi.in.sc.omtrdc.net",
+  "metrics.n11.com": "n11.com.d3.sc.omtrdc.net",
+  "metrics.nab.com.au": "nab.com.au.d1.sc.omtrdc.net",
+  "metrics.nabbroker.com.au": "nabbroker.com.au.sc.omtrdc.net",
+  "metrics.nadaguides.com": "nadaguides.122.2o7.net",
+  "metrics.napaonline.com": "napaonline.com.d2.sc.omtrdc.net",
+  "metrics.nba.com": "nba.com.112.2o7.net",
+  "metrics.nero.com": "nero.com.d3.sc.omtrdc.net",
+  "metrics.news.com.au": "news.com.au.ssl.sc.omtrdc.net",
+  "metrics.newscorpaustralia.com": "newscorpaustralia.com.ssl.sc.omtrdc.net",
+  "metrics.nfl.com": "nfl.com.d1.sc.omtrdc.net",
+  "metrics.nfm.com": "nfm.com.ssl.sc.omtrdc.net",
+  "metrics.nissan.ee": "nissan.ee.d1.sc.omtrdc.net",
+  "metrics.nissan.es": "nissan.es.d1.sc.omtrdc.net",
+  "metrics.notebooksbilliger.de": "notebooksbilliger.de.ssl.sc.omtrdc.net",
+  "metrics.nrma.com.au": "nrma.com.au.ssl.sc.omtrdc.net",
+  "metrics.ntnews.com.au": "ntnews.com.au.ssl.sc.omtrdc.net",
+  "metrics.nutraingredients-asia.com": "nutraingredients-asia.com.data.adobedc.net",
+  "metrics.nutraingredients-usa.com": "nutraingredients-usa.com.data.adobedc.net",
+  "metrics.nutraingredients.com": "nutraingredients.com.data.adobedc.net",
+  "metrics.nvidia.com": "nvidia.com.sc.omtrdc.net",
+  "metrics.o2online.de": "o2online.de.sc.omtrdc.net",
+  "metrics.ocrelizumabinfo.com": "ocrelizumabinfo.com.sc.omtrdc.net",
+  "metrics.octanner.com": "octanner.com.ssl.sc.omtrdc.net",
+  "metrics.pandora.com": "pandora.com.d1.sc.omtrdc.net",
+  "metrics.parcelforce.com": "parcelforce.com.ssl.d1.sc.omtrdc.net",
+  "metrics.patientsatheart.com": "patientsatheart.com.112.2o7.net",
+  "metrics.pepboys.com": "pepboys.com.102.122.2o7.net",
+  "metrics.perjeta.com": "perjeta.com.sc.omtrdc.net",
+  "metrics.pinkribbonbottle.com": "pinkribbonbottle.com.sc.omtrdc.net",
+  "metrics.polivy.com": "polivy.com.sc.omtrdc.net",
+  "metrics.portal.roche.de": "portal.roche.de.sc.omtrdc.net",
+  "metrics.postoffice.co.uk": "postoffice.co.uk.ssl.d1.sc.omtrdc.net",
+  "metrics.prd.base.be": "base.be.sc.omtrdc.net",
+  "metrics.prd.telenet.be": "telenet.be.sc.omtrdc.net",
+  "metrics.priceless.com": "priceless.com.122.2o7.net",
+  "metrics.qvc.jp": "qvcjapan.sc.omtrdc.net",
+  "metrics.radissonhotels.com": "radissonhotels.com.ssl.sc.omtrdc.net",
+  "metrics.radissonhotelsamericas.com": "radissonhotelsamericas.com.data.adobedc.net",
+  "metrics.rcsmetrics.it": "rcsmetrics.it.d2.sc.omtrdc.net",
+  "metrics.reallymoving.com": "reallymoving.com.data.adobedc.net",
+  "metrics.regal.es": "regal.es.102.122.2o7.net",
+  "metrics.regions.com": "regions.com.sc.omtrdc.net",
+  "metrics.restaurant.com": "restaurant.com.sc.omtrdc.net",
+  "metrics.restockit.com": "restockit.com.102.112.2o7.net",
+  "metrics.rethinksma.com": "rethinksma.com.sc.omtrdc.net",
+  "metrics.rewe-reisen.de": "rewe-reisen.de.ssl.d3.sc.omtrdc.net",
+  "metrics.rewe.de": "rewe.de.ssl.d3.sc.omtrdc.net",
+  "metrics.rituxan.com": "rituxan.com.sc.omtrdc.net",
+  "metrics.rituxanforgpampa-hcp.com": "rituxanforgpampa-hcp.com.sc.omtrdc.net",
+  "metrics.rituxanforpv.com": "rituxanforpv.com.sc.omtrdc.net",
+  "metrics.rituxanhycela.com": "rituxanhycela.com.sc.omtrdc.net",
+  "metrics.roche-applied-science.com": "roche-applied-science.com.d3.sc.omtrdc.net",
+  "metrics.roche.de": "roche.de.122.2o7.net",
+  "metrics.rolex.cn": "rolex.com.d1.sc.omtrdc.net",
+  "metrics.rolex.com": "rolex.com.d1.sc.omtrdc.net",
+  "metrics.roxy.com": "roxy.com.112.2o7.net",
+  "metrics.roxypalace.com": "roxypalace.com.d3.sc.omtrdc.net",
+  "metrics.roxypalace.dk": "roxypalace.dk.d3.sc.omtrdc.net",
+  "metrics.royalcaribbean.com": "royalcaribbean.com.sc.omtrdc.net",
+  "metrics.royalmail.com": "royalmail.com.ssl.d1.sc.omtrdc.net",
+  "metrics.rozlytrek.com": "rozlytrek.com.sc.omtrdc.net",
+  "metrics.ryanair.com": "ryanair.com.d3.sc.omtrdc.net",
+  "metrics.samsclub.com": "samsclub.com.ssl.d1.sc.omtrdc.net",
+  "metrics.savethechildren.org": "savethechildren.org.sc.omtrdc.net",
+  "metrics.saxobank.com": "saxobank.com.sc.omtrdc.net",
+  "metrics.schaefer-shop.de": "schaefer-shop.de.d3.sc.omtrdc.net",
+  "metrics.schooloutfitters.com": "schooloutfitters.com.102.112.2o7.net",
+  "metrics.sciencedirect.com": "sciencedirect.com.d1.sc.omtrdc.net",
+  "metrics.sciencemag.org": "sciencemag.org.ssl.sc.omtrdc.net",
+  "metrics.scotts.com": "scotts.com.122.2o7.net",
+  "metrics.sfr.fr": "sfr.fr.d2.sc.omtrdc.net",
+  "metrics.shangri-la.com": "shangri-la.com.sc.omtrdc.net",
+  "metrics.sky.com": "sky.com.d1.sc.omtrdc.net",
+  "metrics.sky.it": "sky.it.sc.omtrdc.net",
+  "metrics.skynews.com.au": "skynews.com.au.data.adobedc.net",
+  "metrics.sony.jp": "sony.jp.112.2o7.net",
+  "metrics.spencersonline.com": "spencersonline.com.102.112.2o7.net",
+  "metrics.spirithalloween.com": "spirithalloween.com.102.112.2o7.net",
+  "metrics.sportsbusinessdaily.com": "sportsbusinessdaily.com.ssl.sc.omtrdc.net",
+  "metrics.staples.com": "staples.com.d2.sc.omtrdc.net",
+  "metrics.starhub.com": "starhub.com.sc.omtrdc.net",
+  "metrics.startribune.com": "startribune.com.d1.sc.omtrdc.net",
+  "metrics.starwoodhotels.com": "starwoodhotels.com.d1.sc.omtrdc.net",
+  "metrics.steelcase.com": "steelcase.com.ssl.sc.omtrdc.net",
+  "metrics.store.irobot.com": "store.irobot.com.112.2o7.net",
+  "metrics.strokeawareness.com": "strokeawareness.com.sc.omtrdc.net",
+  "metrics.suncorp.com.au": "suncorp.com.au.sc.omtrdc.net",
+  "metrics.suncorpbank.com.au": "suncorpbank.com.au.sc.omtrdc.net",
+  "metrics.sungard.com": "sungardavailabilityservices.122.2o7.net",
+  "metrics.swinburne.edu.au": "swinburne.edu.au.sc.omtrdc.net",
+  "metrics.switch2t-mobile.com": "switch2t-mobile.com.data.adobedc.net",
+  "metrics.synopsys.com": "synopsys.com.sc.omtrdc.net",
+  "metrics.tamiflu.com": "tamiflu.com.sc.omtrdc.net",
+  "metrics.taste.com.au": "taste.com.au.ssl.sc.omtrdc.net",
+  "metrics.tbs.com": "tbs.com.112.2o7.net",
+  "metrics.td.com": "td.com.d1.sc.omtrdc.net",
+  "metrics.tdconline.dk": "tdconline.dk.112.2o7.net",
+  "metrics.teampages.com": "teampages.com.sc.omtrdc.net",
+  "metrics.tecentriq.com": "tecentriq.com.sc.omtrdc.net",
+  "metrics.telegraph.co.uk": "telegraph.co.uk.sc.omtrdc.net",
+  "metrics.telenet.be": "telenet.be.sc.omtrdc.net",
+  "metrics.telenor.se": "telenor.se.112.2o7.net",
+  "metrics.tesco.com": "tesco.com.sc.omtrdc.net",
+  "metrics.tescobank.com": "tescobank.com.122.2o7.net",
+  "metrics.theaustralian.com.au": "theaustralian.com.au.ssl.sc.omtrdc.net",
+  "metrics.thechronicle.com.au": "thechronicle.com.au.data.adobedc.net",
+  "metrics.thedailybeast.com": "thedailybeast.com.122.2o7.net",
+  "metrics.thefork.com": "thefork.com.ldc.d3.sc.omtrdc.net",
+  "metrics.thegrocer.co.uk": "thegrocer.co.uk.data.adobedc.net",
+  "metrics.thelott.com": "thelott.com.ssl.sc.omtrdc.net",
+  "metrics.themercury.com.au": "themercury.com.au.ssl.sc.omtrdc.net",
+  "metrics.theoutnet.com": "netaporter.d3.sc.omtrdc.net",
+  "metrics.thermia.com": "twoisverige.122.2o7.net",
+  "metrics.thetrainline.com": "trainline.com.ldc.d3.sc.omtrdc.net",
+  "metrics.thingspeak.com": "thingspeak.com.sc.omtrdc.net",
+  "metrics.thingsremembered.com": "thingsremembered.com.112.2o7.net",
+  "metrics.thinkbaby.co.uk": "magicalia.122.2o7.net",
+  "metrics.thinkgeek.com": "thinkgeek.com.sc.omtrdc.net",
+  "metrics.three.co.uk": "three.co.uk.d2.sc.omtrdc.net",
+  "metrics.three.ie": "three.ie.d3.sc.omtrdc.net",
+  "metrics.thrivent.com": "thrivent.com.d2.sc.omtrdc.net",
+  "metrics.tiaa-cref.org": "tiaa-cref.org.d2.sc.omtrdc.net",
+  "metrics.ticketmaster.com": "ticketmaster.com.d2.sc.omtrdc.net",
+  "metrics.tienda.telcel.com": "tienda.telcel.com.sc.omtrdc.net",
+  "metrics.tim.it": "tim.it.d2.sc.omtrdc.net",
+  "metrics.timberland.com": "timberland.com.112.2o7.net",
+  "metrics.timberland.fr": "timberland.fr.112.2o7.net",
+  "metrics.time.com": "time.com.sc.omtrdc.net",
+  "metrics.timeinc.net": "timeinc.net.122.2o7.net",
+  "metrics.timeout.com": "timeout.com.sc.omtrdc.net",
+  "metrics.timewarnercable.com": "timewarnercable.com.ssl.sc.omtrdc.net",
+  "metrics.tiscover.com": "tiscover.com.122.2o7.net",
+  "metrics.tlc.com": "tlc.com.122.2o7.net",
+  "metrics.tmz.com": "tmz.com.sc.omtrdc.net",
+  "metrics.tnkase.com": "tnkase.com.sc.omtrdc.net",
+  "metrics.tnt.tv": "tnt.tv.112.2o7.net",
+  "metrics.tntdrama.com": "tnt.tv.112.2o7.net",
+  "metrics.townsvillebulletin.com.au": "townsvillebulletin.com.au.ssl.sc.omtrdc.net",
+  "metrics.toyota.com": "toyota.com.d1.sc.omtrdc.net",
+  "metrics.tractorsupply.com": "tractorsupply.com.sc.omtrdc.net",
+  "metrics.tsb.co.uk": "tsb.co.uk.data.adobedc.net",
+  "metrics.uhc.com": "uhc.com.d1.sc.omtrdc.net",
+  "metrics.united-internet.de": "united-internet.de.data.adobedc.net",
+  "metrics.victoriassecret.com": "victoriassecret.com.ssl.sc.omtrdc.net",
+  "metrics.visasignaturehotels.com": "visasignaturehotels.com.d2.sc.omtrdc.net",
+  "metrics.vodafone.com.eg": "vodafone.com.eg.ssl.d2.sc.omtrdc.net",
+  "metrics.vodafone.hu": "vodafone.hu.ssl.d2.sc.omtrdc.net",
+  "metrics.vogue.com.au": "vogue.com.au.ssl.sc.omtrdc.net",
+  "metrics.volusion.com": "volusion.com.112.2o7.net",
+  "metrics.walgreens.com": "walgreens.com.d1.sc.omtrdc.net",
+  "metrics.walmart.com": "walmart.com.112.2o7.net",
+  "metrics.washingtonpost.com": "washingtonpost.com.112.2o7.net",
+  "metrics.watch.nba.com": "watch.nba.com.sc.omtrdc.net",
+  "metrics.weeklytimesnow.com.au": "weeklytimesnow.com.au.ssl.sc.omtrdc.net",
+  "metrics.westernunion.com": "westernunion.com.d1.sc.omtrdc.net",
+  "metrics.williamhill.com": "williamhill.com.d3.sc.omtrdc.net",
+  "metrics.wm.com": "wm.com.122.2o7.net",
+  "metrics.wnba.com": "wnba.com.112.2o7.net",
+  "metrics.workfront.com": "workfront.com.sc.omtrdc.net",
+  "metrics.worldmarket.com": "worldmarket.com.d1.sc.omtrdc.net",
+  "metrics.xfinity.com": "xfinity.com.ssl.sc.omtrdc.net",
+  "metrics.ybs.co.uk": "ybs.co.uk.112.2o7.net",
+  "metrics.yellowbook.com": "yellowbook.com.102.112.2o7.net",
+  "metrics.yellowpages.com": "yellowpages.com.ssl.sc.omtrdc.net",
+  "metrics1.citi.com": "citi.com.ssl.sc.omtrdc.net",
+  "metrics1.citibank.com": "citibank.com.ssl.d2.sc.omtrdc.net",
+  "metrics1.citibankonline.com": "citibankonline.com.ssl.sc.omtrdc.net",
+  "metrics2.houselogic.com": "houselogic.com.ssl.sc.omtrdc.net",
+  "metricss.bibliotheek.nl": "bibliotheek.nl.ssl.d3.sc.omtrdc.net",
+  "metricssecure.empiretoday.com": "empiretoday.com.ssl.d2.sc.omtrdc.net",
+  "metricssecure.northwesternmutual.com": "northwesternmutual.com.102.122.2o7.net",
+  "metrix.avon.uk.com": "avon.uk.com.112.2o7.net",
+  "metrix.youravon.com": "youravon.com.sc.omtrdc.net",
+  "mktg.aa.f5.com": "aa.f5.com.ssl.sc.omtrdc.net",
+  "mlb.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "mtcs.nhk-ondemand.jp": "nhk-ondemand.jp.ssl.sc.omtrdc.net",
+  "mtcs.nhk.or.jp": "nhk.or.jp.ssl.sc.omtrdc.net",
+  "mtrs.fluor.com": "fluor.com.ssl.sc.omtrdc.net",
+  "mtv.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "mtv0.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "mtv3.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "mtv3.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "my.iheart.com": "iheart.com.d2.sc.omtrdc.net",
+  "mytvsuperlimited.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "n.thestar.com": "thestar.com.sc.omtrdc.net",
+  "nascardigitalsap.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "nationalgeographic.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "nats.xing.com": "xing.com.ssl.d1.sc.omtrdc.net",
+  "natsp.xing.com": "xing.com.d1.sc.omtrdc.net",
+  "nbaprop.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "nbaprop.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "nbcstreaming.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "nbcume.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "nbcume.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "newenglandsportsnetworkinc.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "newimagitasinc.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "newscorpau.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "nfl.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "nfl.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "nhkonline.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "nmetrics.boostmobile.com": "boostmobile.com.sc.omtrdc.net",
+  "nmetrics.samsung.com": "samsung.com.sc.omtrdc.net",
+  "nmetrics.samsungmobile.com": "samsungfc.112.2o7.net",
+  "novartispharma.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "nsc.metrics-shell.com": "shell.d3.sc.omtrdc.net",
+  "nsc.rbs.co.uk": "rbs.co.uk.d2.sc.omtrdc.net",
+  "nsm.dell.com": "dell.com.d1.sc.omtrdc.net",
+  "nsmetrics.boostmobile.com": "boostmobile.com.sc.omtrdc.net",
+  "nsmetrics.geelongadvertiser.com.au": "geelongadvertiser.com.au.sc.omtrdc.net",
+  "nsmetrics.ni.com": "ni.com.d2.sc.omtrdc.net",
+  "nsmetrics.themercury.com.au": "themercury.com.au.sc.omtrdc.net",
+  "nsteq.queensland.com": "queensland.com.ssl.sc.omtrdc.net",
+  "o.carmax.com": "carmax.com.ssl.sc.omtrdc.net",
+  "o.lenovo.com": "lenovo.comd1.sc.omtrdc.net",
+  "o.opentable.co.uk": "opentable.co.uk.d1.sc.omtrdc.net",
+  "o.swisscom.ch": "swisscom.ch.sc.omtrdc.net",
+  "o.xbox.com": "xbox.com.112.2o7.net",
+  "odc.1und1.de": "1und1.de.ssl.sc.omtrdc.net",
+  "om-ssl.consorsbank.de": "consorsbank.de.ssl.d3.sc.omtrdc.net",
+  "om.cbsi.com": "cbsinteractive.d2.sc.omtrdc.net",
+  "om.churchofjesuschrist.org": "churchofjesuschrist.org.ssl.sc.omtrdc.net",
+  "om.dowjoneson.com": "dowjoneson.com.sc.omtrdc.net",
+  "om.expedia.com": "expedia.com.d1.sc.omtrdc.net",
+  "om.familysearch.org": "familysearch.org.ssl.d1.sc.omtrdc.net",
+  "om.hoteis.com": "hoteis.com.d2.sc.omtrdc.net",
+  "om.hotels.com": "hotels.com.d2.sc.omtrdc.net",
+  "om.lds.org": "lds.org.ssl.d1.sc.omtrdc.net",
+  "om.neimanmarcus.com": "neimanmarcus.com.sc.omtrdc.net",
+  "om.sears.com": "sears.com.d1.sc.omtrdc.net",
+  "om.symantec.com": "symantec.com.d1.sc.omtrdc.net",
+  "om.vrbo.com": "vrbo.com.122.2o7.net",
+  "ometrics.netapp.com": "netapp.com.sc.omtrdc.net",
+  "omn.americanexpress.com": "americanexpress.com.d2.sc.omtrdc.net",
+  "omn.crackle.com": "crackle.d2.sc.omtrdc.net",
+  "omn2.hasbro.com": "hasbro.com.112.2o7.net",
+  "omni.alaskaair.com": "alaskaair.com.d1.sc.omtrdc.net",
+  "omni.bluecrossma.com": "bluecrossma.com.sc.omtrdc.net",
+  "omni.campaigns.home.saxo": "campaigns.home.saxo.sc.omtrdc.net",
+  "omni.cineplex.com": "cineplex.com.122.2o7.net",
+  "omni.cn.saxobank.com": "cn.saxobank.com.sc.omtrdc.net",
+  "omni.copaair.com": "copaair.com.102.122.2o7.net",
+  "omni.nine.com.au": "nine.com.au.sc.omtrdc.net",
+  "omni.skinmedica.com": "skinmedica.com.122.2o7.net",
+  "omni.sky.de": "sky.de.d2.sc.omtrdc.net",
+  "omni.syf.com": "syf.com.sc.omtrdc.net",
+  "omnis.basspro.com": "basspro.com.ssl.sc.omtrdc.net",
+  "omniture-dc-sec.cadence.com": "cadence.com.ssl.d1.sc.omtrdc.net",
+  "omniture-ssl.direct.asda.com": "direct.asda.com.ssl.sc.omtrdc.net",
+  "omniture-ssl.kia.com": "kia.com.ssl.sc.omtrdc.net",
+  "omniture-ssl.walmart.ca": "walmart.ca.ssl.d1.sc.omtrdc.net",
+  "omniture-ssl.walmart.com": "walmart.com.ssl.d1.sc.omtrdc.net",
+  "omniture.chip.de": "chip.de.sc.omtrdc.net",
+  "omniture.dupontregistry.com": "dupontregistry.com.102.122.2o7.net",
+  "omniture.groceries-qa.asda.com": "groceries-qa.asda.com.d2.sc.omtrdc.net",
+  "omniture.groceries.asda.com": "groceries.asda.com.d2.sc.omtrdc.net",
+  "omniture.kennametal.com": "kennametal.com.ssl.sc.omtrdc.net",
+  "omniture.lg.com": "lg.com.d2.sc.omtrdc.net",
+  "omniture.money.asda.com": "money.asda.com.d2.sc.omtrdc.net",
+  "omniture.stuff.co.nz": "stuff.co.nz.d1.sc.omtrdc.net",
+  "omniture.wal-mart.com": "wal-mart.com.d1.sc.omtrdc.net",
+  "omniture.walmart.ca": "walmart.ca.d1.sc.omtrdc.net",
+  "omniture.walmart.com": "walmart.com.d1.sc.omtrdc.net",
+  "omniture443.partycity.com": "partycity.com.102.122.2o7.net",
+  "omns.americanexpress.com": "americanexpress.com.ssl.d2.sc.omtrdc.net",
+  "omns.crackle.com": "crackle.com.ssl.d2.sc.omtrdc.net",
+  "omns.murdoch.edu.au": "murdoch.edu.au.ssl.sc.omtrdc.net",
+  "ompx.shopbop.com": "shopbop.com.d2.sc.omtrdc.net",
+  "oms.chatelaine.com": "chatelaine.com.ssl.sc.omtrdc.net",
+  "oms.chatrwireless.com": "chatrwireless.com.ssl.sc.omtrdc.net",
+  "oms.cityline.tv": "cityline.tv.ssl.sc.omtrdc.net",
+  "oms.citynews.ca": "citynews.ca.ssl.sc.omtrdc.net",
+  "oms.citytv.com": "citytv.com.ssl.sc.omtrdc.net",
+  "oms.dowjones.com": "dowjones.com.ssl.sc.omtrdc.net",
+  "oms.dowjoneson.com": "dowjoneson.com.ssl.sc.omtrdc.net",
+  "oms.egencia.com": "expedia.com.ssl.d1.sc.omtrdc.net",
+  "oms.expedia.com": "expedia.com.ssl.d1.sc.omtrdc.net",
+  "oms.factiva.com": "factiva.com.ssl.sc.omtrdc.net",
+  "oms.fido.ca": "fido.ca.ssl.sc.omtrdc.net",
+  "oms.flare.com": "flare.com.ssl.sc.omtrdc.net",
+  "oms.goarmy.com": "goarmy.com.102.112.2o7.net",
+  "oms.hellomagazine.com": "hellomagazine.com.ssl.sc.omtrdc.net",
+  "oms.hoteis.com": "hoteis.com.ssl.d2.sc.omtrdc.net",
+  "oms.hoteles.com": "hoteles.com.ssl.d2.sc.omtrdc.net",
+  "oms.hotels.com": "hotels.com.ssl.d2.sc.omtrdc.net",
+  "oms.macleans.ca": "macleans.ca.ssl.sc.omtrdc.net",
+  "oms.marketwatch.com": "marketwatch.com.ssl.sc.omtrdc.net",
+  "oms.neimanmarcus.com": "neimanmarcus.com.ssl.sc.omtrdc.net",
+  "oms.nhllive.com": "nhllive.com.ssl.sc.omtrdc.net",
+  "oms.norton.com": "norton.com.ssl.sc.omtrdc.net",
+  "oms.rogersmedia.com": "rogersmedia.com.ssl.sc.omtrdc.net",
+  "oms.snnow.ca": "snnow.ca.ssl.sc.omtrdc.net",
+  "oms.symantec.com": "symantec.com.ssl.d1.sc.omtrdc.net",
+  "oms.todaysparent.com": "todaysparent.com.ssl.sc.omtrdc.net",
+  "oms.tsc.ca": "tsc.ca.ssl.sc.omtrdc.net",
+  "oms.wsj.com": "wsj.com.ssl.sc.omtrdc.net",
+  "oms1.sportsnet.ca": "sportsnet.ca.ssl.sc.omtrdc.net",
+  "omsc.kpn.com": "kpn.com.102.122.2o7.net",
+  "omtr2.partners.salesforce.com": "partners.salesforce.com.ssl.d2.sc.omtrdc.net",
+  "omtrdc.jobstreet.com": "jobstreet.com.d1.sc.omtrdc.net",
+  "os.fandango.com": "fandango.com.ssl.d2.sc.omtrdc.net",
+  "os.shutterfly.com": "shutterfly.com.ssl.sc.omtrdc.net",
+  "osimg.halloweenhorrornights.com": "halloweenhorrornights.com.data.adobedc.net",
+  "osimg.nbcuni.com": "nbcuni.com.ssl.sc.omtrdc.net",
+  "osimg.universalorlando.com": "universalorlando.com.data.adobedc.net",
+  "osimg.universalstudioshollywood.com": "universalstudioshollywood.com.data.adobedc.net",
+  "osur.dell.com": "survey.112.2o7.net",
+  "otrack.workday.com": "workday.com.sc.omtrdc.net",
+  "otracks.workday.com": "workday.com.ssl.sc.omtrdc.net",
+  "owss.ihs.com": "ihs.com.ssl.sc.omtrdc.net",
+  "p2.danskebank.dk": "danskebank.dk.102.112.2o7.net",
+  "p2.danskebank.se": "danskebank.se.102.112.2o7.net",
+  "pac12.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "pdmsmrt.buick.com": "buick.com.ssl.sc.omtrdc.net",
+  "pdmsmrt.cadillac.com": "cadillac.com.ssl.sc.omtrdc.net",
+  "pdmsmrt.chevrolet.com": "chevrolet.com.ssl.sc.omtrdc.net",
+  "pdmsmrt.gmc.com": "gmc.com.ssl.sc.omtrdc.net",
+  "pears.contractorcalculator.co.uk": "contractorcalculator.co.uk.ssl.sc.omtrdc.net",
+  "pgatour.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "plantronics.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "pluralsight.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "private.roche.com": "roche.com.data.adobedc.net",
+  "radiocanada.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "radiocanada.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "re.stjude.org": "stjude.org.sc.omtrdc.net",
+  "repdata.floridatoday.com": "floridatoday.com.sc.omtrdc.net",
+  "repdata.postcrescent.com": "postcrescent.com.sc.omtrdc.net",
+  "repdata.sctimes.com": "sctimes.com.sc.omtrdc.net",
+  "repdata.wzzm13.com": "wzzm13.com.sc.omtrdc.net",
+  "rogersmedia.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "roomandboard.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "roomandboard.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "rpt.kidsfootlocker.com": "kidsfootlocker.com.ssl.sc.omtrdc.net",
+  "rtl.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "rtl.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "rtvc.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "rtve.d1.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "rtve.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "s-adobe.wacoal.jp": "wacoal.jp.ssl.sc.omtrdc.net",
+  "s-adobeanalytics.vice.com": "vice.com.ssl.sc.omtrdc.net",
+  "s-omniture.yell.com": "yell.com.ssl.d2.sc.omtrdc.net",
+  "s-sitecatalyst.work.shiseido.co.jp": "work.shiseido.co.jp.102.112.2o7.net",
+  "s.acxiom.com": "acxiom.com.ssl.d2.sc.omtrdc.net",
+  "s.americanblinds.com": "americanblinds.com.ssl.sc.omtrdc.net",
+  "s.ameriprisestats.com": "ameriprisestats.com.ssl.sc.omtrdc.net",
+  "s.blinds.com": "blinds.com.ssl.sc.omtrdc.net",
+  "s.bramptonguardian.com": "bramptonguardian.com.data.adobedc.net",
+  "s.cadent.bloomberglaw.com": "cadent.bloomberglaw.com.ssl.sc.omtrdc.net",
+  "s.cambridgetimes.ca": "cambridgetimes.ca.data.adobedc.net",
+  "s.durhamregion.com": "durhamregion.com.data.adobedc.net",
+  "s.guelphmercury.com": "guelphmercury.com.data.adobedc.net",
+  "s.hdsupplysolutions.com": "hdsupplysolutions.com.102.122.2o7.net",
+  "s.insidehalton.com": "insidehalton.com.data.adobedc.net",
+  "s.insideottawavalley.com": "insideottawavalley.com.data.adobedc.net",
+  "s.justblinds.com": "justblinds.com.ssl.sc.omtrdc.net",
+  "s.lenovo.com": "lenovo.com.ssl.d1.sc.omtrdc.net",
+  "s.lexusfinancial.com": "lexusfinancial.com.ssl.sc.omtrdc.net",
+  "s.metric.vodacom.co.za": "metric.vodacom.co.za.ssl.d2.sc.omtrdc.net",
+  "s.mississauga.com": "mississauga.com.data.adobedc.net",
+  "s.muskokaregion.com": "muskokaregion.com.data.adobedc.net",
+  "s.niagarafallsreview.ca": "niagarafallsreview.ca.data.adobedc.net",
+  "s.niagarathisweek.com": "niagarathisweek.com.data.adobedc.net",
+  "s.northbaynipissing.com": "northbaynipissing.com.data.adobedc.net",
+  "s.northumberlandnews.com": "northumberlandnews.com.data.adobedc.net",
+  "s.orangeville.com": "orangeville.com.data.adobedc.net",
+  "s.simcoe.com": "simcoe.com.data.adobedc.net",
+  "s.stcatharinesstandard.ca": "stcatharinesstandard.ca.data.adobedc.net",
+  "s.thepeterboroughexaminer.com": "thepeterboroughexaminer.com.data.adobedc.net",
+  "s.therecord.com": "therecord.com.data.adobedc.net",
+  "s.thespec.com": "thespec.com.data.adobedc.net",
+  "s.thestar.com": "thestar.com.ssl.sc.omtrdc.net",
+  "s.toyotafinancial.com": "toyotafinancial.com.ssl.sc.omtrdc.net",
+  "s.wellandtribune.ca": "wellandtribune.ca.data.adobedc.net",
+  "s.yorkregion.com": "yorkregion.com.data.adobedc.net",
+  "s1.subaru.com": "subaru.com.ssl.sc.omtrdc.net",
+  "sa.eurosport.com": "eurosport.com.sc.omtrdc.net",
+  "sa.tactics.com": "tactics.com.102.112.2o7.net",
+  "saa.247sports.com": "247sports.com.ssl.sc.omtrdc.net",
+  "saa.cbs.com": "cbs.com.ssl.sc.omtrdc.net",
+  "saa.cbsi.com": "cbsi.com.ssl.sc.omtrdc.net",
+  "saa.cbsnews.com": "cbsnews.com.ssl.sc.omtrdc.net",
+  "saa.cbssports.com": "cbssports.com.ssl.sc.omtrdc.net",
+  "saa.chowhound.com": "chowhound.com.ssl.sc.omtrdc.net",
+  "saa.cnet.com": "cnet.com.ssl.sc.omtrdc.net",
+  "saa.collegesportslive.com": "collegesportslive.com.ssl.sc.omtrdc.net",
+  "saa.comicbook.com": "comicbook.com.ssl.sc.omtrdc.net",
+  "saa.datasheets360.com": "datasheets360.com.ssl.sc.omtrdc.net",
+  "saa.drphil.com": "drphil.com.ssl.sc.omtrdc.net",
+  "saa.dyson.at": "dyson.at.ssl.sc.omtrdc.net",
+  "saa.dyson.be": "dyson.be.ssl.sc.omtrdc.net",
+  "saa.dyson.ch": "dyson.ch.ssl.sc.omtrdc.net",
+  "saa.dyson.co.uk": "dyson.co.uk.ssl.sc.omtrdc.net",
+  "saa.dyson.com": "dyson.com.ssl.sc.omtrdc.net",
+  "saa.dyson.de": "dyson.de.ssl.sc.omtrdc.net",
+  "saa.dyson.es": "dyson.es.ssl.sc.omtrdc.net",
+  "saa.dyson.fr": "dyson.fr.ssl.sc.omtrdc.net",
+  "saa.dyson.it": "dyson.it.ssl.sc.omtrdc.net",
+  "saa.dyson.nl": "dyson.nl.ssl.sc.omtrdc.net",
+  "saa.dyson.no": "dyson.no.ssl.sc.omtrdc.net",
+  "saa.dysoncanada.ca": "dysoncanada.ca.ssl.sc.omtrdc.net",
+  "saa.etonline.com": "etonline.com.ssl.sc.omtrdc.net",
+  "saa.gamespot.com": "gamespot.com.ssl.sc.omtrdc.net",
+  "saa.giantbomb.com": "giantbomb.com.ssl.sc.omtrdc.net",
+  "saa.globalspec.com": "globalspec.com.ssl.sc.omtrdc.net",
+  "saa.insideedition.com": "insideedition.com.ssl.sc.omtrdc.net",
+  "saa.irvinecompanyapartments.com": "irvinecompanyapartments.com.ssl.sc.omtrdc.net",
+  "saa.last.fm": "last.fm.ssl.sc.omtrdc.net",
+  "saa.maxpreps.com": "maxpreps.com.ssl.sc.omtrdc.net",
+  "saa.metacritic.com": "metacritic.com.ssl.sc.omtrdc.net",
+  "saa.paramountplus.com": "paramountplus.com.data.adobedc.net",
+  "saa.popculture.com": "popculture.com.ssl.sc.omtrdc.net",
+  "saa.poptv.com": "poptv.com.data.adobedc.net",
+  "saa.rachaelrayshow.com": "rachaelrayshow.com.ssl.sc.omtrdc.net",
+  "saa.scout.com": "scout.com.ssl.sc.omtrdc.net",
+  "saa.sportsline.com": "sportsline.com.ssl.sc.omtrdc.net",
+  "saa.startrek.com": "startrek.com.ssl.sc.omtrdc.net",
+  "saa.tallink.com": "tallink.com.ssl.sc.omtrdc.net",
+  "saa.techrepublic.com": "techrepublic.com.ssl.sc.omtrdc.net",
+  "saa.tescomobile.com": "tescomobile.com.data.adobedc.net",
+  "saa.thedoctorstv.com": "thedoctorstv.com.ssl.sc.omtrdc.net",
+  "saa.thedrewbarrymoreshow.com": "thedrewbarrymoreshow.com.ssl.sc.omtrdc.net",
+  "saa.tvguide.com": "tvguide.com.ssl.sc.omtrdc.net",
+  "saa.wired2fish.com": "wired2fish.com.ssl.sc.omtrdc.net",
+  "saa.wowma.jp": "wowma.jp.ssl.sc.omtrdc.net",
+  "saa.zdnet.com": "zdnet.com.ssl.sc.omtrdc.net",
+  "saadata.netjets.com": "netjets.com.ssl.sc.omtrdc.net",
+  "saainfo.anz.co.nz": "anz.co.nz.ssl.sc.omtrdc.net",
+  "saam.gumtree.com.au": "gumtree.com.au.ssl.sc.omtrdc.net",
+  "saametrics.aktia.fi": "aktia.fi.ssl.sc.omtrdc.net",
+  "saat.dow.com": "dow.com.ssl.sc.omtrdc.net",
+  "sac.japannetbank.co.jp": "japannetbank.co.jp.ssl.sc.omtrdc.net",
+  "saccess.hikaritv.net": "hikaritv.net.ssl.d1.sc.omtrdc.net",
+  "sadb.superrtl.de": "superrtl.de.ssl.sc.omtrdc.net",
+  "sadb.toggo.de": "toggo.de.ssl.sc.omtrdc.net",
+  "sadb.toggoeltern.de": "toggoeltern.de.data.adobedc.net",
+  "sadb.toggolino.de": "toggolino.de.ssl.sc.omtrdc.net",
+  "sadbelytics.munichre.com": "munichre.com.data.adobedc.net",
+  "sadbmetrics.abc.es": "abc.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.aupaathletic.com": "aupaathletic.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.autocasion.com": "autocasion.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.burgosconecta.es": "burgosconecta.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.canal-literatura.com": "canal-literatura.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.carrera-empresas.com": "carrera-empresas.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.degranada.net": "degranada.net.ssl.sc.omtrdc.net",
+  "sadbmetrics.degustalarioja.com": "degustalarioja.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.diariosur.es": "diariosur.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.diariovasco.com": "diariovasco.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.ecomov.es": "ecomov.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.elbalcondemateo.es": "elbalcondemateo.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.elbierzonoticias.com": "elbierzonoticias.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.elcomercio.es": "elcomercio.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.elcorreo.com": "elcorreo.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.eldiariomontanes.es": "eldiariomontanes.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.elnortedecastilla.es": "elnortedecastilla.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.estiloydecoracion.es": "estiloydecoracion.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.habitatsoft.com": "habitatsoft.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.hoy.es": "hoy.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.ideal.es": "ideal.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.lagacetadesalamanca.es": "lagacetadesalamanca.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.lapreferente.com": "lapreferente.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.larioja.com": "larioja.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.lasprovincias.es": "lasprovincias.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.laverdad.es": "laverdad.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.lavozdegalicia.es": "lavozdegalicia.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.lavozdigital.es": "lavozdigital.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.leonoticias.com": "leonoticias.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.lomejordelvinoderioja.com": "lomejordelvinoderioja.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.miperiodicodigital.com": "miperiodicodigital.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.muevetebasket.es": "muevetebasket.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.mujerhoy.com": "mujerhoy.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.murciagastronomica.es": "murciagastronomica.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.nuevosvecinos.com": "nuevosvecinos.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.oferplan.com": "oferplan.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.pisocompartido.com": "pisocompartido.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.pisos.com": "pisos.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.psicoactiva.com": "psicoactiva.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.rtve.es": "rtve.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.salon-sie.com": "salon-sie.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.topcomparativas.com": "topcomparativas.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.tvr.es": "tvr.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.unoauto.com": "unoauto.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.vamosacorrer.com": "vamosacorrer.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.vocento.com": "vocento.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.welife.es": "welife.es.data.adobedc.net",
+  "sadbmetrics.wikirioja.com": "wikirioja.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.womennow.es": "womennow.es.ssl.sc.omtrdc.net",
+  "sadbmetrics.xlsemanal.com": "xlsemanal.com.ssl.sc.omtrdc.net",
+  "sadbmetrics.zendalibros.com": "zendalibros.com.ssl.sc.omtrdc.net",
+  "sadobe.autoscout24.nl": "autoscout24.nl.ssl.d1.sc.omtrdc.net",
+  "sadobe.dentsu-ho.com": "dentsu-ho.com.ssl.sc.omtrdc.net",
+  "sadobe.dynamic.ca": "dynamic.ca.ssl.d2.sc.omtrdc.net",
+  "sadobe.falabella.com": "falabella.com.ssl.d2.sc.omtrdc.net",
+  "sadobe.falabella.com.co": "falabella.com.co.ssl.d2.sc.omtrdc.net",
+  "sadobe.falabella.com.pe": "falabella.com.pe.ssl.d2.sc.omtrdc.net",
+  "sadobe.mercuryinsurance.com": "mercuryinsurance.com.102.122.2o7.net",
+  "sadobeanalytics.geico.com": "geico.com.ssl.sc.omtrdc.net",
+  "sadobemarketing.boden.co.uk": "boden.co.uk.ssl.sc.omtrdc.net",
+  "sadobemarketing.boden.fr": "boden.fr.ssl.sc.omtrdc.net",
+  "sadobemarketing.bodendirect.de": "bodendirect.de.ssl.sc.omtrdc.net",
+  "sadobemarketing.bodenusa.com": "bodenusa.com.ssl.sc.omtrdc.net",
+  "sadobemetrics.dr.dk": "dr.dk.ssl.sc.omtrdc.net",
+  "sadobemetrics.la-z-boy.com": "la-z-boy.com.data.adobedc.net",
+  "samc.frankly.ch": "frankly.ch.data.adobedc.net",
+  "sametrics.finn.no": "finn.no.ssl.sc.omtrdc.net",
+  "sams.manager-magazin.de": "manager-magazin.de.ssl.sc.omtrdc.net",
+  "sams.spiegel.de": "spiegel.de.ssl.sc.omtrdc.net",
+  "sanalytics.adultswim.co.uk": "adultswim.co.uk.ssl.sc.omtrdc.net",
+  "sanalytics.autozone.com": "autozone.com.102.122.2o7.net",
+  "sanalytics.boing.es": "boing.es.ssl.sc.omtrdc.net",
+  "sanalytics.boomerang.asia": "boomerang.asia.ssl.sc.omtrdc.net",
+  "sanalytics.boomerangtv.com.au": "boomerangtv.com.au.ssl.sc.omtrdc.net",
+  "sanalytics.boomerangtv.com.tr": "boomerangtv.com.tr.ssl.sc.omtrdc.net",
+  "sanalytics.boomerangtv.no": "boomerangtv.no.ssl.sc.omtrdc.net",
+  "sanalytics.boomerangtv.ru": "boomerangtv.ru.ssl.sc.omtrdc.net",
+  "sanalytics.box.com": "box.com.ssl.sc.omtrdc.net",
+  "sanalytics.canaltnt.es": "canaltnt.es.data.adobedc.net",
+  "sanalytics.cartoonito.co.uk": "cartoonito.co.uk.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonito.it": "cartoonito.it.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.cl": "cartoonnetwork.cl.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.co.uk": "cartoonnetwork.co.uk.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.com.ar": "cartoonnetwork.com.ar.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.com.au": "cartoonnetwork.com.au.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.com.br": "cartoonnetwork.com.br.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.com.co": "cartoonnetwork.com.co.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.com.mx": "cartoonnetwork.com.mx.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.com.tr": "cartoonnetwork.com.tr.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.com.ve": "cartoonnetwork.com.ve.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.es": "cartoonnetwork.es.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.fr": "cartoonnetwork.fr.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.jp": "cartoonnetwork.jp.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.nl": "cartoonnetwork.nl.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.pl": "cartoonnetwork.pl.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.pt": "cartoonnetwork.pt.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.ro": "cartoonnetwork.ro.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.ru": "cartoonnetwork.ru.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetwork.se": "cartoonnetwork.se.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetworkarabic.com": "cartoonnetworkarabic.com.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetworkasia.com": "cartoonnetworkasia.com.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetworkclimatechampions.com": "cartoonnetworkclimatechampions.com.data.adobedc.net",
+  "sanalytics.cartoonnetworkhq.com": "cartoonnetworkhq.com.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetworkindia.com": "cartoonnetworkindia.com.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetworkla.com": "cartoonnetworkla.com.ssl.sc.omtrdc.net",
+  "sanalytics.cartoonnetworkme.com": "cartoonnetworkme.com.ssl.sc.omtrdc.net",
+  "sanalytics.cdf.cl": "cdf.cl.ssl.sc.omtrdc.net",
+  "sanalytics.chilevision.cl": "chilevision.cl.ssl.sc.omtrdc.net",
+  "sanalytics.chvnoticias.cl": "chvnoticias.cl.ssl.sc.omtrdc.net",
+  "sanalytics.cnnchile.com": "cnnchile.com.ssl.sc.omtrdc.net",
+  "sanalytics.disneyplus.com": "disneyplus.com.ssl.sc.omtrdc.net",
+  "sanalytics.eleague.com": "eleague.com.ssl.sc.omtrdc.net",
+  "sanalytics.enterprise.spectrum.com": "enterprise.spectrum.com.ssl.sc.omtrdc.net",
+  "sanalytics.ewz.ch": "ewz.d3.sc.omtrdc.net",
+  "sanalytics.express.de": "express.de.data.adobedc.net",
+  "sanalytics.firstbankcard.com": "firstbankcard.com.102.112.2o7.net",
+  "sanalytics.firstnational.com": "firstnational.com.102.112.2o7.net",
+  "sanalytics.fnbo.com": "fnbo.com.ssl.sc.omtrdc.net",
+  "sanalytics.fnbodirect.com": "fnbodirect.com.102.112.2o7.net",
+  "sanalytics.futuro360.com": "futuro360.com.ssl.sc.omtrdc.net",
+  "sanalytics.gladbachlive.de": "gladbachlive.de.ssl.sc.omtrdc.net",
+  "sanalytics.hallmark.com": "hallmark.com.ssl.sc.omtrdc.net",
+  "sanalytics.hayneedle.com": "hayneedle.com.102.122.2o7.net",
+  "sanalytics.hottopic.com": "hottopic.com.ssl.sc.omtrdc.net",
+  "sanalytics.ingredion.com": "ingredion.com.data.adobedc.net",
+  "sanalytics.ksta.de": "ksta.de.data.adobedc.net",
+  "sanalytics.lovemoney.com": "lovemoney.com.102.122.2o7.net",
+  "sanalytics.mondotv.jp": "mondotv.jp.ssl.sc.omtrdc.net",
+  "sanalytics.nba.com": "nba.com.ssl.d1.sc.omtrdc.net",
+  "sanalytics.ncaa.com": "ncaa.com.102.122.2o7.net",
+  "sanalytics.pogo.tv": "pogo.tv.ssl.sc.omtrdc.net",
+  "sanalytics.proactiv.com": "proactiv.com.ssl.sc.omtrdc.net",
+  "sanalytics.rblive.de": "rblive.de.ssl.sc.omtrdc.net",
+  "sanalytics.rundschau-online.de": "rundschau-online.de.data.adobedc.net",
+  "sanalytics.runpath.com": "runpath.com.ssl.sc.omtrdc.net",
+  "sanalytics.securebanklogin.com": "securebanklogin.com.ssl.sc.omtrdc.net",
+  "sanalytics.skinny.co.nz": "skinny.co.nz.ssl.sc.omtrdc.net",
+  "sanalytics.smart.com": "smart.com.ssl.sc.omtrdc.net",
+  "sanalytics.southpointcasino.com": "southpointcasino.com.102.112.2o7.net",
+  "sanalytics.spark.co.nz": "spark.co.nz.ssl.sc.omtrdc.net",
+  "sanalytics.sprint.com": "sprint.com.ssl.sc.omtrdc.net",
+  "sanalytics.sydney.edu.au": "sydney.edu.au.data.adobedc.net",
+  "sanalytics.tbs.com": "tbs.com.ssl.d2.sc.omtrdc.net",
+  "sanalytics.tcm.com": "tcm.com.102.122.2o7.net",
+  "sanalytics.ten-x.com": "ten-x.com.ssl.sc.omtrdc.net",
+  "sanalytics.tnt-tv.ro": "tnt-tv.ro.data.adobedc.net",
+  "sanalytics.tntdrama.com": "tntdrama.com.ssl.d2.sc.omtrdc.net",
+  "sanalytics.tntgo.tv": "tntgo.tv.ssl.sc.omtrdc.net",
+  "sanalytics.tntsports.cl": "tntsports.cl.data.adobedc.net",
+  "sanalytics.tntsports.com.ar": "tntsports.com.ar.data.adobedc.net",
+  "sanalytics.tntsports.com.br": "tntsports.com.br.data.adobedc.net",
+  "sanalytics.trutv.com": "trutv.com.ssl.sc.omtrdc.net",
+  "sanalytics.verizon.com": "verizon.com.ssl.d1.sc.omtrdc.net",
+  "sanalytics.verizonenterprise.com": "verizonenterprise.com.data.adobedc.net",
+  "sanalytics.verizonwireless.com": "verizonwireless.com.ssl.sc.omtrdc.net",
+  "sanalytics.visible.com": "visible.com.ssl.sc.omtrdc.net",
+  "sanalytics.wideroe.no": "wideroe.no.ssl.sc.omtrdc.net",
+  "sanl.champssports.com": "champssports.com.ssl.sc.omtrdc.net",
+  "sanl.eastbay.com": "eastbay.com.ssl.sc.omtrdc.net",
+  "sanl.footaction.com": "footaction.com.ssl.sc.omtrdc.net",
+  "sanl.footlocker.at": "footlocker.at.ssl.sc.omtrdc.net",
+  "sanl.footlocker.be": "footlocker.be.ssl.sc.omtrdc.net",
+  "sanl.footlocker.ca": "footlocker.ca.ssl.sc.omtrdc.net",
+  "sanl.footlocker.co.uk": "footlocker.co.uk.data.adobedc.net",
+  "sanl.footlocker.com": "footlocker.com.ssl.sc.omtrdc.net",
+  "sanl.footlocker.cz": "footlocker.cz.ssl.sc.omtrdc.net",
+  "sanl.footlocker.de": "footlocker.de.data.adobedc.net",
+  "sanl.footlocker.dk": "footlocker.dk.ssl.sc.omtrdc.net",
+  "sanl.footlocker.es": "footlocker.es.ssl.sc.omtrdc.net",
+  "sanl.footlocker.fr": "footlocker.fr.data.adobedc.net",
+  "sanl.footlocker.gr": "footlocker.gr.ssl.sc.omtrdc.net",
+  "sanl.footlocker.hu": "footlocker.hu.ssl.sc.omtrdc.net",
+  "sanl.footlocker.ie": "footlocker.ie.ssl.sc.omtrdc.net",
+  "sanl.footlocker.it": "footlocker.it.ssl.sc.omtrdc.net",
+  "sanl.footlocker.lu": "footlocker.lu.ssl.sc.omtrdc.net",
+  "sanl.footlocker.nl": "footlocker.nl.data.adobedc.net",
+  "sanl.footlocker.no": "footlocker.no.ssl.sc.omtrdc.net",
+  "sanl.footlocker.pl": "footlocker.pl.ssl.sc.omtrdc.net",
+  "sanl.footlocker.pt": "footlocker.pt.ssl.sc.omtrdc.net",
+  "sanl.footlocker.se": "footlocker.se.ssl.sc.omtrdc.net",
+  "sanmet.originenergy.com.au": "originenergy.com.au.ssl.sc.omtrdc.net",
+  "sappmetrics.boostmobile.com": "boostmobile.com.ssl.sc.omtrdc.net",
+  "sappmetrics.sprint.com": "sprint.com.data.adobedc.net",
+  "sasc.solidworks.com": "solidworks.com.102.122.2o7.net",
+  "sawap.equifax.com": "equifax.com.ssl.sc.omtrdc.net",
+  "saxobank.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "sbcomniture.focus.de": "focus.de.ssl.sc.omtrdc.net",
+  "sbrands.lookfantastic.com": "data.102.112.2o7.net",
+  "sbsaustralia.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "sc-forbes.forbes.com": "forbescom.112.2o7.net",
+  "sc.cc.com": "mtvn.sc.omtrdc.net",
+  "sc.cmt.com": "vmn.sc.omtrdc.net",
+  "sc.coutts.com": "coutts.com.ssl.sc.omtrdc.net",
+  "sc.cvent.com": "cvent.com.d1.sc.omtrdc.net",
+  "sc.disneylandparis.com": "disneyinternational.112.2o7.net",
+  "sc.hl.co.uk": "hl.co.uk.ldc.d3.sc.omtrdc.net",
+  "sc.hm.com": "hm.com.ssl.sc.omtrdc.net",
+  "sc.independent.co.uk": "independent.122.2o7.net",
+  "sc.kabelbw.de": "kabelbw.de.122.2o7.net",
+  "sc.lacapitale.com": "lacapitale.com.122.2o7.net",
+  "sc.metrics-shell.com": "metrics-shell.com.ssl.d3.sc.omtrdc.net",
+  "sc.mtv.co.uk": "vmn.112.2o7.net",
+  "sc.mtv.com": "mtvn.sc.omtrdc.net",
+  "sc.muji.net": "muji.net.d2.sc.omtrdc.net",
+  "sc.natwest.com": "natwest.com.ssl.d2.sc.omtrdc.net",
+  "sc.natwestgroup.com": "natwestgroup.com.ssl.sc.omtrdc.net",
+  "sc.natwestinternational.com": "natwestinternational.com.ssl.sc.omtrdc.net",
+  "sc.neteller.com": "neteller.com.d1.sc.omtrdc.net",
+  "sc.newnownext.com": "vmn.sc.omtrdc.net",
+  "sc.nick.com": "nickvia.112.2o7.net",
+  "sc.nickatnite.com": "vmn.112.2o7.net",
+  "sc.nickelodeon.ru": "viakcanickglobal.112.2o7.net",
+  "sc.nickjr.com": "vmn.sc.omtrdc.net",
+  "sc.paramountnetwork.com": "paramountnetwork.com.sc.omtrdc.net",
+  "sc.rbs.co.uk": "rbs.co.uk.ssl.d2.sc.omtrdc.net",
+  "sc.ulsterbank.co.uk": "ulsterbank.co.uk.ssl.sc.omtrdc.net",
+  "sc.ulsterbank.ie": "ulsterbank.ie.ssl.sc.omtrdc.net",
+  "sc.vh1.com": "viatabletvh1.sc.omtrdc.net",
+  "scadobe.paybooc.co.kr": "paybooc.co.kr.data.adobedc.net",
+  "scadobe.vpay.co.kr": "vpay.co.kr.data.adobedc.net",
+  "sci.digitalinsight.com": "digitalinsight.com.102.122.2o7.net",
+  "sci.intuit.ca": "intuit.ca.102.122.2o7.net",
+  "sci.intuit.com": "intuit.com.ssl.sc.omtrdc.net",
+  "scmetrics.shell.com": "shell.com.data.adobedc.net",
+  "scmetrics.vodafone.it": "vodafone.it.sc.omtrdc.net",
+  "scnd.landsend.co.jp": "landsend.co.jp.ssl.sc.omtrdc.net",
+  "scnd.landsend.co.uk": "landsend.co.uk.ssl.sc.omtrdc.net",
+  "scnd.landsend.com": "landsend.com.ssl.sc.omtrdc.net",
+  "scnd.landsend.de": "landsend.de.ssl.sc.omtrdc.net",
+  "scode.randomhouse.com": "randomhouse.com.102.122.2o7.net",
+  "scookies-adobe.cbc.be": "cbc.be.ssl.sc.omtrdc.net",
+  "scookies-adobe.kbc-group.com": "kbc-group.com.ssl.sc.omtrdc.net",
+  "scookies-adobe.kbc.be": "kbc.be.ssl.sc.omtrdc.net",
+  "scookies-adobe.kbcbrussels.be": "kbcbrussels.be.ssl.sc.omtrdc.net",
+  "scs.arcteryx.com": "arcteryx.com.ssl.d2.sc.omtrdc.net",
+  "scs.lifenet-seimei.co.jp": "lifenet-seimei.co.jp.102.112.2o7.net",
+  "scsmetrics.ho-mobile.it": "ho-mobile.it.data.adobedc.net",
+  "scsmetrics.vodafone.it": "vodafone.it.ssl.sc.omtrdc.net",
+  "sdata.avid.com": "data.102.112.2o7.net",
+  "sdata.wiley.com": "wiley.com.data.adobedc.net",
+  "sdc.allianz-autowelt.de": "allianz.de.ssl.sc.omtrdc.net",
+  "sdc.allianz.de": "allianz.de.ssl.sc.omtrdc.net",
+  "sdc.aware.com.au": "aware.com.au.ssl.sc.omtrdc.net",
+  "sdc2.credit-suisse.com": "credit-suisse.com.ssl.sc.omtrdc.net",
+  "sdcs.felissimo.co.jp": "felissimo.co.jp.ssl.d1.sc.omtrdc.net",
+  "sdome.underarmour.co.jp": "underarmour.co.jp.ssl.sc.omtrdc.net",
+  "secmetrics.leggmason.com": "leggmason.com.ssl.sc.omtrdc.net",
+  "secmetrics.schaefer-shop.de": "schaefer-shop.de.ssl.d3.sc.omtrdc.net",
+  "secmetrics.schaefer-shop.nl": "schaefer-shop.nl.ssl.d3.sc.omtrdc.net",
+  "secu.hagerty.com": "hagerty.com.ssl.sc.omtrdc.net",
+  "secure-stat.canal-plus.com": "canal-plus.com.102.112.2o7.net",
+  "secure.analytics.ihg.com": "analytics.ihg.com.ssl.d1.sc.omtrdc.net",
+  "secure.info.m.seek.co.nz": "info.m.seek.co.nz.ssl.d1.sc.omtrdc.net",
+  "secure.info.m.seek.com.au": "info.m.seek.com.au.ssl.d1.sc.omtrdc.net",
+  "secure.info.seek.com": "info.seek.com.ssl.d1.sc.omtrdc.net",
+  "secure.stat.canal-plus.net": "stat.canal-plus.net.ssl.sc.omtrdc.net",
+  "secureanalytics.avis.be": "avis.be.ssl.sc.omtrdc.net",
+  "secureanalytics.avis.ch": "avis.ch.ssl.sc.omtrdc.net",
+  "secureanalytics.avis.co.uk": "avis.co.uk.ssl.sc.omtrdc.net",
+  "secureanalytics.avis.de": "avis.de.ssl.sc.omtrdc.net",
+  "secureanalytics.avis.es": "avis.es.ssl.sc.omtrdc.net",
+  "secureanalytics.avis.fr": "avis.fr.ssl.sc.omtrdc.net",
+  "secureanalytics.avis.no": "avis.no.ssl.sc.omtrdc.net",
+  "secureclicks.geaviation.com": "geaviation.com.102.112.2o7.net",
+  "securedata.collectandgo.be": "collectandgo.be.ssl.sc.omtrdc.net",
+  "securedata.collishop.be": "collishop.be.ssl.sc.omtrdc.net",
+  "securedata.colruyt.be": "colruyt.be.ssl.sc.omtrdc.net",
+  "securedata.colruytgroup.com": "colruytgroup.com.data.adobedc.net",
+  "securedata.dats24.be": "dats24.be.data.adobedc.net",
+  "securedata.dreambaby.be": "dreambaby.be.ssl.sc.omtrdc.net",
+  "securedata.dreamland.be": "dreamland.be.ssl.sc.omtrdc.net",
+  "securedata.mijnspar.be": "mijnspar.be.ssl.sc.omtrdc.net",
+  "securedata.monspar.be": "monspar.be.ssl.sc.omtrdc.net",
+  "securedata.unsw.edu.au": "unsw.edu.au.ssl.sc.omtrdc.net",
+  "securemetrics.apple.com": "appleglobal.102.112.2o7.net",
+  "securemetrics.apple.com.cn": "apple.com.cn.ssl.sc.omtrdc.net",
+  "securemetrics.bananarepublic.co.uk": "bananarepublic.co.uk.ssl.sc.omtrdc.net",
+  "securemetrics.bananarepublic.eu": "bananarepublic.eu.ssl.sc.omtrdc.net",
+  "securemetrics.blackrock.com": "blackrock.com.ssl.d2.sc.omtrdc.net",
+  "securemetrics.experience.apple": "experience.apple.ssl.sc.omtrdc.net",
+  "securemetrics.gap.co.jp": "gap.co.jp.ssl.d1.sc.omtrdc.net",
+  "securemetrics.gap.co.uk": "gap.co.uk.ssl.d1.sc.omtrdc.net",
+  "securemetrics.gap.com": "gap.com.102.112.2o7.net",
+  "securemetrics.gap.eu": "gap.eu.ssl.d1.sc.omtrdc.net",
+  "securemetrics.gapcanada.ca": "gapcanada.ca.ssl.d1.sc.omtrdc.net",
+  "securemetrics.gapfactory.com": "gapfactory.com.ssl.sc.omtrdc.net",
+  "securetags.aeroterra.com": "aeroterra.com.ssl.sc.omtrdc.net",
+  "securetags.esri.ca": "esri.ca.ssl.sc.omtrdc.net",
+  "securetags.esri.com": "esri.com.ssl.sc.omtrdc.net",
+  "securetags.esri.in": "esri.in.ssl.sc.omtrdc.net",
+  "securetags.gisbaltic.eu": "gisbaltic.eu.data.adobedc.net",
+  "securetenilstats.turner.com": "turner.com.ssl.sc.omtrdc.net",
+  "serviceo.comcast.net": "comcast.net.112.2o7.net",
+  "sfeedback.equabank.cz": "equabank.cz.ssl.sc.omtrdc.net",
+  "sftr2.external.xerox.com": "external.xerox.com.ssl.d1.sc.omtrdc.net",
+  "sgw-analytics.panasonic.com": "panasonic.com.ssl.d3.sc.omtrdc.net",
+  "shawtelevision.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "sho.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "shqmetrics.sony.com": "sony.com.data.adobedc.net",
+  "sicas.ikea.com": "ikea.com.ssl.sc.omtrdc.net",
+  "sig.ig.com": "ig.com.ssl.d2.sc.omtrdc.net",
+  "sig.nadex.com": "nadex.com.102.122.2o7.net",
+  "simg.bwin.com": "bwin.com.ssl.d2.sc.omtrdc.net",
+  "simg.yemeksepeti.com": "yemeksepeti.com.102.122.2o7.net",
+  "sinfo.dtcidev.co": "dtcidev.co.ssl.sc.omtrdc.net",
+  "sinmo.chasecenter.com": "chasecenter.com.ssl.sc.omtrdc.net",
+  "sintelligence.marykay.com": "marykay.102.122.2o7.net",
+  "sintelligence.marykayintouch.com": "marykayintouch.102.122.2o7.net",
+  "sit-metrics.nab.com.au": "nab.com.au.sc.omtrdc.net",
+  "sit-smetrics.nab.com.au": "nab.com.au.ssl.sc.omtrdc.net",
+  "sitecatalysts.saisoncard.co.jp": "saisoncard.co.jp.ssl.sc.omtrdc.net",
+  "sitecats.troweprice.com": "troweprice.com.ssl.d2.sc.omtrdc.net",
+  "sjremetrics.java.com": "java.com.ssl.d1.sc.omtrdc.net",
+  "skydeutschland.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "skyitalia.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "slx.searchdiscovery.com": "searchdiscovery.com.ssl.sc.omtrdc.net",
+  "sm.dell.com": "dell.com.ssl.d1.sc.omtrdc.net",
+  "sm.edweek.org": "edweek.org.102.122.2o7.net",
+  "sm.stjude.org": "stjude.org.ssl.sc.omtrdc.net",
+  "smatning.volkswagen.se": "volkswagen.se.data.adobedc.net",
+  "smatrix.hbo.com": "hbo.com.ssl.sc.omtrdc.net",
+  "smeasurement.nissan.ca": "nissan.ca.ssl.sc.omtrdc.net",
+  "smetric.4imprint.com": "4imprint.com.102.112.2o7.net",
+  "smetric.ads.microsoft.com": "ads.microsoft.com.ssl.sc.omtrdc.net",
+  "smetric.bahamabreeze.com": "bahamabreeze.com.ssl.sc.omtrdc.net",
+  "smetric.betway.com": "betway.com.ssl.sc.omtrdc.net",
+  "smetric.biogen.com": "biogen.com.ssl.d2.sc.omtrdc.net",
+  "smetric.cheddars.com": "cheddars.com.ssl.sc.omtrdc.net",
+  "smetric.e-nichii.net": "e-nichii.net.ssl.sc.omtrdc.net",
+  "smetric.eddiev.com": "eddiev.com.ssl.sc.omtrdc.net",
+  "smetric.gconlineplus.de": "gconlineplus.de.data.adobedc.net",
+  "smetric.gebrueder-goetz.de": "gebrueder-goetz.de.data.adobedc.net",
+  "smetric.hilton.com": "hilton.com.ssl.sc.omtrdc.net",
+  "smetric.lake.jp": "lake.jp.102.112.2o7.net",
+  "smetric.lo.movement.com": "lo.movement.com.ssl.sc.omtrdc.net",
+  "smetric.longhornsteakhouse.com": "longhornsteakhouse.com.ssl.sc.omtrdc.net",
+  "smetric.m.nissan-global.com": "m.nissan-global.com.ssl.sc.omtrdc.net",
+  "smetric.malaysiaairlines.com": "malaysiaairlines.com.ssl.sc.omtrdc.net",
+  "smetric.markenschuhe.de": "markenschuhe.de.data.adobedc.net",
+  "smetric.millenniumhotels.com": "millenniumhotels.com.102.122.2o7.net",
+  "smetric.olivegarden.com": "olivegarden.com.ssl.sc.omtrdc.net",
+  "smetric.panpacific.com": "panpacific.com.ssl.sc.omtrdc.net",
+  "smetric.philosophy.com": "philosophy.com.ssl.sc.omtrdc.net",
+  "smetric.schwab.com": "schwab.com.ssl.d1.sc.omtrdc.net",
+  "smetric.schwabplan.com": "schwabplan.com.ssl.d1.sc.omtrdc.net",
+  "smetric.seasons52.com": "seasons52.com.ssl.sc.omtrdc.net",
+  "smetric.sydneywater.com.au": "sydneywater.com.au.data.adobedc.net",
+  "smetric.thecapitalgrille.com": "thecapitalgrille.com.ssl.sc.omtrdc.net",
+  "smetric.trulia.com": "trulia.com.ssl.d2.sc.omtrdc.net",
+  "smetric.tsite.jp": "tsite.jp.ssl.sc.omtrdc.net",
+  "smetric.volkswagen-nutzfahrzeuge.de": "volkswagen-nutzfahrzeuge.de.ssl.sc.omtrdc.net",
+  "smetric.volkswagen.com": "volkswagen.com.ssl.sc.omtrdc.net",
+  "smetric.volkswagen.de": "volkswagen.de.data.adobedc.net",
+  "smetric.yardhouse.com": "yardhouse.com.ssl.sc.omtrdc.net",
+  "smetricas.fgv.br": "fgv.br.102.112.2o7.net",
+  "smetrics-cns.panasonic.com": "panasonic.com.ssl.sc.omtrdc.net",
+  "smetrics-ieeexplore.ieee.org": "ieee.org.ssl.sc.omtrdc.net",
+  "smetrics.1031freshradio.ca": "1031freshradio.ca.ssl.sc.omtrdc.net",
+  "smetrics.1075daverocks.com": "1075daverocks.com.ssl.sc.omtrdc.net",
+  "smetrics.10play.com.au": "10play.com.au.ssl.sc.omtrdc.net",
+  "smetrics.1800contacts.com": "1800contacts.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.24hourfitness.com": "24hourfitness.com.ssl.sc.omtrdc.net",
+  "smetrics.28degreescard.com.au": "28degreescard.com.au.ssl.sc.omtrdc.net",
+  "smetrics.31metrescarres.fr": "31metrescarres.fr.ssl.sc.omtrdc.net",
+  "smetrics.360dx.com": "360dx.com.data.adobedc.net",
+  "smetrics.3838.com": "3838.com.102.112.2o7.net",
+  "smetrics.3m.com": "3m.com.ssl.sc.omtrdc.net",
+  "smetrics.48.ie": "48.ie.data.adobedc.net",
+  "smetrics.7eleven.com.au": "7eleven.com.au.ssl.sc.omtrdc.net",
+  "smetrics.aa.com": "aa.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.aaasouth.com": "aaasouth.com.ssl.sc.omtrdc.net",
+  "smetrics.aainsurance.co.nz": "aainsurance.co.nz.ssl.sc.omtrdc.net",
+  "smetrics.aami.com.au": "aami.com.au.ssl.sc.omtrdc.net",
+  "smetrics.aarp.org": "aarp.org.ssl.sc.omtrdc.net",
+  "smetrics.abanca.com": "abanca.com.data.adobedc.net",
+  "smetrics.abbott": "smetrics.abbott.ssl.sc.omtrdc.net",
+  "smetrics.abbott.com": "abbott.com.102.112.2o7.net",
+  "smetrics.abbottnutrition.com": "abbottnutrition.com.102.112.2o7.net",
+  "smetrics.abbottnutrition.com.my": "abbottnutrition.com.my.102.112.2o7.net",
+  "smetrics.abbottstore.com": "abbottstore.com.102.112.2o7.net",
+  "smetrics.abbvie.com": "abbvie.com.ssl.sc.omtrdc.net",
+  "smetrics.abercrombie.com": "abercrombie.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.absolutetotalcare.com": "absolutetotalcare.com.ssl.sc.omtrdc.net",
+  "smetrics.accaglobal.com": "accaglobal.com.data.adobedc.net",
+  "smetrics.accredo.com": "accredo.com.data.adobedc.net",
+  "smetrics.actemra.com": "actemra.com.ssl.sc.omtrdc.net",
+  "smetrics.actemrahcp.com": "actemrahcp.com.ssl.sc.omtrdc.net",
+  "smetrics.activase.com": "activase.com.ssl.sc.omtrdc.net",
+  "smetrics.active.com": "active.com.102.122.2o7.net",
+  "smetrics.activecommunities.com": "activecommunities.com.ssl.sc.omtrdc.net",
+  "smetrics.activenetwork.com": "activenetwork.com.ssl.sc.omtrdc.net",
+  "smetrics.adage.com": "adage.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.adt.com": "adt.com.ssl.sc.omtrdc.net",
+  "smetrics.aelca.es": "aelca.es.ssl.sc.omtrdc.net",
+  "smetrics.aem.playstation.com": "aem.playstation.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.aetn.com": "aetn.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.aetnamedicare.com": "aetnamedicare.com.102.112.2o7.net",
+  "smetrics.aftonbladet.se": "aftonbladet.se.ssl.d1.sc.omtrdc.net",
+  "smetrics.afvclub.com": "afvclub.com.102.122.2o7.net",
+  "smetrics.agilent.com": "data.102.112.2o7.net",
+  "smetrics.aia.co.kr": "aia.co.kr.data.adobedc.net",
+  "smetrics.aia.com": "aia.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.airandgo.fr": "airandgo.fr.ssl.sc.omtrdc.net",
+  "smetrics.airbank.cz": "airbank.cz.ssl.sc.omtrdc.net",
+  "smetrics.aircanada.com": "aircanada.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.aireserv.ca": "aireserv.ca.data.adobedc.net",
+  "smetrics.aireserv.com": "aireserv.com.data.adobedc.net",
+  "smetrics.airtv.net": "airtv.net.ssl.sc.omtrdc.net",
+  "smetrics.ajinomoto.co.jp": "ajinomoto.co.jp.ssl.sc.omtrdc.net",
+  "smetrics.aktivmedkol.dk": "aktivmedkol.dk.data.adobedc.net",
+  "smetrics.albankaldawli.org": "albankaldawli.org.ssl.sc.omtrdc.net",
+  "smetrics.alkamobil.dk": "alkamobil.dk.data.adobedc.net",
+  "smetrics.allegion.com": "allegion.com.ssl.sc.omtrdc.net",
+  "smetrics.allianz.com.au": "allianz.com.au.data.adobedc.net",
+  "smetrics.allianzlife.com": "allianzlife.com.ssl.sc.omtrdc.net",
+  "smetrics.allstate.com": "allstate.com.ssl.sc.omtrdc.net",
+  "smetrics.ally.com": "ally.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.ambetterhealth.com": "ambetterhealth.com.ssl.sc.omtrdc.net",
+  "smetrics.americanblinds.com": "data.102.122.2o7.net",
+  "smetrics.americancentury.com": "americancentury.com.ssl.sc.omtrdc.net",
+  "smetrics.amfam.com": "amfam.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.amplifon.com": "amplifon.com.data.adobedc.net",
+  "smetrics.ancestry.com": "ancestry.com.ssl.sc.omtrdc.net",
+  "smetrics.angara.com": "angara.com.ssl.ldc.d4.sc.omtrdc.net",
+  "smetrics.angi.com": "angi.com.data.adobedc.net",
+  "smetrics.anixter.com": "anixter.com.ssl.sc.omtrdc.net",
+  "smetrics.anntaylor.com": "anntaylor.com.ssl.sc.omtrdc.net",
+  "smetrics.ansible.com": "ansible.com.ssl.sc.omtrdc.net",
+  "smetrics.ansys.com": "ansys.com.data.adobedc.net",
+  "smetrics.antena3.com": "antena3.com.data.adobedc.net",
+  "smetrics.anthem.com": "anthem.com.ssl.sc.omtrdc.net",
+  "smetrics.apps.ge.com": "apps.ge.com.ssl.sc.omtrdc.net",
+  "smetrics.argenta.be": "argenta.be.ssl.sc.omtrdc.net",
+  "smetrics.argos.co.uk": "argos.co.uk.ssl.d1.sc.omtrdc.net",
+  "smetrics.argos.ie": "argos.ie.ssl.sc.omtrdc.net",
+  "smetrics.ariba.com": "ariba.com.ssl.sc.omtrdc.net",
+  "smetrics.armadaskis.com": "armadaskis.com.ssl.sc.omtrdc.net",
+  "smetrics.army.mod.uk": "army.mod.uk.ssl.sc.omtrdc.net",
+  "smetrics.as.com": "as.com.data.adobedc.net",
+  "smetrics.asics.com": "asics.com.data.adobedc.net",
+  "smetrics.atlanticsuperstore.ca": "atlanticsuperstore.ca.ssl.sc.omtrdc.net",
+  "smetrics.atomic.com": "atomic.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.atresmedia.com": "atresmedia.com.data.adobedc.net",
+  "smetrics.atresplayer.com": "atresplayer.com.data.adobedc.net",
+  "smetrics.au.com": "au.com.ssl.sc.omtrdc.net",
+  "smetrics.audi.co.uk": "audi.co.uk.102.112.2o7.net",
+  "smetrics.autodesk.com": "autodesk.com.ssl.sc.omtrdc.net",
+  "smetrics.autonews.com": "autonews.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.autotrader.com": "autotrader.com.ssl.sc.omtrdc.net",
+  "smetrics.avalara.com": "avalara.com.ssl.sc.omtrdc.net",
+  "smetrics.avastin.com": "avastin.com.ssl.sc.omtrdc.net",
+  "smetrics.aveva.com": "aveva.com.ssl.sc.omtrdc.net",
+  "smetrics.aviva.co.uk": "aviva.co.uk.ssl.d2.sc.omtrdc.net",
+  "smetrics.aviva.com.sg": "aviva.com.sg.ssl.sc.omtrdc.net",
+  "smetrics.avnet.com": "avnet.com.102.122.2o7.net",
+  "smetrics.axa-direct-life.co.jp": "axa-direct-life.co.jp.ssl.d1.sc.omtrdc.net",
+  "smetrics.axs.com": "axs.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.baby-g.jp": "baby-g.jp.ssl.sc.omtrdc.net",
+  "smetrics.banamex.com": "banamex.com.ssl.sc.omtrdc.net",
+  "smetrics.bancomundial.org": "bancomundial.org.ssl.sc.omtrdc.net",
+  "smetrics.bancsabadell.com": "bancsabadell.com.ssl.sc.omtrdc.net",
+  "smetrics.bankatfirst.com": "bankatfirst.com.ssl.sc.omtrdc.net",
+  "smetrics.bankaustria.at": "bankaustria.at.ssl.d2.sc.omtrdc.net",
+  "smetrics.bankia.es": "bankia.es.ssl.d3.sc.omtrdc.net",
+  "smetrics.bankinter.com": "bankinter.com.data.adobedc.net",
+  "smetrics.bankofamerica.com": "bankofamerica.com.data.adobedc.net",
+  "smetrics.bankofmelbourne.com.au": "bankofmelbourne.com.au.ssl.sc.omtrdc.net",
+  "smetrics.banksa.com.au": "banksa.com.au.ssl.sc.omtrdc.net",
+  "smetrics.bankwest.com.au": "bankwest.com.au.data.adobedc.net",
+  "smetrics.banquemondiale.org": "banquemondiale.org.ssl.sc.omtrdc.net",
+  "smetrics.barcainnovationhub.com": "barcainnovationhub.com.ssl.sc.omtrdc.net",
+  "smetrics.base.be": "base.be.ssl.sc.omtrdc.net",
+  "smetrics.bbva.com.ar": "bbva.com.ar.ssl.sc.omtrdc.net",
+  "smetrics.bbva.com.co": "bbva.com.co.ssl.sc.omtrdc.net",
+  "smetrics.bbva.com.uy": "bbva.com.uy.data.adobedc.net",
+  "smetrics.bbva.es": "bbva.es.ssl.sc.omtrdc.net",
+  "smetrics.bbva.it": "bbva.it.data.adobedc.net",
+  "smetrics.bbva.mx": "bbva.mx.ssl.sc.omtrdc.net",
+  "smetrics.bbva.pe": "bbva.pe.ssl.sc.omtrdc.net",
+  "smetrics.bbvanet.com.co": "bbvanet.com.co.ssl.sc.omtrdc.net",
+  "smetrics.bbvanet.com.mx": "bbvanet.com.mx.ssl.sc.omtrdc.net",
+  "smetrics.bbvaseguros.mx": "bbvaseguros.mx.ssl.sc.omtrdc.net",
+  "smetrics.bbvausa.com": "bbvausa.com.ssl.sc.omtrdc.net",
+  "smetrics.bcbsm.com": "bcbsm.com.ssl.sc.omtrdc.net",
+  "smetrics.bcbsnc.com": "bcbsnc.com.ssl.sc.omtrdc.net",
+  "smetrics.bcbsnd.com": "bcbsnd.com.ssl.sc.omtrdc.net",
+  "smetrics.be.carrefour.eu": "be.carrefour.eu.ssl.sc.omtrdc.net",
+  "smetrics.beachbody.com": "beachbody.com.102.122.2o7.net",
+  "smetrics.beatsbydre.com": "beatsbydre.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.bedbathandbeyond.ca": "bedbathandbeyond.ca.ssl.d1.sc.omtrdc.net",
+  "smetrics.bedbathandbeyond.com": "bedbathandbeyond.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.beefeater.co.uk": "beefeater.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.belairdirect.com": "belairdirect.com.ssl.sc.omtrdc.net",
+  "smetrics.belk.com": "belk.com.ssl.sc.omtrdc.net",
+  "smetrics.beneplace.com": "beneplace.com.data.adobedc.net",
+  "smetrics.bereadywith.com": "bereadywith.com.data.adobedc.net",
+  "smetrics.bestbuy.com": "bestbuy.com.ssl.sc.omtrdc.net",
+  "smetrics.bestegg.com": "bestegg.com.ssl.sc.omtrdc.net",
+  "smetrics.bestinver.es": "bestinver.es.ssl.sc.omtrdc.net",
+  "smetrics.bestoforlando.com": "bestoforlando.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.bestofvegas.com": "bestofvegas.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.bet.com": "bet.com.ssl.sc.omtrdc.net",
+  "smetrics.beterhoren.nl": "beterhoren.nl.data.adobedc.net",
+  "smetrics.bevestor.de": "bevestor.de.ssl.sc.omtrdc.net",
+  "smetrics.bgov.com": "bgov.com.ssl.sc.omtrdc.net",
+  "smetrics.bi-druginforequest.com": "bi-druginforequest.com.data.adobedc.net",
+  "smetrics.bi-vetmedica.com": "bi-vetmedica.com.data.adobedc.net",
+  "smetrics.bighistoryproject.com": "bighistoryproject.com.102.112.2o7.net",
+  "smetrics.bilfinans.no": "bilfinans.no.data.adobedc.net",
+  "smetrics.binge.com.au": "binge.com.au.data.adobedc.net",
+  "smetrics.bingle.com.au": "bingle.com.au.ssl.sc.omtrdc.net",
+  "smetrics.biooncology.com": "biooncology.com.ssl.sc.omtrdc.net",
+  "smetrics.biore.com": "biore.com.ssl.sc.omtrdc.net",
+  "smetrics.bitdefender.com": "data.102.122.2o7.net",
+  "smetrics.bjs.com": "bjs.com.data.adobedc.net",
+  "smetrics.bkstr.com": "bkstr.com.ssl.sc.omtrdc.net",
+  "smetrics.blair.com": "blair.com.ssl.sc.omtrdc.net",
+  "smetrics.blockbuster.com": "blockbuster.com.ssl.sc.omtrdc.net",
+  "smetrics.bloombergindustry.com": "bloombergindustry.com.ssl.sc.omtrdc.net",
+  "smetrics.bloomberglaw.com": "bloomberglaw.com.ssl.sc.omtrdc.net",
+  "smetrics.bloombergtax.com": "bloombergtax.com.ssl.sc.omtrdc.net",
+  "smetrics.bluegrasscellular.com": "bluegrasscellular.com.ssl.sc.omtrdc.net",
+  "smetrics.bmc.com": "bmc.com.ssl.sc.omtrdc.net",
+  "smetrics.bmo.com": "bmo.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.bna.com": "bna.com.ssl.sc.omtrdc.net",
+  "smetrics.bnck-12.com": "bnck-12.com.ssl.sc.omtrdc.net",
+  "smetrics.bncollege.com": "bncollege.com.ssl.sc.omtrdc.net",
+  "smetrics.bncvirtual.com": "bncvirtual.com.ssl.sc.omtrdc.net",
+  "smetrics.bnpparibas.com": "bnpparibas.com.data.adobedc.net",
+  "smetrics.bnymellon.com": "bnymellon.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.boehringer-ingelheim.ca": "boehringer-ingelheim.ca.ssl.sc.omtrdc.net",
+  "smetrics.boehringer-ingelheim.co.uk": "boehringer-ingelheim.co.uk.data.adobedc.net",
+  "smetrics.boehringer-ingelheim.com": "boehringer-ingelheim.com.ssl.sc.omtrdc.net",
+  "smetrics.boehringer-ingelheim.com.br": "boehringer-ingelheim.com.br.ssl.sc.omtrdc.net",
+  "smetrics.boehringer-ingelheim.com.tr": "boehringer-ingelheim.com.tr.data.adobedc.net",
+  "smetrics.boehringer-ingelheim.es": "boehringer-ingelheim.es.data.adobedc.net",
+  "smetrics.boehringer-ingelheim.hu": "boehringer-ingelheim.hu.data.adobedc.net",
+  "smetrics.boehringer-ingelheim.in": "boehringer-ingelheim.in.data.adobedc.net",
+  "smetrics.boehringer-ingelheim.jp": "boehringer-ingelheim.jp.ssl.sc.omtrdc.net",
+  "smetrics.boehringer-ingelheim.mx": "boehringer-ingelheim.mx.data.adobedc.net",
+  "smetrics.boehringer-ingelheim.ru": "boehringer-ingelheim.ru.ssl.sc.omtrdc.net",
+  "smetrics.boehringer-interactief.nl": "boehringer-interactief.nl.data.adobedc.net",
+  "smetrics.boom1019.com": "boom1019.com.ssl.sc.omtrdc.net",
+  "smetrics.boostmobile.com": "boostmobile.com.data.adobedc.net",
+  "smetrics.boozallen.com": "boozallen.com.ssl.sc.omtrdc.net",
+  "smetrics.boscovs.com": "boscovs.com.ssl.sc.omtrdc.net",
+  "smetrics.boston.com": "boston.com.102.112.2o7.net",
+  "smetrics.bostonglobe.com": "bostonglobe.com.ssl.sc.omtrdc.net",
+  "smetrics.brewersfayre.co.uk": "brewersfayre.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.brinksprepaidmastercard.com": "brinksprepaidmastercard.com.data.adobedc.net",
+  "smetrics.britishgas.co.uk": "britishgas.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.brookdale.com": "brookdale.com.ssl.sc.omtrdc.net",
+  "smetrics.brooksbrothers.com": "brooksbrothers.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.bt.com": "bt.com.ssl.sc.omtrdc.net",
+  "smetrics.buffalotracedistillery.com": "buffalotracedistillery.com.ssl.sc.omtrdc.net",
+  "smetrics.builddirect.com": "builddirect.com.ssl.sc.omtrdc.net",
+  "smetrics.bupa.com.au": "bupa.com.au.ssl.sc.omtrdc.net",
+  "smetrics.buyagift.co.uk": "buyagift.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.cadenadial.com": "cadenadial.com.data.adobedc.net",
+  "smetrics.cadenaser.com": "cadenaser.com.data.adobedc.net",
+  "smetrics.caesars.com": "caesars.com.ssl.sc.omtrdc.net",
+  "smetrics.calvinklein.ca": "calvinklein.ca.ssl.sc.omtrdc.net",
+  "smetrics.calvinklein.us": "calvinklein.us.ssl.sc.omtrdc.net",
+  "smetrics.capella.edu": "capella.edu.ssl.sc.omtrdc.net",
+  "smetrics.capitalone.com": "capitalone.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.care.com": "data.102.112.2o7.net",
+  "smetrics.carfax.com": "carfax.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.caribbeanjobs.com": "caribbeanjobs.com.ssl.sc.omtrdc.net",
+  "smetrics.carolina.com": "carolina.com.102.122.2o7.net",
+  "smetrics.carphonewarehouse.com": "carphonewarehouse.com.ssl.sc.omtrdc.net",
+  "smetrics.cars.com": "cars.com.ssl.sc.omtrdc.net",
+  "smetrics.carters.com": "carters.com.ssl.sc.omtrdc.net",
+  "smetrics.cartersoshkosh.ca": "cartersoshkosh.ca.ssl.sc.omtrdc.net",
+  "smetrics.caser.es": "caser.es.ssl.sc.omtrdc.net",
+  "smetrics.caseys.com": "caseys.com.ssl.sc.omtrdc.net",
+  "smetrics.cashnetusa.com": "cashnetusa.com.ssl.sc.omtrdc.net",
+  "smetrics.casinoladbrokes.be": "casinoladbrokes.be.ssl.sc.omtrdc.net",
+  "smetrics.casio-intl.com": "casio-intl.com.ssl.sc.omtrdc.net",
+  "smetrics.casio-watches.com": "casio-watches.com.ssl.sc.omtrdc.net",
+  "smetrics.casio.co.jp": "casio.co.jp.ssl.sc.omtrdc.net",
+  "smetrics.casio.com": "casio.com.ssl.sc.omtrdc.net",
+  "smetrics.casio.com.tw": "casio.com.tw.ssl.sc.omtrdc.net",
+  "smetrics.casio.jp": "casio.jp.ssl.sc.omtrdc.net",
+  "smetrics.catalog.usmint.gov": "catalog.usmint.gov.ssl.sc.omtrdc.net",
+  "smetrics.cbc.ca": "cbc.ca.102.122.2o7.net",
+  "smetrics.cbn.com": "cbn.com.ssl.sc.omtrdc.net",
+  "smetrics.cdiscount.com": "cdiscount.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.cedars-sinai.org": "cedars-sinai.org.ssl.sc.omtrdc.net",
+  "smetrics.celebritycruises.com": "celebritycruises.com.ssl.sc.omtrdc.net",
+  "smetrics.cellcept.com": "cellcept.com.ssl.sc.omtrdc.net",
+  "smetrics.centurylink.com": "centurylink.com.ssl.sc.omtrdc.net",
+  "smetrics.cfainstitute.org": "cfainstitute.org.ssl.sc.omtrdc.net",
+  "smetrics.cfox.com": "cfox.com.ssl.sc.omtrdc.net",
+  "smetrics.chicagobusiness.com": "chicagobusiness.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.christianscience.com": "christianscience.com.ssl.sc.omtrdc.net",
+  "smetrics.christies.com": "christies.com.ssl.sc.omtrdc.net",
+  "smetrics.chrysler.com": "chrysler.com.ssl.sc.omtrdc.net",
+  "smetrics.churchill.com": "churchill.com.ssl.sc.omtrdc.net",
+  "smetrics.ciena.com": "ciena.com.ssl.sc.omtrdc.net",
+  "smetrics.cigar.com": "cigar.com.ssl.sc.omtrdc.net",
+  "smetrics.cigarsinternational.com": "cigarsinternational.com.ssl.sc.omtrdc.net",
+  "smetrics.cinemaxx.de": "cinemaxx.de.ssl.sc.omtrdc.net",
+  "smetrics.cisco.com": "cisco.com.ssl.sc.omtrdc.net",
+  "smetrics.citibank.ae": "citibank.ae.data.adobedc.net",
+  "smetrics.citibank.co.id": "citibank.co.id.ssl.sc.omtrdc.net",
+  "smetrics.citibank.co.th": "citibank.co.th.ssl.sc.omtrdc.net",
+  "smetrics.citibank.com.au": "citibank.com.au.ssl.sc.omtrdc.net",
+  "smetrics.citibank.com.hk": "citibank.com.hk.ssl.sc.omtrdc.net",
+  "smetrics.citibank.com.my": "citibank.com.my.ssl.sc.omtrdc.net",
+  "smetrics.citibank.com.ph": "citibank.com.ph.ssl.sc.omtrdc.net",
+  "smetrics.citibank.com.sg": "citibank.com.sg.ssl.sc.omtrdc.net",
+  "smetrics.citibank.com.tw": "citibank.com.tw.ssl.sc.omtrdc.net",
+  "smetrics.citibank.com.vn": "citibank.com.vn.ssl.sc.omtrdc.net",
+  "smetrics.citibank.pl": "citibank.pl.data.adobedc.net",
+  "smetrics.citizensbank.com": "citizensbank.com.ssl.sc.omtrdc.net",
+  "smetrics.claris.com": "claris.com.ssl.sc.omtrdc.net",
+  "smetrics.cloudera.com": "cloudera.com.ssl.sc.omtrdc.net",
+  "smetrics.cluballiance.aaa.com": "cluballiance.aaa.com.ssl.sc.omtrdc.net",
+  "smetrics.cnb.com": "cnb.com.ssl.sc.omtrdc.net",
+  "smetrics.cnn.com": "cnn.com.102.122.2o7.net",
+  "smetrics.coach.com": "coach.com.102.122.2o7.net",
+  "smetrics.coachfactory.com": "coachfactory.com.102.122.2o7.net",
+  "smetrics.coffretdor-makeup.jp": "coffretdor-makeup.jp.ssl.sc.omtrdc.net",
+  "smetrics.columbia.com": "columbia.com.102.112.2o7.net",
+  "smetrics.comcast.com": "comcast.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.comdata.com": "comdata.com.ssl.sc.omtrdc.net",
+  "smetrics.comenity.net": "comenity.net.ssl.d2.sc.omtrdc.net",
+  "smetrics.comms.westpac.co.nz": "comms.westpac.co.nz.data.adobedc.net",
+  "smetrics.comparethemarket.com": "comparethemarket.com.data.adobedc.net",
+  "smetrics.consumerreports.org": "consumerreports.org.ssl.d2.sc.omtrdc.net",
+  "smetrics.contactsdirect.com": "contactsdirect.com.ssl.sc.omtrdc.net",
+  "smetrics.contigoentufarmacia.com": "contigoentufarmacia.com.data.adobedc.net",
+  "smetrics.converse.com": "converse.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.cookhouseandpub.co.uk": "cookhouseandpub.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.coordinatedcarehealth.com": "coordinatedcarehealth.com.ssl.sc.omtrdc.net",
+  "smetrics.copart.com": "copart.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.copd-aktuell.de": "copd-aktuell.de.data.adobedc.net",
+  "smetrics.corner.ch": "corner.ch.ssl.sc.omtrdc.net",
+  "smetrics.cornercard.ch": "cornercard.ch.ssl.d2.sc.omtrdc.net",
+  "smetrics.correos.es": "correos.es.data.adobedc.net",
+  "smetrics.cortefiel.com": "cortefiel.com.ssl.sc.omtrdc.net",
+  "smetrics.cortfurnitureoutlet.com": "cortfurnitureoutlet.com.data.adobedc.net",
+  "smetrics.corus.ca": "corus.ca.ssl.sc.omtrdc.net",
+  "smetrics.costacruise.com": "costacruise.com.ssl.sc.omtrdc.net",
+  "smetrics.costadelmar.com": "costadelmar.com.ssl.sc.omtrdc.net",
+  "smetrics.costco.ca": "costco.ca.102.122.2o7.net",
+  "smetrics.costco.com": "costco.com.ssl.sc.omtrdc.net",
+  "smetrics.costcobusinesscentre.ca": "costcobusinesscentre.ca.data.adobedc.net",
+  "smetrics.costcobusinessdelivery.com": "costcobusinessdelivery.com.data.adobedc.net",
+  "smetrics.cotellic.com": "cotellic.com.ssl.sc.omtrdc.net",
+  "smetrics.cottages.com": "cottages.com.ssl.sc.omtrdc.net",
+  "smetrics.country104.com": "country104.com.ssl.sc.omtrdc.net",
+  "smetrics.country105.com": "country105.com.ssl.sc.omtrdc.net",
+  "smetrics.countryfinancial.com": "countryfinancial.com.ssl.sc.omtrdc.net",
+  "smetrics.couponcabin.com": "couponcabin.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.cox.com": "cox.com.ssl.sc.omtrdc.net",
+  "smetrics.cpaaustralia.com.au": "cpaaustralia.com.au.data.adobedc.net",
+  "smetrics.cpsenergy.com": "cpsenergy.com.102.112.2o7.net",
+  "smetrics.crainscleveland.com": "crainscleveland.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.crainsdetroit.com": "crainsdetroit.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.crainsnewyork.com": "crainsnewyork.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.crimewatchdaily.com": "crimewatchdaily.com.ssl.sc.omtrdc.net",
+  "smetrics.crocs.com": "crocs.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.croma.com": "croma.com.data.adobedc.net",
+  "smetrics.cru.org": "cru.org.ssl.sc.omtrdc.net",
+  "smetrics.crystalski.co.uk": "crystalski.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.csmonitor.com": "csmonitor.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.css.ch": "css.ch.ssl.sc.omtrdc.net",
+  "smetrics.csu.edu.au": "csu.edu.au.ssl.sc.omtrdc.net",
+  "smetrics.ctshirts.com": "ctshirts.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.ctv.ca": "ctv.ca.102.122.2o7.net",
+  "smetrics.cultura.com": "cultura.com.data.adobedc.net",
+  "smetrics.cupraofficial.de": "cupraofficial.de.ssl.sc.omtrdc.net",
+  "smetrics.curel.com": "curel.com.ssl.sc.omtrdc.net",
+  "smetrics.currys.co.uk": "currys.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.cytivalifesciences.com": "cytivalifesciences.com.ssl.sc.omtrdc.net",
+  "smetrics.dalisalda.com": "dalisalda.com.ssl.sc.omtrdc.net",
+  "smetrics.dandh.ca": "dandh.ca.ssl.d2.sc.omtrdc.net",
+  "smetrics.dandh.com": "dandh.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.darty.com": "darty.com.ssl.d3.sc.omtrdc.net",
+  "smetrics.deakin.edu.au": "deakin.edu.au.ssl.sc.omtrdc.net",
+  "smetrics.dekalb.com.mx": "dekalb.com.mx.data.adobedc.net",
+  "smetrics.dekalbasgrowdeltapine.com": "dekalbasgrowdeltapine.com.data.adobedc.net",
+  "smetrics.delta.com": "delta.com.ssl.sc.omtrdc.net",
+  "smetrics.der.dk": "der.dk.ssl.sc.omtrdc.net",
+  "smetrics.desparasitaatumascota.es": "desparasitaatumascota.es.data.adobedc.net",
+  "smetrics.dhc.co.jp": "dhc.co.jp.ssl.d1.sc.omtrdc.net",
+  "smetrics.dhl.de": "dhl.de.ssl.sc.omtrdc.net",
+  "smetrics.dickssportinggoods.com": "dickssportinggoods.com.ssl.sc.omtrdc.net",
+  "smetrics.diners.co.jp": "diners.co.jp.ssl.sc.omtrdc.net",
+  "smetrics.directline.com": "directline.com.ssl.d3.sc.omtrdc.net",
+  "smetrics.directlineforbusiness.co.uk": "directlineforbusiness.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.directv.com": "directv.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.discover.com": "discover.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.dish.co": "dish.co.ssl.sc.omtrdc.net",
+  "smetrics.dish.com": "dish.com.ssl.sc.omtrdc.net",
+  "smetrics.disneychannel.ca": "disneychannel.ca.data.adobedc.net",
+  "smetrics.dnb.com": "dnb.com.ssl.sc.omtrdc.net",
+  "smetrics.dnszone.jp": "dnszone.jp.ssl.sc.omtrdc.net",
+  "smetrics.doingbusiness.org": "doingbusiness.org.ssl.sc.omtrdc.net",
+  "smetrics.dominos.com": "dominos.com.ssl.sc.omtrdc.net",
+  "smetrics.donaldson.com": "donaldson.com.data.adobedc.net",
+  "smetrics.dounaru-dm.jp": "dounaru-dm.jp.ssl.sc.omtrdc.net",
+  "smetrics.dreamlabdata.com": "dreamlabdata.com.data.adobedc.net",
+  "smetrics.drugpricinglaw.com": "drugpricinglaw.com.ssl.sc.omtrdc.net",
+  "smetrics.e-wie-einfach.de": "e-wie-einfach.de.ssl.sc.omtrdc.net",
+  "smetrics.eastwestbank.com": "eastwestbank.com.data.adobedc.net",
+  "smetrics.edb.gov.sg": "edb.gov.sg.data.adobedc.net",
+  "smetrics.eddiebauer.com": "eddiebauer.com.ssl.sc.omtrdc.net",
+  "smetrics.edifice-watches.com": "edifice-watches.com.ssl.sc.omtrdc.net",
+  "smetrics.ee.co.uk": "ee.co.uk.ssl.d3.sc.omtrdc.net",
+  "smetrics.efirstbank.com": "efirstbank.com.102.112.2o7.net",
+  "smetrics.ehealthinsurance.com": "ehealthinsurance.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.einsure.com.au": "einsure.com.au.data.adobedc.net",
+  "smetrics.eki-net.com": "eki-net.com.ssl.sc.omtrdc.net",
+  "smetrics.el-mundo.net": "el-mundo.net.ssl.d2.sc.omtrdc.net",
+  "smetrics.elal.com": "elal.com.ssl.sc.omtrdc.net",
+  "smetrics.element14.com": "element14.com.ssl.sc.omtrdc.net",
+  "smetrics.elgallomasgallo.com.gt": "elgallomasgallo.com.gt.data.adobedc.net",
+  "smetrics.elgallomasgallo.com.hn": "elgallomasgallo.com.hn.data.adobedc.net",
+  "smetrics.elgallomasgallo.com.ni": "elgallomasgallo.com.ni.data.adobedc.net",
+  "smetrics.elkjop.no": "elkjop.no.ssl.d1.sc.omtrdc.net",
+  "smetrics.ellentube.com": "ellentube.com.ssl.sc.omtrdc.net",
+  "smetrics.elpais.com": "elpais.com.data.adobedc.net",
+  "smetrics.elsevier.com": "elsevier.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.emicizumabinfo.com": "emicizumabinfo.com.data.adobedc.net",
+  "smetrics.enelenergia.it": "enelenergia.it.ssl.d3.sc.omtrdc.net",
+  "smetrics.energyaustralia.com.au": "energyaustralia.com.au.ssl.d2.sc.omtrdc.net",
+  "smetrics.ensure.com": "ensure.com.102.112.2o7.net",
+  "smetrics.enterprise.com": "enterprise.com.ssl.sc.omtrdc.net",
+  "smetrics.enterprisersproject.com": "enterprisersproject.com.ssl.sc.omtrdc.net",
+  "smetrics.enterprisesg.gov.sg": "enterprisesg.gov.sg.data.adobedc.net",
+  "smetrics.enterprisesurveys.org": "enterprisesurveys.org.ssl.sc.omtrdc.net",
+  "smetrics.entrykeyid.com": "entrykeyid.com.data.adobedc.net",
+  "smetrics.eprice.it": "eprice.it.102.122.2o7.net",
+  "smetrics.equitable.com": "equitable.com.ssl.sc.omtrdc.net",
+  "smetrics.ernestjones.co.uk": "ernestjones.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.esbriet.com": "esbriet.com.ssl.sc.omtrdc.net",
+  "smetrics.esignal.com": "esignal.com.102.122.2o7.net",
+  "smetrics.etcanada.com": "etcanada.com.ssl.sc.omtrdc.net",
+  "smetrics.etihad.com": "etihad.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.eurobet.it": "eurobet.it.ssl.d3.sc.omtrdc.net",
+  "smetrics.eurocard.com": "eurocard.com.ssl.sc.omtrdc.net",
+  "smetrics.europafm.com": "europafm.com.data.adobedc.net",
+  "smetrics.eurowings.com": "eurowings.com.ssl.sc.omtrdc.net",
+  "smetrics.eversource.com": "eversource.com.ssl.sc.omtrdc.net",
+  "smetrics.examinebiosimilars.com": "examinebiosimilars.com.ssl.sc.omtrdc.net",
+  "smetrics.express.com": "express.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.extranetperu.grupobbva.pe": "extranetperu.grupobbva.pe.ssl.sc.omtrdc.net",
+  "smetrics.ey.com": "ey.com.ssl.sc.omtrdc.net",
+  "smetrics.faceipf.com": "faceipf.com.ssl.sc.omtrdc.net",
+  "smetrics.familiaynutricion.com.co": "familiaynutricion.com.co.102.112.2o7.net",
+  "smetrics.fancl.co.jp": "fancl.co.jp.102.112.2o7.net",
+  "smetrics.fancl.jp": "fancl.jp.ssl.sc.omtrdc.net",
+  "smetrics.farnell.com": "farnell.com.ssl.sc.omtrdc.net",
+  "smetrics.fatface.com": "fatface.com.ssl.sc.omtrdc.net",
+  "smetrics.faz.net": "faz.net.ssl.sc.omtrdc.net",
+  "smetrics.fcacert.com": "fcacert.com.ssl.d3.sc.omtrdc.net",
+  "smetrics.fcbarcelona.cat": "fcbarcelona.cat.ssl.sc.omtrdc.net",
+  "smetrics.fcbarcelona.com": "fcbarcelona.com.ssl.sc.omtrdc.net",
+  "smetrics.fcbarcelona.es": "fcbarcelona.es.ssl.sc.omtrdc.net",
+  "smetrics.fcbarcelona.fr": "fcbarcelona.fr.ssl.sc.omtrdc.net",
+  "smetrics.fcbarcelona.jp": "fcbarcelona.jp.ssl.sc.omtrdc.net",
+  "smetrics.fedex.com": "fedex.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.feelbanfresh.com": "feelbanfresh.com.ssl.sc.omtrdc.net",
+  "smetrics.ferguson.com": "ferguson.com.ssl.sc.omtrdc.net",
+  "smetrics.ferris.ac.jp": "ferris.ac.jp.data.adobedc.net",
+  "smetrics.fetnet.net": "fetnet.net.data.adobedc.net",
+  "smetrics.fidelissecurelife.com": "fidelissecurelife.com.ssl.sc.omtrdc.net",
+  "smetrics.fieldandstreamshop.com": "fieldandstreamshop.com.ssl.sc.omtrdc.net",
+  "smetrics.fifa.com": "fifa.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.fiftyoutlet.com": "fiftyoutlet.com.ssl.sc.omtrdc.net",
+  "smetrics.filemaker.com": "filemaker.com.ssl.sc.omtrdc.net",
+  "smetrics.fingerhut.com": "fingerhut.com.ssl.sc.omtrdc.net",
+  "smetrics.finishline.com": "finishline.com.102.112.2o7.net",
+  "smetrics.finn.no": "finn.no.ssl.d1.sc.omtrdc.net",
+  "smetrics.finning.com": "finning.com.ssl.sc.omtrdc.net",
+  "smetrics.fireballwhisky.com": "fireballwhisky.com.ssl.sc.omtrdc.net",
+  "smetrics.fivestarpainting.com": "fivestarpainting.com.data.adobedc.net",
+  "smetrics.flagstar.com": "flagstar.com.ssl.sc.omtrdc.net",
+  "smetrics.flashnews.com.au": "flashnews.com.au.data.adobedc.net",
+  "smetrics.fleetcardsusa.com": "fleetcardsusa.com.ssl.sc.omtrdc.net",
+  "smetrics.fm96.com": "fm96.com.ssl.sc.omtrdc.net",
+  "smetrics.fnac.be": "fnac.be.ssl.d1.sc.omtrdc.net",
+  "smetrics.fnac.ch": "fnac.ch.data.adobedc.net",
+  "smetrics.fnac.com": "fnac.com.102.112.2o7.net",
+  "smetrics.fnac.es": "fnac.es.102.112.2o7.net",
+  "smetrics.fnac.pt": "fnac.pt.ssl.d1.sc.omtrdc.net",
+  "smetrics.fnacpro.com": "fnacpro.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.folksam.se": "folksam.se.ssl.sc.omtrdc.net",
+  "smetrics.ford.ca": "ford.ca.ssl.sc.omtrdc.net",
+  "smetrics.ford.com": "ford.com.ssl.sc.omtrdc.net",
+  "smetrics.fortinos.ca": "fortinos.ca.ssl.sc.omtrdc.net",
+  "smetrics.foxbusiness.com": "foxbusiness.com.ssl.sc.omtrdc.net",
+  "smetrics.foxnews.com": "foxnews.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.fpl.com": "fpl.com.ssl.sc.omtrdc.net",
+  "smetrics.freedomfordsales.ca": "freedomfordsales.ca.ssl.sc.omtrdc.net",
+  "smetrics.freshfinds.com": "freshfinds.com.ssl.sc.omtrdc.net",
+  "smetrics.frontier.com": "frontier.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.frontline.com": "frontline.com.ssl.sc.omtrdc.net",
+  "smetrics.frontline.com.ar": "frontline.com.ar.data.adobedc.net",
+  "smetrics.frontline.fr": "frontline.fr.data.adobedc.net",
+  "smetrics.frontline.pt": "frontline.pt.data.adobedc.net",
+  "smetrics.frontline.ru": "frontline.ru.data.adobedc.net",
+  "smetrics.frontlinecanegatto.it": "frontlinecanegatto.it.data.adobedc.net",
+  "smetrics.frontlinemascotas.es": "frontlinemascotas.es.data.adobedc.net",
+  "smetrics.frontlineplus.com.tw": "frontlineplus.com.tw.data.adobedc.net",
+  "smetrics.ftd.com": "ftd.com.102.122.2o7.net",
+  "smetrics.fuzeon.com": "fuzeon.com.ssl.sc.omtrdc.net",
+  "smetrics.g-shock.com": "g-shock.com.data.adobedc.net",
+  "smetrics.g-shock.jp": "g-shock.jp.ssl.sc.omtrdc.net",
+  "smetrics.gaes.es": "gaes.es.data.adobedc.net",
+  "smetrics.garageandsocial.com": "garageandsocial.com.ssl.sc.omtrdc.net",
+  "smetrics.gatesnotes.com": "gatesnotes.com.ssl.sc.omtrdc.net",
+  "smetrics.gazyva.com": "gazyva.com.ssl.sc.omtrdc.net",
+  "smetrics.gcimetrics.com": "gcimetrics.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.gehealthcare.com": "gehealthcare.com.ssl.sc.omtrdc.net",
+  "smetrics.gemfinance.co.nz": "gemfinance.co.nz.ssl.sc.omtrdc.net",
+  "smetrics.gemvisa.com.au": "gemvisa.com.au.ssl.sc.omtrdc.net",
+  "smetrics.genomeweb.com": "genomeweb.com.data.adobedc.net",
+  "smetrics.getauto.com": "getauto.com.ssl.sc.omtrdc.net",
+  "smetrics.gio.com.au": "gio.com.au.ssl.sc.omtrdc.net",
+  "smetrics.global.jcb": "global.jcb.ssl.sc.omtrdc.net",
+  "smetrics.global.nba.com": "global.nba.com.ssl.sc.omtrdc.net",
+  "smetrics.globalnews.ca": "globalnews.ca.data.adobedc.net",
+  "smetrics.globaltv.com": "globaltv.com.ssl.sc.omtrdc.net",
+  "smetrics.glucerna.com": "glucerna.com.102.112.2o7.net",
+  "smetrics.gmfinancial.com": "gmfinancial.com.ssl.sc.omtrdc.net",
+  "smetrics.goang.com": "goang.com.ssl.sc.omtrdc.net",
+  "smetrics.goindigo.in": "goindigo.in.data.adobedc.net",
+  "smetrics.golfgalaxy.com": "golfgalaxy.com.ssl.sc.omtrdc.net",
+  "smetrics.gomastercard.com.au": "gomastercard.com.au.ssl.sc.omtrdc.net",
+  "smetrics.gomedigap.com": "gomedigap.com.ssl.sc.omtrdc.net",
+  "smetrics.grainger.com": "grainger.com.ssl.sc.omtrdc.net",
+  "smetrics.greatsouthernbank.com.au": "greatsouthernbank.com.au.data.adobedc.net",
+  "smetrics.greendot.com": "greendot.com.102.112.2o7.net",
+  "smetrics.greenflag.com": "greenflag.com.ssl.sc.omtrdc.net",
+  "smetrics.grosvenorcasinos.com": "grosvenorcasinos.com.ssl.sc.omtrdc.net",
+  "smetrics.group.pictet": "group.pictet.ssl.sc.omtrdc.net",
+  "smetrics.groupama.fr": "groupama.fr.data.adobedc.net",
+  "smetrics.grundfos.com": "grundfos.com.ssl.sc.omtrdc.net",
+  "smetrics.gsfresh.com": "gsfresh.com.ssl.sc.omtrdc.net",
+  "smetrics.gshock.com": "gshock.com.ssl.sc.omtrdc.net",
+  "smetrics.gsretail.com": "gsretail.com.ssl.sc.omtrdc.net",
+  "smetrics.gvb.ch": "gvb.ch.ssl.sc.omtrdc.net",
+  "smetrics.h-dnet.com": "h-dnet.com.102.122.2o7.net",
+  "smetrics.ha.com": "ha.com.102.122.2o7.net",
+  "smetrics.haband.com": "haband.com.ssl.sc.omtrdc.net",
+  "smetrics.hagerty.co.uk": "hagerty.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.happyfamilyorganics.com": "happyfamilyorganics.com.ssl.sc.omtrdc.net",
+  "smetrics.harborfreight.com": "harborfreight.com.102.122.2o7.net",
+  "smetrics.harley-davidson.com": "harley-davidson.com.102.122.2o7.net",
+  "smetrics.havenwellwithin.com": "havenwellwithin.com.data.adobedc.net",
+  "smetrics.hbf.com.au": "hbf.com.au.ssl.sc.omtrdc.net",
+  "smetrics.hbogo.com": "hbogo.com.102.122.2o7.net",
+  "smetrics.hbonow.com": "hbonow.com.ssl.sc.omtrdc.net",
+  "smetrics.hbr.org": "hbr.org.ssl.sc.omtrdc.net",
+  "smetrics.hbs.edu": "hbs.edu.ssl.sc.omtrdc.net",
+  "smetrics.hbsp.harvard.edu": "hbsp.harvard.edu.ssl.sc.omtrdc.net",
+  "smetrics.hctra.org": "hctra.org.102.112.2o7.net",
+  "smetrics.hdfcbank.com": "hdfcbank.com.data.adobedc.net",
+  "smetrics.healthengine.com.au": "healthengine.com.au.ssl.sc.omtrdc.net",
+  "smetrics.healthnetcalifornia.com": "healthnetcalifornia.com.ssl.sc.omtrdc.net",
+  "smetrics.healthpartners.com": "healthpartners.com.ssl.sc.omtrdc.net",
+  "smetrics.heartgard.com": "heartgard.com.ssl.sc.omtrdc.net",
+  "smetrics.heathrow.com": "heathrow.com.ssl.sc.omtrdc.net",
+  "smetrics.heathrowexpress.com": "heathrowexpress.com.ssl.sc.omtrdc.net",
+  "smetrics.hebprepaid.com": "hebprepaid.com.data.adobedc.net",
+  "smetrics.helvetia.com": "helvetia.com.ssl.d3.sc.omtrdc.net",
+  "smetrics.hemlibra.com": "hemlibra.com.data.adobedc.net",
+  "smetrics.herbalife.com": "herbalife.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.herceptin.com": "herceptin.com.ssl.sc.omtrdc.net",
+  "smetrics.herceptinhylecta.com": "herceptinhylecta.com.ssl.sc.omtrdc.net",
+  "smetrics.hibiyakadan.com": "hibiyakadan.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.higheroneaccount.com": "higheroneaccount.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.hillrom.com": "hillrom.com.ssl.sc.omtrdc.net",
+  "smetrics.history.ca": "history.ca.ssl.sc.omtrdc.net",
+  "smetrics.hmhco.com": "hmhco.com.102.112.2o7.net",
+  "smetrics.hoken.zexy.net": "hoken.zexy.net.ssl.sc.omtrdc.net",
+  "smetrics.hollandamerica.com": "hollandamerica.com.ssl.sc.omtrdc.net",
+  "smetrics.hollisterco.cn": "hollisterco.cn.ssl.sc.omtrdc.net",
+  "smetrics.hollisterco.com": "hollisterco.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.home.kpmg": "home.kpmg.ssl.sc.omtrdc.net",
+  "smetrics.homeadvisor.com": "homeadvisor.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.homegoods.com": "homegoods.com.data.adobedc.net",
+  "smetrics.homes.com": "homes.com.ssl.sc.omtrdc.net",
+  "smetrics.homestatehealth.com": "homestatehealth.com.ssl.sc.omtrdc.net",
+  "smetrics.hossintropia.com": "hossintropia.com.data.adobedc.net",
+  "smetrics.hpe.com": "hpe.com.ssl.sc.omtrdc.net",
+  "smetrics.hrblock.com": "hrblock.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.hsamuel.co.uk": "hsamuel.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.humana.com": "humana.com.ssl.sc.omtrdc.net",
+  "smetrics.huntington.com": "huntington.com.ssl.sc.omtrdc.net",
+  "smetrics.hypedc.com": "hypedc.com.ssl.sc.omtrdc.net",
+  "smetrics.hyundaiusa.com": "hyundaiusa.com.ssl.sc.omtrdc.net",
+  "smetrics.i-law.com": "i-law.com.ssl.sc.omtrdc.net",
+  "smetrics.ibercaja.es": "ibercaja.es.data.adobedc.net",
+  "smetrics.ice.gov": "ice.gov.ssl.sc.omtrdc.net",
+  "smetrics.iceland.co.uk": "iceland.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.iconfitness.com": "iconfitness.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.icorner.ch": "icorner.ch.ssl.sc.omtrdc.net",
+  "smetrics.ifc.org": "ifc.org.ssl.sc.omtrdc.net",
+  "smetrics.ig.ca": "ig.ca.data.adobedc.net",
+  "smetrics.ikea.com": "ikea.com.102.122.2o7.net",
+  "smetrics.ileitis.de": "ileitis.de.data.adobedc.net",
+  "smetrics.illinois.gov": "illinois.gov.data.adobedc.net",
+  "smetrics.illumina.com": "illumina.com.ssl.sc.omtrdc.net",
+  "smetrics.ilovematlab.cn": "ilovematlab.cn.ssl.sc.omtrdc.net",
+  "smetrics.industryweek.com": "industryweek.com.ssl.sc.omtrdc.net",
+  "smetrics.infomedics.it": "infomedics.it.ssl.sc.omtrdc.net",
+  "smetrics.inkcartridges.com": "inkcartridges.com.ssl.sc.omtrdc.net",
+  "smetrics.inoncology.com": "inoncology.com.ssl.sc.omtrdc.net",
+  "smetrics.insider.hagerty.com": "smetrics.insider.hagerty.ssl.sc.omtrdc.net",
+  "smetrics.insight.com": "insight.com.ssl.sc.omtrdc.net",
+  "smetrics.insurancesaver.com": "insurancesaver.com.ssl.sc.omtrdc.net",
+  "smetrics.intact.ca": "intact.ca.ssl.sc.omtrdc.net",
+  "smetrics.interbank.com.pe": "interbank.com.pe.ssl.sc.omtrdc.net",
+  "smetrics.interbank.pe": "interbank.pe.ssl.sc.omtrdc.net",
+  "smetrics.interestfree.com.au": "interestfree.com.au.ssl.sc.omtrdc.net",
+  "smetrics.intervalworld.com": "intervalworld.com.102.122.2o7.net",
+  "smetrics.intralinks.com": "intralinks.com.102.122.2o7.net",
+  "smetrics.investmentnews.com": "investmentnews.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.investorsgroup.com": "investorsgroup.com.ssl.sc.omtrdc.net",
+  "smetrics.ipb.citibank.com.sg": "ipb.citibank.com.sg.ssl.sc.omtrdc.net",
+  "smetrics.iprimo.jp": "iprimo.jp.ssl.sc.omtrdc.net",
+  "smetrics.irishjobs.ie": "irishjobs.ie.ssl.sc.omtrdc.net",
+  "smetrics.iselect.com.au": "iselect.com.au.ssl.d2.sc.omtrdc.net",
+  "smetrics.jardiance.com": "jardiance.com.data.adobedc.net",
+  "smetrics.jcb.co.jp": "jcb.co.jp.ssl.sc.omtrdc.net",
+  "smetrics.jcpenney.com": "jcpenney.com.ssl.sc.omtrdc.net",
+  "smetrics.jcrew.com": "jcrew.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.jergens.com": "jergens.com.ssl.sc.omtrdc.net",
+  "smetrics.jeugdbibliotheek.nl": "jeugdbibliotheek.nl.ssl.sc.omtrdc.net",
+  "smetrics.jewson.co.uk": "jewson.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.jjill.com": "jjill.com.ssl.sc.omtrdc.net",
+  "smetrics.jobs.ie": "jobs.ie.ssl.sc.omtrdc.net",
+  "smetrics.joefresh.com": "joefresh.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.johnfrieda.com": "johnfrieda.com.ssl.sc.omtrdc.net",
+  "smetrics.joules.com": "joules.com.ssl.sc.omtrdc.net",
+  "smetrics.joulesusa.com": "joulesusa.com.ssl.sc.omtrdc.net",
+  "smetrics.jre-travel.com": "jre-travel.com.ssl.sc.omtrdc.net",
+  "smetrics.juiceplus.com": "juiceplus.com.ssl.sc.omtrdc.net",
+  "smetrics.junsungki.com": "junsungki.com.data.adobedc.net",
+  "smetrics.kaercher.com": "kaercher.com.ssl.ldc.d3.sc.omtrdc.net",
+  "smetrics.kaiserpermanente.org": "kaiserpermanente.org.ssl.sc.omtrdc.net",
+  "smetrics.kanebo-cosmetics.co.jp": "kanebo-cosmetics.co.jp.ssl.sc.omtrdc.net",
+  "smetrics.kanebo-cosmetics.jp": "kanebo-cosmetics.jp.ssl.sc.omtrdc.net",
+  "smetrics.kanebo-global.com": "kanebo-global.com.ssl.sc.omtrdc.net",
+  "smetrics.kao.co.jp": "kao.co.jp.ssl.sc.omtrdc.net",
+  "smetrics.kao.com": "kao.com.ssl.sc.omtrdc.net",
+  "smetrics.kawai-juku.ac.jp": "kawai-juku.ac.jp.ssl.sc.omtrdc.net",
+  "smetrics.kay.com": "kay.com.ssl.sc.omtrdc.net",
+  "smetrics.kayosports.com.au": "kayosports.com.au.ssl.sc.omtrdc.net",
+  "smetrics.kbb.com": "kbb.com.102.112.2o7.net",
+  "smetrics.kenwood.com": "kenwood.com.ssl.sc.omtrdc.net",
+  "smetrics.keysight.com": "keysight.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.kone.com": "kone.com.ssl.sc.omtrdc.net",
+  "smetrics.kone.fr": "kone.fr.ssl.sc.omtrdc.net",
+  "smetrics.kone.in": "kone.in.ssl.sc.omtrdc.net",
+  "smetrics.kone.ru": "kone.ru.ssl.sc.omtrdc.net",
+  "smetrics.labaie.com": "labaie.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.lacounty.gov": "lacounty.gov.ssl.sc.omtrdc.net",
+  "smetrics.ladbrokes.be": "ladbrokes.be.ssl.sc.omtrdc.net",
+  "smetrics.lakeshorelearning.com": "lakeshorelearning.com.102.122.2o7.net",
+  "smetrics.lakeside.com": "lakeside.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.lakewoodchev.com": "lakewoodchev.com.data.adobedc.net",
+  "smetrics.lalavla.com": "lalavla.com.ssl.sc.omtrdc.net",
+  "smetrics.lambweston.com": "lambweston.com.ssl.sc.omtrdc.net",
+  "smetrics.landolakes.com": "landolakes.com.ssl.sc.omtrdc.net",
+  "smetrics.landrover.com": "landrover.com.data.adobedc.net",
+  "smetrics.landrover.com.au": "landrover.com.au.data.adobedc.net",
+  "smetrics.landrover.de": "landrover.de.data.adobedc.net",
+  "smetrics.lanebryant.com": "lanebryant.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.langthesteliv.no": "langthesteliv.no.data.adobedc.net",
+  "smetrics.langthundliv.se": "langthundliv.se.data.adobedc.net",
+  "smetrics.laredoute.fr": "laredoute.fr.ssl.d2.sc.omtrdc.net",
+  "smetrics.lasexta.com": "lasexta.com.data.adobedc.net",
+  "smetrics.latitudefinancial.com": "latitudefinancial.com.ssl.sc.omtrdc.net",
+  "smetrics.latitudefinancial.com.au": "latitudefinancial.com.au.ssl.sc.omtrdc.net",
+  "smetrics.latitudepay.com": "latitudepay.com.ssl.sc.omtrdc.net",
+  "smetrics.latrobe.edu.au": "latrobe.edu.au.ssl.sc.omtrdc.net",
+  "smetrics.lazarediamond.jp": "lazarediamond.jp.ssl.sc.omtrdc.net",
+  "smetrics.ldproducts.com": "ldproducts.com.ssl.sc.omtrdc.net",
+  "smetrics.leasy.dk": "leasy.dk.ssl.sc.omtrdc.net",
+  "smetrics.legalandgeneral.com": "legalandgeneral.com.ssl.sc.omtrdc.net",
+  "smetrics.lenscrafters.ca": "lenscrafters.ca.102.122.2o7.net",
+  "smetrics.lexus.com": "lexus.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.lexusonthepark.ca": "lexusonthepark.ca.data.adobedc.net",
+  "smetrics.libertymutual.com": "libertymutual.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.lidea.today": "lidea.today.ssl.sc.omtrdc.net",
+  "smetrics.lifetime.life": "lifetime.life.ssl.sc.omtrdc.net",
+  "smetrics.lifree.com": "lifree.com.ssl.sc.omtrdc.net",
+  "smetrics.lina.co.kr": "lina.co.kr.data.adobedc.net",
+  "smetrics.linkshare.com": "linkshare.com.102.112.2o7.net",
+  "smetrics.lissage.jp": "lissage.jp.ssl.sc.omtrdc.net",
+  "smetrics.lizearle.com": "lizearle.com.data.adobedc.net",
+  "smetrics.loblaws.ca": "loblaws.ca.ssl.d1.sc.omtrdc.net",
+  "smetrics.loft.com": "loft.com.ssl.sc.omtrdc.net",
+  "smetrics.lordabbett.com": "lordabbett.com.data.adobedc.net",
+  "smetrics.los40.com": "los40.com.data.adobedc.net",
+  "smetrics.louisianahealthconnect.com": "louisianahealthconnect.com.ssl.sc.omtrdc.net",
+  "smetrics.lowes.com": "lowes.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.lpl.com": "lpl.com.ssl.sc.omtrdc.net",
+  "smetrics.ltdcommodities.com": "ltdcommodities.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.lucentis.com": "lucentis.com.ssl.sc.omtrdc.net",
+  "smetrics.lululemon.co.jp": "lululemon.co.jp.ssl.sc.omtrdc.net",
+  "smetrics.lululemon.co.kr": "lululemon.co.kr.ssl.sc.omtrdc.net",
+  "smetrics.lululemon.co.nz": "lululemon.co.nz.ssl.sc.omtrdc.net",
+  "smetrics.lululemon.co.uk": "lululemon.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.lululemon.com": "lululemon.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.lululemon.com.au": "lululemon.com.au.ssl.sc.omtrdc.net",
+  "smetrics.lululemon.com.hk": "lululemon.com.hk.ssl.sc.omtrdc.net",
+  "smetrics.lululemon.de": "lululemon.de.ssl.sc.omtrdc.net",
+  "smetrics.lululemon.fr": "lululemon.fr.ssl.sc.omtrdc.net",
+  "smetrics.lundbeck.com": "lundbeck.com.ssl.sc.omtrdc.net",
+  "smetrics.lunglife.com": "lunglife.com.data.adobedc.net",
+  "smetrics.lww.com": "lww.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.m1.com.sg": "m1.com.sg.data.adobedc.net",
+  "smetrics.mackenzieinvestments.com": "mackenzieinvestments.com.ssl.sc.omtrdc.net",
+  "smetrics.maclinfordcalgary.com": "maclinfordcalgary.com.ssl.sc.omtrdc.net",
+  "smetrics.magic106.com": "magic106.com.ssl.sc.omtrdc.net",
+  "smetrics.mamypoko.com": "mamypoko.com.ssl.sc.omtrdc.net",
+  "smetrics.mandai.com": "mandai.com.data.adobedc.net",
+  "smetrics.manheim.com": "manheim.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.marcus.com": "marcus.com.ssl.sc.omtrdc.net",
+  "smetrics.maritimeintelligence.informa.com": "maritimeintelligence.informa.com.ssl.sc.omtrdc.net",
+  "smetrics.markandgraham.com": "markandgraham.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.marketfor.com": "marketfor.com.data.adobedc.net",
+  "smetrics.marketing.philips-hue.com": "marketing.philips-hue.com.data.adobedc.net",
+  "smetrics.marksandspencer.com": "marksandspencer.com.ssl.d3.sc.omtrdc.net",
+  "smetrics.marriott.com": "marriott.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.marriottvacationclub.com": "marriottvacationclub.com.data.adobedc.net",
+  "smetrics.marshalls.com": "marshalls.com.ssl.sc.omtrdc.net",
+  "smetrics.marshandmclennan.com": "marshandmclennan.com.ssl.sc.omtrdc.net",
+  "smetrics.mastercard.com": "mastercard.com.ssl.sc.omtrdc.net",
+  "smetrics.mathworks.cn": "mathworks.cn.ssl.sc.omtrdc.net",
+  "smetrics.mathworks.com": "mathworks.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.matlab.com": "matlab.com.ssl.sc.omtrdc.net",
+  "smetrics.matlabexpo.com": "matlabexpo.com.ssl.sc.omtrdc.net",
+  "smetrics.maurices.com": "maurices.com.ssl.sc.omtrdc.net",
+  "smetrics.maxi.ca": "maxi.ca.ssl.sc.omtrdc.net",
+  "smetrics.maximintegrated.com": "maximintegrated.com.ssl.sc.omtrdc.net",
+  "smetrics.maxxia.com.au": "maxxia.com.au.ssl.sc.omtrdc.net",
+  "smetrics.mcafee.com": "mcafee.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.mcdonalds.com": "mcdonalds.com.ssl.sc.omtrdc.net",
+  "smetrics.mcdpromotion.ca": "mcdpromotion.ca.data.adobedc.net",
+  "smetrics.meccabingo.com": "meccabingo.com.ssl.sc.omtrdc.net",
+  "smetrics.med.roche.ru": "med.roche.ru.ssl.sc.omtrdc.net",
+  "smetrics.medclass.nl": "medclass.nl.data.adobedc.net",
+  "smetrics.medical.roche.de": "medical.roche.de.data.adobedc.net",
+  "smetrics.memberdeals.com": "memberdeals.com.ssl.sc.omtrdc.net",
+  "smetrics.mercola.com": "mercola.com.data.adobedc.net",
+  "smetrics.mercolamarket.com": "mercolamarket.com.data.adobedc.net",
+  "smetrics.mercy.net": "mercy.net.ssl.sc.omtrdc.net",
+  "smetrics.metrobyt-mobile.com": "metrobyt-mobile.com.ssl.sc.omtrdc.net",
+  "smetrics.mfs.com": "mfs.com.ssl.sc.omtrdc.net",
+  "smetrics.mgmresorts.com": "mgmresorts.com.ssl.sc.omtrdc.net",
+  "smetrics.mhsindiana.com": "mhsindiana.com.ssl.sc.omtrdc.net",
+  "smetrics.michaeljfox.org": "michaeljfox.org.ssl.sc.omtrdc.net",
+  "smetrics.michaelkors.ca": "michaelkors.ca.ssl.sc.omtrdc.net",
+  "smetrics.michaelkors.com": "michaelkors.com.ssl.sc.omtrdc.net",
+  "smetrics.michaelkors.de": "michaelkors.de.ssl.sc.omtrdc.net",
+  "smetrics.michaelkors.es": "michaelkors.es.ssl.sc.omtrdc.net",
+  "smetrics.michaelkors.eu": "michaelkors.eu.ssl.sc.omtrdc.net",
+  "smetrics.michaelkors.fr": "michaelkors.fr.ssl.sc.omtrdc.net",
+  "smetrics.michaelkors.global": "michaelkors.global.ssl.sc.omtrdc.net",
+  "smetrics.michaelkors.it": "michaelkors.it.ssl.sc.omtrdc.net",
+  "smetrics.michaelkors.uk": "michaelkors.uk.ssl.sc.omtrdc.net",
+  "smetrics.michaels.com": "michaels.com.ssl.sc.omtrdc.net",
+  "smetrics.midatlantic.aaa.com": "midatlantic.aaa.com.102.122.2o7.net",
+  "smetrics.miles-and-more.com": "miles-and-more.com.data.adobedc.net",
+  "smetrics.mindjet.com": "data.102.122.2o7.net",
+  "smetrics.miracle-ear.com": "miracle-ear.com.data.adobedc.net",
+  "smetrics.mirkota.ru": "mirkota.ru.data.adobedc.net",
+  "smetrics.misrp.com": "misrp.com.data.adobedc.net",
+  "smetrics.mistore.jp": "mistore.jp.ssl.sc.omtrdc.net",
+  "smetrics.misumi-ec.com": "misumi-ec.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.mitsubishi-motors.co.jp": "mitsubishi-motors.co.jp.ssl.d2.sc.omtrdc.net",
+  "smetrics.mitsubishi-motors.com.au": "mitsubishi-motors.com.au.ssl.sc.omtrdc.net",
+  "smetrics.mizuno.jp": "mizuno.jp.ssl.d2.sc.omtrdc.net",
+  "smetrics.mobilebanking.scotiabank.com": "mobilebanking.scotiabank.com.102.122.2o7.net",
+  "smetrics.modernhealthcare.com": "modernhealthcare.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.mollymaid.com": "mollymaid.com.data.adobedc.net",
+  "smetrics.moneta.cz": "moneta.cz.ssl.sc.omtrdc.net",
+  "smetrics.moneymarketing.co.uk": "moneymarketing.co.uk.102.122.2o7.net",
+  "smetrics.monsanto.com": "monsanto.com.ssl.sc.omtrdc.net",
+  "smetrics.moodys.com": "moodys.com.ssl.sc.omtrdc.net",
+  "smetrics.moony.com": "moony.com.ssl.sc.omtrdc.net",
+  "smetrics.moosejaw.com": "data.102.112.2o7.net",
+  "smetrics.morganstanley.com": "morganstanley.com.ssl.sc.omtrdc.net",
+  "smetrics.morningstar.com": "morningstar.com.102.122.2o7.net",
+  "smetrics.mosquitojoe.com": "mosquitojoe.com.data.adobedc.net",
+  "smetrics.motioncanada.ca": "motioncanada.ca.data.adobedc.net",
+  "smetrics.motionindustries.com": "motionindustries.com.data.adobedc.net",
+  "smetrics.motorsportreg.com": "motorsportreg.com.ssl.sc.omtrdc.net",
+  "smetrics.motortrend.com": "motortrend.com.ssl.sc.omtrdc.net",
+  "smetrics.mouse-jp.co.jp": "mouse-jp.co.jp.ssl.sc.omtrdc.net",
+  "smetrics.moving.com": "moving.com.ssl.sc.omtrdc.net",
+  "smetrics.mrappliance.ca": "mrappliance.ca.data.adobedc.net",
+  "smetrics.mrappliance.com": "mrappliance.com.data.adobedc.net",
+  "smetrics.mrelectric.com": "mrelectric.com.data.adobedc.net",
+  "smetrics.mrhandyman.ca": "mrhandyman.ca.data.adobedc.net",
+  "smetrics.mrhandyman.com": "mrhandyman.com.data.adobedc.net",
+  "smetrics.mrporter.com": "mrporter.com.ssl.d3.sc.omtrdc.net",
+  "smetrics.mrrooter.ca": "mrrooter.ca.data.adobedc.net",
+  "smetrics.mrrooter.com": "mrrooter.com.ssl.sc.omtrdc.net",
+  "smetrics.msg.com": "msg.com.ssl.sc.omtrdc.net",
+  "smetrics.msvoice.com": "msvoice.com.ssl.sc.omtrdc.net",
+  "smetrics.multikino.pl": "multikino.pl.ssl.sc.omtrdc.net",
+  "smetrics.murata.com": "murata.com.ssl.sc.omtrdc.net",
+  "smetrics.mutua.es": "mutua.es.data.adobedc.net",
+  "smetrics.mutuactivos.com": "mutuactivos.com.data.adobedc.net",
+  "smetrics.myoccu.org": "myoccu.org.ssl.sc.omtrdc.net",
+  "smetrics.myspringfield.com": "myspringfield.com.ssl.sc.omtrdc.net",
+  "smetrics.myvi.in": "myvi.in.data.adobedc.net",
+  "smetrics.nab.com.au": "nab.com.au.ssl.d1.sc.omtrdc.net",
+  "smetrics.nabtrade.com.au": "nabtrade.com.au.ssl.sc.omtrdc.net",
+  "smetrics.nadaguides.com": "nadaguides.com.102.122.2o7.net",
+  "smetrics.napaonline.com": "napaonline.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.napaprolink.ca": "napaprolink.ca.data.adobedc.net",
+  "smetrics.napaprolink.com": "napaprolink.com.data.adobedc.net",
+  "smetrics.nascar.com": "nascar.com.ssl.sc.omtrdc.net",
+  "smetrics.nationalgrid.com": "nationalgrid.com.data.adobedc.net",
+  "smetrics.nationaltrust.org.uk": "nationaltrust.org.uk.ssl.sc.omtrdc.net",
+  "smetrics.nationwide.co.uk": "nationwide.co.uk.ssl.d2.sc.omtrdc.net",
+  "smetrics.nba.com": "nba.com.102.112.2o7.net",
+  "smetrics.nesn.com": "nesn.com.ssl.sc.omtrdc.net",
+  "smetrics.net-a-porter.com": "net-a-porter.com.ssl.d3.sc.omtrdc.net",
+  "smetrics.netspend.com": "netspend.com.data.adobedc.net",
+  "smetrics.newark.com": "newark.com.ssl.sc.omtrdc.net",
+  "smetrics.newbalance.com": "newbalance.com.102.112.2o7.net",
+  "smetrics.newfoundlandgrocerystores.ca": "newfoundlandgrocerystores.ca.ssl.sc.omtrdc.net",
+  "smetrics.newport.com": "newport.com.102.122.2o7.net",
+  "smetrics.nexgard.com.co": "nexgard.com.co.data.adobedc.net",
+  "smetrics.nexgard.ru": "nexgard.ru.data.adobedc.net",
+  "smetrics.nexmo.com": "nexmo.com.ssl.sc.omtrdc.net",
+  "smetrics.nfl.com": "nfl.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.nfpa.org": "nfpa.org.102.112.2o7.net",
+  "smetrics.ni.com": "ni.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.nijobs.com": "nijobs.com.ssl.sc.omtrdc.net",
+  "smetrics.nintendo.com": "nintendo.com.102.112.2o7.net",
+  "smetrics.nissanusa.com": "nissanusa.102.112.2o7.net",
+  "smetrics.noblehome.co.jp": "noblehome.co.jp.data.adobedc.net",
+  "smetrics.nofrills.ca": "nofrills.ca.ssl.sc.omtrdc.net",
+  "smetrics.nomorerules.net": "nomorerules.net.ssl.sc.omtrdc.net",
+  "smetrics.northernterritory.com": "northernterritory.com.ssl.sc.omtrdc.net",
+  "smetrics.nowtv.com": "nowtv.com.ssl.sc.omtrdc.net",
+  "smetrics.nutropin.com": "nutropin.com.ssl.sc.omtrdc.net",
+  "smetrics.nvidia.com": "nvidia.com.ssl.sc.omtrdc.net",
+  "smetrics.nyandcompany.com": "nyandcompany.com.ssl.sc.omtrdc.net",
+  "smetrics.nycgo.com": "nycgo.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.nykaa.com": "nykaa.com.data.adobedc.net",
+  "smetrics.nykaafashion.com": "nykaafashion.com.data.adobedc.net",
+  "smetrics.nyulangone.org": "nyulangone.org.ssl.sc.omtrdc.net",
+  "smetrics.o2online.de": "o2online.de.data.adobedc.net",
+  "smetrics.oakley.com": "oakley.com.ssl.sc.omtrdc.net",
+  "smetrics.oakleysi.com": "oakleysi.com.ssl.sc.omtrdc.net",
+  "smetrics.ocrevus.com": "ocrevus.com.ssl.sc.omtrdc.net",
+  "smetrics.officechairs.com": "officechairs.com.102.112.2o7.net",
+  "smetrics.officefurniture.com": "officefurniture.com.102.112.2o7.net",
+  "smetrics.officeworks.com.au": "officeworks.com.au.ssl.sc.omtrdc.net",
+  "smetrics.ok.dk": "ok.dk.ssl.sc.omtrdc.net",
+  "smetrics.okcashbag.com": "okcashbag.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.oliverpeoples.com": "oliverpeoples.com.ssl.sc.omtrdc.net",
+  "smetrics.omniture.com": "omniture.com.102.112.2o7.net",
+  "smetrics.ondacero.es": "ondacero.es.data.adobedc.net",
+  "smetrics.ontechsmartservices.com": "ontechsmartservices.com.ssl.sc.omtrdc.net",
+  "smetrics.onward.co.jp": "onward.co.jp.ssl.sc.omtrdc.net",
+  "smetrics.openshift.com": "openshift.com.ssl.sc.omtrdc.net",
+  "smetrics.opensource.com": "opensource.com.ssl.sc.omtrdc.net",
+  "smetrics.opsm.com.au": "opsm.com.au.ssl.sc.omtrdc.net",
+  "smetrics.optimum.net": "optimum.net.ssl.d1.sc.omtrdc.net",
+  "smetrics.optum.com": "optum.com.ssl.sc.omtrdc.net",
+  "smetrics.orangetheory.com": "orangetheory.com.ssl.sc.omtrdc.net",
+  "smetrics.oreilly.com": "oreilly.com.102.122.2o7.net",
+  "smetrics.oxfam.org.uk": "oxfam.org.uk.ssl.d2.sc.omtrdc.net",
+  "smetrics.packersproshop.com": "packersproshop.com.ssl.sc.omtrdc.net",
+  "smetrics.pacsun.com": "pacsun.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.panasonic.biz": "panasonic.biz.ssl.sc.omtrdc.net",
+  "smetrics.panasonic.com": "panasonic.com.102.112.2o7.net",
+  "smetrics.panasonic.jp": "panasonic.jp.ssl.sc.omtrdc.net",
+  "smetrics.panasonic.net": "panasonic.net.ssl.sc.omtrdc.net",
+  "smetrics.pandora.com": "pandora.com.ssl.sc.omtrdc.net",
+  "smetrics.pandora.net": "pandora.net.ssl.sc.omtrdc.net",
+  "smetrics.panerabread.com": "panerabread.com.data.adobedc.net",
+  "smetrics.parasitenportal.de": "parasitenportal.de.data.adobedc.net",
+  "smetrics.payback.at": "payback.at.ssl.sc.omtrdc.net",
+  "smetrics.payback.de": "payback.de.ssl.d2.sc.omtrdc.net",
+  "smetrics.payback.it": "payback.it.ssl.d2.sc.omtrdc.net",
+  "smetrics.payback.mx": "payback.mx.ssl.d2.sc.omtrdc.net",
+  "smetrics.payback.pl": "payback.pl.ssl.sc.omtrdc.net",
+  "smetrics.pbteen.com": "pbteen.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.pcid.ca": "pcid.ca.ssl.sc.omtrdc.net",
+  "smetrics.pcoptimum.ca": "pcoptimum.ca.ssl.sc.omtrdc.net",
+  "smetrics.pdt.r-agent.com": "pdt.r-agent.com.ssl.sc.omtrdc.net",
+  "smetrics.peakperformance.com": "peakperformance.com.data.adobedc.net",
+  "smetrics.pearlevision.ca": "pearlevision.ca.102.122.2o7.net",
+  "smetrics.pearlevision.com": "pearlevision.com.102.122.2o7.net",
+  "smetrics.pedialyte.com": "pedialyte.com.102.112.2o7.net",
+  "smetrics.pediasure.com": "pediasure.com.102.112.2o7.net",
+  "smetrics.pedrodelhierro.com": "pedrodelhierro.com.ssl.sc.omtrdc.net",
+  "smetrics.penfed.org": "penfed.org.ssl.sc.omtrdc.net",
+  "smetrics.pennymacusa.com": "pennymacusa.com.ssl.sc.omtrdc.net",
+  "smetrics.peoplesjewellers.com": "peoplesjewellers.com.ssl.sc.omtrdc.net",
+  "smetrics.perjeta.com": "perjeta.com.ssl.sc.omtrdc.net",
+  "smetrics.persol.com": "persol.com.ssl.sc.omtrdc.net",
+  "smetrics.petbarn.com.au": "petbarn.com.au.data.adobedc.net",
+  "smetrics.petco.com": "petco.com.ssl.sc.omtrdc.net",
+  "smetrics.pfa.dk": "pfa.dk.ssl.sc.omtrdc.net",
+  "smetrics.pharmaintelligence.informa.com": "pharmaintelligence.informa.com.ssl.sc.omtrdc.net",
+  "smetrics.phoenix.edu": "phoenix.edu.ssl.d1.sc.omtrdc.net",
+  "smetrics.pinkribbonbottle.com": "pinkribbonbottle.com.ssl.sc.omtrdc.net",
+  "smetrics.pionline.com": "pionline.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.playcard.com": "playcard.com.data.adobedc.net",
+  "smetrics.plymouthrock.com": "plymouthrock.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.politico.com": "politico.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.politicopro.com": "politicopro.com.102.122.2o7.net",
+  "smetrics.potterybarn.com": "potterybarn.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.potterybarnkids.ca": "potterybarnkids.ca.data.adobedc.net",
+  "smetrics.potterybarnkids.com": "potterybarnkids.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.prado.com.sv": "prado.com.sv.data.adobedc.net",
+  "smetrics.prd.telenet.be": "telenet.be.ssl.sc.omtrdc.net",
+  "smetrics.preautorizacionfs.com": "preautorizacionfs.com.data.adobedc.net",
+  "smetrics.premera.com": "premera.com.ssl.sc.omtrdc.net",
+  "smetrics.premierinn.com": "premierinn.com.ssl.sc.omtrdc.net",
+  "smetrics.princess.com": "princess.com.ssl.sc.omtrdc.net",
+  "smetrics.prinovaglobal.com": "prinovaglobal.com.data.adobedc.net",
+  "smetrics.professionnels.roche.fr": "professionnels.roche.fr.ssl.sc.omtrdc.net",
+  "smetrics.protrek.jp": "protrek.jp.ssl.sc.omtrdc.net",
+  "smetrics.provigo.ca": "provigo.ca.ssl.sc.omtrdc.net",
+  "smetrics.provincial.com": "provincial.com.ssl.sc.omtrdc.net",
+  "smetrics.proximus.be": "proximus.be.ssl.sc.omtrdc.net",
+  "smetrics.pshpgeorgia.com": "pshpgeorgia.com.ssl.sc.omtrdc.net",
+  "smetrics.publiclands.com": "publiclands.com.data.adobedc.net",
+  "smetrics.pulte.com": "pulte.com.ssl.sc.omtrdc.net",
+  "smetrics.puma.com": "puma.com.ssl.sc.omtrdc.net",
+  "smetrics.purchasingpower.com": "purchasingpower.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.purinamills.com": "purinamills.com.ssl.sc.omtrdc.net",
+  "smetrics.q107.com": "q107.com.ssl.sc.omtrdc.net",
+  "smetrics.qatarairways.com": "qatarairways.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.quill.com": "quill.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.qvc.jp": "qvc.jp.ssl.sc.omtrdc.net",
+  "smetrics.rackroomshoes.com": "rackroomshoes.com.ssl.sc.omtrdc.net",
+  "smetrics.racv.com.au": "racv.com.au.ssl.sc.omtrdc.net",
+  "smetrics.rainbowintl.com": "rainbowintl.com.data.adobedc.net",
+  "smetrics.ralphlauren.com": "ralphlauren.com.ssl.sc.omtrdc.net",
+  "smetrics.ralphlauren.eu": "ralphlauren.eu.ssl.sc.omtrdc.net",
+  "smetrics.ralphlauren.it": "ralphlauren.it.ssl.sc.omtrdc.net",
+  "smetrics.rate.com": "rate.com.data.adobedc.net",
+  "smetrics.ray-ban.com": "ray-ban.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.rcsmetrics.it": "rcsmetrics.it.ssl.d2.sc.omtrdc.net",
+  "smetrics.readyforbusinesswith.com": "readyforbusinesswith.com.data.adobedc.net",
+  "smetrics.realcanadiansuperstore.ca": "realcanadiansuperstore.ca.ssl.sc.omtrdc.net",
+  "smetrics.realcommercial.com.au": "realcommercial.com.au.ssl.sc.omtrdc.net",
+  "smetrics.reale.es": "reale.es.ssl.sc.omtrdc.net",
+  "smetrics.realestate.com.au": "realestate.com.au.ssl.sc.omtrdc.net",
+  "smetrics.realtor.com": "realtor.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.redbox.com": "redbox.com.ssl.sc.omtrdc.net",
+  "smetrics.redcross.org": "redcross.org.ssl.sc.omtrdc.net",
+  "smetrics.redcrossblood.org": "redcrossblood.org.ssl.sc.omtrdc.net",
+  "smetrics.redhat.com": "redhat.com.ssl.sc.omtrdc.net",
+  "smetrics.redletterdays.co.uk": "redletterdays.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.reedbusiness.net": "reedbusiness.net.ssl.d2.sc.omtrdc.net",
+  "smetrics.regions.com": "regions.com.ssl.sc.omtrdc.net",
+  "smetrics.regionstest.com": "regions.com.ssl.sc.omtrdc.net",
+  "smetrics.rejuvenation.com": "rejuvenation.com.ssl.sc.omtrdc.net",
+  "smetrics.remserv.com.au": "remserv.com.au.ssl.sc.omtrdc.net",
+  "smetrics.repco.co.nz": "repco.co.nz.data.adobedc.net",
+  "smetrics.repco.com.au": "repco.com.au.data.adobedc.net",
+  "smetrics.restaurant.com": "restaurant.com.ssl.sc.omtrdc.net",
+  "smetrics.rexulti.com": "rexulti.com.data.adobedc.net",
+  "smetrics.rimac.com": "rimac.com.ssl.sc.omtrdc.net",
+  "smetrics.riteaid.com": "riteaid.com.ssl.sc.omtrdc.net",
+  "smetrics.rituxan.com": "rituxan.com.ssl.sc.omtrdc.net",
+  "smetrics.robeco.com": "robeco.com.ssl.sc.omtrdc.net",
+  "smetrics.robeco.nl": "robeco.nl.ssl.sc.omtrdc.net",
+  "smetrics.rochepro.hr": "rochepro.hr.ssl.sc.omtrdc.net",
+  "smetrics.rockettes.com": "rockettes.com.ssl.sc.omtrdc.net",
+  "smetrics.rolex.com": "rolex.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.roomandboard.com": "roomandboard.com.ssl.sc.omtrdc.net",
+  "smetrics.royalcaribbean.com": "royalcaribbean.com.ssl.sc.omtrdc.net",
+  "smetrics.rtl.nl": "rtl.nl.ssl.sc.omtrdc.net",
+  "smetrics.runbabyrun.fr": "runbabyrun.fr.ssl.sc.omtrdc.net",
+  "smetrics.ryanair.com": "ryanair.com.ssl.d3.sc.omtrdc.net",
+  "smetrics.ryanhomes.com": "ryanhomes.com.102.112.2o7.net",
+  "smetrics.sainsburysbank.co.uk": "sainsburysbank.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.saksoff5th.com": "saksoff5th.com.ssl.sc.omtrdc.net",
+  "smetrics.salliemae.com": "salliemae.com.ssl.sc.omtrdc.net",
+  "smetrics.salomon.com": "salomon.com.ssl.sc.omtrdc.net",
+  "smetrics.samsung.com": "samsung.com.ssl.sc.omtrdc.net",
+  "smetrics.santander.co.uk": "santander.co.uk.ssl.d3.sc.omtrdc.net",
+  "smetrics.sap.com": "sap.com.ssl.sc.omtrdc.net",
+  "smetrics.sasktel.com": "sasktel.com.ssl.sc.omtrdc.net",
+  "smetrics.savethechildren.org": "savethechildren.org.ssl.sc.omtrdc.net",
+  "smetrics.savethechildren.org.uk": "savethechildren.org.uk.ssl.sc.omtrdc.net",
+  "smetrics.sazerac.com": "sazerac.com.ssl.sc.omtrdc.net",
+  "smetrics.sbisec.co.jp": "sbisec.co.jp.ssl.sc.omtrdc.net",
+  "smetrics.sbs.com.au": "sbs.com.au.ssl.sc.omtrdc.net",
+  "smetrics.scandichotels.com": "scandichotels.com.ssl.sc.omtrdc.net",
+  "smetrics.scandichotels.de": "scandichotels.de.ssl.sc.omtrdc.net",
+  "smetrics.scandichotels.fi": "scandichotels.fi.ssl.sc.omtrdc.net",
+  "smetrics.scandichotels.se": "scandichotels.se.ssl.sc.omtrdc.net",
+  "smetrics.sce.com": "sce.com.102.122.2o7.net",
+  "smetrics.schwans.com": "schwans.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.sdcvisit.com": "sdcvisit.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.seabourn.com": "seabourn.com.ssl.sc.omtrdc.net",
+  "smetrics.seagate.com": "seagate.com.102.122.2o7.net",
+  "smetrics.seat-auto.pl": "seat-auto.pl.ssl.sc.omtrdc.net",
+  "smetrics.seat-italia.it": "seat-italia.it.ssl.sc.omtrdc.net",
+  "smetrics.seat.ch": "seat.ch.ssl.sc.omtrdc.net",
+  "smetrics.seat.co.uk": "seat.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.seat.com": "seat.com.ssl.sc.omtrdc.net",
+  "smetrics.seat.de": "seat.de.ssl.sc.omtrdc.net",
+  "smetrics.seat.es": "seat.es.ssl.sc.omtrdc.net",
+  "smetrics.seat.fr": "seat.fr.ssl.sc.omtrdc.net",
+  "smetrics.seat.mx": "seat.mx.ssl.sc.omtrdc.net",
+  "smetrics.seat.pl": "seat.pl.ssl.sc.omtrdc.net",
+  "smetrics.seb.ee": "seb.ee.ssl.sc.omtrdc.net",
+  "smetrics.seb.lt": "seb.lt.ssl.sc.omtrdc.net",
+  "smetrics.seb.lv": "seb.lv.ssl.sc.omtrdc.net",
+  "smetrics.secureremserv.com.au": "secureremserv.com.au.ssl.sc.omtrdc.net",
+  "smetrics.seguro.mediaset.es": "seguro.mediaset.es.ssl.sc.omtrdc.net",
+  "smetrics.sen.com.au": "sen.com.au.ssl.sc.omtrdc.net",
+  "smetrics.sephora.com": "sephora.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.seriesplus.com": "seriesplus.com.ssl.sc.omtrdc.net",
+  "smetrics.sfr.fr": "sfr.fr.ssl.d2.sc.omtrdc.net",
+  "smetrics.shangri-la.com": "shangri-la.com.ssl.sc.omtrdc.net",
+  "smetrics.shannons.com.au": "shannons.com.au.ssl.sc.omtrdc.net",
+  "smetrics.sharecare.com": "sharecare.com.102.122.2o7.net",
+  "smetrics.sharekhan.com": "sharekhan.com.ssl.sc.omtrdc.net",
+  "smetrics.sheen.jp": "sheen.jp.ssl.sc.omtrdc.net",
+  "smetrics.shell.co.uk": "shell.co.uk.data.adobedc.net",
+  "smetrics.shellenergy.co.uk": "shellenergy.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.sherwoodbuickgmc.com": "sherwoodbuickgmc.com.data.adobedc.net",
+  "smetrics.shinseibank.com": "shinseibank.com.102.112.2o7.net",
+  "smetrics.sho.com": "sho.com.ssl.sc.omtrdc.net",
+  "smetrics.shopdisney.in": "shopdisney.in.data.adobedc.net",
+  "smetrics.shopjapan.co.jp": "shopjapan.co.jp.ssl.sc.omtrdc.net",
+  "smetrics.shopmyexchange.com": "shopmyexchange.com.ssl.sc.omtrdc.net",
+  "smetrics.shopoon.fr": "shopoon.fr.ssl.sc.omtrdc.net",
+  "smetrics.shoppersdrugmart.ca": "shoppersdrugmart.ca.ssl.sc.omtrdc.net",
+  "smetrics.shoppremiumoutlets.com": "shoppremiumoutlets.com.ssl.sc.omtrdc.net",
+  "smetrics.showcase.ca": "showcase.ca.ssl.sc.omtrdc.net",
+  "smetrics.showtime.com": "showtime.com.ssl.sc.omtrdc.net",
+  "smetrics.showtimeanytime.com": "showtimeanytime.com.ssl.sc.omtrdc.net",
+  "smetrics.siapnge.com": "siapnge.com.data.adobedc.net",
+  "smetrics.siriusxm.ca": "siriusxm.ca.ssl.sc.omtrdc.net",
+  "smetrics.siriusxm.com": "siriusxm.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.sisal.it": "sisal.it.ssl.sc.omtrdc.net",
+  "smetrics.sivasdescalzo.com": "sivasdescalzo.com.data.adobedc.net",
+  "smetrics.sj.se": "sj.se.ssl.sc.omtrdc.net",
+  "smetrics.sky.com": "sky.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.sky.de": "sky.de.data.adobedc.net",
+  "smetrics.sky.it": "sky.it.ssl.sc.omtrdc.net",
+  "smetrics.slate.com": "slate.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.sleepnumber.com": "sleepnumber.com.ssl.sc.omtrdc.net",
+  "smetrics.sling.com": "sling.com.ssl.sc.omtrdc.net",
+  "smetrics.smartmove.us": "smartmove.us.ssl.sc.omtrdc.net",
+  "smetrics.smbcnikko.co.jp": "smbcnikko.co.jp.102.112.2o7.net",
+  "smetrics.sofina.co.jp": "sofina.co.jp.ssl.sc.omtrdc.net",
+  "smetrics.sofina.com": "sofina.com.ssl.sc.omtrdc.net",
+  "smetrics.softwareag.com": "softwareag.com.data.adobedc.net",
+  "smetrics.sofy.jp": "sofy.jp.ssl.sc.omtrdc.net",
+  "smetrics.sofygirls.com": "sofygirls.com.ssl.sc.omtrdc.net",
+  "smetrics.solarwinds.com": "solarwinds.com.ssl.sc.omtrdc.net",
+  "smetrics.solaseedair.jp": "solaseedair.jp.ssl.sc.omtrdc.net",
+  "smetrics.sony.com.vn": "sony.com.vn.ssl.sc.omtrdc.net",
+  "smetrics.sony.jp": "sony.jp.102.112.2o7.net",
+  "smetrics.sothebys.com": "sothebys.com.102.122.2o7.net",
+  "smetrics.sourceesb.com": "sourceesb.com.ssl.sc.omtrdc.net",
+  "smetrics.southaustralia.com": "southaustralia.com.data.adobedc.net",
+  "smetrics.southerncomfort.com": "southerncomfort.com.data.adobedc.net",
+  "smetrics.southwest.com": "southwest.com.ssl.sc.omtrdc.net",
+  "smetrics.southwesthotels.com": "southwesthotels.com.ssl.sc.omtrdc.net",
+  "smetrics.sparkassendirekt.de": "sparkassendirekt.de.102.122.2o7.net",
+  "smetrics.spdrs.com": "spdrs.com.ssl.sc.omtrdc.net",
+  "smetrics.spela.svenskaspel.se": "spela.svenskaspel.se.ssl.sc.omtrdc.net",
+  "smetrics.spiriva.com": "spiriva.com.ssl.sc.omtrdc.net",
+  "smetrics.sportsmansguide.com": "sportsmansguide.com.102.122.2o7.net",
+  "smetrics.sptoyota.com": "sptoyota.com.data.adobedc.net",
+  "smetrics.srpnet.com": "srpnet.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.ssfcu.org": "ssfcu.org.data.adobedc.net",
+  "smetrics.stanfordhealthcare.org": "stanfordhealthcare.org.102.122.2o7.net",
+  "smetrics.staples.com": "staples.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.staplesadvantage.com": "staplesadvantage.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.starhub.com": "starhub.com.ssl.sc.omtrdc.net",
+  "smetrics.stark.dk": "stark.dk.ssl.sc.omtrdc.net",
+  "smetrics.startribune.com": "startribune.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.starwoodhotels.com": "starwoodhotels.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.statefarm.com": "statefarm.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.statnews.com": "statnews.com.ssl.sc.omtrdc.net",
+  "smetrics.stgeorge.com.au": "stgeorge.com.au.ssl.sc.omtrdc.net",
+  "smetrics.strokeawareness.com": "strokeawareness.com.ssl.sc.omtrdc.net",
+  "smetrics.stwater.co.uk": "stwater.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.sumitclub.jp": "sumitclub.jp.ssl.sc.omtrdc.net",
+  "smetrics.suncorp.com.au": "suncorp.com.au.ssl.sc.omtrdc.net",
+  "smetrics.sunglasshut.com": "sunglasshut.com.ssl.sc.omtrdc.net",
+  "smetrics.sunlife.ca": "sunlife.ca.ssl.sc.omtrdc.net",
+  "smetrics.sunlife.com": "sunlife.com.ssl.sc.omtrdc.net",
+  "smetrics.sunlifeglobalinvestments.com": "sunlifeglobalinvestments.com.ssl.sc.omtrdc.net",
+  "smetrics.sunshinehealth.com": "sunshinehealth.com.ssl.sc.omtrdc.net",
+  "smetrics.supercuts.com": "supercuts.com.ssl.sc.omtrdc.net",
+  "smetrics.superiorhealthplan.com": "superiorhealthplan.com.ssl.sc.omtrdc.net",
+  "smetrics.suunto.com": "suunto.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.svd.se": "svd.se.ssl.sc.omtrdc.net",
+  "smetrics.swinburne.edu.au": "swinburne.edu.au.ssl.sc.omtrdc.net",
+  "smetrics.switch2t-mobile.com": "switch2t-mobile.com.data.adobedc.net",
+  "smetrics.sympany.ch": "sympany.ch.ssl.sc.omtrdc.net",
+  "smetrics.synergy.net.au": "synergy.net.au.ssl.sc.omtrdc.net",
+  "smetrics.synopsys.com": "synopsys.com.ssl.sc.omtrdc.net",
+  "smetrics.t-mobile.com": "t-mobile.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.t-mobilemoney.com": "t-mobilemoney.com.ssl.sc.omtrdc.net",
+  "smetrics.tab.com.au": "tab.com.au.ssl.sc.omtrdc.net",
+  "smetrics.tabletable.co.uk": "tabletable.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.takami-labo.com": "takami-labo.com.ssl.sc.omtrdc.net",
+  "smetrics.talbots.com": "talbots.com.ssl.sc.omtrdc.net",
+  "smetrics.target.com": "target.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.tarrantcounty.com": "tarrantcounty.com.data.adobedc.net",
+  "smetrics.tataaig.com": "tataaig.com.ssl.sc.omtrdc.net",
+  "smetrics.taylors.edu.my": "taylors.edu.my.data.adobedc.net",
+  "smetrics.tcs.com": "tcs.com.ssl.sc.omtrdc.net",
+  "smetrics.tdc.dk": "tdc.dk.102.112.2o7.net",
+  "smetrics.te.com": "te.com.ssl.sc.omtrdc.net",
+  "smetrics.teambeachbody.com": "teambeachbody.com.102.122.2o7.net",
+  "smetrics.teampages.com": "teampages.com.ssl.sc.omtrdc.net",
+  "smetrics.tecentriq-hcp.com": "tecentriq-hcp.com.ssl.sc.omtrdc.net",
+  "smetrics.tecentriq.com": "tecentriq.com.ssl.sc.omtrdc.net",
+  "smetrics.tedbaker.com": "tedbaker.com.ssl.sc.omtrdc.net",
+  "smetrics.telegraph.co.uk": "telegraph.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.telenet.be": "telenet.be.ssl.sc.omtrdc.net",
+  "smetrics.teletoon.com": "teletoon.com.data.adobedc.net",
+  "smetrics.tesco.com": "tesco.com.ssl.sc.omtrdc.net",
+  "smetrics.tescobank.com": "tescobank.com.102.122.2o7.net",
+  "smetrics.textbooks.com": "textbooks.com.ssl.sc.omtrdc.net",
+  "smetrics.tfl.gov.uk": "tfl.gov.uk.ssl.sc.omtrdc.net",
+  "smetrics.tgw.com": "tgw.com.102.122.2o7.net",
+  "smetrics.theathletesfoot.com.au": "theathletesfoot.com.au.ssl.sc.omtrdc.net",
+  "smetrics.thebay.com": "thebay.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.thelawyer.com": "thelawyer.com.102.122.2o7.net",
+  "smetrics.thespacecinema.it": "thespacecinema.it.ssl.sc.omtrdc.net",
+  "smetrics.thetruth.com": "thetruth.com.ssl.sc.omtrdc.net",
+  "smetrics.thewhitecompany.com": "thewhitecompany.com.ssl.sc.omtrdc.net",
+  "smetrics.thewolf.ca": "thewolf.ca.ssl.sc.omtrdc.net",
+  "smetrics.thingspeak.com": "thingspeak.com.ssl.sc.omtrdc.net",
+  "smetrics.thoughtworks.com": "thoughtworks.com.data.adobedc.net",
+  "smetrics.three.co.uk": "three.co.uk.ssl.d2.sc.omtrdc.net",
+  "smetrics.three.ie": "three.ie.ssl.d3.sc.omtrdc.net",
+  "smetrics.thrivent.com": "thrivent.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.tiaa-cref.org": "tiaa-cref.org.ssl.d2.sc.omtrdc.net",
+  "smetrics.tiaa.org": "tiaa.org.ssl.sc.omtrdc.net",
+  "smetrics.ticket.dk": "ticket.dk.ssl.d2.sc.omtrdc.net",
+  "smetrics.ticket.no": "ticket.no.ssl.d2.sc.omtrdc.net",
+  "smetrics.ticket.se": "ticket.se.ssl.d2.sc.omtrdc.net",
+  "smetrics.ticketmaster.com": "ticketmaster.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.ticketsatwork.com": "ticketsatwork.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.tienda.telcel.com": "tienda.telcel.com.ssl.sc.omtrdc.net",
+  "smetrics.tiendamonge.com": "tiendamonge.com.data.adobedc.net",
+  "smetrics.tiffany.com.br": "tiffany.com.br.ssl.sc.omtrdc.net",
+  "smetrics.tiffany.com.mx": "tiffany.com.mx.ssl.sc.omtrdc.net",
+  "smetrics.tiffany.kr": "tiffany.kr.ssl.sc.omtrdc.net",
+  "smetrics.tiffany.ru": "tiffany.ru.ssl.sc.omtrdc.net",
+  "smetrics.tila.com": "tila.com.ssl.sc.omtrdc.net",
+  "smetrics.timberland.com": "timberland.com.102.112.2o7.net",
+  "smetrics.time.com": "time.com.ssl.sc.omtrdc.net",
+  "smetrics.timeout.com": "timeout.com.ssl.sc.omtrdc.net",
+  "smetrics.tirebusiness.com": "tirebusiness.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.tmz.com": "tmz.com.ssl.sc.omtrdc.net",
+  "smetrics.tnkase.com": "tnkase.com.ssl.sc.omtrdc.net",
+  "smetrics.tomjoule.de": "tomjoule.de.ssl.sc.omtrdc.net",
+  "smetrics.tommy.com": "tommy.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.tommybahama.com": "tommybahama.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.toofab.com": "toofab.com.ssl.sc.omtrdc.net",
+  "smetrics.toolbox.inter-ikea.com": "toolbox.inter-ikea.com.ssl.sc.omtrdc.net",
+  "smetrics.totalwine.com": "totalwine.com.ssl.sc.omtrdc.net",
+  "smetrics.toyota.com": "toyota.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.toyotaonthepark.ca": "toyotaonthepark.ca.data.adobedc.net",
+  "smetrics.tractorsupply.com": "tractorsupply.com.ssl.sc.omtrdc.net",
+  "smetrics.traderonline.com": "traderonline.com.ssl.sc.omtrdc.net",
+  "smetrics.traegergrills.com": "traegergrills.com.ssl.sc.omtrdc.net",
+  "smetrics.transact711.com": "transact711.com.data.adobedc.net",
+  "smetrics.travelchannel.com": "travelchannel.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.travelmoneyonline.co.uk": "travelmoneyonline.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.travelzoo.com": "travelzoo.com.data.adobedc.net",
+  "smetrics.trendyol.com": "trendyol.com.ssl.ldc.d3.sc.omtrdc.net",
+  "smetrics.truffaut.com": "truffaut.com.ssl.sc.omtrdc.net",
+  "smetrics.truthinitiative.org": "truthinitiative.org.ssl.sc.omtrdc.net",
+  "smetrics.tryg.dk": "tryg.dk.ssl.sc.omtrdc.net",
+  "smetrics.trygghansa.se": "trygghansa.se.ssl.sc.omtrdc.net",
+  "smetrics.ttiinc.com": "ttiinc.com.ssl.sc.omtrdc.net",
+  "smetrics.tudorwatch.com": "tudorwatch.com.ssl.sc.omtrdc.net",
+  "smetrics.tunegocioenserio.com": "tunegocioenserio.com.data.adobedc.net",
+  "smetrics.tv2.dk": "tv2.dk.ssl.sc.omtrdc.net",
+  "smetrics.tyro.com": "tyro.com.data.adobedc.net",
+  "smetrics.tysonfoodservice.com": "tysonfoodservice.com.data.adobedc.net",
+  "smetrics.u-can.co.jp": "u-can.co.jp.ssl.sc.omtrdc.net",
+  "smetrics.ubi.com": "ubi.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.uhc.com": "uhc.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.unipolsai.it": "unipolsai.it.ssl.sc.omtrdc.net",
+  "smetrics.upc.ch": "upc.ch.ssl.sc.omtrdc.net",
+  "smetrics.ups.com": "ups.com.ssl.sc.omtrdc.net",
+  "smetrics.us.playstation.com": "us.playstation.com.102.122.2o7.net",
+  "smetrics.usbank.com": "usbank.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.usopen.org": "usopen.org.ssl.sc.omtrdc.net",
+  "smetrics.v.vodafone.com": "v.vodafone.com.ssl.sc.omtrdc.net",
+  "smetrics.vcm.com": "vcm.com.ssl.sc.omtrdc.net",
+  "smetrics.venclextahcp.com": "venclextahcp.com.ssl.sc.omtrdc.net",
+  "smetrics.verisign.com": "verisign.com.data.adobedc.net",
+  "smetrics.vermontcountrystore.com": "vermontcountrystore.com.102.112.2o7.net",
+  "smetrics.vermontcreamery.com": "vermontcreamery.com.ssl.sc.omtrdc.net",
+  "smetrics.vero.co.nz": "vero.co.nz.ssl.sc.omtrdc.net",
+  "smetrics.vetmedin.ru": "vetmedin.ru.data.adobedc.net",
+  "smetrics.viasat.com": "viasat.com.ssl.sc.omtrdc.net",
+  "smetrics.viceroyhotelsandresorts.com": "viceroyhotelsandresorts.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.viega.com": "viega.com.data.adobedc.net",
+  "smetrics.viega.de": "viega.de.data.adobedc.net",
+  "smetrics.viewtabi.jp": "viewtabi.jp.ssl.sc.omtrdc.net",
+  "smetrics.vikingline.ee": "vikingline.ee.data.adobedc.net",
+  "smetrics.vikingline.fi": "vikingline.fi.data.adobedc.net",
+  "smetrics.vikingline.ru": "vikingline.ru.data.adobedc.net",
+  "smetrics.vikingline.se": "vikingline.se.data.adobedc.net",
+  "smetrics.virginatlantic.com": "virginatlantic.com.ssl.sc.omtrdc.net",
+  "smetrics.virginmediabusiness.co.uk": "virginmediabusiness.co.uk.ssl.sc.omtrdc.net",
+  "smetrics.virginmoney.com.au": "virginmoney.com.au.ssl.d2.sc.omtrdc.net",
+  "smetrics.virtual-cosme.net": "virtual-cosme.net.ssl.sc.omtrdc.net",
+  "smetrics.visitsingapore.com": "visitsingapore.com.ssl.sc.omtrdc.net",
+  "smetrics.vitacost.com": "vitacost.com.ssl.sc.omtrdc.net",
+  "smetrics.vitamix.com": "vitamix.com.ssl.sc.omtrdc.net",
+  "smetrics.vodafone.co.uk": "vodafone.co.uk.ssl.d2.sc.omtrdc.net",
+  "smetrics.vodafone.com.gh": "vodafone.com.gh.ssl.sc.omtrdc.net",
+  "smetrics.vodafone.com.tr": "vodafone.com.tr.ssl.d2.sc.omtrdc.net",
+  "smetrics.vodafone.es": "vodafone.es.ssl.sc.omtrdc.net",
+  "smetrics.vodafone.gr": "vodafone.gr.ssl.sc.omtrdc.net",
+  "smetrics.vodafone.in": "vodafone.in.ssl.sc.omtrdc.net",
+  "smetrics.vodafone.qa": "vodafone.qa.ssl.sc.omtrdc.net",
+  "smetrics.vodafone.ro": "vodafone.ro.ssl.sc.omtrdc.net",
+  "smetrics.vodafonecu.gr": "vodafonecu.gr.ssl.sc.omtrdc.net",
+  "smetrics.vogue-eyewear.com": "vogue-eyewear.com.ssl.sc.omtrdc.net",
+  "smetrics.vonage.com": "vonage.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.vonageforhome.com": "vonageforhome.com.ssl.sc.omtrdc.net",
+  "smetrics.vueling.com": "vueling.com.102.112.2o7.net",
+  "smetrics.vw.com": "vw.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.vwfs.cz": "vwfs.cz.data.adobedc.net",
+  "smetrics.vwfs.de": "vwfs.de.data.adobedc.net",
+  "smetrics.vwfs.gr": "vwfs.gr.data.adobedc.net",
+  "smetrics.vwfs.it": "vwfs.it.data.adobedc.net",
+  "smetrics.walgreens.com": "walgreens.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.walmart.com": "walmart.com.102.112.2o7.net",
+  "smetrics.waseda-ac.co.jp": "waseda-ac.co.jp.ssl.sc.omtrdc.net",
+  "smetrics.washingtonpost.com": "washingtonpost.com.102.112.2o7.net",
+  "smetrics.watch.nba.com": "watch.nba.com.ssl.sc.omtrdc.net",
+  "smetrics.waterlooford.com": "waterlooford.com.ssl.sc.omtrdc.net",
+  "smetrics.waters.com": "waters.com.ssl.sc.omtrdc.net",
+  "smetrics.watsonfantasyfootball.com": "watsonfantasyfootball.com.ssl.sc.omtrdc.net",
+  "smetrics.webex.com": "webex.com.ssl.sc.omtrdc.net",
+  "smetrics.wegmans.com": "wegmans.com.ssl.sc.omtrdc.net",
+  "smetrics.westelm.com": "westelm.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.westernunion.com": "westernunion.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.westgateresorts.com": "westgateresorts.com.ssl.sc.omtrdc.net",
+  "smetrics.westpac.com.au": "westpac.com.au.ssl.d2.sc.omtrdc.net",
+  "smetrics.westpacgroup.com.au": "westpacgroup.com.au.ssl.sc.omtrdc.net",
+  "smetrics.wgu.edu": "wgu.edu.ssl.sc.omtrdc.net",
+  "smetrics.wholesaleclub.ca": "wholesaleclub.ca.ssl.sc.omtrdc.net",
+  "smetrics.williamhill.com": "williamhill.com.ssl.d3.sc.omtrdc.net",
+  "smetrics.williams-sonoma.com": "williams-sonoma.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.wilson.com": "wilson.com.ssl.d2.sc.omtrdc.net",
+  "smetrics.wimbledon.com": "wimbledon.com.102.122.2o7.net",
+  "smetrics.winc.com.au": "winc.com.au.ssl.sc.omtrdc.net",
+  "smetrics.winfieldunited.com": "winfieldunited.com.ssl.sc.omtrdc.net",
+  "smetrics.wm.com": "wm.com.102.122.2o7.net",
+  "smetrics.wmg.com": "wmg.com.ssl.sc.omtrdc.net",
+  "smetrics.wnba.com": "wnba.com.102.112.2o7.net",
+  "smetrics.wnetwork.com": "wnetwork.com.ssl.sc.omtrdc.net",
+  "smetrics.womensecret.com": "womensecret.com.ssl.sc.omtrdc.net",
+  "smetrics.workfront.com": "workfront.com.ssl.sc.omtrdc.net",
+  "smetrics.workingadvantage.com": "workingadvantage.com.ssl.sc.omtrdc.net",
+  "smetrics.worldbank.org": "worldbank.org.ssl.sc.omtrdc.net",
+  "smetrics.worldmarket.com": "worldmarket.com.ssl.d1.sc.omtrdc.net",
+  "smetrics.wunetspendprepaid.com": "wunetspendprepaid.com.data.adobedc.net",
+  "smetrics.wyndhamhotels.com": "wyndhamhotels.com.ssl.sc.omtrdc.net",
+  "smetrics.yaencontre.com": "yaencontre.com.data.adobedc.net",
+  "smetrics.ybs.co.uk": "ybs.co.uk.102.112.2o7.net",
+  "smetrics.yellowpages.com.au": "yellowpages.com.au.ssl.sc.omtrdc.net",
+  "smetrics.yourindependentgrocer.ca": "yourindependentgrocer.ca.ssl.sc.omtrdc.net",
+  "smetrics.zales.com": "zales.com.ssl.sc.omtrdc.net",
+  "smetrics.zehrs.ca": "zehrs.ca.ssl.sc.omtrdc.net",
+  "smetrics.zexy-en-soudan.net": "zexy-en-soudan.net.ssl.sc.omtrdc.net",
+  "smetrics.zexy-enmusubi.net": "zexy-enmusubi.net.ssl.sc.omtrdc.net",
+  "smetrics.ziplyfiber.com": "ziplyfiber.com.ssl.sc.omtrdc.net",
+  "smetrics.zurichlife.co.jp": "zurichlife.co.jp.ssl.sc.omtrdc.net",
+  "smetrics1.experian.com": "experian.com.ssl.sc.omtrdc.net",
+  "smetricstur.www.svenskaspel.se": "www.svenskaspel.se.ssl.sc.omtrdc.net",
+  "smetrix.avon.uk.com": "avon.uk.com.102.112.2o7.net",
+  "smetrix.youravon.com": "youravon.com.ssl.sc.omtrdc.net",
+  "sminerva.healthcentral.com": "healthcentral.com.102.112.2o7.net",
+  "smodus.nike.com": "nike.com.ssl.sc.omtrdc.net",
+  "smon.congress.gov": "congress.gov.ssl.sc.omtrdc.net",
+  "smon.loc.gov": "loc.gov.ssl.sc.omtrdc.net",
+  "smr.nuro.jp": "sonysonet.112.2o7.net",
+  "smtc.jetstar.com": "jetstar.com.ssl.sc.omtrdc.net",
+  "smtc.qantas.com": "qantas.com.ssl.sc.omtrdc.net",
+  "smtc.qantas.com.au": "qantas.com.au.ssl.sc.omtrdc.net",
+  "smtx.belfius.be": "belfius.be.ssl.sc.omtrdc.net",
+  "smy.iheart.com": "iheart.com.ssl.sc.omtrdc.net",
+  "snalytics.allianz-voyage.fr": "allianz-voyage.fr.data.adobedc.net",
+  "so.opentable.com": "opentable.com.102.112.2o7.net",
+  "so.swisscom.ch": "swisscom.ch.ssl.sc.omtrdc.net",
+  "so8.hyatt.com": "hyatt.com.ssl.d1.sc.omtrdc.net",
+  "som.cbsi.com": "cbsi.com.ssl.d2.sc.omtrdc.net",
+  "som.healthgrades.com": "healthgrades.com.102.112.2o7.net",
+  "som.hotels.com": "hotels.com.102.112.2o7.net",
+  "som.hotwire.com": "hotwire.com.ssl.sc.omtrdc.net",
+  "som.kmart.com": "kmart.com.ssl.d1.sc.omtrdc.net",
+  "som.ringcentral.com": "ringcentral.com.ssl.sc.omtrdc.net",
+  "som.sears.com": "sears.com.ssl.d1.sc.omtrdc.net",
+  "sometrics.netapp.com": "netapp.com.ssl.sc.omtrdc.net",
+  "somn.sonypictures.com": "sonypictures.com.102.112.2o7.net",
+  "somni.accenture.com": "accenture.com.ssl.sc.omtrdc.net",
+  "somni.alaskaair.com": "alaskaair.com.ssl.d1.sc.omtrdc.net",
+  "somni.amsurg.com": "amsurg.com.102.122.2o7.net",
+  "somni.australia.com": "australia.com.ssl.sc.omtrdc.net",
+  "somni.bcg.com": "bcg.com.ssl.sc.omtrdc.net",
+  "somni.bluecrossma.com": "bluecrossma.com.ssl.sc.omtrdc.net",
+  "somni.bostonpizza.com": "bostonpizza.com.ssl.sc.omtrdc.net",
+  "somni.campaigns.home.saxo": "campaigns.home.saxo.ssl.sc.omtrdc.net",
+  "somni.carecredit.com": "carecredit.com.data.adobedc.net",
+  "somni.choicehotels.com": "choicehotels.com.ssl.sc.omtrdc.net",
+  "somni.cineplex.com": "cineplex.com.102.122.2o7.net",
+  "somni.cn.saxobank.com": "cn.saxobank.com.ssl.sc.omtrdc.net",
+  "somni.deere.com": "deere.com.ssl.sc.omtrdc.net",
+  "somni.djoglobal.com": "djoglobal.com.ssl.sc.omtrdc.net",
+  "somni.dsw.com": "dsw.com.ssl.sc.omtrdc.net",
+  "somni.dxc.technology": "dxc.technology.ssl.sc.omtrdc.net",
+  "somni.hardrockhotels.com": "hardrockhotels.com.ssl.sc.omtrdc.net",
+  "somni.home.saxo": "home.saxo.ssl.sc.omtrdc.net",
+  "somni.huk.de": "huk.de.ssl.sc.omtrdc.net",
+  "somni.huk24.de": "huk24.de.ssl.sc.omtrdc.net",
+  "somni.icicihfc.com": "icicihfc.com.ssl.sc.omtrdc.net",
+  "somni.lightstream.com": "lightstream.com.ssl.sc.omtrdc.net",
+  "somni.mysynchrony.com": "mysynchrony.com.data.adobedc.net",
+  "somni.neighbourly.co.nz": "neighbourly.co.nz.ssl.sc.omtrdc.net",
+  "somni.nine.com.au": "nine.com.au.ssl.sc.omtrdc.net",
+  "somni.ninemsn.com.au": "ninemsn.com.au.102.112.2o7.net",
+  "somni.orvis.com": "orvis.com.ssl.sc.omtrdc.net",
+  "somni.pluralsight.com": "pluralsight.com.data.adobedc.net",
+  "somni.quickenloans.com": "quickenloans.com.ssl.d2.sc.omtrdc.net",
+  "somni.rei.com": "rei.com.ssl.d2.sc.omtrdc.net",
+  "somni.rocketaccount.com": "rocketaccount.com.data.adobedc.net",
+  "somni.rockethomes.com": "rockethomes.com.ssl.sc.omtrdc.net",
+  "somni.rocketmortgage.com": "rocketmortgage.com.ssl.sc.omtrdc.net",
+  "somni.sbicard.com": "sbicard.com.ssl.sc.omtrdc.net",
+  "somni.sbimobility.com": "sbimobility.com.ssl.sc.omtrdc.net",
+  "somni.silversea.com": "silversea.com.ssl.sc.omtrdc.net",
+  "somni.sky.de": "sky.de.ssl.d2.sc.omtrdc.net",
+  "somni.sundancecatalog.com": "sundancecatalog.com.ssl.sc.omtrdc.net",
+  "somni.suntrust.com": "suntrust.com.ssl.sc.omtrdc.net",
+  "somni.syf.com": "syf.com.data.adobedc.net",
+  "somni.synchrony.com": "synchrony.com.data.adobedc.net",
+  "somni.synchronybank.com": "synchronybank.com.data.adobedc.net",
+  "somni.tatacard.com": "tatacard.com.ssl.sc.omtrdc.net",
+  "somni.therecroom.com": "therecroom.com.ssl.sc.omtrdc.net",
+  "somni.thermofisher.com": "thermofisher.com.ssl.d2.sc.omtrdc.net",
+  "somni.turkcell.com.tr": "turkcell.com.tr.ssl.d3.sc.omtrdc.net",
+  "somni.vikingrivercruises.com": "vikingrivercruises.com.102.112.2o7.net",
+  "somnistats.jetblue.com": "jetblue.com.ssl.d1.sc.omtrdc.net",
+  "somnit.blinkfitness.com": "blinkfitness.com.ssl.sc.omtrdc.net",
+  "somniture.bestcheck.de": "bestcheck.de.ssl.sc.omtrdc.net",
+  "somniture.chip.de": "chip.de.ssl.sc.omtrdc.net",
+  "somniture.compactappliance.com": "compactappliance.com.ssl.sc.omtrdc.net",
+  "somniture.edgestar.com": "edgestar.com.ssl.sc.omtrdc.net",
+  "somniture.faucetdirect.com": "faucetdirect.com.ssl.d1.sc.omtrdc.net",
+  "somniture.lightingdirect.com": "lightingdirect.com.ssl.d1.sc.omtrdc.net",
+  "somniture.pullsdirect.com": "pullsdirect.com.ssl.d1.sc.omtrdc.net",
+  "somniture.scotiabank.com": "scotiabank.com.ssl.sc.omtrdc.net",
+  "somniture.stuff.co.nz": "stuff.co.nz.ssl.d1.sc.omtrdc.net",
+  "somniture.yodlee.com": "yodlee.com.102.122.2o7.net",
+  "somt.honda.com": "honda.com.ssl.sc.omtrdc.net",
+  "somtr.financialengines.com": "financialengines.com.102.122.2o7.net",
+  "somtrdc.jobsdb.com": "jobsdb.com.ssl.sc.omtrdc.net",
+  "somtrdc.jobstreet.co.id": "jobstreet.co.id.ssl.sc.omtrdc.net",
+  "somtrdc.jobstreet.com": "jobstreet.com.ssl.d1.sc.omtrdc.net",
+  "somtrdc.jobstreet.com.my": "jobstreet.com.my.ssl.sc.omtrdc.net",
+  "somtrdc.jobstreet.com.ph": "jobstreet.com.ph.ssl.sc.omtrdc.net",
+  "somtrdc.jobstreet.com.sg": "jobstreet.com.sg.ssl.sc.omtrdc.net",
+  "sonyglobal.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "sosc.hrs.com": "hrs.com.ssl.d2.sc.omtrdc.net",
+  "sowa.carhartt.com": "carhartt.com.102.112.2o7.net",
+  "spscas.hitachi-solutions.co.jp": "hitachi-solutions.co.jp.102.122.2o7.net",
+  "srepdata.app.com": "app.com.ssl.d1.sc.omtrdc.net",
+  "srepdata.freep.com": "freep.com.ssl.sc.omtrdc.net",
+  "srepdata.hawkcentral.com": "hawkcentral.com.ssl.sc.omtrdc.net",
+  "srepdata.montgomeryadvertiser.com": "montgomeryadvertiser.com.ssl.d1.sc.omtrdc.net",
+  "srepdata.northjersey.com": "northjersey.com.ssl.sc.omtrdc.net",
+  "srepdata.packersnews.com": "packersnews.com.ssl.d1.sc.omtrdc.net",
+  "srepdata.rgj.com": "rgj.com.ssl.d1.sc.omtrdc.net",
+  "srepdata.statesmanjournal.com": "statesmanjournal.com.ssl.d1.sc.omtrdc.net",
+  "srepdata.tennessean.com": "tennessean.com.ssl.d1.sc.omtrdc.net",
+  "srepdata.usatoday.com": "usatoday.com.ssl.sc.omtrdc.net",
+  "srepdata.vcstar.com": "vcstar.com.ssl.sc.omtrdc.net",
+  "srepdata.wausaudailyherald.com": "wausaudailyherald.com.ssl.d1.sc.omtrdc.net",
+  "srepdata.zanesvilletimesrecorder.com": "zanesvilletimesrecorder.com.ssl.d1.sc.omtrdc.net",
+  "sreport.mitsubishicars.com": "mitsubishicars.com.ssl.d1.sc.omtrdc.net",
+  "ssa.asianfoodnetwork.com": "asianfoodnetwork.com.ssl.sc.omtrdc.net",
+  "ssa.cookingchanneltv.com": "cookingchanneltv.com.ssl.d1.sc.omtrdc.net",
+  "ssa.discovery.com": "discovery.com.ssl.sc.omtrdc.net",
+  "ssa.discoveryplus.com": "discoveryplus.com.data.adobedc.net",
+  "ssa.discoveryplus.in": "discoveryplus.in.ssl.sc.omtrdc.net",
+  "ssa.discoveryrise.org": "discoveryrise.org.ssl.sc.omtrdc.net",
+  "ssa.diynetwork.com": "diynetwork.com.ssl.sc.omtrdc.net",
+  "ssa.eurosport.co.uk": "eurosport.co.uk.data.adobedc.net",
+  "ssa.eurosport.com": "eurosport.com.data.adobedc.net",
+  "ssa.eurosport.cz": "eurosport.cz.data.adobedc.net",
+  "ssa.eurosport.de": "eurosport.de.data.adobedc.net",
+  "ssa.eurosport.dk": "eurosport.dk.data.adobedc.net",
+  "ssa.eurosport.es": "eurosport.es.data.adobedc.net",
+  "ssa.eurosport.fr": "eurosport.fr.data.adobedc.net",
+  "ssa.eurosport.hu": "eurosport.hu.data.adobedc.net",
+  "ssa.eurosport.it": "eurosport.it.data.adobedc.net",
+  "ssa.eurosport.nl": "eurosport.nl.data.adobedc.net",
+  "ssa.eurosport.no": "eurosport.no.data.adobedc.net",
+  "ssa.eurosport.pl": "eurosport.pl.data.adobedc.net",
+  "ssa.eurosport.pt": "eurosport.pt.data.adobedc.net",
+  "ssa.eurosport.ro": "eurosport.ro.data.adobedc.net",
+  "ssa.eurosport.ru": "eurosport.ru.data.adobedc.net",
+  "ssa.eurosportplayer.com": "eurosportplayer.com.data.adobedc.net",
+  "ssa.food.com": "food.com.ssl.d1.sc.omtrdc.net",
+  "ssa.foodnetwork.com": "foodnetwork.com.ssl.d1.sc.omtrdc.net",
+  "ssa.hgtv.com": "hgtv.com.ssl.d1.sc.omtrdc.net",
+  "ssa.tlc.com": "tlc.com.ssl.sc.omtrdc.net",
+  "ssc.bet.plus": "bet.plus.ssl.sc.omtrdc.net",
+  "ssc.cc.com": "cc.com.ssl.sc.omtrdc.net",
+  "ssc.cmt.com": "cmt.com.ssl.sc.omtrdc.net",
+  "ssc.cvent.com": "cvent.com.102.112.2o7.net",
+  "ssc.dengiamerika.com": "dengiamerika.com.data.adobedc.net",
+  "ssc.disneylandparis.com": "disneylandparis.com.102.112.2o7.net",
+  "ssc.hl.co.uk": "hl.co.uk.ssl.ldc.d3.sc.omtrdc.net",
+  "ssc.independent.co.uk": "independent.co.uk.ssl.sc.omtrdc.net",
+  "ssc.mtv.com": "mtv.com.ssl.sc.omtrdc.net",
+  "ssc.mtv.it": "mtv.it.data.adobedc.net",
+  "ssc.mtv.nl": "mtv.nl.data.adobedc.net",
+  "ssc.mtvjapan.com": "mtvjapan.com.data.adobedc.net",
+  "ssc.muji.net": "muji.net.ssl.d2.sc.omtrdc.net",
+  "ssc.newnownext.com": "newnownext.com.ssl.sc.omtrdc.net",
+  "ssc.nick.com": "nick.com.ssl.sc.omtrdc.net",
+  "ssc.nickjr.com": "nickjr.com.ssl.sc.omtrdc.net",
+  "ssc.nwf.org": "nwf.org.102.112.2o7.net",
+  "ssc.paramountnetwork.com": "paramountnetwork.com.ssl.sc.omtrdc.net",
+  "ssc.smithsonianchannel.com": "smithsonianchannel.com.data.adobedc.net",
+  "ssc.smithsonianchannellatam.com": "smithsonianchannellatam.com.data.adobedc.net",
+  "ssc.sonystyle.com.cn": "sonystyle.com.cn.ssl.sc.omtrdc.net",
+  "ssc.southpark.de": "southpark.de.ssl.sc.omtrdc.net",
+  "ssc.southpark.lat": "southpark.lat.ssl.sc.omtrdc.net",
+  "ssc.southparkstudios.com": "southparkstudios.com.ssl.sc.omtrdc.net",
+  "ssc.southparkstudios.com.br": "southparkstudios.com.br.ssl.sc.omtrdc.net",
+  "ssc.southparkstudios.nu": "southparkstudios.nu.ssl.sc.omtrdc.net",
+  "ssc.standard.co.uk": "standard.co.uk.102.122.2o7.net",
+  "ssc.vh1.com": "vh1.com.ssl.sc.omtrdc.net",
+  "ssc.vmware.com": "vmware.com.ssl.d2.sc.omtrdc.net",
+  "ssdc.bawag.com": "bawag.com.102.122.2o7.net",
+  "ssite.johnlewis.com": "johnlewis.com.102.112.2o7.net",
+  "ssite.waitrose.com": "waitrose.com.102.112.2o7.net",
+  "ssitecat.eset.com": "eset.com.ssl.sc.omtrdc.net",
+  "ssitectlyst.saksfifthavenue.com": "saksfifthavenue.com.ssl.sc.omtrdc.net",
+  "ssl-metrics.tim.it": "tim.it.ssl.d2.sc.omtrdc.net",
+  "ssl.aafp.org": "aafp.org.102.122.2o7.net",
+  "ssl.o.auspost.com.au": "o.auspost.com.au.ssl.d2.sc.omtrdc.net",
+  "ssl.o.emedicinehealth.com": "o.emedicinehealth.com.ssl.sc.omtrdc.net",
+  "ssl.o.mdedge.com": "o.mdedge.com.ssl.sc.omtrdc.net",
+  "ssl.o.medhelp.org": "o.medhelp.org.ssl.sc.omtrdc.net",
+  "ssl.o.medicinenet.com": "o.medicinenet.com.ssl.sc.omtrdc.net",
+  "ssl.o.medscape.com": "o.medscape.com.ssl.sc.omtrdc.net",
+  "ssl.o.medscape.org": "o.medscape.org.ssl.sc.omtrdc.net",
+  "ssl.o.onhealth.com": "o.onhealth.com.ssl.sc.omtrdc.net",
+  "ssl.o.qxmd.com": "o.qxmd.com.ssl.sc.omtrdc.net",
+  "ssl.o.rxlist.com": "o.rxlist.com.ssl.sc.omtrdc.net",
+  "ssl.o.the-hospitalist.org": "o.the-hospitalist.org.ssl.sc.omtrdc.net",
+  "ssl.o.univadis.co.uk": "o.univadis.co.uk.ssl.sc.omtrdc.net",
+  "ssl.o.univadis.com": "o.univadis.com.ssl.sc.omtrdc.net",
+  "ssl.o.univadis.es": "o.univadis.es.ssl.sc.omtrdc.net",
+  "ssl.o.univadis.it": "o.univadis.it.ssl.sc.omtrdc.net",
+  "ssl.o.vitals.com": "o.vitals.com.ssl.sc.omtrdc.net",
+  "ssl.o.webmd.com": "o.webmd.com.ssl.d2.sc.omtrdc.net",
+  "ssl.sc.amc.devk.de": "sc.amc.devk.de.ssl.ldc.d3.sc.omtrdc.net",
+  "sslstats.canadapost.ca": "canadapost.ca.ssl.d1.sc.omtrdc.net",
+  "sslstats.worldagentdirect.com": "worldagentdirect.com.102.122.2o7.net",
+  "ssmr.nuro.jp": "nuro.jp.ssl.d1.sc.omtrdc.net",
+  "ssmr.so-net.ne.jp": "so-net.ne.jp.ssl.d1.sc.omtrdc.net",
+  "ssmr2.so-net.ne.jp": "so-net.ne.jp.ssl.sc.omtrdc.net",
+  "sstat.jetsetter.com": "jetsetter.com.102.112.2o7.net",
+  "sstatistikk.telenor.no": "telenor.no.ssl.d1.sc.omtrdc.net",
+  "sstats.adobe.com": "adobe.com.ssl.d1.sc.omtrdc.net",
+  "sstats.adultswim.com": "adultswim.com.102.122.2o7.net",
+  "sstats.alfa.com": "alfa.com.ssl.sc.omtrdc.net",
+  "sstats.allure.com": "allure.com.ssl.sc.omtrdc.net",
+  "sstats.americafirst.com": "americafirst.com.ssl.sc.omtrdc.net",
+  "sstats.architecturaldigest.com": "architecturaldigest.com.ssl.sc.omtrdc.net",
+  "sstats.asadventure.com": "asadventure.com.ssl.sc.omtrdc.net",
+  "sstats.asadventure.fr": "asadventure.fr.ssl.sc.omtrdc.net",
+  "sstats.asadventure.lu": "asadventure.lu.ssl.sc.omtrdc.net",
+  "sstats.asadventure.nl": "asadventure.nl.ssl.sc.omtrdc.net",
+  "sstats.backcountry.com": "backcountry.com.ssl.sc.omtrdc.net",
+  "sstats.bbt.com": "bbt.com.ssl.sc.omtrdc.net",
+  "sstats.belgiantrain.be": "belgiantrain.be.data.adobedc.net",
+  "sstats.bever.nl": "bever.nl.ssl.sc.omtrdc.net",
+  "sstats.bitdefender.com": "bitdefender.com.ssl.sc.omtrdc.net",
+  "sstats.bnpparibasfortis.be": "bnpparibasfortis.be.ssl.sc.omtrdc.net",
+  "sstats.bonappetit.com": "bonappetit.com.ssl.sc.omtrdc.net",
+  "sstats.bookingbuddy.com": "bookingbuddy.com.ssl.sc.omtrdc.net",
+  "sstats.build.com": "build.com.ssl.d1.sc.omtrdc.net",
+  "sstats.cartoonnetwork.com": "cartoonnetwork.com.102.122.2o7.net",
+  "sstats.celcom.com.my": "celcom.com.my.data.adobedc.net",
+  "sstats.cengagebrain.com": "data.102.112.2o7.net",
+  "sstats.cntraveler.com": "cntraveler.com.ssl.d1.sc.omtrdc.net",
+  "sstats.competitivecyclist.com": "competitivecyclist.com.ssl.sc.omtrdc.net",
+  "sstats.condenast.com": "condenast.com.ssl.sc.omtrdc.net",
+  "sstats.coop.dk": "coop.dk.ssl.sc.omtrdc.net",
+  "sstats.cotswoldoutdoor.com": "cotswoldoutdoor.com.ssl.sc.omtrdc.net",
+  "sstats.csa.cz": "csa.cz.ssl.d3.sc.omtrdc.net",
+  "sstats.deloitte.com": "deloitte.com.ssl.sc.omtrdc.net",
+  "sstats.deluxe.com": "deluxe.com.102.122.2o7.net",
+  "sstats.dice.com": "dice.com.ssl.sc.omtrdc.net",
+  "sstats.directgeneral.com": "directgeneral.com.102.122.2o7.net",
+  "sstats.ds-pharma.jp": "ds-pharma.jp.ssl.sc.omtrdc.net",
+  "sstats.economist.com": "economist.com.102.122.2o7.net",
+  "sstats.epicurious.com": "epicurious.com.ssl.sc.omtrdc.net",
+  "sstats.extendedstayhotels.com": "extendedstayhotels.com.ssl.d1.sc.omtrdc.net",
+  "sstats.fairmont.com": "fairmont.com.ssl.d1.sc.omtrdc.net",
+  "sstats.familyvacationcritic.com": "familyvacationcritic.com.ssl.sc.omtrdc.net",
+  "sstats.faucet.com": "faucet.com.ssl.d1.sc.omtrdc.net",
+  "sstats.fishersci.ca": "fishersci.ca.ssl.sc.omtrdc.net",
+  "sstats.fishersci.co.uk": "fishersci.co.uk.ssl.sc.omtrdc.net",
+  "sstats.fishersci.com": "fishersci.com.ssl.d1.sc.omtrdc.net",
+  "sstats.fishersci.de": "fishersci.de.ssl.sc.omtrdc.net",
+  "sstats.fishersci.es": "fishersci.es.ssl.sc.omtrdc.net",
+  "sstats.fishersci.fr": "fishersci.fr.ssl.sc.omtrdc.net",
+  "sstats.fishersci.se": "fishersci.se.ssl.sc.omtrdc.net",
+  "sstats.gaba.co.jp": "gaba.co.jp.ssl.sc.omtrdc.net",
+  "sstats.glamour.com": "glamour.com.ssl.sc.omtrdc.net",
+  "sstats.harlequin.com": "harlequin.com.ssl.d1.sc.omtrdc.net",
+  "sstats.hostplus.com.au": "hostplus.com.au.data.adobedc.net",
+  "sstats.investors.com": "investors.com.ssl.d1.sc.omtrdc.net",
+  "sstats.juttu.be": "juttu.be.ssl.sc.omtrdc.net",
+  "sstats.kroger.com": "kroger.com.ssl.sc.omtrdc.net",
+  "sstats.liander.nl": "liander.nl.102.122.2o7.net",
+  "sstats.meijer.com": "meijer.com.102.122.2o7.net",
+  "sstats.mora-qualitas.com": "mora-qualitas.com.ssl.sc.omtrdc.net",
+  "sstats.mora.jp": "mora.jp.ssl.sc.omtrdc.net",
+  "sstats.motosport.com": "motosport.com.ssl.sc.omtrdc.net",
+  "sstats.mt.com": "mt.com.ssl.sc.omtrdc.net",
+  "sstats.nationwidechildrens.org": "nationwidechildrens.org.102.112.2o7.net",
+  "sstats.newyorker.com": "newyorker.com.ssl.sc.omtrdc.net",
+  "sstats.o2tv.cz": "o2tv.cz.ssl.sc.omtrdc.net",
+  "sstats.o2vyhody.cz": "o2vyhody.cz.ssl.sc.omtrdc.net",
+  "sstats.omahasteaks.com": "omahasteaks.com.102.122.2o7.net",
+  "sstats.onetime.com": "onetime.com.ssl.sc.omtrdc.net",
+  "sstats.oui.sncf": "oui.sncf.ssl.sc.omtrdc.net",
+  "sstats.pitchfork.com": "pitchfork.com.ssl.sc.omtrdc.net",
+  "sstats.portauthorityclothing.com": "portauthorityclothing.com.data.adobedc.net",
+  "sstats.raffles.com": "raffles.com.ssl.d1.sc.omtrdc.net",
+  "sstats.runnersneed.com": "runnersneed.com.ssl.sc.omtrdc.net",
+  "sstats.sanmar.com": "sanmar.com.data.adobedc.net",
+  "sstats.scholastic.com": "scholastic.com.ssl.sc.omtrdc.net",
+  "sstats.self.com": "self.com.ssl.sc.omtrdc.net",
+  "sstats.simzdarma.cz": "simzdarma.cz.ssl.sc.omtrdc.net",
+  "sstats.smartertravel.com": "smartertravel.com.ssl.sc.omtrdc.net",
+  "sstats.snowandrock.com": "snowandrock.com.ssl.sc.omtrdc.net",
+  "sstats.steepandcheap.com": "steepandcheap.com.ssl.sc.omtrdc.net",
+  "sstats.swissotel.com": "swissotel.com.102.112.2o7.net",
+  "sstats.tdameritrade.com": "tdameritrade.com.ssl.sc.omtrdc.net",
+  "sstats.teenvogue.com": "teenvogue.com.ssl.sc.omtrdc.net",
+  "sstats.telenor.se": "telenor.se.ssl.sc.omtrdc.net",
+  "sstats.tiffany.ca": "tiffany.ca.ssl.sc.omtrdc.net",
+  "sstats.tiffany.co.jp": "tiffany.co.jp.ssl.sc.omtrdc.net",
+  "sstats.tiffany.co.uk": "tiffany.co.uk.ssl.sc.omtrdc.net",
+  "sstats.tiffany.com": "tiffany.com.ssl.sc.omtrdc.net",
+  "sstats.tiffany.com.au": "tiffany.com.au.ssl.sc.omtrdc.net",
+  "sstats.tiffany.de": "tiffany.de.ssl.sc.omtrdc.net",
+  "sstats.truist.com": "truist.com.ssl.sc.omtrdc.net",
+  "sstats.uascrubs.com": "uascrubs.com.102.112.2o7.net",
+  "sstats.vanityfair.com": "vanityfair.com.ssl.sc.omtrdc.net",
+  "sstats.vizergy.com": "vizergy.com.ssl.d1.sc.omtrdc.net",
+  "sstats.vogue.com": "vogue.com.ssl.sc.omtrdc.net",
+  "sstats.wired.com": "wired.com.ssl.sc.omtrdc.net",
+  "sstats.www.o2.cz": "www.o2.cz.ssl.d2.sc.omtrdc.net",
+  "sstats2.gq.com": "gq.com.ssl.sc.omtrdc.net",
+  "sswmetrics.omanair.com": "omanair.com.ssl.sc.omtrdc.net",
+  "st-nlyss1.plala.or.jp": "plala.or.jp.ssl.d1.sc.omtrdc.net",
+  "st.bahn.de": "bahn.de.102.122.2o7.net",
+  "st.bahnhof.de": "bahnhof.de.data.adobedc.net",
+  "st.fahrkartenshop2-bahn.de": "fahrkartenshop2-bahn.de.data.adobedc.net",
+  "st.mazdausa.com": "mazdausa.com.ssl.sc.omtrdc.net",
+  "st.newyorklife.com": "newyorklife.com.ssl.d1.sc.omtrdc.net",
+  "st.newyorklifeinvestments.com": "newyorklifeinvestments.com.ssl.sc.omtrdc.net",
+  "st.s-bahn-muenchen-magazin.de": "s-bahn-muenchen-magazin.de.data.adobedc.net",
+  "stat-ssl.akiba-souken.com": "akiba-souken.com.102.112.2o7.net",
+  "stat-ssl.bushikaku.net": "bushikaku.net.ssl.sc.omtrdc.net",
+  "stat-ssl.career-tasu.jp": "career-tasu.jp.ssl.sc.omtrdc.net",
+  "stat-ssl.chiku-wa.jp": "chiku-wa.jp.ssl.sc.omtrdc.net",
+  "stat-ssl.eiga.com": "eiga.com.102.112.2o7.net",
+  "stat-ssl.fx-rashinban.com": "fx-rashinban.com.ssl.sc.omtrdc.net",
+  "stat-ssl.hitosara.com": "hitosara.com.102.122.2o7.net",
+  "stat-ssl.icotto.jp": "icotto.jp.ssl.sc.omtrdc.net",
+  "stat-ssl.idou.me": "idou.me.ssl.sc.omtrdc.net",
+  "stat-ssl.kaago.com": "kaago.com.102.112.2o7.net",
+  "stat-ssl.kakaku.com": "kakaku.com.102.112.2o7.net",
+  "stat-ssl.kakakumag.com": "kakakumag.com.ssl.sc.omtrdc.net",
+  "stat-ssl.kinarino-mall.jp": "kinarino-mall.jp.ssl.sc.omtrdc.net",
+  "stat-ssl.kinarino.jp": "kinarino.jp.102.112.2o7.net",
+  "stat-ssl.photohito.com": "photohito.com.102.112.2o7.net",
+  "stat-ssl.priceprice.com": "priceprice.com.102.112.2o7.net",
+  "stat-ssl.smbc.co.jp": "smbc.co.jp.ssl.sc.omtrdc.net",
+  "stat-ssl.sumaity.com": "sumaity.com.102.112.2o7.net",
+  "stat-ssl.tabelog.com": "tabelog.com.102.112.2o7.net",
+  "stat-ssl.tasclap.jp": "tasclap.jp.102.112.2o7.net",
+  "stat-ssl.teamroom.jp": "teamroom.jp.ssl.sc.omtrdc.net",
+  "stat-ssl.webcg.net": "webcg.net.ssl.d1.sc.omtrdc.net",
+  "stat-ssl.xn--pckua2a7gp15o89zb.com": "xn--pckua2a7gp15o89zb.com.ssl.d1.sc.omtrdc.net",
+  "stat.jetsetter.com": "jetsetter.com.112.2o7.net",
+  "states.newegg.ca": "newegg.ca.ssl.sc.omtrdc.net",
+  "states.newegg.com": "newegg.com.ssl.sc.omtrdc.net",
+  "states.neweggbusiness.com": "neweggbusiness.com.102.112.2o7.net",
+  "stats-ssl.mdanderson.org": "mdanderson.org.ssl.d2.sc.omtrdc.net",
+  "stats.4travel.jp": "4travel.jp.102.112.2o7.net",
+  "stats.adobe.com": "adobe.com.d1.sc.omtrdc.net",
+  "stats.adultswim.com": "adultswim.122.2o7.net",
+  "stats.agl.com.au": "agl.com.au.ssl.sc.omtrdc.net",
+  "stats.airfarewatchdog.com": "slbbawdcom.112.2o7.net",
+  "stats.bitdefender.com": "bitdefender.com.sc.omtrdc.net",
+  "stats.bookingbuddy.com": "slbbbcom.112.2o7.net",
+  "stats.cartoonnetwork.com": "cartoonnetworknewmedia.122.2o7.net",
+  "stats.deutschlandsim.de": "deutschlandsim.de.ssl.sc.omtrdc.net",
+  "stats.gibson.com": "gibson.com.112.2o7.net",
+  "stats.handyvertrag.de": "handyvertrag.de.ssl.sc.omtrdc.net",
+  "stats.his-j.com": "his-j.com.102.112.2o7.net",
+  "stats.hostplus.com.au": "hostplus.com.au.sc.omtrdc.net",
+  "stats.maxxim.de": "maxxim.de.ssl.sc.omtrdc.net",
+  "stats.mt.com": "mt.com.sc.omtrdc.net",
+  "stats.premiumsim.de": "premiumsim.de.ssl.sc.omtrdc.net",
+  "stats.rad.ca": "radio-canada.ca.ssl.sc.omtrdc.net",
+  "stats.radio-canada.ca": "radio-canada.ca.ssl.sc.omtrdc.net",
+  "stats.rcinet.ca": "radio-canada.ca.ssl.sc.omtrdc.net",
+  "stats.rs-online.com": "rs-online.com.ssl.sc.omtrdc.net",
+  "stats.safeway.com": "safeway.com.ssl.sc.omtrdc.net",
+  "stats.sim.de": "sim.de.ssl.sc.omtrdc.net",
+  "stats.simplytel.de": "simplytel.de.ssl.sc.omtrdc.net",
+  "stats.smartmobil.de": "smartmobil.de.ssl.sc.omtrdc.net",
+  "stats.tdameritrade.com": "tdameritrade.com.sc.omtrdc.net",
+  "stats.voyages-sncf.com": "voyages-sncf.com.d2.sc.omtrdc.net",
+  "stats.whattopack.com": "whattopack.com.sc.omtrdc.net",
+  "stats.winsim.de": "winsim.de.ssl.sc.omtrdc.net",
+  "stats.wired.com": "condenast.sc.omtrdc.net",
+  "stats.yourfone.de": "yourfone.de.ssl.sc.omtrdc.net",
+  "stats2.glamour.com": "glamour.com.sc.omtrdc.net",
+  "statss.ia.ca": "ia.ca.ssl.sc.omtrdc.net",
+  "statss.inalco.com": "inalco.com.ssl.sc.omtrdc.net",
+  "std.o.globalacademycme.com": "globalacademycme.sc.omtrdc.net",
+  "std.o.webmd.com": "o.webmd.com.d2.sc.omtrdc.net",
+  "stereos2s.crutchfield.ca": "crutchfield.ca.ssl.sc.omtrdc.net",
+  "stereos2s.crutchfield.com": "crutchfield.com.ssl.sc.omtrdc.net",
+  "stms.53.com": "53.com.ssl.d2.sc.omtrdc.net",
+  "strack.aetnafeds.com": "aetnafeds.com.ssl.sc.omtrdc.net",
+  "strack.bestbuy.ca": "bestbuy.ca.ssl.sc.omtrdc.net",
+  "strack.collegeboard.org": "collegeboard.org.ssl.d1.sc.omtrdc.net",
+  "strack.entegris.com": "entegris.com.ssl.sc.omtrdc.net",
+  "strack.freedommobile.ca": "freedommobile.ca.ssl.sc.omtrdc.net",
+  "strack.inews.co.uk": "inews.co.uk.ssl.sc.omtrdc.net",
+  "strack.mentor.com": "mentor.com.ssl.sc.omtrdc.net",
+  "strack.newzit.com": "newzit.com.ssl.sc.omtrdc.net",
+  "strack.shaw.ca": "shaw.ca.ssl.sc.omtrdc.net",
+  "strack.shawdirect.ca": "shawdirect.ca.ssl.sc.omtrdc.net",
+  "strack.shawmobile.ca": "shawmobile.ca.ssl.sc.omtrdc.net",
+  "stracking.hypotecnibanka.cz": "hypotecnibanka.cz.ssl.sc.omtrdc.net",
+  "stracking.kyobo.co.kr": "kyobo.co.kr.ssl.sc.omtrdc.net",
+  "stracking.myomee.com": "myomee.com.ssl.sc.omtrdc.net",
+  "stracking.rogers.com": "rogers.com.ssl.d1.sc.omtrdc.net",
+  "stracking.trutv.com": "trutv.com.102.112.2o7.net",
+  "strk.chegg.com": "chegg.com.ssl.d2.sc.omtrdc.net",
+  "stv.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "sucmetrics.hypovereinsbank.de": "hypovereinsbank.de.ssl.d2.sc.omtrdc.net",
+  "sucmetrics.unicredit.it": "unicredit.it.ssl.d2.sc.omtrdc.net",
+  "sucmetrics.unicreditgroup.eu": "unicreditgroup.eu.ssl.d2.sc.omtrdc.net",
+  "sud.holidayinsider.com": "holidayinsider.com.102.122.2o7.net",
+  "suncanny.marvel.com": "marvel.com.ssl.sc.omtrdc.net",
+  "sut.dailyfx.com": "dailyfx.com.ssl.sc.omtrdc.net",
+  "sw88.abc.com": "abc.com.ssl.sc.omtrdc.net",
+  "sw88.disney.bg": "disney.bg.ssl.sc.omtrdc.net",
+  "sw88.disney.co.jp": "disney.co.jp.ssl.sc.omtrdc.net",
+  "sw88.disney.co.uk": "disney.co.uk.ssl.sc.omtrdc.net",
+  "sw88.disney.co.za": "disney.co.za.ssl.sc.omtrdc.net",
+  "sw88.disney.de": "disney.de.ssl.sc.omtrdc.net",
+  "sw88.disney.es": "disney.es.ssl.sc.omtrdc.net",
+  "sw88.disney.fr": "disney.fr.ssl.sc.omtrdc.net",
+  "sw88.disney.hu": "disney.hu.ssl.sc.omtrdc.net",
+  "sw88.disney.it": "disney.it.ssl.sc.omtrdc.net",
+  "sw88.disney.nl": "disney.nl.ssl.sc.omtrdc.net",
+  "sw88.disney.no": "disney.no.ssl.sc.omtrdc.net",
+  "sw88.disney.pl": "disney.pl.ssl.sc.omtrdc.net",
+  "sw88.disney.pt": "disney.pt.ssl.sc.omtrdc.net",
+  "sw88.disney.ro": "disney.ro.ssl.sc.omtrdc.net",
+  "sw88.disney.ru": "disney.ru.ssl.sc.omtrdc.net",
+  "sw88.disney.se": "disney.se.ssl.sc.omtrdc.net",
+  "sw88.disneymagicmoments.gen.tr": "disneymagicmoments.gen.tr.ssl.sc.omtrdc.net",
+  "sw88.disneyme.com": "disneyme.com.ssl.sc.omtrdc.net",
+  "sw88.disneynow.com": "disneynow.com.ssl.sc.omtrdc.net",
+  "sw88.disneyrewards.com": "disneyrewards.com.ssl.sc.omtrdc.net",
+  "sw88.disneytickets.co.uk": "disneytickets.co.uk.data.adobedc.net",
+  "sw88.disneyturkiye.com.tr": "disneyturkiye.com.tr.ssl.sc.omtrdc.net",
+  "sw88.espn.com": "espn.com.ssl.sc.omtrdc.net",
+  "sw88.foxplay.com": "foxplay.com.ssl.sc.omtrdc.net",
+  "sw88.freeform.com": "freeform.com.ssl.sc.omtrdc.net",
+  "sw88.frozenthemusical.co.uk": "frozenthemusical.co.uk.ssl.sc.omtrdc.net",
+  "sw88.fxnetworks.com": "fxnetworks.com.ssl.sc.omtrdc.net",
+  "sw88.go.com": "go.com.ssl.d1.sc.omtrdc.net",
+  "sw88.marvel.com.ru": "marvel.com.ru.ssl.sc.omtrdc.net",
+  "sw88.nationalgeographic.com": "nationalgeographic.com.ssl.sc.omtrdc.net",
+  "sw88.shopdisney.co.uk": "shopdisney.co.uk.ssl.sc.omtrdc.net",
+  "sw88.shopdisney.de": "shopdisney.de.ssl.sc.omtrdc.net",
+  "sw88.shopdisney.es": "shopdisney.es.ssl.sc.omtrdc.net",
+  "sw88.shopdisney.eu": "shopdisney.eu.ssl.sc.omtrdc.net",
+  "sw88.shopdisney.fr": "shopdisney.fr.ssl.sc.omtrdc.net",
+  "sw88.shopdisney.it": "shopdisney.it.ssl.sc.omtrdc.net",
+  "sw88.starwars.ru": "starwars.ru.ssl.sc.omtrdc.net",
+  "sw88.thelionking.co.uk": "thelionking.co.uk.ssl.sc.omtrdc.net",
+  "swa.and.co.uk": "and.co.uk.102.122.2o7.net",
+  "swa.asnbank.nl": "asnbank.nl.ssl.sc.omtrdc.net",
+  "swa.blgwonen.nl": "blgwonen.nl.ssl.sc.omtrdc.net",
+  "swa.bol.com": "bol.com.ssl.d1.sc.omtrdc.net",
+  "swa.consumentenbond.nl": "consumentenbond.nl.102.112.2o7.net",
+  "swa.devolksbank.nl": "devolksbank.nl.ssl.sc.omtrdc.net",
+  "swa.energiedirect.nl": "energiedirect.nl.ssl.sc.omtrdc.net",
+  "swa.eonline.com": "eonline.com.ssl.sc.omtrdc.net",
+  "swa.essent.nl": "essent.nl.ssl.d2.sc.omtrdc.net",
+  "swa.gifts.com": "gifts.com.ssl.sc.omtrdc.net",
+  "swa.metro.co.uk": "metro.co.uk.102.122.2o7.net",
+  "swa.monabanq.com": "monabanq.com.ssl.ldc.d3.sc.omtrdc.net",
+  "swa.onlineverzendservice.be": "onlineverzendservice.be.ssl.sc.omtrdc.net",
+  "swa.oskarta.cz": "vodafone.cz.ssl.sc.omtrdc.net",
+  "swa.personalcreations.com": "personalcreations.com.ssl.d1.sc.omtrdc.net",
+  "swa.postnl.nl": "postnl.nl.ssl.sc.omtrdc.net",
+  "swa.proflowers.com": "proflowers.com.ssl.d1.sc.omtrdc.net",
+  "swa.regiobank.nl": "regiobank.nl.ssl.sc.omtrdc.net",
+  "swa.snsbank.nl": "snsbank.nl.102.122.2o7.net",
+  "swa.st.com": "st.com.ssl.ldc.d3.sc.omtrdc.net",
+  "swa.tjmaxx.tjx.com": "tjmaxx.tjx.com.102.112.2o7.net",
+  "swa.upc.cz": "upc.cz.ssl.sc.omtrdc.net",
+  "swa.vodafone.cz": "vodafone.cz.ssl.d2.sc.omtrdc.net",
+  "swa.vodafone.pt": "vodafone.pt.ssl.sc.omtrdc.net",
+  "swa.wowcher.co.uk": "wowcher.co.uk.ssl.d2.sc.omtrdc.net",
+  "swasc.homedepot.ca": "homedepot.ca.ssl.d2.sc.omtrdc.net",
+  "swasc.homedepot.com": "homedepot.com.ssl.d2.sc.omtrdc.net",
+  "swasc.kaufland.bg": "kaufland.bg.ssl.sc.omtrdc.net",
+  "swasc.kaufland.com": "kaufland.com.ssl.sc.omtrdc.net",
+  "swasc.kaufland.cz": "kaufland.cz.ssl.sc.omtrdc.net",
+  "swasc.kaufland.de": "kaufland.de.ssl.sc.omtrdc.net",
+  "swasc.kaufland.hr": "kaufland.hr.ssl.sc.omtrdc.net",
+  "swasc.kaufland.md": "kaufland.md.ssl.sc.omtrdc.net",
+  "swasc.kaufland.pl": "kaufland.pl.ssl.sc.omtrdc.net",
+  "swasc.kaufland.ro": "kaufland.ro.ssl.sc.omtrdc.net",
+  "swasc.kaufland.sk": "kaufland.sk.ssl.sc.omtrdc.net",
+  "sweb.ulta.com": "ulta.com.102.122.2o7.net",
+  "swebanalytics.acs.org": "acs.org.ssl.sc.omtrdc.net",
+  "swebanalytics.degulesider.dk": "degulesider.dk.ssl.sc.omtrdc.net",
+  "swebanalytics.eniro.se": "eniro.se.ssl.sc.omtrdc.net",
+  "swebanalytics.gulesider.no": "gulesider.no.ssl.sc.omtrdc.net",
+  "swebanalytics.krak.dk": "krak.dk.ssl.sc.omtrdc.net",
+  "swebanalytics.pgatour.com": "pgatour.com.ssl.d2.sc.omtrdc.net",
+  "swebmetrics.avaya.com": "data.102.122.2o7.net",
+  "swebmetrics.ok.gov": "ok.gov.ssl.sc.omtrdc.net",
+  "swebmetrics.oklahoma.gov": "oklahoma.gov.data.adobedc.net",
+  "swebmetrics.zebra.com": "zebra.com.ssl.sc.omtrdc.net",
+  "swebreports.nature.org": "nature.org.ssl.sc.omtrdc.net",
+  "swebstats.americanbar.org": "americanbar.org.ssl.d1.sc.omtrdc.net",
+  "swebstats.imf.org": "imf.org.102.112.2o7.net",
+  "t-s.actemra.com": "data.102.122.2o7.net",
+  "t-s.activase.com": "data.102.122.2o7.net",
+  "t-s.avastin-hcp.com": "data.102.122.2o7.net",
+  "t-s.avastin.com": "data.102.122.2o7.net",
+  "t-s.cellcept.com": "data.102.122.2o7.net",
+  "t-s.gazyva.com": "gazyva.com.102.122.2o7.net",
+  "t-s.herceptin.com": "herceptin.com.102.122.2o7.net",
+  "t-s.perjeta.com": "perjeta.com.102.112.2o7.net",
+  "t-s.rituxan.com": "rituxan.com.102.122.2o7.net",
+  "t-s.strokeawareness.com": "strokeawareness.com.102.122.2o7.net",
+  "t-s.tamiflu.com": "tamiflu.com.102.122.2o7.net",
+  "t-s.transplantaccessservices.com": "transplantaccessservices.com.102.122.2o7.net",
+  "t-s.xolairhcp.com": "xolairhcp.com.102.122.2o7.net",
+  "t.10er-tagesticket.de": "10er-tagesticket.de.data.adobedc.net",
+  "t.actemra.com": "actemra.com.122.2o7.net",
+  "t.activase.com": "activase.com.122.2o7.net",
+  "t.avastin-hcp.com": "avastin-hcp.com.122.2o7.net",
+  "t.avastin.com": "avastin.com.122.2o7.net",
+  "t.bahn.de": "bahn.de.122.2o7.net",
+  "t.bahnbuchung.de": "bahnbuchung.de.data.adobedc.net",
+  "t.biooncology.com": "biooncology.com.122.2o7.net",
+  "t.cathflo.com": "cathflo.com.122.2o7.net",
+  "t.cellcept.com": "cellcept.com.122.2o7.net",
+  "t.erivedge.com": "erivedge.com.122.2o7.net",
+  "t.gazyva.com": "gazyva.com.122.2o7.net",
+  "t.gene.com": "gene.com.122.2o7.net",
+  "t.herceptin.com": "herceptin.com.122.2o7.net",
+  "t.kadcyla.com": "kadcyla.com.122.2o7.net",
+  "t.lucentis.com": "lucentis.com.122.2o7.net",
+  "t.lucentisdirect.com": "lucentisdirect.com.122.2o7.net",
+  "t.perjeta.com": "perjeta.com.122.2o7.net",
+  "t.rituxan.com": "rituxan.com.122.2o7.net",
+  "t.strokeawareness.com": "strokeawareness.com.122.2o7.net",
+  "t.transplantaccessservices.com": "transplantaccessservices.com.122.2o7.net",
+  "t.valcyte.com": "valcyte.com.122.2o7.net",
+  "t.xolairhcp.com": "xolairhcp.com.122.2o7.net",
+  "talpaholdingnv.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "tbslatinamerica.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "telus.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "telus.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "tenilstats.turner.com": "turneruk.sc.omtrdc.net",
+  "tim.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "tim.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "tmobileusa.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "tr1.kaspersky.com": "kaspersky.com.d2.sc.omtrdc.net",
+  "tr2.kaspersky.com": "kaspersky.com.ssl.d2.sc.omtrdc.net",
+  "track.collegeboard.org": "collegeboard.org.d1.sc.omtrdc.net",
+  "tracking-secure.csob.cz": "csob.cz.ssl.d3.sc.omtrdc.net",
+  "tracking.cspire.com": "cspire.com.ssl.sc.omtrdc.net",
+  "tracking.diet.mayoclinic.org": "diet.mayoclinic.org.d1.sc.omtrdc.net",
+  "tracking.kyobo.co.kr": "kyobo.co.kr.sc.omtrdc.net",
+  "tracking.lg.com": "lge.com.ssl.d2.sc.omtrdc.net",
+  "tracking.redbutton.de": "redbutton.de.sc.omtrdc.net",
+  "tracking.trutv.com": "trutv.com.112.2o7.net",
+  "trackingaa.hitachienergy.com": "hitachienergy.com.data.adobedc.net",
+  "trackingssl.aginsurance.be": "aginsurance.be.ssl.sc.omtrdc.net",
+  "trk.chegg.com": "chegg.com.d2.sc.omtrdc.net",
+  "ts.popsugar.com": "popsugar.com.ssl.sc.omtrdc.net",
+  "tsa.taxslayer.com": "taxslayer.com.ssl.d1.sc.omtrdc.net",
+  "turnerapac.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "turnerclassicmovies.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "turnerinternational.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "turnerresearch1.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "turnerresearch1.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "tv2.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "tv2.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "tve.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "twctsg.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "twctsg.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "verizontelecom.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "verizontelecom.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "vice.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "videor.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "vidgoinc.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "visit.asb.co.nz": "asb.co.nz.ssl.d2.sc.omtrdc.net",
+  "vmware.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "vrt.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "vrt.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "w88.abc.com": "abc.com.sc.omtrdc.net",
+  "w88.espn.com": "espn.com.sc.omtrdc.net",
+  "w88.go.com": "go.com.d1.sc.omtrdc.net",
+  "w88.m.espn.go.com": "go.com.d1.sc.omtrdc.net",
+  "wa.bol.com": "bol.com.d1.sc.omtrdc.net",
+  "wa.eonline.com": "eonline.com.sc.omtrdc.net",
+  "wa.epson.com": "epson.com.112.2o7.net",
+  "wa.metro.co.uk": "metro.co.uk.122.2o7.net",
+  "wa.ncr.com": "ncr.com.data.adobedc.net",
+  "wa.proflowers.com": "proflowers.com.d1.sc.omtrdc.net",
+  "warnerbrosentertainmentinc.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "was.stubhub.com": "stubhub.com.ssl.d2.sc.omtrdc.net",
+  "was.vodafone.de": "vodafone.de.ssl.d2.sc.omtrdc.net",
+  "was.vodafone.ie": "vodafone.ie.ssl.d2.sc.omtrdc.net",
+  "wass.ihsmarkit.com": "ihsmarkit.com.ssl.sc.omtrdc.net",
+  "wat.gogoinflight.com": "gogoinflight.com.sc.omtrdc.net",
+  "wats.gogoinflight.com": "gogoinflight.com.ssl.sc.omtrdc.net",
+  "webanalyticsssl.websense.com": "websense.com.ssl.sc.omtrdc.net",
+  "webmd.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "webmetrics.zebra.com": "zebra.com.sc.omtrdc.net",
+  "webstat.channel4.com": "channel4.com.sc.omtrdc.net",
+  "webstat.garanti.com.tr": "garanti.com.tr.sc.omtrdc.net",
+  "webstats.americanbar.org": "americanbar.org.d1.sc.omtrdc.net",
+  "webstats.channel4.com": "channel4.com.ssl.sc.omtrdc.net",
+  "webstats.garanti.com.tr": "garanti.com.tr.ssl.sc.omtrdc.net",
+  "webtraffic.mastercontrol.com": "mastercontrol.com.ssl.sc.omtrdc.net",
+  "ww8.kohls.com": "kohls.com.ssl.sc.omtrdc.net",
+  "www-172.aig.com": "aig.com.ssl.d2.sc.omtrdc.net",
+  "www-sadobe.384.co.jp": "384.co.jp.ssl.sc.omtrdc.net",
+  "www-smt.daiichisankyo-hc.co.jp": "daiichisankyo-hc.co.jp.ssl.sc.omtrdc.net",
+  "www15.jtv.com": "jtv.com.102.112.2o7.net",
+  "www2s.automd.com": "automd.com.102.122.2o7.net",
+  "www3s.ing.be": "ing.be.ssl.d3.sc.omtrdc.net",
+  "www91.intel.co.jp": "intel.co.jp.ssl.sc.omtrdc.net",
+  "www91.intel.co.kr": "intel.co.kr.ssl.sc.omtrdc.net",
+  "www91.intel.co.uk": "intel.co.uk.ssl.sc.omtrdc.net",
+  "www91.intel.com": "intel.com.ssl.sc.omtrdc.net",
+  "www91.intel.com.au": "intel.com.au.ssl.sc.omtrdc.net",
+  "www91.intel.com.br": "intel.com.br.ssl.sc.omtrdc.net",
+  "www91.intel.com.tr": "intel.com.tr.ssl.sc.omtrdc.net",
+  "www91.intel.com.tw": "intel.com.tw.ssl.sc.omtrdc.net",
+  "www91.intel.de": "intel.de.ssl.sc.omtrdc.net",
+  "www91.intel.es": "intel.es.ssl.sc.omtrdc.net",
+  "www91.intel.fr": "intel.fr.ssl.sc.omtrdc.net",
+  "www91.intel.in": "intel.in.ssl.sc.omtrdc.net",
+  "www91.intel.it": "intel.it.ssl.sc.omtrdc.net",
+  "www91.intel.la": "intel.la.ssl.sc.omtrdc.net",
+  "www91.intel.pl": "intel.pl.ssl.sc.omtrdc.net",
+  "www91.intel.ru": "intel.ru.ssl.sc.omtrdc.net",
+  "y.ksl.com": "ksl.com.ssl.d1.sc.omtrdc.net",
+  "yleisradio.hb-api.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "yleisradio.hb.omtrdc.net": "va-edge.sc.omtrdc.net",
+  "19035924.automated.almosafer.com": "thirdparty.bnc.lt",
+  "19035924.email.almosafer.com": "thirdparty.bnc.lt",
+  "19035924.loyalty.almosafer.com": "thirdparty.bnc.lt",
+  "19035924.mktg.almosafer.com": "thirdparty.bnc.lt",
+  "19035955.automated.tajawal.com": "thirdparty.bnc.lt",
+  "19035955.email.tajawal.com": "thirdparty.bnc.lt",
+  "19035955.loyalty.tajawal.com": "thirdparty.bnc.lt",
+  "19035955.mktg.tajawal.com": "thirdparty.bnc.lt",
+  "5363316.marketing.numi.com": "thirdparty.bnc.lt",
+  "5709751.ab.soul-cycle.email": "thirdparty.bnc.lt",
+  "6519114.automated.tajawal.com": "thirdparty.bnc.lt",
+  "6519114.email.tajawal.com": "thirdparty.bnc.lt",
+  "6519114.loyalty.almosafer.com": "thirdparty.bnc.lt",
+  "6519114.loyalty.tajawal.com": "thirdparty.bnc.lt",
+  "6519114.mktg.almosafer.com": "thirdparty.bnc.lt",
+  "6519114.mktg.tajawal.com": "thirdparty.bnc.lt",
+  "7701534.emails.tntdrama.com": "thirdparty.bnc.lt",
+  "8041691.comms.hipages.com.au": "thirdparty.bnc.lt",
+  "8041691.engage.hipages.com.au": "thirdparty.bnc.lt",
+  "8147563.1954.bk.com": "thirdparty.bnc.lt",
+  "8147563.thekingdom.bk.com": "thirdparty.bnc.lt",
+  "8147563.your-way.bk.com": "thirdparty.bnc.lt",
+  "9735476.sender.skyscanner.com": "thirdparty.bnc.lt",
+  "9735476.sender.skyscanner.net": "thirdparty.bnc.lt",
+  "9735476.test.skyscanner.net": "thirdparty.bnc.lt",
+  "9857064.hello.spriggy.com.au": "thirdparty.bnc.lt",
+  "9857064.notice.spriggy.com.au": "thirdparty.bnc.lt",
+  "a.hibbett.com": "thirdparty.bnc.lt",
+  "ablink.1954.bk.com": "thirdparty.bnc.lt",
+  "ablink.a.radio.com": "thirdparty.bnc.lt",
+  "ablink.abtest.redmart.com": "thirdparty.bnc.lt",
+  "ablink.account.debut.careers": "thirdparty.bnc.lt",
+  "ablink.account.quizlet.com": "thirdparty.bnc.lt",
+  "ablink.account.zip.co": "thirdparty.bnc.lt",
+  "ablink.activation.depop.com": "thirdparty.bnc.lt",
+  "ablink.alerts.steadyapp.com": "thirdparty.bnc.lt",
+  "ablink.arch.sofi.org": "thirdparty.bnc.lt",
+  "ablink.automated.airtasker.com": "thirdparty.bnc.lt",
+  "ablink.book.omio.com": "thirdparty.bnc.lt",
+  "ablink.c.grubhub.com": "thirdparty.bnc.lt",
+  "ablink.care.sanvello.com": "thirdparty.bnc.lt",
+  "ablink.click.depop.com": "thirdparty.bnc.lt",
+  "ablink.comms.hipages.com.au": "thirdparty.bnc.lt",
+  "ablink.comms.trainline.com": "thirdparty.bnc.lt",
+  "ablink.commsinfo.trainline.com": "thirdparty.bnc.lt",
+  "ablink.community.earnin.com": "thirdparty.bnc.lt",
+  "ablink.daily.sofi.com": "thirdparty.bnc.lt",
+  "ablink.discover.airtasker.com": "thirdparty.bnc.lt",
+  "ablink.e.hungryjacks.com.au": "thirdparty.bnc.lt",
+  "ablink.e.jackpocket.com": "thirdparty.bnc.lt",
+  "ablink.e.sanvello.com": "thirdparty.bnc.lt",
+  "ablink.e.theiconic.com.au": "thirdparty.bnc.lt",
+  "ablink.edm.zip.co": "thirdparty.bnc.lt",
+  "ablink.em.redmart.com": "thirdparty.bnc.lt",
+  "ablink.email.airtasker.com": "thirdparty.bnc.lt",
+  "ablink.email.etsy.com": "thirdparty.bnc.lt",
+  "ablink.email.omio.com": "thirdparty.bnc.lt",
+  "ablink.email.pray.com": "thirdparty.bnc.lt",
+  "ablink.email.pressreader.com": "thirdparty.bnc.lt",
+  "ablink.emails.spothero.com": "thirdparty.bnc.lt",
+  "ablink.emails.themarket.nz": "thirdparty.bnc.lt",
+  "ablink.emails.vida.com": "thirdparty.bnc.lt",
+  "ablink.engage.hipages.com.au": "thirdparty.bnc.lt",
+  "ablink.engage.insighttimer.com": "thirdparty.bnc.lt",
+  "ablink.enjoy.wonder.com": "thirdparty.bnc.lt",
+  "ablink.feed.liven.com.au": "thirdparty.bnc.lt",
+  "ablink.go1.zip.co": "thirdparty.bnc.lt",
+  "ablink.go2.zip.co": "thirdparty.bnc.lt",
+  "ablink.go3.zip.co": "thirdparty.bnc.lt",
+  "ablink.hello.innit.com": "thirdparty.bnc.lt",
+  "ablink.hello.sanvello.com": "thirdparty.bnc.lt",
+  "ablink.hello.spriggy.com.au": "thirdparty.bnc.lt",
+  "ablink.hello.steadyapp.com": "thirdparty.bnc.lt",
+  "ablink.help.innit.com": "thirdparty.bnc.lt",
+  "ablink.help.sanvello.com": "thirdparty.bnc.lt",
+  "ablink.help.shopwell.com": "thirdparty.bnc.lt",
+  "ablink.info.felixmobile.com.au": "thirdparty.bnc.lt",
+  "ablink.info.pressreader.com": "thirdparty.bnc.lt",
+  "ablink.info.sofi.org": "thirdparty.bnc.lt",
+  "ablink.info.themarket.nz": "thirdparty.bnc.lt",
+  "ablink.info.timhortons.ca": "thirdparty.bnc.lt",
+  "ablink.info.timhortons.com": "thirdparty.bnc.lt",
+  "ablink.info.vida.com": "thirdparty.bnc.lt",
+  "ablink.juicer.li.me": "thirdparty.bnc.lt",
+  "ablink.lifecycle.quizlet.com": "thirdparty.bnc.lt",
+  "ablink.loyal.timhortons.ca": "thirdparty.bnc.lt",
+  "ablink.loyal.timhortons.com": "thirdparty.bnc.lt",
+  "ablink.loyalty.almosafer.com": "thirdparty.bnc.lt",
+  "ablink.loyalty.tajawal.com": "thirdparty.bnc.lt",
+  "ablink.m.jackpocket.com": "thirdparty.bnc.lt",
+  "ablink.m.popeyes.com": "thirdparty.bnc.lt",
+  "ablink.m.seatedapp.io": "thirdparty.bnc.lt",
+  "ablink.m.sofi.org": "thirdparty.bnc.lt",
+  "ablink.mail.activearcade.ai": "thirdparty.bnc.lt",
+  "ablink.mail.adobespark.com": "thirdparty.bnc.lt",
+  "ablink.mail.flipfit.com": "thirdparty.bnc.lt",
+  "ablink.mail.grailed.com": "thirdparty.bnc.lt",
+  "ablink.mail.homecourt.ai": "thirdparty.bnc.lt",
+  "ablink.mail.inscape.life": "thirdparty.bnc.lt",
+  "ablink.mail.parkmobile.io": "thirdparty.bnc.lt",
+  "ablink.mail.step.com": "thirdparty.bnc.lt",
+  "ablink.mail.truemoney.com": "thirdparty.bnc.lt",
+  "ablink.mail1.iheart.com": "thirdparty.bnc.lt",
+  "ablink.marketing.adobemailing.com": "thirdparty.bnc.lt",
+  "ablink.marketing.li.me": "thirdparty.bnc.lt",
+  "ablink.marketing.motortrend.com": "thirdparty.bnc.lt",
+  "ablink.mktg.almosafer.com": "thirdparty.bnc.lt",
+  "ablink.mktg.tajawal.com": "thirdparty.bnc.lt",
+  "ablink.msg.flipfit.com": "thirdparty.bnc.lt",
+  "ablink.my.zip.co": "thirdparty.bnc.lt",
+  "ablink.news.debut.careers": "thirdparty.bnc.lt",
+  "ablink.news.felixmobile.com.au": "thirdparty.bnc.lt",
+  "ablink.news.gimmeradio.com": "thirdparty.bnc.lt",
+  "ablink.news.omio.com": "thirdparty.bnc.lt",
+  "ablink.newsletter.quizlet.com": "thirdparty.bnc.lt",
+  "ablink.notice.hoopladigital.com": "thirdparty.bnc.lt",
+  "ablink.notice.spriggy.com.au": "thirdparty.bnc.lt",
+  "ablink.notification.insighttimer.com": "thirdparty.bnc.lt",
+  "ablink.notifications.br.live": "thirdparty.bnc.lt",
+  "ablink.notify.homecourt.ai": "thirdparty.bnc.lt",
+  "ablink.notify.pray.com": "thirdparty.bnc.lt",
+  "ablink.o.sofi.org": "thirdparty.bnc.lt",
+  "ablink.offers.checkout51.com": "thirdparty.bnc.lt",
+  "ablink.offers.grassdoor.com": "thirdparty.bnc.lt",
+  "ablink.p.radio.com": "thirdparty.bnc.lt",
+  "ablink.pomelo.fashion": "thirdparty.bnc.lt",
+  "ablink.pomelofashion.com": "thirdparty.bnc.lt",
+  "ablink.promos.timhortons.ca": "thirdparty.bnc.lt",
+  "ablink.promos.timhortons.com": "thirdparty.bnc.lt",
+  "ablink.r.sofi.com": "thirdparty.bnc.lt",
+  "ablink.referral.omio.com": "thirdparty.bnc.lt",
+  "ablink.rider.li.me": "thirdparty.bnc.lt",
+  "ablink.seller.etsy.com": "thirdparty.bnc.lt",
+  "ablink.sender.skyscanner.com": "thirdparty.bnc.lt",
+  "ablink.sender.skyscanner.net": "thirdparty.bnc.lt",
+  "ablink.staging-e.klarna.com": "thirdparty.bnc.lt",
+  "ablink.support.gimmeradio.com": "thirdparty.bnc.lt",
+  "ablink.tchicken.popeyes.com": "thirdparty.bnc.lt",
+  "ablink.test.iheart.com": "thirdparty.bnc.lt",
+  "ablink.test.kfc.com.au": "thirdparty.bnc.lt",
+  "ablink.test.skyscanner.net": "thirdparty.bnc.lt",
+  "ablink.test.vida.com": "thirdparty.bnc.lt",
+  "ablink.thekingdom.bk.com": "thirdparty.bnc.lt",
+  "ablink.thekitchen.popeyes.com": "thirdparty.bnc.lt",
+  "ablink.track.popeyes.com": "thirdparty.bnc.lt",
+  "ablink.track.timhortons.ca": "thirdparty.bnc.lt",
+  "ablink.track.timhortons.com": "thirdparty.bnc.lt",
+  "ablink.transactions.earnin.com": "thirdparty.bnc.lt",
+  "ablink.watch.br.live": "thirdparty.bnc.lt",
+  "ablink.your-way.bk.com": "thirdparty.bnc.lt",
+  "ablink.your.audacy.com": "thirdparty.bnc.lt",
+  "ablinkclicktest.prod.aws.skyscnr.com": "thirdparty.bnc.lt",
+  "ablinks.comms.healthengine.com.au": "thirdparty.bnc.lt",
+  "ablinks.e.draft.com": "thirdparty.bnc.lt",
+  "ablinks.e.foxsports.com.au": "thirdparty.bnc.lt",
+  "ablinks.info.amaro.com": "thirdparty.bnc.lt",
+  "ablinks.kfc.com.au": "thirdparty.bnc.lt",
+  "ablinks.m.draft.com": "thirdparty.bnc.lt",
+  "ablinks.mail.claritymoney.com": "thirdparty.bnc.lt",
+  "ablinks.mail.hinge.co": "thirdparty.bnc.lt",
+  "ablinks.marketing.numi.com": "thirdparty.bnc.lt",
+  "ablinks.news.amaro.com": "thirdparty.bnc.lt",
+  "ablinks.news.learnwithhomer.com": "thirdparty.bnc.lt",
+  "ablinks.picsart.com": "thirdparty.bnc.lt",
+  "ablinksemail.wirexapp.com": "thirdparty.bnc.lt",
+  "ablinksuni.a.grubhub.com": "thirdparty.bnc.lt",
+  "ablinksuni.a.seamless.com": "thirdparty.bnc.lt",
+  "abmail.test.iheart.com": "thirdparty.bnc.lt",
+  "abmail2.e.hungryjacks.com.au": "thirdparty.bnc.lt",
+  "abtest.em.redmart.com": "thirdparty.bnc.lt",
+  "abtest.redmart.com": "thirdparty.bnc.lt",
+  "abtestmail.em.redmart.com": "thirdparty.bnc.lt",
+  "activation.depop.com": "thirdparty.bnc.lt",
+  "alerts.steadyapp.com": "thirdparty.bnc.lt",
+  "alinks.outcomes4me.com": "thirdparty.bnc.lt",
+  "ap.hibbett.com": "thirdparty.bnc.lt",
+  "app-clicks-corporate.firstrepublic.com": "thirdparty.bnc.lt",
+  "app-clicks.firstrepublic.com": "thirdparty.bnc.lt",
+  "app.events.philips.com": "thirdparty.bnc.lt",
+  "app.sephora.com": "epsilon.thirdparty.bnc.lt",
+  "applink.getbambu.com": "thirdparty.bnc.lt",
+  "b.dl.redcrossblood.org": "thirdparty.bnc.lt",
+  "b.iheart.southwest.com": "thirdparty.bnc.lt",
+  "b.itravel.southwest.com": "thirdparty.bnc.lt",
+  "b.iwanna.southwest.com": "thirdparty.bnc.lt",
+  "b.lyst.com": "thirdparty.bnc.lt",
+  "b.prod1.youroffers.dominos.ca": "thirdparty.bnc.lt",
+  "b.your.offers.dominos.com": "thirdparty.bnc.lt",
+  "bf35f69f2c6f6bcda64064b1f5b49218.domain.com.au": "thirdparty.bnc.lt",
+  "blinks.mindoktor.se": "thirdparty.bnc.lt",
+  "bnc.autopass.xyz": "thirdparty.bnc.lt",
+  "bpe.mlb.com": "thirdparty.bnc.lt",
+  "bpeml.mlb.com": "thirdparty.bnc.lt",
+  "br.ac.ebookers.com": "thirdparty.bnc.lt",
+  "br.ac.ebookers.de": "thirdparty.bnc.lt",
+  "br.ac.ebookers.fr": "thirdparty.bnc.lt",
+  "br.ac.orbitz.com": "thirdparty.bnc.lt",
+  "br.ac.travelocity.com": "thirdparty.bnc.lt",
+  "br.backmarket.fr": "thirdparty.bnc.lt",
+  "br.email.lifesum.com": "thirdparty.bnc.lt",
+  "br.potato1.influitive.com": "thirdparty.bnc.lt",
+  "branch-consumer.hipages.com.au": "thirdparty.bnc.lt",
+  "branch-tradie.hipages.com.au": "thirdparty.bnc.lt",
+  "branch.carvana.com": "thirdparty.bnc.lt",
+  "branch.chelseafc.com": "thirdparty.bnc.lt",
+  "branch.email.livenation.com": "thirdparty.bnc.lt",
+  "branch.pgatour-mail.com": "thirdparty.bnc.lt",
+  "branchlink.adobespark.com": "thirdparty.bnc.lt",
+  "branchtrk.lendingtree.com": "thirdparty.bnc.lt",
+  "brc.emails.rakuten.com": "thirdparty.bnc.lt",
+  "click.aaptiv.com": "thirdparty.bnc.lt",
+  "click.bible.com": "thirdparty.bnc.lt",
+  "click.bitesquad.com": "thirdparty.bnc.lt",
+  "click.blueapron.com": "thirdparty.bnc.lt",
+  "click.community.carousell.com": "thirdparty.bnc.lt",
+  "click.depop.com": "thirdparty.bnc.lt",
+  "click.dice.com": "thirdparty.bnc.lt",
+  "click.drizly.com": "thirdparty.bnc.lt",
+  "click.e.affirm.com": "thirdparty.bnc.lt",
+  "click.e.progressive.com": "thirdparty.bnc.lt",
+  "click.e.tdbank.com": "thirdparty.bnc.lt",
+  "click.em.soothe.com": "thirdparty.bnc.lt",
+  "click.email-stubhub.com": "thirdparty.bnc.lt",
+  "click.email.chope.co": "thirdparty.bnc.lt",
+  "click.email.houndapp.com": "thirdparty.bnc.lt",
+  "click.email.soundhound.com": "thirdparty.bnc.lt",
+  "click.emails.creditonebank.com": "thirdparty.bnc.lt",
+  "click.favordelivery.com": "thirdparty.bnc.lt",
+  "click.food.mercato.com": "thirdparty.bnc.lt",
+  "click.glamsquad.com": "thirdparty.bnc.lt",
+  "click.gudog.com": "thirdparty.bnc.lt",
+  "click.instacartemail.com": "thirdparty.bnc.lt",
+  "click.mail.carousell.com": "thirdparty.bnc.lt",
+  "click.mail.thecarousell.com": "thirdparty.bnc.lt",
+  "click.mail.theknot.com": "thirdparty.bnc.lt",
+  "click.marketing.carousell.com": "thirdparty.bnc.lt",
+  "click.official.nike.com": "thirdparty.bnc.lt",
+  "click.redditmail.com": "thirdparty.bnc.lt",
+  "click.transactional.carousell.com": "thirdparty.bnc.lt",
+  "click1.e.radio.com": "thirdparty.bnc.lt",
+  "click1.e.thechive.com": "thirdparty.bnc.lt",
+  "click1.mail.paltalkpeople.com": "thirdparty.bnc.lt",
+  "click2.email.ticketmaster.com": "thirdparty.bnc.lt",
+  "clicked.ebates.com": "epsilon.thirdparty.bnc.lt",
+  "clickmail.stubhub.com": "thirdparty.bnc.lt",
+  "clicks-test.info.theiconic.com.au": "thirdparty.bnc.lt",
+  "clicks.6thstreet.com": "thirdparty.bnc.lt",
+  "clicks.burgerking.co.uk": "thirdparty.bnc.lt",
+  "clicks.drizly.com": "thirdparty.bnc.lt",
+  "clicks.email.shakeshack.com": "thirdparty.bnc.lt",
+  "clicks.equinoxplus.com": "thirdparty.bnc.lt",
+  "clicks.food.mercato.com": "thirdparty.bnc.lt",
+  "clicks.info.theiconic.com.au": "thirdparty.bnc.lt",
+  "clicks.lifesum.com": "thirdparty.bnc.lt",
+  "clicks.metronautapp.com": "thirdparty.bnc.lt",
+  "clicks.staging.worldremit.com": "thirdparty.bnc.lt",
+  "clicks.variis.com": "thirdparty.bnc.lt",
+  "cn1.stadiumgoods.com": "thirdparty.bnc.lt",
+  "cn2.stadiumgoods.com": "thirdparty.bnc.lt",
+  "cq.hq1.influitive.com": "thirdparty.bnc.lt",
+  "ct.irl.com": "thirdparty.bnc.lt",
+  "ct.irlmail.org": "thirdparty.bnc.lt",
+  "deeplink.aspiration.com": "thirdparty.bnc.lt",
+  "deeplink.instacartemail.com": "thirdparty.bnc.lt",
+  "deeplinks.padmapper.com": "thirdparty.bnc.lt",
+  "deeplinks.zumper.com": "thirdparty.bnc.lt",
+  "dl-stage.zola.com": "thirdparty.bnc.lt",
+  "dl.benefits.express-scripts.com": "thirdparty.bnc.lt",
+  "dl.health-programs.express-scripts.com": "thirdparty.bnc.lt",
+  "dl.mail.express-scripts.com": "thirdparty.bnc.lt",
+  "dl.orders.express-scripts.com": "thirdparty.bnc.lt",
+  "dl.zola.com": "thirdparty.bnc.lt",
+  "e.e.themighty.com": "thirdparty.bnc.lt",
+  "e.passfolio.us": "thirdparty.bnc.lt",
+  "e.synchronybank.com": "epsilon.thirdparty.bnc.lt",
+  "em.getsimpleprints.com": "thirdparty.bnc.lt",
+  "em.touchtunes.com": "thirdparty.bnc.lt",
+  "email-link.mg.surkus.com": "thirdparty.bnc.lt",
+  "email-sailthru.branch.io": "thirdparty.bnc.lt",
+  "email-sendgrid-deep-linking.chewy.com": "thirdparty.bnc.lt",
+  "email-staging.goodrx.com": "thirdparty.bnc.lt",
+  "email-test.wirexapp.com": "thirdparty.bnc.lt",
+  "email.app.theiconic.com.au": "thirdparty.bnc.lt",
+  "email.boxed.com": "thirdparty.bnc.lt",
+  "email.clearscore.co.za": "thirdparty.bnc.lt",
+  "email.clearscore.com": "thirdparty.bnc.lt",
+  "email.clearscore.com.au": "thirdparty.bnc.lt",
+  "email.everyonesocial.r3.com": "thirdparty.bnc.lt",
+  "email.everyonesocial.united.com": "thirdparty.bnc.lt",
+  "email.everyonesocial.unity.com": "thirdparty.bnc.lt",
+  "email.fretello.com": "thirdparty.bnc.lt",
+  "email.goodrx.com": "thirdparty.bnc.lt",
+  "email.headsuphealth.com": "thirdparty.bnc.lt",
+  "email.link.flipgive.com": "thirdparty.bnc.lt",
+  "email.mail.floatme.io": "thirdparty.bnc.lt",
+  "email.member.theknot.com": "thirdparty.bnc.lt",
+  "email.mg.everyonesocial.com": "thirdparty.bnc.lt",
+  "email.pray.com": "thirdparty.bnc.lt",
+  "email.social.f5.com": "thirdparty.bnc.lt",
+  "email.strava.com": "thirdparty.bnc.lt",
+  "email.thislife.com": "thirdparty.bnc.lt",
+  "email.wirexapp.com": "thirdparty.bnc.lt",
+  "email1.strava.com": "thirdparty.bnc.lt",
+  "emails.verishop.com": "thirdparty.bnc.lt",
+  "fleet-eml.postmates.com": "thirdparty.bnc.lt",
+  "go.heybianca.co": "thirdparty.bnc.lt",
+  "goto.dresslily.com": "thirdparty.bnc.lt",
+  "goto.rosegal.com": "thirdparty.bnc.lt",
+  "goto.zaful.com": "thirdparty.bnc.lt",
+  "gotoaws.dresslily.com": "thirdparty.bnc.lt",
+  "gotoaws.rosegal.com": "thirdparty.bnc.lt",
+  "gotoaws.zaful.com": "thirdparty.bnc.lt",
+  "gotoedm.whereyogi.com": "thirdparty.bnc.lt",
+  "gotoexp.dresslily.com": "thirdparty.bnc.lt",
+  "hello.steadyapp.com": "thirdparty.bnc.lt",
+  "ilinks.petalcard.com": "thirdparty.bnc.lt",
+  "iterable.convoy.com": "thirdparty.bnc.lt",
+  "l.create.canva.com": "thirdparty.bnc.lt",
+  "l.email.livingsocial.co.uk": "thirdparty.bnc.lt",
+  "l.email.nxtwowcher.co.uk": "thirdparty.bnc.lt",
+  "l.email.wowcher.co.uk": "thirdparty.bnc.lt",
+  "l.engage.canva.com": "thirdparty.bnc.lt",
+  "l.support.canva.com": "thirdparty.bnc.lt",
+  "l.thumbtack.com": "thirdparty.bnc.lt",
+  "lb.billing01.email-allstate.com": "thirdparty.bnc.lt",
+  "lb.marketing01.email-allstate.com": "thirdparty.bnc.lt",
+  "lb.quote01.email-allstate.com": "thirdparty.bnc.lt",
+  "lb.service01.email-allstate.com": "thirdparty.bnc.lt",
+  "link.admin.kodakmoments.com": "thirdparty.bnc.lt",
+  "link.afterpay.com": "thirdparty.bnc.lt",
+  "link.alerts.busuu.app": "thirdparty.bnc.lt",
+  "link.announce.busuu.app": "thirdparty.bnc.lt",
+  "link.automated.almosafer.com": "thirdparty.bnc.lt",
+  "link.automated.tajawal.com": "thirdparty.bnc.lt",
+  "link.cdl.freshly.com": "thirdparty.bnc.lt",
+  "link.cheerz.com": "thirdparty.bnc.lt",
+  "link.creditonemail.com": "thirdparty.bnc.lt",
+  "link.design.unum.la": "thirdparty.bnc.lt",
+  "link.e.blog.myfitnesspal.com": "thirdparty.bnc.lt",
+  "link.earnin.com": "thirdparty.bnc.lt",
+  "link.em.sssports.com": "thirdparty.bnc.lt",
+  "link.email.almosafer.com": "thirdparty.bnc.lt",
+  "link.email.atumanera.burgerking.com.mx": "thirdparty.bnc.lt",
+  "link.email.bnext.es": "thirdparty.bnc.lt",
+  "link.email.myfitnesspal.com": "thirdparty.bnc.lt",
+  "link.email.ninetynine.com": "thirdparty.bnc.lt",
+  "link.email.soothe.com": "thirdparty.bnc.lt",
+  "link.email.tajawal.com": "thirdparty.bnc.lt",
+  "link.foodnetwork.com": "thirdparty.bnc.lt",
+  "link.hello-au.circles.life": "thirdparty.bnc.lt",
+  "link.hello-sg.circles.life": "thirdparty.bnc.lt",
+  "link.hello.soothe.com": "thirdparty.bnc.lt",
+  "link.hello.unum.la": "thirdparty.bnc.lt",
+  "link.hello2-sg.circles.life": "thirdparty.bnc.lt",
+  "link.hey.mypostcard.com": "thirdparty.bnc.lt",
+  "link.info.myfitnesspal.com": "thirdparty.bnc.lt",
+  "link.kdkmoments.com": "thirdparty.bnc.lt",
+  "link.loyalty.almosafer.com": "thirdparty.bnc.lt",
+  "link.loyalty.tajawal.com": "thirdparty.bnc.lt",
+  "link.lpm.surkus.com": "thirdparty.bnc.lt",
+  "link.lpt.surkus.com": "thirdparty.bnc.lt",
+  "link.mail.burgerking.ca": "thirdparty.bnc.lt",
+  "link.mail.popsa.com": "thirdparty.bnc.lt",
+  "link.marketing.churchomeglobal.org": "thirdparty.bnc.lt",
+  "link.mktg.almosafer.com": "thirdparty.bnc.lt",
+  "link.mktg.tajawal.com": "thirdparty.bnc.lt",
+  "link.moodagent.com": "thirdparty.bnc.lt",
+  "link.mypostcard.com": "thirdparty.bnc.lt",
+  "link.nbcadmin.com": "thirdparty.bnc.lt",
+  "link.news.clearpay.co.uk": "thirdparty.bnc.lt",
+  "link.news.goeuro.com": "thirdparty.bnc.lt",
+  "link.notifications.busuu.app": "thirdparty.bnc.lt",
+  "link.notifications.goodu.se": "thirdparty.bnc.lt",
+  "link.offers.kodakmoments.com": "thirdparty.bnc.lt",
+  "link.orders.kodakmoments.com": "thirdparty.bnc.lt",
+  "link.resy.com": "thirdparty.bnc.lt",
+  "link.ridewithvia.com": "thirdparty.bnc.lt",
+  "link.syfy-channel.com": "thirdparty.bnc.lt",
+  "link.team.bnext.es": "thirdparty.bnc.lt",
+  "link.team.bnext.io": "thirdparty.bnc.lt",
+  "link.tempo.fit": "thirdparty.bnc.lt",
+  "link.touchtunes.com": "thirdparty.bnc.lt",
+  "link.touchtunesmail.com": "thirdparty.bnc.lt",
+  "link.tr.freshly.com": "thirdparty.bnc.lt",
+  "link.usa-network.com": "thirdparty.bnc.lt",
+  "link.watchbravotv.com": "thirdparty.bnc.lt",
+  "link.watchoxygen.com": "thirdparty.bnc.lt",
+  "link.yourway.burgerking.ca": "thirdparty.bnc.lt",
+  "links.ab.soul-cycle.email": "thirdparty.bnc.lt",
+  "links.alerts.depop.com": "thirdparty.bnc.lt",
+  "links.announce.touchsurgery.com": "thirdparty.bnc.lt",
+  "links.automated.almosafer.com": "thirdparty.bnc.lt",
+  "links.automated.tajawal.com": "thirdparty.bnc.lt",
+  "links.blueapron.com": "thirdparty.bnc.lt",
+  "links.boxed.com": "thirdparty.bnc.lt",
+  "links.br.discoveryplus.com": "thirdparty.bnc.lt",
+  "links.ca.discoveryplus.com": "thirdparty.bnc.lt",
+  "links.colonelsclub.kfc.com": "thirdparty.bnc.lt",
+  "links.customers.instacartemail.com": "thirdparty.bnc.lt",
+  "links.dice.fm": "thirdparty.bnc.lt",
+  "links.e.aetv.com": "thirdparty.bnc.lt",
+  "links.e.history.com": "thirdparty.bnc.lt",
+  "links.e.historyvault.com": "thirdparty.bnc.lt",
+  "links.e.lifetimemovieclub.com": "thirdparty.bnc.lt",
+  "links.e.mylifetime.com": "thirdparty.bnc.lt",
+  "links.e.wine.com": "thirdparty.bnc.lt",
+  "links.edm.noracora.com": "thirdparty.bnc.lt",
+  "links.elmc.mylifetime.com": "thirdparty.bnc.lt",
+  "links.em.aetv.com": "thirdparty.bnc.lt",
+  "links.em.history.com": "thirdparty.bnc.lt",
+  "links.em.mylifetime.com": "thirdparty.bnc.lt",
+  "links.email.almosafer.com": "thirdparty.bnc.lt",
+  "links.email.bravotv.com": "thirdparty.bnc.lt",
+  "links.email.getgocafe.com": "thirdparty.bnc.lt",
+  "links.email.gianteagle.com": "thirdparty.bnc.lt",
+  "links.email.greenlight.me": "thirdparty.bnc.lt",
+  "links.email.nbc.com": "thirdparty.bnc.lt",
+  "links.email.oxygen.com": "thirdparty.bnc.lt",
+  "links.email.tajawal.com": "thirdparty.bnc.lt",
+  "links.email.twine.com": "thirdparty.bnc.lt",
+  "links.email.usanetwork.com": "thirdparty.bnc.lt",
+  "links.emails.verishop.com": "thirdparty.bnc.lt",
+  "links.evault.history.com": "thirdparty.bnc.lt",
+  "links.fabletics.co.uk": "thirdparty.bnc.lt",
+  "links.fabletics.com": "thirdparty.bnc.lt",
+  "links.fabletics.de": "thirdparty.bnc.lt",
+  "links.fabletics.es": "thirdparty.bnc.lt",
+  "links.fabletics.fr": "thirdparty.bnc.lt",
+  "links.fitbod.me": "thirdparty.bnc.lt",
+  "links.glamsquad.com": "thirdparty.bnc.lt",
+  "links.hitrecord.org": "thirdparty.bnc.lt",
+  "links.huckleberry-labs.com": "thirdparty.bnc.lt",
+  "links.i.blueapron.com": "thirdparty.bnc.lt",
+  "links.info.getgocafe.com": "thirdparty.bnc.lt",
+  "links.info.gianteagle.com": "thirdparty.bnc.lt",
+  "links.info.headspace.com": "thirdparty.bnc.lt",
+  "links.info.kfc.com": "thirdparty.bnc.lt",
+  "links.justfab.co.uk": "thirdparty.bnc.lt",
+  "links.justfab.com": "thirdparty.bnc.lt",
+  "links.justfab.de": "thirdparty.bnc.lt",
+  "links.justfab.es": "thirdparty.bnc.lt",
+  "links.justfab.fr": "thirdparty.bnc.lt",
+  "links.m.blueapron.com": "thirdparty.bnc.lt",
+  "links.mail.allbirds.com": "thirdparty.bnc.lt",
+  "links.mail.stubhub.com": "thirdparty.bnc.lt",
+  "links.marketing.getprizepool.com": "thirdparty.bnc.lt",
+  "links.nbc.com": "thirdparty.bnc.lt",
+  "links.nbcnews.com": "thirdparty.bnc.lt",
+  "links.news.mindbody.io": "thirdparty.bnc.lt",
+  "links.notarize.com": "thirdparty.bnc.lt",
+  "links.notifications.headspace.com": "thirdparty.bnc.lt",
+  "links.official.vsco.co": "thirdparty.bnc.lt",
+  "links.ohhey.depop.com": "thirdparty.bnc.lt",
+  "links.openfit.com": "thirdparty.bnc.lt",
+  "links.orders.kfc.com": "thirdparty.bnc.lt",
+  "links.playon.tv": "thirdparty.bnc.lt",
+  "links.schnucks.com": "thirdparty.bnc.lt",
+  "links.sheroes.in": "thirdparty.bnc.lt",
+  "links.shoppers.instacartemail.com": "thirdparty.bnc.lt",
+  "links.strava.com": "thirdparty.bnc.lt",
+  "links.t.blueapron.com": "thirdparty.bnc.lt",
+  "links.t.wine.com": "thirdparty.bnc.lt",
+  "links.thedyrt.com": "thirdparty.bnc.lt",
+  "links.theyes.com": "thirdparty.bnc.lt",
+  "links.yummly.com": "thirdparty.bnc.lt",
+  "links2.chownowmail.com": "thirdparty.bnc.lt",
+  "links2.emails.verishop.com": "thirdparty.bnc.lt",
+  "linktrace.diningcity.cn": "thirdparty.bnc.lt",
+  "m.irl.com": "thirdparty.bnc.lt",
+  "m1.stadiumgoods.com": "thirdparty.bnc.lt",
+  "mail.theknot.com": "thirdparty.bnc.lt",
+  "mail01.virginpulse.com": "thirdparty.bnc.lt",
+  "mlinks.fluz.app": "thirdparty.bnc.lt",
+  "mx.carfax.com": "thirdparty.bnc.lt",
+  "notice.hoopladigital.com": "thirdparty.bnc.lt",
+  "notify.pray.com": "thirdparty.bnc.lt",
+  "pint-dev-branch.airship.com": "thirdparty.bnc.lt",
+  "qbse.intuit.com": "thirdparty.bnc.lt",
+  "read.medium.com": "thirdparty.bnc.lt",
+  "sendgridlinks.neuroflowsolution.com": "thirdparty.bnc.lt",
+  "sephora-qa.branchstaging.com": "epsilon.thirdparty.bnc.lt",
+  "sg3.notarize.com": "thirdparty.bnc.lt",
+  "shoppers-test.instacartemail.com": "thirdparty.bnc.lt",
+  "shoppers.instacartemail.com": "thirdparty.bnc.lt",
+  "smbranch.nc.mails.sssports.com": "thirdparty.bnc.lt",
+  "t.ac.pandora.com": "thirdparty.bnc.lt",
+  "t.beautybay.com": "thirdparty.bnc.lt",
+  "t.comms.thetimes.co.uk": "thirdparty.bnc.lt",
+  "t.discover.kayosports.com.au": "thirdparty.bnc.lt",
+  "t.newsletter.thetimes.co.uk": "thirdparty.bnc.lt",
+  "t.prod1.discover.binge.com.au": "thirdparty.bnc.lt",
+  "t.service.thetimes.co.uk": "thirdparty.bnc.lt",
+  "t1.benefits.tops.co.th": "thirdparty.bnc.lt",
+  "t1.stadiumgoods.com": "thirdparty.bnc.lt",
+  "td.benefits.tops.co.th": "thirdparty.bnc.lt",
+  "td.ecomms.originenergy.com.au": "thirdparty.bnc.lt",
+  "td.testbnc.originenergy.com.au": "thirdparty.bnc.lt",
+  "test-eml.postmates.com": "thirdparty.bnc.lt",
+  "test-fleet-eml.postmates.com": "thirdparty.bnc.lt",
+  "test.customers.instacartemail.com": "thirdparty.bnc.lt",
+  "test.shoppers.instacartemail.com": "thirdparty.bnc.lt",
+  "trac.roomster.com": "thirdparty.bnc.lt",
+  "track.cafu.com": "thirdparty.bnc.lt",
+  "track.roomster.com": "thirdparty.bnc.lt",
+  "track.spothero.com": "thirdparty.bnc.lt",
+  "tracking.email-mandrill.pushd.com": "thirdparty.bnc.lt",
+  "tracking.laredoute.fr": "thirdparty.bnc.lt",
+  "tracking.sp.sofi.com": "thirdparty.bnc.lt",
+  "trk.bc.shutterfly.com": "thirdparty.bnc.lt",
+  "trk.dijanow.com": "thirdparty.bnc.lt",
+  "trk.e.underarmour.com": "thirdparty.bnc.lt",
+  "trk.geico.com": "thirdparty.bnc.lt",
+  "trk.m1.stadiumgoods.com": "thirdparty.bnc.lt",
+  "trk.s.sephora.com": "thirdparty.bnc.lt",
+  "trk.us.underarmour.com": "thirdparty.bnc.lt",
+  "trklink.luisaviaroma.com": "thirdparty.bnc.lt",
+  "url1015.abtest.em.redmart.com": "thirdparty.bnc.lt",
+  "url1020.keycollectorcomics.com": "thirdparty.bnc.lt",
+  "url1451.careerkarma.info": "thirdparty.bnc.lt",
+  "url3630.newsletter.experience-muse.com": "thirdparty.bnc.lt",
+  "url7542.fluz.app": "thirdparty.bnc.lt",
+  "url8196.mindrise.app": "thirdparty.bnc.lt",
+  "url9576.oneshift.com": "thirdparty.bnc.lt",
+  "url9609.account.experience-muse.com": "thirdparty.bnc.lt",
+  "wl.spotify.com": "thirdparty.bnc.lt",
+  "acquisition.klm.com": "ct-phoenix-proxy-it-prod-475e2cdbe73ac97c.elb.eu-west-3.amazonaws.com",
+  "data.cofinoga.fr": "ct-phoenix-proxy-it-prod-475e2cdbe73ac97c.elb.eu-west-3.amazonaws.com",
+  "data.decathlon.de": "redirect440.tagcommander.com",
+  "data.decathlon.es": "redirect341.tagcommander.com",
+  "data.decathlon.fr": "redirect271.tagcommander.com",
+  "data.decathlon.it": "ct-phoenix-proxy-it-prod-475e2cdbe73ac97c.elb.eu-west-3.amazonaws.com",
+  "data.ouigo.com": "ct-phoenix-proxy-it-prod-475e2cdbe73ac97c.elb.eu-west-3.amazonaws.com",
+  "data.ubi.com": "ct-phoenix-proxy-it-prod-475e2cdbe73ac97c.elb.eu-west-3.amazonaws.com",
+  "data.wptag.net": "ct-phoenix-proxy-it-prod-475e2cdbe73ac97c.elb.eu-west-3.amazonaws.com",
+  "logger.yp.ca": "ct-phoenix-proxy-it-prod-475e2cdbe73ac97c.elb.eu-west-3.amazonaws.com",
+  "sales.disneylandparis.com": "ct-phoenix-proxy-it-prod-475e2cdbe73ac97c.elb.eu-west-3.amazonaws.com",
+  "tag.boulanger.fr": "ct-phoenix-proxy-it-prod-475e2cdbe73ac97c.elb.eu-west-3.amazonaws.com",
+  "tagcommander.castaluna.fr": "redirect804.tagcommander.com",
+  "tagcommander.laredoute.be": "redirect521.tagcommander.com",
+  "tagcommander.laredoute.co.uk": "redirect660.tagcommander.com",
+  "tc.airfrance.com": "redirect324.tagcommander.com",
+  "tcdata.fnac.com": "redirect28.tagcommander.com",
+  "abkdae.namshi.com": "gum.par.vip.prod.criteo.com",
+  "abvghl.udn.com": "gum.am5.vip.prod.criteo.com",
+  "achamm.doctolib.fr": "gum.am5.vip.prod.criteo.com",
+  "adxwxw.kp.ru": "gum.am5.vip.prod.criteo.com",
+  "adxzju.penti.com": "gum.am5.vip.prod.criteo.com",
+  "aelsth.azerty.nl": "gum.am5.vip.prod.criteo.com",
+  "afhjxb.flaconi.de": "gum.am5.vip.prod.criteo.com",
+  "ahdeka.kazanexpress.ru": "gum.am5.vip.prod.criteo.com",
+  "ahhrtt.pixnet.net": "gum.am5.vip.prod.criteo.com",
+  "aikrir.lcwaikiki.com": "gum.am5.vip.prod.criteo.com",
+  "ajbeqy.delfi.lt": "gum.par.vip.prod.criteo.com",
+  "ajvzis.triumph.com": "gum.par.vip.prod.criteo.com",
+  "aminks.underarmour.com.tr": "gum.am5.vip.prod.criteo.com",
+  "aolsvc.snowqueen.ru": "gum.par.vip.prod.criteo.com",
+  "aplobv.xexymix.com": "gum.am5.vip.prod.criteo.com",
+  "aszeeh.monacoanother.com": "gum.par.vip.prod.criteo.com",
+  "ateveq.street-beat.ru": "gum.am5.vip.prod.criteo.com",
+  "atzzrq.tbs.co.jp": "gum.par.vip.prod.criteo.com",
+  "ausclh.castlery.com": "gum.am5.vip.prod.criteo.com",
+  "awdssf.drnutrition.com": "gum.par.vip.prod.criteo.com",
+  "awowwo.forever21.com": "gum.am5.vip.prod.criteo.com",
+  "aydtkb.pikabu.ru": "dnsdelegation.io",
+  "aypbpr.tokopedia.com": "gum.criteo.com",
+  "azrxtr.trenyrkarna.cz": "gum.par.vip.prod.criteo.com",
+  "bayslw.vizualfactory.com": "gum.par.vip.prod.criteo.com",
+  "bbbihe.vertbaudet.es": "gum.am5.vip.prod.criteo.com",
+  "bcdwku.eg.ru": "gum.am5.vip.prod.criteo.com",
+  "bderbn.foxtrot.com.ua": "gum.am5.vip.prod.criteo.com",
+  "bdfmis.motor-talk.de": "gum.par.vip.prod.criteo.com",
+  "beigjb.kantukan.co.kr": "gum.am5.vip.prod.criteo.com",
+  "bfjoyp.plus.nl": "gum.par.vip.prod.criteo.com",
+  "bggtab.svetlux.ru": "gum.am5.vip.prod.criteo.com",
+  "bhawtp.vitacost.com": "gum.par.vip.prod.criteo.com",
+  "bjfbac.hyundaivaudreuil.com": "gum.par.vip.prod.criteo.com",
+  "blrhel.veronicabeard.com": "gum.par.vip.prod.criteo.com",
+  "blyrvv.hm.com": "gum.am5.vip.prod.criteo.com",
+  "blziha.intimissimi.com": "gum.am5.vip.prod.criteo.com",
+  "bmqjor.k-bid.com": "gum.par.vip.prod.criteo.com",
+  "bmypml.gsuplementos.com.br": "gum.am5.vip.prod.criteo.com",
+  "bmzuyj.nifty.com": "gum.par.vip.prod.criteo.com",
+  "bnorkn.lovecrafts.com": "gum.am5.vip.prod.criteo.com",
+  "bnpadw.enviedefraise.it": "gum.am5.vip.prod.criteo.com",
+  "boirza.idealista.pt": "gum.am5.vip.prod.criteo.com",
+  "boqufs.2nn.jp": "gum.par.vip.prod.criteo.com",
+  "bqacmp.vidaxl.no": "gum.am5.vip.prod.criteo.com",
+  "bqvndd.ifood.com.br": "gum.am5.vip.prod.criteo.com",
+  "bskblt.6thstreet.com": "gum.am5.vip.prod.criteo.com",
+  "bttmkj.diesel.com": "gum.am5.vip.prod.criteo.com",
+  "bvkgqg.sokolov.ru": "gum.am5.vip.prod.criteo.com",
+  "bvubje.leboncoin.fr": "gum.par.vip.prod.criteo.com",
+  "byqdtp.interpark.com": "gum.am5.vip.prod.criteo.com",
+  "bzlold.machi.to": "gum.am5.vip.prod.criteo.com",
+  "caknmq.rotita.com": "gum.am5.vip.prod.criteo.com",
+  "cbnzop.c-c-j.com": "gum.am5.vip.prod.criteo.com",
+  "cckoih.avon.pl": "gum.am5.vip.prod.criteo.com",
+  "cdfhpj.automobile.it": "gum.par.vip.prod.criteo.com",
+  "cdgjcg.novostroy-spb.ru": "gum.par.vip.prod.criteo.com",
+  "cerohj.loccitane.ru": "gum.criteo.com",
+  "cfyhym.weightwatchers.fr": "gum.am5.vip.prod.criteo.com",
+  "cgqkhc.trendyol.com": "gum.am5.vip.prod.criteo.com",
+  "ciszhp.finanzfrage.net": "gum.am5.vip.prod.criteo.com",
+  "ciszhp.gutefrage.net": "gum.am5.vip.prod.criteo.com",
+  "ckozwx.n11.com": "gum.am5.vip.prod.criteo.com",
+  "ckpxtt.justfly.com": "gum.am5.vip.prod.criteo.com",
+  "cksfgh.jaycar.com.au": "gum.par.vip.prod.criteo.com",
+  "clnbze.gazetawroclawska.pl": "gum.par.vip.prod.criteo.com",
+  "clnbze.gol24.pl": "gum.am5.vip.prod.criteo.com",
+  "clnbze.naszemiasto.pl": "gum.am5.vip.prod.criteo.com",
+  "clshkv.labirint.ru": "gum.am5.vip.prod.criteo.com",
+  "cnpxwl.cheapcaribbean.com": "gum.am5.vip.prod.criteo.com",
+  "cnvhtw.pompa.ru": "gum.am5.vip.prod.criteo.com",
+  "colgui.vidaxl.pt": "gum.am5.vip.prod.criteo.com",
+  "content-strl.courses-en-ligne.carrefour.fr": "e25877.dscb.akamaiedge.net",
+  "cpbain.activatedyou.com": "gum.par.vip.prod.criteo.com",
+  "cqbbpf.geewiz.co.za": "gum.am5.vip.prod.criteo.com",
+  "cqishr.mobile.de": "gum.am5.vip.prod.criteo.com",
+  "cqktqf.augustine.co.nz": "gum.par.vip.prod.criteo.com",
+  "cqpmvc.capital.fr": "gum.par.vip.prod.criteo.com",
+  "cqpmvc.gala.fr": "gum.par.vip.prod.criteo.com",
+  "cqpmvc.programme-tv.net": "gum.am5.vip.prod.criteo.com",
+  "cqpmvc.voici.fr": "gum.par.vip.prod.criteo.com",
+  "cqubdd.metro.co.uk": "gum.par.vip.prod.criteo.com",
+  "cruntn.receno.com": "gum.par.vip.prod.criteo.com",
+  "csalhh.okay.cz": "gum.am5.vip.prod.criteo.com",
+  "cshkuo.cruise.com": "gum.am5.vip.prod.criteo.com",
+  "csyqts.tmon.co.kr": "gum.par.vip.prod.criteo.com",
+  "ctwqxs.autoscout24.at": "gum.am5.vip.prod.criteo.com",
+  "ctyjsf.cellphones.com.vn": "gum.am5.vip.prod.criteo.com",
+  "cvhefd.gametech.ru": "gum.par.vip.prod.criteo.com",
+  "cvhefd.ixbt.com": "gum.par.vip.prod.criteo.com",
+  "cvoddu.getnamenecklace.com": "gum.par.vip.prod.criteo.com",
+  "cwcdmm.zennioptical.com": "gum.par.vip.prod.criteo.com",
+  "cxrfns.gu-global.com": "gum.par.vip.prod.criteo.com",
+  "cyvxfq.jennikayne.com": "gum.par.vip.prod.criteo.com",
+  "czdxto.radiopopular.pt": "gum.par.vip.prod.criteo.com",
+  "czvdlp.hgregoire.com": "gum.am5.vip.prod.criteo.com",
+  "dabuuc.jomalone.co.kr": "gum.am5.vip.prod.criteo.com",
+  "dbmyvl.apartmentfinder.com": "gum.par.vip.prod.criteo.com",
+  "dbpbyh.americanas.com.br": "gum.am5.vip.prod.criteo.com",
+  "dbzpek.nike.com": "gum.par.vip.prod.criteo.com",
+  "dccfog.petco.com": "gum.am5.vip.prod.criteo.com",
+  "dcclaa.bunte.de": "gum.am5.vip.prod.criteo.com",
+  "dcspil.hifiklubben.nl": "gum.par.vip.prod.criteo.com",
+  "ddrqaq.superkul.no": "gum.par.vip.prod.criteo.com",
+  "degh48.fnac.com": "e25877.dscb.akamaiedge.net",
+  "denpjz.jamesedition.com": "gum.par.vip.prod.criteo.com",
+  "detnmz.dailypuppy.com": "gum.am5.vip.prod.criteo.com",
+  "detnmz.itstillruns.com": "gum.am5.vip.prod.criteo.com",
+  "detnmz.leaf.tv": "gum.am5.vip.prod.criteo.com",
+  "dfvdkx.gismeteo.ua": "gum.am5.vip.prod.criteo.com",
+  "dgbftl.luckyvitamin.com": "gum.par.vip.prod.criteo.com",
+  "dgkpzy.2ch2.net": "gum.am5.vip.prod.criteo.com",
+  "dgynnj.koctas.com.tr": "gum.par.vip.prod.criteo.com",
+  "diesci.simpletire.com": "gum.am5.vip.prod.criteo.com",
+  "dikhsb.vividseats.com": "gum.am5.vip.prod.criteo.com",
+  "dkskbu.demae-can.com": "gum.am5.vip.prod.criteo.com",
+  "dlesjf.jutarnji.hr": "gum.par.vip.prod.criteo.com",
+  "dlpjgh.techport.ru": "gum.par.vip.prod.criteo.com",
+  "dlqxtm.sssports.com": "gum.par.vip.prod.criteo.com",
+  "dmdxly.oldrow.net": "gum.am5.vip.prod.criteo.com",
+  "dmxalb.winni.in": "gum.par.vip.prod.criteo.com",
+  "dngpzy.01net.com": "gum.par.vip.prod.criteo.com",
+  "dngpzy.bfmtv.com": "gum.am5.vip.prod.criteo.com",
+  "dngpzy.liberation.fr": "gum.par.vip.prod.criteo.com",
+  "doagpm.promart.pe": "gum.am5.vip.prod.criteo.com",
+  "dptkdh.joinhoney.com": "gum.am5.vip.prod.criteo.com",
+  "dqvzvi.ginzabiyou.com": "gum.am5.vip.prod.criteo.com",
+  "drvive.lamoda.ru": "dnsdelegation.io",
+  "dtyfsx.kaffeevorteil.de": "gum.am5.vip.prod.criteo.com",
+  "dvghns.idealista.it": "gum.am5.vip.prod.criteo.com",
+  "dvmira.keskisenkello.fi": "dnsdelegation.io",
+  "dwbotr.ssg.com": "gum.par.vip.prod.criteo.com",
+  "dwglgp.dunelm.com": "gum.par.vip.prod.criteo.com",
+  "edcybh.urbannatural.com": "gum.par.vip.prod.criteo.com",
+  "eedijm.bakeca.it": "gum.par.vip.prod.criteo.com",
+  "eennme.vidaxl.sk": "gum.am5.vip.prod.criteo.com",
+  "efglbp.baur.de": "gum.am5.vip.prod.criteo.com",
+  "efwddc.lifemebel.ru": "gum.par.vip.prod.criteo.com",
+  "ehdkzm.ottoversand.at": "gum.am5.vip.prod.criteo.com",
+  "eicyds.qoo10.jp": "gum.par.vip.prod.criteo.com",
+  "eiftfa.fashionette.de": "gum.par.vip.prod.criteo.com",
+  "ejejip.bjjfanatics.com": "gum.par.vip.prod.criteo.com",
+  "embknh.perriconemd.com": "gum.par.vip.prod.criteo.com",
+  "emfgcm.gretta.ru": "gum.par.vip.prod.criteo.com",
+  "emotir.pcone.com.tw": "gum.par.vip.prod.criteo.com",
+  "endljp.activenews.ro": "gum.am5.vip.prod.criteo.com",
+  "endljp.dariknews.bg": "gum.am5.vip.prod.criteo.com",
+  "endljp.kupujemprodajem.com": "gum.am5.vip.prod.criteo.com",
+  "eniobs.moncler.com": "gum.par.vip.prod.criteo.com",
+  "eonmxd.urban-research.jp": "gum.am5.vip.prod.criteo.com",
+  "epcdko.forevernew.com.au": "gum.am5.vip.prod.criteo.com",
+  "eqkwat.histoiredor.com": "gum.am5.vip.prod.criteo.com",
+  "ergrbp.hobidunya.com": "gum.am5.vip.prod.criteo.com",
+  "erlfhw.glamira.com.au": "gum.par.vip.prod.criteo.com",
+  "essdhn.makuake.com": "gum.am5.vip.prod.criteo.com",
+  "esttut.tsum.ru": "gum.par.vip.prod.criteo.com",
+  "etgkbu.unieuro.it": "gum.am5.vip.prod.criteo.com",
+  "eubynl.baby-sweets.de": "gum.par.vip.prod.criteo.com",
+  "euqsfp.belluna.jp": "gum.par.vip.prod.criteo.com",
+  "evrget.nikkan-gendai.com": "gum.am5.vip.prod.criteo.com",
+  "exxwhi.jmty.jp": "gum.par.vip.prod.criteo.com",
+  "eymiwj.cancan.ro": "gum.am5.vip.prod.criteo.com",
+  "fahmta.boxrec.com": "gum.am5.vip.prod.criteo.com",
+  "fazphz.theiconic.com.au": "gum.par.vip.prod.criteo.com",
+  "fbvbyi.abekker.ru": "gum.par.vip.prod.criteo.com",
+  "febcyv.joshi-spa.jp": "gum.par.vip.prod.criteo.com",
+  "feqbqn.rent.com": "gum.am5.vip.prod.criteo.com",
+  "ffrmwn.musinsa.com": "gum.am5.vip.prod.criteo.com",
+  "ffuodj.lanebryant.com": "gum.par.vip.prod.criteo.com",
+  "fgbgtt.cian.ru": "gum.am5.vip.prod.criteo.com",
+  "fiknma.7ya.ru": "dnsdelegation.io",
+  "fimyxg.haberturk.com": "gum.par.vip.prod.criteo.com",
+  "fjdzgn.paulfredrick.com": "gum.par.vip.prod.criteo.com",
+  "fjighz.armaniexchange.com": "gum.am5.vip.prod.criteo.com",
+  "fjqtyu.bethowen.ru": "gum.am5.vip.prod.criteo.com",
+  "fjuccm.uktsc.com": "gum.am5.vip.prod.criteo.com",
+  "fjwcmj.wisemarket.co.kr": "gum.par.vip.prod.criteo.com",
+  "fkdaik.lightinthebox.com": "gum.am5.vip.prod.criteo.com",
+  "fkmdky.lifehacker.ru": "gum.am5.vip.prod.criteo.com",
+  "fnfhgj.secretsales.com": "gum.am5.vip.prod.criteo.com",
+  "fnlvhy.wowma.jp": "gum.par.vip.prod.criteo.com",
+  "fntefy.myxfitness.com": "gum.par.vip.prod.criteo.com",
+  "fpvrgm.blackforestdecor.com": "gum.am5.vip.prod.criteo.com",
+  "fpwtsp.xxxlutz.de": "gum.am5.vip.prod.criteo.com",
+  "fpxewa.ilmeteo.it": "gum.am5.vip.prod.criteo.com",
+  "fqppgv.cheapoair.com": "gum.par.vip.prod.criteo.com",
+  "frbdzc.goguynet.jp": "gum.par.vip.prod.criteo.com",
+  "frbmdx.fwrd.com": "gum.par.vip.prod.criteo.com",
+  "fudezz.grid.id": "gum.am5.vip.prod.criteo.com",
+  "fudezz.kompas.com": "gum.par.vip.prod.criteo.com",
+  "fudezz.kompas.tv": "gum.am5.vip.prod.criteo.com",
+  "fudezz.sonora.id": "gum.am5.vip.prod.criteo.com",
+  "fufoir.aif.ru": "gum.am5.vip.prod.criteo.com",
+  "fuicmy.hana-mail.jp": "gum.par.vip.prod.criteo.com",
+  "fuzrxc.aboutyou.nl": "gum.par.vip.prod.criteo.com",
+  "fvvyjd.jtv.com": "gum.am5.vip.prod.criteo.com",
+  "fxmdjr.mamastar.jp": "gum.par.vip.prod.criteo.com",
+  "fxyvcz.thecompanystore.com": "gum.am5.vip.prod.criteo.com",
+  "fyccsw.eobuwie.com.pl": "gum.par.vip.prod.criteo.com",
+  "fyzivm.muztorg.ru": "gum.par.vip.prod.criteo.com",
+  "gafpjt.maybe-baby.co.kr": "gum.par.vip.prod.criteo.com",
+  "gcmehy.poisondrop.ru": "gum.par.vip.prod.criteo.com",
+  "gdsngr.chainreactioncycles.com": "gum.par.vip.prod.criteo.com",
+  "gedozw.autoscout24.cz": "gum.am5.vip.prod.criteo.com",
+  "ggsnoq.cavalierebici.it": "gum.par.vip.prod.criteo.com",
+  "ghdlry.greetz.nl": "gum.am5.vip.prod.criteo.com",
+  "gjhkyh.4fresh.ru": "gum.criteo.com",
+  "gksqfw.reverso.net": "gum.par.vip.prod.criteo.com",
+  "gkxkvp.tumi.co.jp": "gum.am5.vip.prod.criteo.com",
+  "glzsji.nordman.ru": "gum.am5.vip.prod.criteo.com",
+  "gmdcft.vsemayki.ru": "gum.am5.vip.prod.criteo.com",
+  "gmufag.74.ru": "gum.par.vip.prod.criteo.com",
+  "gmufag.e1.ru": "gum.par.vip.prod.criteo.com",
+  "gmufag.elle.ru": "gum.par.vip.prod.criteo.com",
+  "gmufag.fontanka.ru": "gum.par.vip.prod.criteo.com",
+  "gmufag.marieclaire.ru": "gum.par.vip.prod.criteo.com",
+  "gmufag.nn.ru": "gum.par.vip.prod.criteo.com",
+  "gmufag.starhit.ru": "gum.par.vip.prod.criteo.com",
+  "gmufag.woman.ru": "gum.par.vip.prod.criteo.com",
+  "gnnzuo.ormatek.com": "gum.am5.vip.prod.criteo.com",
+  "gnshwf.room-park.ru": "gum.am5.vip.prod.criteo.com",
+  "goazlf.mytoys.de": "gum.am5.vip.prod.criteo.com",
+  "gocuxy.baycrews.jp": "gum.am5.vip.prod.criteo.com",
+  "gqhlrr.fragrancedirect.co.uk": "gum.par.vip.prod.criteo.com",
+  "gsmqez.xcite.com": "gum.par.vip.prod.criteo.com",
+  "gsyegj.shatura.com": "gum.par.vip.prod.criteo.com",
+  "gwqtum.philips.de": "gum.par.vip.prod.criteo.com",
+  "gxjnyy.contorion.fr": "gum.par.vip.prod.criteo.com",
+  "gxyskq.valostore.se": "gum.par.vip.prod.criteo.com",
+  "gybles.shopee.ph": "gum.par.vip.prod.criteo.com",
+  "gytcbi.oriflame.ru": "gum.par.vip.prod.criteo.com",
+  "gyvcwd.cdiscount.com": "gum.par.vip.prod.criteo.com",
+  "gzidix.lampgallerian.se": "gum.par.vip.prod.criteo.com",
+  "gzimdi.soloautos.mx": "gum.par.vip.prod.criteo.com",
+  "hcjpbc.muscleandfitness.com": "gum.par.vip.prod.criteo.com",
+  "hcjpbc.okmagazine.com": "gum.par.vip.prod.criteo.com",
+  "hcjpbc.usmagazine.com": "gum.par.vip.prod.criteo.com",
+  "hdicsm.autoscout24.be": "gum.par.vip.prod.criteo.com",
+  "hesprh.sony.jp": "gum.par.vip.prod.criteo.com",
+  "hhbxcs.tylko.com": "gum.am5.vip.prod.criteo.com",
+  "hipkqt.contorion.de": "gum.par.vip.prod.criteo.com",
+  "hitmse.altinbas.com": "gum.am5.vip.prod.criteo.com",
+  "hiuplq.diretta.it": "gum.par.vip.prod.criteo.com",
+  "hiuplq.eredmenyek.com": "gum.par.vip.prod.criteo.com",
+  "hiuplq.flashscore.co.id": "gum.par.vip.prod.criteo.com",
+  "hiuplq.flashscore.com": "gum.par.vip.prod.criteo.com",
+  "hiuplq.flashscore.com.tr": "gum.par.vip.prod.criteo.com",
+  "hiuplq.flashscore.gr": "gum.par.vip.prod.criteo.com",
+  "hiuplq.flashscore.ru": "gum.par.vip.prod.criteo.com",
+  "hiyksu.karllagerfeldparis.com": "gum.am5.vip.prod.criteo.com",
+  "hjbgdc.fracora.com": "gum.am5.vip.prod.criteo.com",
+  "hkqrpk.ozon.ru": "gum.am5.vip.prod.criteo.com",
+  "hlsjel.engelvoelkers.com": "gum.am5.vip.prod.criteo.com",
+  "hmakpa.saksoff5th.com": "gum.par.vip.prod.criteo.com",
+  "hmfnaj.notino.bg": "gum.par.vip.prod.criteo.com",
+  "hnnuaa.willhaben.at": "gum.par.vip.prod.criteo.com",
+  "hnytrd.ssfshop.com": "gum.par.vip.prod.criteo.com",
+  "hoafot.itoman.com": "gum.am5.vip.prod.criteo.com",
+  "hoseyy.prettylittlething.com": "gum.par.vip.prod.criteo.com",
+  "hruyiq.auction.co.kr": "gum.am5.vip.prod.criteo.com",
+  "hsasqc.randewoo.ru": "gum.par.vip.prod.criteo.com",
+  "hsaxca.americatv.com.pe": "gum.par.vip.prod.criteo.com",
+  "hvrhgt.the-sun.com": "gum.par.vip.prod.criteo.com",
+  "hvrhgt.thesun.co.uk": "gum.par.vip.prod.criteo.com",
+  "hwvqdp.obilet.com": "gum.am5.vip.prod.criteo.com",
+  "hwxguw.palladiumboots.fr": "gum.par.vip.prod.criteo.com",
+  "hwyytk.verabradley.com": "gum.par.vip.prod.criteo.com",
+  "hwyyuy.ringcentral.com": "gum.am5.vip.prod.criteo.com",
+  "hxxhwe.nextdealshop.com": "gum.par.vip.prod.criteo.com",
+  "hycpyd.efpfanfic.net": "gum.par.vip.prod.criteo.com",
+  "hyeorg.gmarket.co.kr": "gum.par.vip.prod.criteo.com",
+  "hyjfnv.valentinmaya.com": "gum.am5.vip.prod.criteo.com",
+  "hyybul.kaskus.co.id": "gum.par.vip.prod.criteo.com",
+  "hzeetn.natalie.mu": "gum.par.vip.prod.criteo.com",
+  "iazwzp.lyst.com": "gum.am5.vip.prod.criteo.com",
+  "ibkups.rci.com": "gum.am5.vip.prod.criteo.com",
+  "icehcv.nordicchoicehotels.no": "gum.am5.vip.prod.criteo.com",
+  "idkhwc.emwomeble.pl": "gum.am5.vip.prod.criteo.com",
+  "idqwqm.kkday.com": "gum.par.vip.prod.criteo.com",
+  "ifnyop.priceline.com": "gum.am5.vip.prod.criteo.com",
+  "ifyane.balaan.co.kr": "gum.par.vip.prod.criteo.com",
+  "igexlg.weltbild.de": "gum.par.vip.prod.criteo.com",
+  "ihmnnz.flo.com.tr": "gum.criteo.com",
+  "iiajtl.zeit.de": "gum.am5.vip.prod.criteo.com",
+  "iipcld.wargaming.net": "gum.par.vip.prod.criteo.com",
+  "ijaabm.telemundo.com": "gum.par.vip.prod.criteo.com",
+  "ijdiny.zikoshop.com.br": "gum.am5.vip.prod.criteo.com",
+  "ijtazz.boscooutlet.ru": "gum.am5.vip.prod.criteo.com",
+  "ikghqz.online-marks.com": "gum.par.vip.prod.criteo.com",
+  "illcqd.showpo.com": "gum.par.vip.prod.criteo.com",
+  "iltcaf.immobilienscout24.de": "gum.par.vip.prod.criteo.com",
+  "imfhie.brighterblooms.com": "gum.am5.vip.prod.criteo.com",
+  "imhwzc.blibli.com": "gum.am5.vip.prod.criteo.com",
+  "imjsfy.allbeauty.com": "gum.am5.vip.prod.criteo.com",
+  "inmuzp.popsockets.com": "gum.am5.vip.prod.criteo.com",
+  "innvid.blauer.com": "gum.am5.vip.prod.criteo.com",
+  "inqjal.dickssportinggoods.com": "gum.am5.vip.prod.criteo.com",
+  "iogbwd.homamia.com": "gum.am5.vip.prod.criteo.com",
+  "ipcfgw.pieces.com": "gum.par.vip.prod.criteo.com",
+  "ipkasp.nissan.co.jp": "gum.par.vip.prod.criteo.com",
+  "iqdcaz.santehnika-online.ru": "gum.par.vip.prod.criteo.com",
+  "iqlhlp.ab-in-den-urlaub.ch": "gum.par.vip.prod.criteo.com",
+  "irvnot.athome.lu": "gum.am5.vip.prod.criteo.com",
+  "iseuaa.olx.pl": "gum.par.vip.prod.criteo.com",
+  "isyght.lensa.ro": "gum.am5.vip.prod.criteo.com",
+  "iuwiim.steigenberger.com": "gum.par.vip.prod.criteo.com",
+  "ivbxao.roastmarket.de": "gum.am5.vip.prod.criteo.com",
+  "ivxmwj.bonprix.ua": "gum.par.vip.prod.criteo.com",
+  "iwgfdj.iko-yo.net": "gum.par.vip.prod.criteo.com",
+  "iwpkhm.re-store.ru": "gum.par.vip.prod.criteo.com",
+  "iwpneu.eneba.com": "gum.par.vip.prod.criteo.com",
+  "jbbljg.autoscout24.bg": "gum.am5.vip.prod.criteo.com",
+  "jbezdi.ilsole24ore.com": "gum.am5.vip.prod.criteo.com",
+  "jdgtgb.desired.de": "gum.am5.vip.prod.criteo.com",
+  "jdgtgb.duden.de": "gum.par.vip.prod.criteo.com",
+  "jdgtgb.express.de": "gum.par.vip.prod.criteo.com",
+  "jdgtgb.giga.de": "gum.am5.vip.prod.criteo.com",
+  "jdgtgb.kicker.de": "gum.par.vip.prod.criteo.com",
+  "jdgtgb.mopo.de": "gum.par.vip.prod.criteo.com",
+  "jdgtgb.t-online.de": "gum.par.vip.prod.criteo.com",
+  "jdgtgb.volksstimme.de": "gum.par.vip.prod.criteo.com",
+  "jdgtgb.weser-kurier.de": "gum.par.vip.prod.criteo.com",
+  "jeccmq.wehkamp.nl": "gum.par.vip.prod.criteo.com",
+  "jelndb.truereligion.com": "gum.par.vip.prod.criteo.com",
+  "jeyttn.snipes.com": "gum.par.vip.prod.criteo.com",
+  "jgdguc.arcteryx.com": "gum.par.vip.prod.criteo.com",
+  "jhrewn.venezia.pl": "gum.am5.vip.prod.criteo.com",
+  "jknarp.kakaku.com": "gum.am5.vip.prod.criteo.com",
+  "jktqvc.vamsvet.ru": "gum.par.vip.prod.criteo.com",
+  "jkzdny.go-sport.com": "gum.par.vip.prod.criteo.com",
+  "jldtlh.fashionnova.com": "gum.par.vip.prod.criteo.com",
+  "jmjkix.tofisa.com": "gum.par.vip.prod.criteo.com",
+  "joastb.idealista.com": "gum.par.vip.prod.criteo.com",
+  "joqawz.snipes.nl": "gum.par.vip.prod.criteo.com",
+  "jpluzr.autoc-one.jp": "gum.am5.vip.prod.criteo.com",
+  "jqimgr.oynasana.com": "gum.am5.vip.prod.criteo.com",
+  "jraasj.kobo.com": "gum.par.vip.prod.criteo.com",
+  "jropij.minelli.fr": "gum.am5.vip.prod.criteo.com",
+  "jshkyh.29cm.co.kr": "gum.par.vip.prod.criteo.com",
+  "jstvqk.bellisima.mx": "gum.par.vip.prod.criteo.com",
+  "jtyutq.chaussures.fr": "gum.am5.vip.prod.criteo.com",
+  "juzqsq.finanzcheck.de": "gum.par.vip.prod.criteo.com",
+  "jvbvng.notino.it": "gum.par.vip.prod.criteo.com",
+  "jvznla.rossmann.com.tr": "gum.par.vip.prod.criteo.com",
+  "jwnloc.pharmacosmetica.ru": "gum.par.vip.prod.criteo.com",
+  "jxeumx.hanaunni.com": "gum.am5.vip.prod.criteo.com",
+  "jxvrhx.fotokoch.de": "gum.am5.vip.prod.criteo.com",
+  "jybnuw.mudah.my": "gum.am5.vip.prod.criteo.com",
+  "kabokc.webuy.com": "gum.par.vip.prod.criteo.com",
+  "kbfqxb.clicknfunny.com": "gum.am5.vip.prod.criteo.com",
+  "kbviuj.enoteca.co.jp": "gum.par.vip.prod.criteo.com",
+  "kdihxl.lecuine.com": "gum.par.vip.prod.criteo.com",
+  "keqglr.panvel.com": "gum.par.vip.prod.criteo.com",
+  "kfzhph.bonprix.pl": "gum.am5.vip.prod.criteo.com",
+  "kfzntn.chinatimes.com": "gum.par.vip.prod.criteo.com",
+  "kgqxzw.blue-tomato.com": "gum.par.vip.prod.criteo.com",
+  "khvcux.krisha.kz": "gum.par.vip.prod.criteo.com",
+  "kiqwal.autoscout24.es": "gum.par.vip.prod.criteo.com",
+  "kjiztu.reebok.ru": "gum.par.vip.prod.criteo.com",
+  "kjxmcn.eset.com": "gum.par.vip.prod.criteo.com",
+  "kjxztu.biz-journal.jp": "gum.par.vip.prod.criteo.com",
+  "kminhi.mutuionline.it": "gum.par.vip.prod.criteo.com",
+  "knapia.weightwatchers.com": "gum.par.vip.prod.criteo.com",
+  "knfjhy.echo.msk.ru": "gum.par.vip.prod.criteo.com",
+  "knopnf.asambeauty.com": "gum.am5.vip.prod.criteo.com",
+  "knzmrw.infojobs.net": "gum.par.vip.prod.criteo.com",
+  "knzqjr.pult.ru": "gum.par.vip.prod.criteo.com",
+  "koowiu.obchod-vtp.cz": "gum.am5.vip.prod.criteo.com",
+  "kqmhog.kurgan.tbmmarket.ru": "gum.par.vip.prod.criteo.com",
+  "krgtzg.t-nation.com": "gum.am5.vip.prod.criteo.com",
+  "ksmeyw.taftcoffee.com": "gum.am5.vip.prod.criteo.com",
+  "kthjuw.lyst.com.au": "gum.par.vip.prod.criteo.com",
+  "ktzuoc.bueroshop24.de": "gum.am5.vip.prod.criteo.com",
+  "kuaifr.camicado.com.br": "gum.par.vip.prod.criteo.com",
+  "kurazb.prisjakt.no": "gum.am5.vip.prod.criteo.com",
+  "kuusay.yalispor.com.tr": "gum.am5.vip.prod.criteo.com",
+  "kvskic.jadore-jun.jp": "gum.am5.vip.prod.criteo.com",
+  "kwalnc.vans.co.kr": "gum.am5.vip.prod.criteo.com",
+  "kwvbhj.jcpenney.com": "gum.par.vip.prod.criteo.com",
+  "kwvfdo.idefix.com": "gum.am5.vip.prod.criteo.com",
+  "kwwvxn.uniqlo.com": "gum.par.vip.prod.criteo.com",
+  "kxauzv.mrdoors.ru": "gum.par.vip.prod.criteo.com",
+  "kydcwp.landwirt.com": "gum.am5.vip.prod.criteo.com",
+  "kyszhn.qvc.jp": "gum.par.vip.prod.criteo.com",
+  "kzsicw.chip.de": "gum.par.vip.prod.criteo.com",
+  "kzsicw.focus.de": "gum.par.vip.prod.criteo.com",
+  "kzsicw.tvspielfilm.de": "gum.am5.vip.prod.criteo.com",
+  "lapwkd.feelgood-shop.com": "gum.par.vip.prod.criteo.com",
+  "lbdsak.lacoste.ua": "gum.par.vip.prod.criteo.com",
+  "lbgfqn.onward.co.jp": "gum.am5.vip.prod.criteo.com",
+  "lcdsyj.daily.co.jp": "gum.par.vip.prod.criteo.com",
+  "lcefua.timberland.ru": "gum.par.vip.prod.criteo.com",
+  "lcjubw.fiksuruoka.fi": "gum.am5.vip.prod.criteo.com",
+  "lcsopa.onamae.com": "gum.am5.vip.prod.criteo.com",
+  "ldqbuy.sport-express.ru": "gum.par.vip.prod.criteo.com",
+  "ldqtdd.peing.net": "gum.am5.vip.prod.criteo.com",
+  "lfercl.tcb-beauty.net": "gum.am5.vip.prod.criteo.com",
+  "lgylib.dg-home.ru": "gum.am5.vip.prod.criteo.com",
+  "lgzkzp.bauhaus.at": "gum.par.vip.prod.criteo.com",
+  "lhewdj.fnac.pt": "gum.am5.vip.prod.criteo.com",
+  "liacod.sephora.ru": "gum.par.vip.prod.criteo.com",
+  "lkiqkq.mumzworld.com": "gum.par.vip.prod.criteo.com",
+  "lkvkgk.levis.com.tr": "gum.par.vip.prod.criteo.com",
+  "llteig.framesdirect.com": "gum.par.vip.prod.criteo.com",
+  "lmorsb.highstreettv.com": "gum.par.vip.prod.criteo.com",
+  "lntvby.banggood.com": "gum.am5.vip.prod.criteo.com",
+  "lpbhnv.nbcbayarea.com": "gum.am5.vip.prod.criteo.com",
+  "lpbhnv.nbcnewyork.com": "gum.am5.vip.prod.criteo.com",
+  "lpbhnv.nbcsandiego.com": "gum.am5.vip.prod.criteo.com",
+  "lpbhnv.nbcwashington.com": "gum.am5.vip.prod.criteo.com",
+  "lpbhnv.telemundochicago.com": "gum.am5.vip.prod.criteo.com",
+  "lpzxed.em.com.br": "gum.par.vip.prod.criteo.com",
+  "lqeqhc.yapo.cl": "gum.par.vip.prod.criteo.com",
+  "lqiwjf.hannun.com": "gum.par.vip.prod.criteo.com",
+  "lqpzdi.coppel.com": "gum.par.vip.prod.criteo.com",
+  "lrdnuu.shopee.co.th": "gum.par.vip.prod.criteo.com",
+  "lrhyty.weeronline.nl": "gum.par.vip.prod.criteo.com",
+  "lrjjly.rockler.com": "gum.par.vip.prod.criteo.com",
+  "lrjnbf.sabon.co.jp": "gum.par.vip.prod.criteo.com",
+  "lspfuw.siwonschool.com": "gum.am5.vip.prod.criteo.com",
+  "lswfmx.stuartweitzman.com": "gum.par.vip.prod.criteo.com",
+  "ltaoei.rendez-vous.ru": "gum.par.vip.prod.criteo.com",
+  "ltcmak.alodokter.com": "gum.par.vip.prod.criteo.com",
+  "ltecrf.dhgate.com": "gum.par.vip.prod.criteo.com",
+  "ltnico.fnac.com": "gum.am5.vip.prod.criteo.com",
+  "ltsveh.wetteronline.at": "gum.par.vip.prod.criteo.com",
+  "ltsveh.wetteronline.de": "gum.par.vip.prod.criteo.com",
+  "ltzpth.sephora.fr": "gum.am5.vip.prod.criteo.com",
+  "luaqlg.blissy.com": "gum.par.vip.prod.criteo.com",
+  "luegnh.sneakercage.gr": "gum.am5.vip.prod.criteo.com",
+  "lumtjt.plumbingonline.ca": "gum.par.vip.prod.criteo.com",
+  "lvidqa.unisportstore.de": "gum.par.vip.prod.criteo.com",
+  "lwjpso.gossamergear.com": "gum.am5.vip.prod.criteo.com",
+  "lwozzk.legacy.com": "gum.par.vip.prod.criteo.com",
+  "lxgjni.lcwaikiki.eg": "gum.am5.vip.prod.criteo.com",
+  "lxiaho.lesfurets.com": "gum.par.vip.prod.criteo.com",
+  "lxoemc.libero.it": "gum.par.vip.prod.criteo.com",
+  "lxoemc.virgilio.it": "gum.par.vip.prod.criteo.com",
+  "lxspfv.ridersdeal.com": "gum.am5.vip.prod.criteo.com",
+  "lxsway.familjeliv.se": "gum.am5.vip.prod.criteo.com",
+  "lxsway.nyheter24.se": "gum.par.vip.prod.criteo.com",
+  "lxztgb.musee-pla.com": "gum.am5.vip.prod.criteo.com",
+  "lyegyo.bluenile.com": "gum.par.vip.prod.criteo.com",
+  "lyfrir.purehockey.com": "gum.par.vip.prod.criteo.com",
+  "lyxfra.shopee.com.my": "gum.par.vip.prod.criteo.com",
+  "lzcwbt.schuhcenter.de": "gum.par.vip.prod.criteo.com",
+  "maaiuh.tomorrowland.co.jp": "gum.par.vip.prod.criteo.com",
+  "marvpo.viedemerde.fr": "gum.par.vip.prod.criteo.com",
+  "mchtna.fashionplus.co.kr": "gum.am5.vip.prod.criteo.com",
+  "mckbpe.united-arrows.co.jp": "gum.par.vip.prod.criteo.com",
+  "mczpco.darty.com": "gum.par.vip.prod.criteo.com",
+  "mdiyay.vseinstrumenti.ru": "gum.par.vip.prod.criteo.com",
+  "mgptul.finson.com": "gum.am5.vip.prod.criteo.com",
+  "mhlfqc.dressbarn.com": "gum.am5.vip.prod.criteo.com",
+  "mjnpya.marktplaats.nl": "gum.par.vip.prod.criteo.com",
+  "mkmree.dmm.co.jp": "gum.par.vip.prod.criteo.com",
+  "mlhtmc.macnificos.com": "gum.par.vip.prod.criteo.com",
+  "mmulsx.comet.it": "gum.am5.vip.prod.criteo.com",
+  "mmwlwm.autoscout24.pl": "gum.par.vip.prod.criteo.com",
+  "mnxlyo.kinoteatr.ru": "gum.par.vip.prod.criteo.com",
+  "mqhuzk.soffadirekt.se": "gum.par.vip.prod.criteo.com",
+  "mqldrm.lgcity.ru": "gum.par.vip.prod.criteo.com",
+  "mrksmm.yumegazai.com": "gum.par.vip.prod.criteo.com",
+  "msafoy.eyebuydirect.com": "gum.par.vip.prod.criteo.com",
+  "mseeru.faz.net": "gum.par.vip.prod.criteo.com",
+  "msgesr.askona.ru": "gum.par.vip.prod.criteo.com",
+  "msioay.backcountry.com": "gum.am5.vip.prod.criteo.com",
+  "mtbflj.elementaree.ru": "gum.par.vip.prod.criteo.com",
+  "mtcvyv.karakartal.com": "gum.par.vip.prod.criteo.com",
+  "mtcvyv.sporx.com": "gum.par.vip.prod.criteo.com",
+  "mtgylw.raadshop.com": "gum.par.vip.prod.criteo.com",
+  "mthrtg.matadorup.com": "gum.am5.vip.prod.criteo.com",
+  "mtoxtg.tezenis.com": "gum.par.vip.prod.criteo.com",
+  "mtpwie.garagetools.ru": "gum.par.vip.prod.criteo.com",
+  "muhttw.spotlightstores.com": "gum.par.vip.prod.criteo.com",
+  "muppvq.cocooncenter.co.uk": "gum.par.vip.prod.criteo.com",
+  "muqtti.motoin.de": "gum.par.vip.prod.criteo.com",
+  "muwyib.lettuce.co.jp": "gum.par.vip.prod.criteo.com",
+  "mvjkbj.2-carat.net": "gum.par.vip.prod.criteo.com",
+  "mvjkbj.inazumanews2.com": "gum.par.vip.prod.criteo.com",
+  "mwxema.galerieslafayette.com": "gum.par.vip.prod.criteo.com",
+  "mxhunv.kurz-mal-weg.de": "gum.par.vip.prod.criteo.com",
+  "mxorvf.caffe.com": "gum.par.vip.prod.criteo.com",
+  "mybjjg.vlan.be": "gum.am5.vip.prod.criteo.com",
+  "myxuak.mir-kubikov.ru": "gum.par.vip.prod.criteo.com",
+  "nbeelx.angeliebe.co.jp": "gum.par.vip.prod.criteo.com",
+  "nbyggk.matomame.jp": "gum.par.vip.prod.criteo.com",
+  "ncbabz.hometogo.co.uk": "gum.par.vip.prod.criteo.com",
+  "ncoqsj.dr.com.tr": "gum.par.vip.prod.criteo.com",
+  "ncvdcs.americantourister.ru": "gum.am5.vip.prod.criteo.com",
+  "nfptar.giordanoshop.com": "gum.am5.vip.prod.criteo.com",
+  "nfused.eobuv.com.ua": "gum.par.vip.prod.criteo.com",
+  "nhdhoj.ibs.it": "gum.par.vip.prod.criteo.com",
+  "nhkoze.saneibd.com": "gum.par.vip.prod.criteo.com",
+  "njorya.aosom.de": "gum.par.vip.prod.criteo.com",
+  "njracj.dress-for-less.nl": "gum.par.vip.prod.criteo.com",
+  "nlgzhd.yoox.com": "gum.par.vip.prod.criteo.com",
+  "nljjem.honeys-onlineshop.com": "gum.par.vip.prod.criteo.com",
+  "nmdlvg.5element.by": "gum.par.vip.prod.criteo.com",
+  "nnsrak.lazurit.com": "gum.par.vip.prod.criteo.com",
+  "nntgna.dmm.com": "gum.par.vip.prod.criteo.com",
+  "nnviav.pier1.com": "gum.par.vip.prod.criteo.com",
+  "nnvtvx.chegg.com": "gum.par.vip.prod.criteo.com",
+  "nopllp.physiciansformula.com": "gum.par.vip.prod.criteo.com",
+  "nprkvj.mall.sk": "gum.par.vip.prod.criteo.com",
+  "npsopu.clearly.ca": "gum.par.vip.prod.criteo.com",
+  "npvbjv.yourroom.ru": "gum.par.vip.prod.criteo.com",
+  "npxzvu.pressup.it": "gum.par.vip.prod.criteo.com",
+  "npylsv.libertatea.ro": "gum.par.vip.prod.criteo.com",
+  "nsedgj.bonprix.de": "gum.par.vip.prod.criteo.com",
+  "ntnnpj.cacharel.com.tr": "gum.par.vip.prod.criteo.com",
+  "nturnm.unisport.dk": "gum.par.vip.prod.criteo.com",
+  "nuctok.topten10mall.com": "gum.am5.vip.prod.criteo.com",
+  "nvpdaa.brightcellars.com": "gum.par.vip.prod.criteo.com",
+  "nwbmvq.jockey.com": "gum.am5.vip.prod.criteo.com",
+  "nwkcdv.pandapiac.hu": "gum.am5.vip.prod.criteo.com",
+  "nxhqso.nordicnest.se": "gum.par.vip.prod.criteo.com",
+  "nxnszu.ettoday.net": "gum.am5.vip.prod.criteo.com",
+  "nyceov.life.ru": "gum.par.vip.prod.criteo.com",
+  "nycwfz.kigili.com": "gum.par.vip.prod.criteo.com",
+  "nzmkzl.mytheresa.com": "gum.par.vip.prod.criteo.com",
+  "nzmsgb.atu.de": "gum.am5.vip.prod.criteo.com",
+  "obfrok.partyking.no": "gum.par.vip.prod.criteo.com",
+  "obtfhl.bellemaison.jp": "gum.am5.vip.prod.criteo.com",
+  "ocvmbc.letovo.ru": "gum.par.vip.prod.criteo.com",
+  "odvdyw.clubmed.ru": "gum.par.vip.prod.criteo.com",
+  "oesonx.10000recipe.com": "gum.par.vip.prod.criteo.com",
+  "oessbi.yves-rocher.ru": "gum.par.vip.prod.criteo.com",
+  "oesxlp.atlasformen.co.uk": "gum.par.vip.prod.criteo.com",
+  "ofkqel.sabinastore.com": "gum.par.vip.prod.criteo.com",
+  "ogwzby.peek-und-cloppenburg.de": "gum.par.vip.prod.criteo.com",
+  "ohxrqr.ilvi.com": "gum.par.vip.prod.criteo.com",
+  "oikckw.scarosso.com": "gum.par.vip.prod.criteo.com",
+  "oiodyx.baldur-garten.de": "gum.par.vip.prod.criteo.com",
+  "oiwnrl.theory.co.jp": "gum.par.vip.prod.criteo.com",
+  "ojufuk.vincecamuto.com": "gum.par.vip.prod.criteo.com",
+  "oktagv.immobilienscout24.at": "gum.par.vip.prod.criteo.com",
+  "olroyk.ardene.com": "gum.par.vip.prod.criteo.com",
+  "olspyo.laredoute.co.uk": "gum.par.vip.prod.criteo.com",
+  "oltdvb.elandmall.com": "gum.par.vip.prod.criteo.com",
+  "olziko.maxmara.com": "gum.par.vip.prod.criteo.com",
+  "omjtca.emlakjet.com": "gum.par.vip.prod.criteo.com",
+  "oncahh.boxlunch.com": "gum.par.vip.prod.criteo.com",
+  "onoztg.ultimate-guitar.com": "gum.par.vip.prod.criteo.com",
+  "ontxgr.hofer-reisen.at": "gum.par.vip.prod.criteo.com",
+  "oouwiw.emp-shop.dk": "gum.par.vip.prod.criteo.com",
+  "op-drive-sto.carrefour.fr": "e25877.dscb.akamaiedge.net",
+  "oqbimz.aviasales.ru": "gum.par.vip.prod.criteo.com",
+  "ordpmx.victorianplumbing.co.uk": "gum.par.vip.prod.criteo.com",
+  "oshlzg.takealot.com": "gum.par.vip.prod.criteo.com",
+  "othvwz.thelittlegreenbag.be": "gum.par.vip.prod.criteo.com",
+  "oufuqh.kant.ru": "gum.par.vip.prod.criteo.com",
+  "owhvte.alltime.ru": "gum.par.vip.prod.criteo.com",
+  "oxbskt.autotrader.com.au": "gum.par.vip.prod.criteo.com",
+  "oyaswl.manor.ch": "gum.par.vip.prod.criteo.com",
+  "oylyaz.mrkoll.se": "gum.par.vip.prod.criteo.com",
+  "pabxoe.olx.ua": "gum.par.vip.prod.criteo.com",
+  "pardko.pricerunner.com": "gum.par.vip.prod.criteo.com",
+  "payqjd.subito.it": "gum.par.vip.prod.criteo.com",
+  "pbecrm.aquanet.ru": "gum.par.vip.prod.criteo.com",
+  "pbgmej.topsecret.pl": "gum.par.vip.prod.criteo.com",
+  "pciidk.shopee.vn": "gum.par.vip.prod.criteo.com",
+  "peqvwk.notino.at": "gum.par.vip.prod.criteo.com",
+  "pevftg.shopee.sg": "gum.par.vip.prod.criteo.com",
+  "pfecsg.darty-dom.com": "gum.par.vip.prod.criteo.com",
+  "phczhg.johnjohndenim.com.br": "gum.par.vip.prod.criteo.com",
+  "phgnxd.nike.com.br": "gum.par.vip.prod.criteo.com",
+  "phhjak.frame-store.com": "gum.par.vip.prod.criteo.com",
+  "phjzsx.elevit.jp": "gum.am5.vip.prod.criteo.com",
+  "phrvdr.wuerth-ag.ch": "gum.par.vip.prod.criteo.com",
+  "piddme.buyma.com": "gum.par.vip.prod.criteo.com",
+  "pisqpr.puuilo.fi": "gum.par.vip.prod.criteo.com",
+  "pjbncv.ode.co.kr": "gum.am5.vip.prod.criteo.com",
+  "pjoxcw.rosewe.com": "gum.am5.vip.prod.criteo.com",
+  "pjtlme.rozetka.com.ua": "gum.am5.vip.prod.criteo.com",
+  "pjtshn.floraprima.de": "gum.am5.vip.prod.criteo.com",
+  "pk8n57.fnac.com": "e25877.dscb.akamaiedge.net",
+  "pkimbc.bestsecret.com": "gum.am5.vip.prod.criteo.com",
+  "pkpfes.bstn.com": "gum.am5.vip.prod.criteo.com",
+  "plotzn.apmex.com": "gum.am5.vip.prod.criteo.com",
+  "pnnewg.bulk.co.jp": "gum.am5.vip.prod.criteo.com",
+  "pnnpan.cv-library.co.uk": "gum.am5.vip.prod.criteo.com",
+  "pplpiq.pricerunner.se": "gum.am5.vip.prod.criteo.com",
+  "pqciix.busuu.com": "gum.am5.vip.prod.criteo.com",
+  "przucu.elkjop.no": "gum.am5.vip.prod.criteo.com",
+  "pseptk.kueski.com": "gum.am5.vip.prod.criteo.com",
+  "psqsjg.coach.com": "gum.am5.vip.prod.criteo.com",
+  "ptmcos.beginning.kr": "gum.am5.vip.prod.criteo.com",
+  "pudalz.gismeteo.by": "gum.am5.vip.prod.criteo.com",
+  "pvrugd.nieruchomosci-online.pl": "gum.am5.vip.prod.criteo.com",
+  "pxjuix.tekzen.com.tr": "gum.am5.vip.prod.criteo.com",
+  "pymbay.kinguin.net": "gum.am5.vip.prod.criteo.com",
+  "pywiia.lfmall.co.kr": "gum.am5.vip.prod.criteo.com",
+  "pzpevk.newbalance.ru": "gum.am5.vip.prod.criteo.com",
+  "qamnyl.bever.nl": "gum.am5.vip.prod.criteo.com",
+  "qbgvgw.angeloni.com.br": "gum.par.vip.prod.criteo.com",
+  "qfbles.elefant.ro": "gum.am5.vip.prod.criteo.com",
+  "qfdzba.sport-schuster.de": "gum.am5.vip.prod.criteo.com",
+  "qfoiss.lendingtree.com": "gum.am5.vip.prod.criteo.com",
+  "qgbnjd.coches.net": "gum.am5.vip.prod.criteo.com",
+  "qgrrgs.silpada.com": "gum.am5.vip.prod.criteo.com",
+  "qgscbx.renote.jp": "gum.am5.vip.prod.criteo.com",
+  "qgumjp.asiae.co.kr": "gum.par.vip.prod.criteo.com",
+  "qgumjp.joins.com": "gum.am5.vip.prod.criteo.com",
+  "qgymtv.motomax.com.tr": "gum.am5.vip.prod.criteo.com",
+  "qhfcsd.rastaclat.com": "gum.am5.vip.prod.criteo.com",
+  "qiepyp.ascianne.com": "gum.par.vip.prod.criteo.com",
+  "qkhhjm.autoscout24.nl": "gum.am5.vip.prod.criteo.com",
+  "qlbiyu.fratemateclub.com": "gum.par.vip.prod.criteo.com",
+  "qldkru.whitestuff.com": "gum.am5.vip.prod.criteo.com",
+  "qllxvh.shopstyle.com": "gum.am5.vip.prod.criteo.com",
+  "qmlzcm.petshop.ru": "gum.am5.vip.prod.criteo.com",
+  "qochma.pufetto.com.ua": "gum.par.vip.prod.criteo.com",
+  "qqdflf.lpga.or.jp": "gum.am5.vip.prod.criteo.com",
+  "qqnmon.keeps.com": "gum.am5.vip.prod.criteo.com",
+  "qrjsbn.flinndal.nl": "gum.am5.vip.prod.criteo.com",
+  "qtorzy.mothercare.ae": "gum.am5.vip.prod.criteo.com",
+  "qvnpxc.technopark.ru": "gum.am5.vip.prod.criteo.com",
+  "qwbsbk.pianno39.com": "gum.am5.vip.prod.criteo.com",
+  "qxsfaj.caloo.jp": "gum.am5.vip.prod.criteo.com",
+  "qyatej.bocage.fr": "gum.am5.vip.prod.criteo.com",
+  "qzcxtm.mango.com": "gum.am5.vip.prod.criteo.com",
+  "qzwktr.world-fusigi.net": "gum.am5.vip.prod.criteo.com",
+  "qzxfnv.beams.co.jp": "gum.am5.vip.prod.criteo.com",
+  "raybte.7days.ru": "gum.am5.vip.prod.criteo.com",
+  "rcqiho.emp.de": "gum.am5.vip.prod.criteo.com",
+  "rdtcnt.laredoute.fr": "e25877.dscb.akamaiedge.net",
+  "rdtdlv.laredoute.fr": "e25877.dscb.akamaiedge.net",
+  "rdwwke.woodlanddirect.com": "gum.am5.vip.prod.criteo.com",
+  "refwkk.cas.sk": "gum.am5.vip.prod.criteo.com",
+  "refwkk.topky.sk": "gum.am5.vip.prod.criteo.com",
+  "refwkk.zoznam.sk": "gum.am5.vip.prod.criteo.com",
+  "refytq.camp-fire.jp": "gum.am5.vip.prod.criteo.com",
+  "reydrj.zeberka.pl": "gum.par.vip.prod.criteo.com",
+  "rffsds.fsastore.com": "gum.am5.vip.prod.criteo.com",
+  "rgiixp.sperry.com": "gum.am5.vip.prod.criteo.com",
+  "riluwt.voxcinemas.com": "gum.am5.vip.prod.criteo.com",
+  "rimxqx.slickdeals.net": "gum.am5.vip.prod.criteo.com",
+  "rlezuf.menzzo.es": "gum.par.vip.prod.criteo.com",
+  "rloddo.olx.bg": "gum.am5.vip.prod.criteo.com",
+  "rlqwiz.puhovik.ru": "gum.am5.vip.prod.criteo.com",
+  "rnffgv.wemakeprice.com": "gum.par.vip.prod.criteo.com",
+  "rnybul.gismeteo.kz": "gum.am5.vip.prod.criteo.com",
+  "rnybul.gismeteo.ru": "gum.am5.vip.prod.criteo.com",
+  "rovauy.share-now.com": "gum.am5.vip.prod.criteo.com",
+  "rqgaax.marksandspencer.ru": "gum.am5.vip.prod.criteo.com",
+  "rslgzz.lance.com.br": "gum.par.vip.prod.criteo.com",
+  "rtxlni.doclasse.com": "gum.am5.vip.prod.criteo.com",
+  "ruvdkw.turk.net": "gum.am5.vip.prod.criteo.com",
+  "rvhxht.smulderstextiel.nl": "gum.par.vip.prod.criteo.com",
+  "rwdito.carsguide.com.au": "gum.am5.vip.prod.criteo.com",
+  "rwmoej.wadiz.kr": "gum.am5.vip.prod.criteo.com",
+  "rzgwpw.madeincookware.com": "gum.am5.vip.prod.criteo.com",
+  "sbcigp.ilovewig.jp": "gum.am5.vip.prod.criteo.com",
+  "sbttlj.togetter.com": "gum.par.vip.prod.criteo.com",
+  "sbxelb.bonprix.ro": "gum.par.vip.prod.criteo.com",
+  "sbyneh.dailymail.co.uk": "gum.am5.vip.prod.criteo.com",
+  "scjlpq.navitime.co.jp": "gum.am5.vip.prod.criteo.com",
+  "sczcpz.emp-online.fr": "gum.am5.vip.prod.criteo.com",
+  "seyfwl.smaker.pl": "gum.par.vip.prod.criteo.com",
+  "sfajfu.boulanger.com": "gum.par.vip.prod.criteo.com",
+  "sfgysl.ppomppu.co.kr": "gum.am5.vip.prod.criteo.com",
+  "sftwmc.asyura2.com": "gum.am5.vip.prod.criteo.com",
+  "shtptt.cupshe.com": "gum.par.vip.prod.criteo.com",
+  "shwque.twinavi.jp": "gum.am5.vip.prod.criteo.com",
+  "siqjzh.incenza.com": "gum.par.vip.prod.criteo.com",
+  "sizybn.shipsltd.co.jp": "gum.am5.vip.prod.criteo.com",
+  "sjyskm.litres.ru": "gum.am5.vip.prod.criteo.com",
+  "slefle.tvoydom.ru": "gum.am5.vip.prod.criteo.com",
+  "slewvr.gp.se": "gum.par.vip.prod.criteo.com",
+  "slryca.meyou.jp": "gum.am5.vip.prod.criteo.com",
+  "slubiz.mgemi.com": "gum.par.vip.prod.criteo.com",
+  "smkynb.skr.de": "gum.par.vip.prod.criteo.com",
+  "smmmkl.hoff.ru": "gum.am5.vip.prod.criteo.com",
+  "smwvlc.intermixonline.com": "gum.am5.vip.prod.criteo.com",
+  "snvbhd.weltbild.at": "gum.am5.vip.prod.criteo.com",
+  "soxnwz.lg.com": "gum.am5.vip.prod.criteo.com",
+  "spctjb.simplystamps.com": "gum.am5.vip.prod.criteo.com",
+  "sphnvf.autoscout24.ch": "gum.par.vip.prod.criteo.com",
+  "spigte.shopee.tw": "gum.par.vip.prod.criteo.com",
+  "spjysa.only.com": "gum.par.vip.prod.criteo.com",
+  "spmaeu.gumtree.com.au": "gum.am5.vip.prod.criteo.com",
+  "spmyma.moscowfresh.ru": "gum.par.vip.prod.criteo.com",
+  "sqdljj.kijiji.ca": "gum.am5.vip.prod.criteo.com",
+  "sqsftt.loi.nl": "gum.am5.vip.prod.criteo.com",
+  "sr-dynamic-content.ext.api.leclerc": "tk-lcm.storetail.io",
+  "srivge.smiggle.com.au": "gum.par.vip.prod.criteo.com",
+  "srnzdl.morhipo.com": "gum.am5.vip.prod.criteo.com",
+  "ssgamf.stories.com": "gum.par.vip.prod.criteo.com",
+  "stehly.justfashionnow.com": "gum.am5.vip.prod.criteo.com",
+  "stghyx.citilink.ru": "gum.am5.vip.prod.criteo.com",
+  "stuekv.domondo.pl": "gum.par.vip.prod.criteo.com",
+  "svoywu.autoscout24.de": "gum.par.vip.prod.criteo.com",
+  "svpxbr.drsquatch.com": "gum.par.vip.prod.criteo.com",
+  "swkism.moon-trade.ru": "gum.par.vip.prod.criteo.com",
+  "swqleb.adidas.ru": "gum.par.vip.prod.criteo.com",
+  "swwcyk.ahaber.com.tr": "gum.am5.vip.prod.criteo.com",
+  "swwcyk.aspor.com.tr": "gum.am5.vip.prod.criteo.com",
+  "swwcyk.takvim.com.tr": "gum.am5.vip.prod.criteo.com",
+  "sxjeyg.21vek.by": "gum.am5.vip.prod.criteo.com",
+  "sxjfhh.azcentral.com": "gum.am5.vip.prod.criteo.com",
+  "sxjfhh.detroitnews.com": "gum.am5.vip.prod.criteo.com",
+  "sxjfhh.freep.com": "gum.am5.vip.prod.criteo.com",
+  "sxjfhh.greenbaypressgazette.com": "gum.am5.vip.prod.criteo.com",
+  "sxjfhh.naplesnews.com": "gum.am5.vip.prod.criteo.com",
+  "sxjfhh.pnj.com": "gum.am5.vip.prod.criteo.com",
+  "sxjfhh.rgj.com": "gum.am5.vip.prod.criteo.com",
+  "sxjfhh.tennessean.com": "gum.am5.vip.prod.criteo.com",
+  "sxjfhh.usatoday.com": "gum.am5.vip.prod.criteo.com",
+  "sxmxpm.nectarsleep.com": "gum.am5.vip.prod.criteo.com",
+  "taldpq.francfranc.com": "gum.am5.vip.prod.criteo.com",
+  "tatehj.nylaarp.com": "gum.am5.vip.prod.criteo.com",
+  "tbaqje.zadig-et-voltaire.com": "gum.am5.vip.prod.criteo.com",
+  "tbjasp.cyrillus.de": "gum.am5.vip.prod.criteo.com",
+  "tbsrfz.shifter.shop": "gum.par.vip.prod.criteo.com",
+  "tdbnom.madeleine.de": "gum.par.vip.prod.criteo.com",
+  "teijs.alcampo.es": "e25877.dscb.akamaiedge.net",
+  "tfdtpa.dot-st.com": "gum.par.vip.prod.criteo.com",
+  "tgmtav.slumberland.com": "gum.par.vip.prod.criteo.com",
+  "thaqyl.mediamarkt.nl": "gum.par.vip.prod.criteo.com",
+  "thjhaj.zooart.com.pl": "gum.am5.vip.prod.criteo.com",
+  "tjyrup.templeandwebster.com.au": "gum.par.vip.prod.criteo.com",
+  "tjzvuo.youcom.com.br": "gum.par.vip.prod.criteo.com",
+  "tkekwv.gracegift.com.tw": "gum.par.vip.prod.criteo.com",
+  "tkjcqb.forrent.com": "gum.par.vip.prod.criteo.com",
+  "tkueqy.doccheckshop.de": "gum.par.vip.prod.criteo.com",
+  "tkvxdj.cars.com": "gum.am5.vip.prod.criteo.com",
+  "tlundf.skullis.com": "gum.par.vip.prod.criteo.com",
+  "tlzqmv.outl1.se": "gum.am5.vip.prod.criteo.com",
+  "tmbewm.partykungen.se": "gum.par.vip.prod.criteo.com",
+  "tmbsxx.oxybul.com": "gum.par.vip.prod.criteo.com",
+  "tmhgma.juwelo.de": "gum.am5.vip.prod.criteo.com",
+  "toevgi.boostmobile.com": "gum.par.vip.prod.criteo.com",
+  "tojrhz.silvergoldbull.com": "gum.par.vip.prod.criteo.com",
+  "tpubrk.eobuv.com": "gum.par.vip.prod.criteo.com",
+  "tqxpnv.bauhaus.info": "gum.par.vip.prod.criteo.com",
+  "trkpzz.dcinside.com": "gum.am5.vip.prod.criteo.com",
+  "trkpzz.manpeace.org": "gum.par.vip.prod.criteo.com",
+  "trvonu.k-manga.jp": "gum.par.vip.prod.criteo.com",
+  "tshuxi.bbqguys.com": "gum.par.vip.prod.criteo.com",
+  "tudazy.importpris.no": "gum.par.vip.prod.criteo.com",
+  "twjobq.sixt.com": "gum.par.vip.prod.criteo.com",
+  "twjobq.sixt.de": "gum.par.vip.prod.criteo.com",
+  "twoeej.carrefour.fr": "gum.par.vip.prod.criteo.com",
+  "txvoin.with2.net": "gum.am5.vip.prod.criteo.com",
+  "tybfxw.puma.com": "gum.par.vip.prod.criteo.com",
+  "uajzus.ashford.com": "gum.par.vip.prod.criteo.com",
+  "uarrdg.landsofamerica.com": "gum.am5.vip.prod.criteo.com",
+  "uazmti.a101.com.tr": "gum.par.vip.prod.criteo.com",
+  "ubpekn.sivillage.com": "gum.par.vip.prod.criteo.com",
+  "ubvsjh.pointtown.com": "gum.par.vip.prod.criteo.com",
+  "ubxvdx.accuweather.com": "gum.par.vip.prod.criteo.com",
+  "udgrbq.malwarebytes.com": "gum.par.vip.prod.criteo.com",
+  "uedvam.tatilsepeti.com": "gum.par.vip.prod.criteo.com",
+  "ufnbgh.meierq.com": "gum.par.vip.prod.criteo.com",
+  "ugdcxl.timeout.com": "gum.am5.vip.prod.criteo.com",
+  "ughska.kids-world.dk": "gum.par.vip.prod.criteo.com",
+  "ugrkny.stokke.com": "gum.par.vip.prod.criteo.com",
+  "uhlkij.bonprix.it": "gum.par.vip.prod.criteo.com",
+  "uhnacb.motorisationplus.com": "gum.par.vip.prod.criteo.com",
+  "uhpjkt.uv100.com.tw": "gum.par.vip.prod.criteo.com",
+  "uhqunq.tktimport.com": "gum.par.vip.prod.criteo.com",
+  "uicjnk.gumtree.co.za": "gum.par.vip.prod.criteo.com",
+  "uiusqp.crowdcow.com": "gum.par.vip.prod.criteo.com",
+  "ukaxwr.leastedisoha.com": "gum.par.vip.prod.criteo.com",
+  "ukgfxw.satofull.jp": "gum.am5.vip.prod.criteo.com",
+  "ukjphn.vitaminler.com": "gum.par.vip.prod.criteo.com",
+  "ulerkr.ukrzoloto.ua": "gum.par.vip.prod.criteo.com",
+  "uncmbg.timberland.de": "gum.am5.vip.prod.criteo.com",
+  "unyzea.aboutyou.sk": "gum.am5.vip.prod.criteo.com",
+  "uolwbz.heine.de": "gum.am5.vip.prod.criteo.com",
+  "upeayz.eksisozluk.com": "gum.par.vip.prod.criteo.com",
+  "upeoxa.fashionroom.gr": "gum.par.vip.prod.criteo.com",
+  "uporzu.prestashop.com": "gum.par.vip.prod.criteo.com",
+  "uqckxr.chilli.se": "gum.par.vip.prod.criteo.com",
+  "usivbt.qoo10.com": "gum.par.vip.prod.criteo.com",
+  "usrkrz.zdravcity.ru": "gum.par.vip.prod.criteo.com",
+  "utjzyz.phillips.com": "gum.am5.vip.prod.criteo.com",
+  "utklhk.kojima.net": "gum.par.vip.prod.criteo.com",
+  "utntam.doz.pl": "gum.par.vip.prod.criteo.com",
+  "uudbvq.skuola.net": "gum.am5.vip.prod.criteo.com",
+  "uuzxaz.vidaxl.com": "gum.par.vip.prod.criteo.com",
+  "uvgxhu.ezgif.com": "gum.par.vip.prod.criteo.com",
+  "uviemx.holmibolt.hu": "gum.par.vip.prod.criteo.com",
+  "uwdzbo.tgw.com": "gum.am5.vip.prod.criteo.com",
+  "uwetid.apposta.com": "gum.par.vip.prod.criteo.com",
+  "vcdfve.aroma-butik.ru": "gum.par.vip.prod.criteo.com",
+  "vdrigb.8190.jp": "gum.par.vip.prod.criteo.com",
+  "vedznh.cumhuriyet.com.tr": "gum.par.vip.prod.criteo.com",
+  "veqvek.bnnbloomberg.ca": "gum.par.vip.prod.criteo.com",
+  "veqvek.cp24.com": "gum.par.vip.prod.criteo.com",
+  "vgazda.krefel.be": "gum.am5.vip.prod.criteo.com",
+  "vgellr.esprit.de": "gum.am5.vip.prod.criteo.com",
+  "vhhnaj.ushatava.com": "gum.par.vip.prod.criteo.com",
+  "vhmjci.edreams.co.uk": "gum.par.vip.prod.criteo.com",
+  "vhrbxb.vidaxl.nl": "gum.par.vip.prod.criteo.com",
+  "vkdgzr.ennergiia.com": "gum.par.vip.prod.criteo.com",
+  "vkxyjj.g2a.com": "gum.par.vip.prod.criteo.com",
+  "vldhno.twojesoczewki.com": "gum.par.vip.prod.criteo.com",
+  "vlezpc.flexnet.co.jp": "gum.par.vip.prod.criteo.com",
+  "vllsuv.skatedeluxe.com": "gum.am5.vip.prod.criteo.com",
+  "vmaffp.somproduct.ro": "gum.par.vip.prod.criteo.com",
+  "vmsxzx.buienradar.nl": "gum.par.vip.prod.criteo.com",
+  "vnwhzk.togas.com": "gum.par.vip.prod.criteo.com",
+  "vnzwxk.e-bebek.com": "gum.par.vip.prod.criteo.com",
+  "vphsiv.gsshop.com": "gum.par.vip.prod.criteo.com",
+  "vpnuyy.carters.com": "gum.par.vip.prod.criteo.com",
+  "vrzmfy.fool.com": "gum.par.vip.prod.criteo.com",
+  "vsfius.aranzulla.it": "gum.par.vip.prod.criteo.com",
+  "vttics.world.co.jp": "gum.am5.vip.prod.criteo.com",
+  "vuuxsw.lusida.co.kr": "gum.am5.vip.prod.criteo.com",
+  "vwrgru.happymail.co.jp": "gum.par.vip.prod.criteo.com",
+  "vxygol.prisjakt.nu": "gum.par.vip.prod.criteo.com",
+  "vybbem.mk.ru": "gum.par.vip.prod.criteo.com",
+  "vybbem.womanhit.ru": "gum.par.vip.prod.criteo.com",
+  "vyplzy.job-medley.com": "gum.am5.vip.prod.criteo.com",
+  "vzeyba.shopee.co.id": "gum.par.vip.prod.criteo.com",
+  "vzrhxp.mavi.com": "gum.am5.vip.prod.criteo.com",
+  "waadwt.venum.com": "gum.par.vip.prod.criteo.com",
+  "waatch.gva.be": "gum.par.vip.prod.criteo.com",
+  "waatch.hbvl.be": "gum.am5.vip.prod.criteo.com",
+  "waatch.nieuwsblad.be": "gum.par.vip.prod.criteo.com",
+  "waatch.standaard.be": "gum.am5.vip.prod.criteo.com",
+  "wayfbq.hoppa.com": "gum.par.vip.prod.criteo.com",
+  "wbcygu.wardow.com": "gum.am5.vip.prod.criteo.com",
+  "wbudyb.motonet.fi": "gum.par.vip.prod.criteo.com",
+  "wcdizz.vanessdeco.com": "gum.am5.vip.prod.criteo.com",
+  "wddnff.bonprix.cz": "gum.par.vip.prod.criteo.com",
+  "wdukge.midwayusa.com": "gum.am5.vip.prod.criteo.com",
+  "wejpuy.factor75.com": "gum.par.vip.prod.criteo.com",
+  "wesbgz.travel.co.jp": "gum.par.vip.prod.criteo.com",
+  "wezbvq.heine-shop.nl": "gum.am5.vip.prod.criteo.com",
+  "wfohwc.cordoce.com.br": "gum.am5.vip.prod.criteo.com",
+  "wgkvmz.r-ulybka.ru": "gum.par.vip.prod.criteo.com",
+  "wgrcoj.aizel.ru": "gum.par.vip.prod.criteo.com",
+  "wgvyey.butor1.hu": "gum.par.vip.prod.criteo.com",
+  "whqkyq.leasingmarkt.de": "gum.par.vip.prod.criteo.com",
+  "whxbrz.shipt.com": "gum.par.vip.prod.criteo.com",
+  "wihgkc.localiza.com": "gum.par.vip.prod.criteo.com",
+  "wkasiu.dantonehome.ru": "gum.par.vip.prod.criteo.com",
+  "wkndiu.profi.ru": "gum.am5.vip.prod.criteo.com",
+  "wlkojk.orange.ro": "gum.am5.vip.prod.criteo.com",
+  "wlptux.habitaclia.com": "gum.am5.vip.prod.criteo.com",
+  "wlwtcr.toptoon.com": "gum.am5.vip.prod.criteo.com",
+  "wmpmvk.whiskeyriff.com": "gum.am5.vip.prod.criteo.com",
+  "woclgf.buy123.com.tw": "gum.par.vip.prod.criteo.com",
+  "woixov.elyts.ru": "gum.par.vip.prod.criteo.com",
+  "woqcfy.sony.ru": "gum.par.vip.prod.criteo.com",
+  "wpgobx.feber.se": "gum.par.vip.prod.criteo.com",
+  "wprixk.brocard.ua": "gum.par.vip.prod.criteo.com",
+  "wqfflc.fupa.net": "gum.am5.vip.prod.criteo.com",
+  "wtgnmr.golfdigest.co.jp": "gum.am5.vip.prod.criteo.com",
+  "wthlzk.home24.de": "gum.par.vip.prod.criteo.com",
+  "wvbcoi.tui.ch": "gum.am5.vip.prod.criteo.com",
+  "wviiea.bonprix.hu": "gum.par.vip.prod.criteo.com",
+  "wvlirb.lexoffice.de": "gum.par.vip.prod.criteo.com",
+  "wvoudw.magaseek.com": "gum.am5.vip.prod.criteo.com",
+  "wwnscv.myspringfield.com": "gum.am5.vip.prod.criteo.com",
+  "wwokkf.laredoute.ru": "gum.par.vip.prod.criteo.com",
+  "wxjqyw.venuesplace.com": "gum.par.vip.prod.criteo.com",
+  "wywvyf.discuss.com.hk": "gum.am5.vip.prod.criteo.com",
+  "wywvyf.price.com.hk": "gum.par.vip.prod.criteo.com",
+  "wywvyf.uwants.com": "gum.par.vip.prod.criteo.com",
+  "wyzqiy.pnet.co.za": "gum.par.vip.prod.criteo.com",
+  "wzoxvb.sneakerstudio.com.ua": "gum.par.vip.prod.criteo.com",
+  "wzpwxe.4lapy.ru": "gum.par.vip.prod.criteo.com",
+  "wzyjup.patch.com": "gum.par.vip.prod.criteo.com",
+  "wzzhvn.hammer.de": "gum.am5.vip.prod.criteo.com",
+  "xaayrl.joybird.com": "gum.am5.vip.prod.criteo.com",
+  "xavdtf.s7.ru": "gum.am5.vip.prod.criteo.com",
+  "xbchvf.tomdom.ru": "gum.am5.vip.prod.criteo.com",
+  "xbwpfs.fotocasa.es": "gum.am5.vip.prod.criteo.com",
+  "xbybrk.lavorincasa.it": "gum.am5.vip.prod.criteo.com",
+  "xcgzme.mnogomebeli.com": "gum.am5.vip.prod.criteo.com",
+  "xdaoxa.footasylum.com": "gum.am5.vip.prod.criteo.com",
+  "xdsblm.ullapopken.de": "gum.am5.vip.prod.criteo.com",
+  "xejevl.newchic.com": "gum.am5.vip.prod.criteo.com",
+  "xenaly.sozcu.com.tr": "gum.par.vip.prod.criteo.com",
+  "xgtxdf.saihok.jp": "gum.am5.vip.prod.criteo.com",
+  "xhbzrk.hotmart.com": "gum.am5.vip.prod.criteo.com",
+  "xkddvf.gigantti.fi": "gum.am5.vip.prod.criteo.com",
+  "xkidkt.edenbrothers.com": "gum.am5.vip.prod.criteo.com",
+  "xknhwv.mobile01.com": "gum.am5.vip.prod.criteo.com",
+  "xkvmsr.hair.com": "gum.am5.vip.prod.criteo.com",
+  "xmwdfu.digiturk.com.tr": "gum.am5.vip.prod.criteo.com",
+  "xnkcgu.bussgeldkatalog.de": "gum.am5.vip.prod.criteo.com",
+  "xnukcp.cpcompany.com": "gum.am5.vip.prod.criteo.com",
+  "xpcpmr.gsm55.com": "gum.am5.vip.prod.criteo.com",
+  "xqncvy.edreams.com.mx": "gum.am5.vip.prod.criteo.com",
+  "xqtcur.kirklands.com": "gum.am5.vip.prod.criteo.com",
+  "xscmzs.tenki.jp": "gum.par.vip.prod.criteo.com",
+  "xsimui.humanic.net": "gum.am5.vip.prod.criteo.com",
+  "xslmpq.ohou.se": "gum.am5.vip.prod.criteo.com",
+  "xspgbg.livingpick.com": "gum.par.vip.prod.criteo.com",
+  "xtazfx.50factory.com": "gum.am5.vip.prod.criteo.com",
+  "xudmrz.conforama.fr": "gum.am5.vip.prod.criteo.com",
+  "xutolr.mainichikirei.jp": "gum.am5.vip.prod.criteo.com",
+  "xutolr.mantan-web.jp": "gum.am5.vip.prod.criteo.com",
+  "xxjiqg.oysho.com": "gum.am5.vip.prod.criteo.com",
+  "xxlefq.journaldesfemmes.fr": "gum.am5.vip.prod.criteo.com",
+  "xxlefq.linternaute.com": "gum.am5.vip.prod.criteo.com",
+  "xxrmyp.carsdirect.com": "gum.am5.vip.prod.criteo.com",
+  "xyxgbs.lezhin.com": "gum.am5.vip.prod.criteo.com",
+  "xzvhgu.iledebeaute.ru": "gum.am5.vip.prod.criteo.com",
+  "yajkhd.supersports.com": "gum.am5.vip.prod.criteo.com",
+  "ybzcmz.momoshop.com.tw": "gum.par.vip.prod.criteo.com",
+  "ychqww.aboutyou.lv": "gum.am5.vip.prod.criteo.com",
+  "ydcpcm.ninelineapparel.com": "gum.am5.vip.prod.criteo.com",
+  "ydosfw.filippa-k.com": "gum.am5.vip.prod.criteo.com",
+  "yefktd.avito.ru": "dnsdelegation.io",
+  "yfhauq.bodybuilding.com": "gum.am5.vip.prod.criteo.com",
+  "ygopvz.windsorstore.com": "gum.am5.vip.prod.criteo.com",
+  "yhjgjk.wemakeup.it": "gum.am5.vip.prod.criteo.com",
+  "yhxnuk.724usa.com": "gum.am5.vip.prod.criteo.com",
+  "yikrmn.ciceksepeti.com": "gum.am5.vip.prod.criteo.com",
+  "yjxssk.apartments.com": "gum.am5.vip.prod.criteo.com",
+  "ykhqhe.domain.com.au": "gum.am5.vip.prod.criteo.com",
+  "ymwxei.misterdiamond.ru": "gum.am5.vip.prod.criteo.com",
+  "ynagqs.vidaxl.pl": "dnsdelegation.io",
+  "ypcdbw.drive.ru": "dnsdelegation.io",
+  "ypcdbw.drive2.com": "dnsdelegation.io",
+  "ypcdbw.drive2.ru": "dnsdelegation.io",
+  "yrgncw.footlocker.de": "dnsdelegation.io",
+  "yrlkte.in360.pl": "dnsdelegation.io",
+  "yrrudp.inven.co.kr": "y.dnsdelegation.io",
+  "yujmyt.theiconic.co.nz": "dnsdelegation.io",
+  "yvcjyi.beymen.com": "dnsdelegation.io",
+  "yvdaeg.on-running.com": "dnsdelegation.io",
+  "yvrqun.graciousstyle.com": "dnsdelegation.io",
+  "yvtgva.casa.it": "dnsdelegation.io",
+  "ywayoh.ecipo.hu": "dnsdelegation.io",
+  "ywhikg.surplex.com": "dnsdelegation.io",
+  "ywofbm.kinash.ru": "dnsdelegation.io",
+  "ywpohn.zoloto585.ru": "dnsdelegation.io",
+  "ywrcqa.11alive.com": "gum.par.vip.prod.criteo.com",
+  "ywrcqa.9news.com": "gum.par.vip.prod.criteo.com",
+  "ywrcqa.cbs8.com": "gum.par.vip.prod.criteo.com",
+  "ywrcqa.kare11.com": "gum.par.vip.prod.criteo.com",
+  "ywrcqa.kgw.com": "gum.par.vip.prod.criteo.com",
+  "ywrcqa.wbir.com": "gum.par.vip.prod.criteo.com",
+  "ywrcqa.wusa9.com": "gum.am5.vip.prod.criteo.com",
+  "yxkzip.brastemp.com.br": "gum.am5.vip.prod.criteo.com",
+  "yxofzr.currentbody.com": "gum.par.vip.prod.criteo.com",
+  "yxpojn.lampenlicht.nl": "gum.am5.vip.prod.criteo.com",
+  "yxzfdl.550909.com": "gum.am5.vip.prod.criteo.com",
+  "yyhijp.g123.jp": "gum.par.vip.prod.criteo.com",
+  "yzcpqa.gumtree.com": "gum.par.vip.prod.criteo.com",
+  "yzdltz.pricerunner.dk": "gum.am5.vip.prod.criteo.com",
+  "zbrfde.ozmall.co.jp": "gum.am5.vip.prod.criteo.com",
+  "zcwank.nha.nl": "gum.par.vip.prod.criteo.com",
+  "zesazy.mebiusseiyaku.co.jp": "gum.par.vip.prod.criteo.com",
+  "zftces.hoiku-job.net": "dnsdelegation.io",
+  "zgqgig.skillbox.ru": "dnsdelegation.io",
+  "zgwxoy.autoscout24.ro": "dnsdelegation.io",
+  "zhcxvk.qvc.com": "dnsdelegation.io",
+  "zigpdx.ltbjeans.com": "dnsdelegation.io",
+  "zjhswy.comeup.com.tr": "dnsdelegation.io",
+  "zjrbwb.markenschuhe.de": "dnsdelegation.io",
+  "zkmvjm.f1news.ru": "z.dnsdelegation.io",
+  "zlolhl.anekdot.ru": "z.dnsdelegation.io",
+  "zlolhl.briefly.ru": "z.dnsdelegation.io",
+  "zlolhl.mediametrics.ru": "z.dnsdelegation.io",
+  "zlolhl.smart-lab.ru": "z.dnsdelegation.io",
+  "zploqy.influx.co.kr": "dnsdelegation.io",
+  "zqtizs.bonprix.ru": "dnsdelegation.io",
+  "zqwdyz.probikeshop.fr": "dnsdelegation.io",
+  "zrsetz.shutterstock.com": "dnsdelegation.io",
+  "zsvewq.bikehikaku.com": "dnsdelegation.io",
+  "zumfrt.nearwear.co.kr": "dnsdelegation.io",
+  "zvlxlu.emsan.com.tr": "dnsdelegation.io",
+  "zwiucp.ohmynews.com": "z.dnsdelegation.io",
+  "zxvttq.goldapple.ru": "dnsdelegation.io",
+  "zzfsli.tom-tailor.ru": "dnsdelegation.io",
+  "zznfip.bork.ru": "dnsdelegation.io",
+  "1iy4gu0lpkp.my.gloryleague.basketball": "friendly-community.tk",
+  "1kpv4njzilv.community.intersystems.com": "friendly-community.tk",
+  "1p3293dngsv.dodofacile.fr": "friendly-community.tk",
+  "1zzs6w25i8n.tube.inflatevids.xyz": "friendly-community.tk",
+  "25voj20abod.honeyswap.org": "friendly-community.tk",
+  "2829i2p88jx.www.csaladinet.hu": "friendly-community.tk",
+  "2e5km6f7o4zq.www.botcomics.com": "friendly-community.tk",
+  "2qqfxz5kecr4.www.eldorado.gg": "friendly-community.tk",
+  "4ntug5jhu0t8.furucombo.app": "cname.vercel-dns.com",
+  "8p0kiyq5mq1d.flex.team": "friendly-community.tk",
+  "9kkjfywjz50v.www.eventus.io": "friendly-community.tk",
+  "c5ai4b502b.www.chandlerorchards.com": "friendly-community.tk",
+  "cihnqp6p65.koinly.io": "friendly-community.tk",
+  "e5obq1v261.www.lurkit.com": "friendly-community.tk",
+  "fp84rw0jinz7.blanc.ru": "friendly-community.tk",
+  "gl5g98t0vfjb.panprices.com": "friendly-community.tk",
+  "grxkwphx0yk5.stoic.ai": "friendly-community.tk",
+  "lh3pvljbkong.www.nookgaming.com": "friendly-community.tk",
+  "ok2691lw4w3g.www.word.com.au": "friendly-community.tk",
+  "ooyk93cxdqv8.www.usa-corporate.com": "friendly-community.tk",
+  "ouc82i67pytg.www.emanualonline.com": "friendly-community.tk",
+  "p6pcdu3doexb.www.earthclassmail.com": "friendly-community.tk",
+  "p7qebe2odmlm.franchiseplus.nl": "friendly-community.tk",
+  "qwcp5tza48tt.xpollinate.io": "friendly-community.tk",
+  "ros3d4dbs3px.salud-masculina.info": "friendly-community.tk",
+  "s2whyufxmzam.chatpay.com.br": "friendly-community.tk",
+  "tos5dqejpd.www.freecodecamp.org": "friendly-community.tk",
+  "uhm26jyr11zv.www.freecodecamp.org": "friendly-community.tk",
+  "x2l5lsn8rvsq.li.finance": "friendly-community.tk",
+  "xlvvy4msxr.coolinastore.com": "friendly-community.tk",
+  "ypf4i81rjs5p.unstoppabledomains.com": "friendly-community.tk",
+  "0sbm.consobaby.co.uk": "et2.eulerian.net",
+  "16ao.mathon.fr": "et5.eulerian.net",
+  "1bva.societegenerale.fr": "societegenerale-fr.eulerian.net",
+  "1ctc.sfr.fr": "sfr.eulerian.net",
+  "2efj.up.coop": "et3.eulerian.net",
+  "5fm.985fm.ca": "aca.ca-eulerian.net",
+  "5ijo.01net.com": "atc.eulerian.net",
+  "6pal.consobaby.com": "et2.eulerian.net",
+  "7lbd4.armandthiery.fr": "et1.eulerian.net",
+  "7mx.eider.com": "et2.eulerian.net",
+  "8ezc.sfr.fr": "sfr.eulerian.net",
+  "a.perfumesclub.fr": "et8.eulerian.net",
+  "a8ht.hipp.fr": "et4.eulerian.net",
+  "ac.acadomia.fr": "et8.eulerian.net",
+  "alp1.drimki.fr": "dr.eulerian.net",
+  "am.belambra.com": "et5.eulerian.net",
+  "anz7.allianz-voyage.fr": "ma.eulerian.net",
+  "ar.i-run.fr": "et9.eulerian.net",
+  "aze0.dmp.leclerc": "lcr.eulerian.net",
+  "azg1.emalu-store.com": "et6.eulerian.net",
+  "b1n.carabins.umontreal.ca": "aca.ca-eulerian.net",
+  "b6ft.zone-turf.fr": "atc.eulerian.net",
+  "bhu9.bankia.es": "bks.eulerian.net",
+  "bpe2.destinia.co.il": "dsa.eulerian.net",
+  "bum7.bymycar.fr": "etb.eulerian.net",
+  "bvz5.destinia.com.tr": "dsa.eulerian.net",
+  "bwj4.hrhibiza.com": "pld.eulerian.net",
+  "c0i.ckoi.com": "aca.ca-eulerian.net",
+  "c0p.cepsum.umontreal.ca": "aca.ca-eulerian.net",
+  "c4dv.copinesdevoyage.com": "et6.eulerian.net",
+  "cc.conforama.es": "et7.eulerian.net",
+  "ch0p.darty.com": "fc.eulerian.net",
+  "cls7.theushuaiaexperience.com": "pld.eulerian.net",
+  "cpgo.avatacar.com": "eta.eulerian.net",
+  "cpk.princessetamtam.com": "fgr.eulerian.net",
+  "cse3.chausport.com": "etc.eulerian.net",
+  "csv4.ebs-paris.fr": "ins.eulerian.net",
+  "ct5m.citadium.com": "et4.eulerian.net",
+  "ctp1.bforbank.com": "etc.eulerian.net",
+  "def1.optimhome-recrutement.com": "dr.eulerian.net",
+  "deut1.fdj.fr": "fdj.eulerian.net",
+  "di8n.bfmtv.com": "atc.eulerian.net",
+  "dko.vente-unique.nl": "vu.eulerian.net",
+  "dqs3.darjeeling.fr": "cha.eulerian.net",
+  "dt.nrjmobile.fr": "et6.eulerian.net",
+  "du2k.bhv.fr": "gl.eulerian.net",
+  "dv59b.montecarlomeeting.com": "sbm.eulerian.net",
+  "dvo.assurandme.fr": "etc.eulerian.net",
+  "dw0c.sfr.fr": "sfr.eulerian.net",
+  "dxe2.heip.fr": "ins.eulerian.net",
+  "ea.access-moto.com": "et4.eulerian.net",
+  "ea.armandthiery.fr": "et1.eulerian.net",
+  "ea.auchantelecom.fr": "et6.eulerian.net",
+  "ea.audika.com": "et5.eulerian.net",
+  "ea.catimini.com": "et6.eulerian.net",
+  "ea.celio.com": "et3.eulerian.net",
+  "ea.ciblo.net": "ciblo.eulerian.net",
+  "ea.coffrefortplus.com": "et6.eulerian.net",
+  "ea.dcshoes-europe.com": "et5.eulerian.net",
+  "ea.deguisetoi.fr": "et2.eulerian.net",
+  "ea.diamant-unique.com": "vu.eulerian.net",
+  "ea.evaway.com": "vps.eulerian.net",
+  "ea.fleurancenature.fr": "frn.eulerian.net",
+  "ea.francoisesaget.com": "et6.eulerian.net",
+  "ea.galerieslafayette.com": "gl.eulerian.net",
+  "ea.greenweez.com": "et1.eulerian.net",
+  "ea.habitat.de": "et7.eulerian.net",
+  "ea.habitat.fr": "et7.eulerian.net",
+  "ea.histoiredor.com": "et6.eulerian.net",
+  "ea.hofmann.es": "pb-hofmann-es.eulerian.net",
+  "ea.hofmann.pt": "pb-hofmann-pt.eulerian.net",
+  "ea.igraal.com": "igraal.eulerian.net",
+  "ea.kauf-unique.at": "vu.eulerian.net",
+  "ea.kauf-unique.de": "vu.eulerian.net",
+  "ea.kidiliz.com": "et6.eulerian.net",
+  "ea.labelhabitation.com": "et6.eulerian.net",
+  "ea.lafrancedunordausud.fr": "et7.eulerian.net",
+  "ea.leskidunordausud.fr": "et7.eulerian.net",
+  "ea.lespagnedunordausud.fr": "et7.eulerian.net",
+  "ea.lexpress.fr": "atc.eulerian.net",
+  "ea.megustaleer.com.pe": "et7.eulerian.net",
+  "ea.melijoe.com": "et1.eulerian.net",
+  "ea.millet-mountain.com": "et2.eulerian.net",
+  "ea.millet.fr": "et2.eulerian.net",
+  "ea.mistergatesdirect.com": "et6.eulerian.net",
+  "ea.mondial-assistance.fr": "ma.eulerian.net",
+  "ea.natiloo.com": "et1.eulerian.net",
+  "ea.nextseguros.es": "et5.eulerian.net",
+  "ea.odalys-vacances.com": "qua.eulerian.net",
+  "ea.odalys-vacation-rental.com": "qua.eulerian.net",
+  "ea.placedestendances.com": "et4.eulerian.net",
+  "ea.poeleaboismaison.com": "et6.eulerian.net",
+  "ea.quiksilver.eu": "et5.eulerian.net",
+  "ea.radiateurplus.com": "et6.eulerian.net",
+  "ea.rentacar.fr": "et7.eulerian.net",
+  "ea.reunica.com": "et6.eulerian.net",
+  "ea.roxy.eu": "et5.eulerian.net",
+  "ea.smallable.com": "et1.eulerian.net",
+  "ea.smartbox.com": "et2.eulerian.net",
+  "ea.telecommandeonline.com": "et6.eulerian.net",
+  "ea.tool-fitness.com": "et6.eulerian.net",
+  "ea.venta-unica.com": "vu.eulerian.net",
+  "ea.vente-unique.be": "vu.eulerian.net",
+  "ea.vente-unique.ch": "vu.eulerian.net",
+  "ea.vente-unique.com": "vu.eulerian.net",
+  "ea.vente-unique.lu": "vu.eulerian.net",
+  "ea.voyage-prive.co.uk": "vp.eulerian.net",
+  "ea.voyage-prive.es": "vp.eulerian.net",
+  "ea.voyage-prive.it": "vp.eulerian.net",
+  "ea.warnerbros.fr": "et5.eulerian.net",
+  "eat9.thebeat925.ca": "aca.ca-eulerian.net",
+  "ebc1.capifrance.fr": "dr.eulerian.net",
+  "ef.futuroscope.com": "et8.eulerian.net",
+  "ef.futuroscope.mobi": "et8.eulerian.net",
+  "ek8.voyage-prive.com": "vp.eulerian.net",
+  "elc1.energies.leclerc": "lcr.eulerian.net",
+  "elr.sfr.fr": "sfr.eulerian.net",
+  "erb.tremblant.ca": "aca.ca-eulerian.net",
+  "ert5.rmcsport.tv": "sfr.eulerian.net",
+  "eule1.pmu.fr": "pmu.eulerian.net",
+  "eulerian.astro-way.com": "et3.eulerian.net",
+  "eulerian.belambra.be": "et5.eulerian.net",
+  "eulerian.belambra.fr": "et5.eulerian.net",
+  "eulerian.brandalley.fr": "ba.eulerian.net",
+  "eulerian.canal-plus.com": "cp.eulerian.net",
+  "eulerian.look-voyages.fr": "et5.eulerian.net",
+  "eulerian.madeindesign.com": "et2.eulerian.net",
+  "eulerian.malakoffmederic.com": "qua.eulerian.net",
+  "eulerian.mathon.fr": "et5.eulerian.net",
+  "eulerian.monoprix.fr": "et6.eulerian.net",
+  "eulerian.motoblouz.com": "et4.eulerian.net",
+  "eulerian.officiel-des-vacances.com": "vps.eulerian.net",
+  "eulerian.sarenza.com": "sz.eulerian.net",
+  "eulerian.structube.com": "bca.eulerian.net",
+  "eulerian.telechargement.fr": "et2.eulerian.net",
+  "eulerian.thalasseo.com": "vps.eulerian.net",
+  "eulerian.voyage-prive.com": "vp.eulerian.net",
+  "eultech.fnac.com": "fc.eulerian.net",
+  "exd4.destinia.com.au": "dsa.eulerian.net",
+  "f0nn.oney.fr": "et4.eulerian.net",
+  "f7ds.liberation.fr": "atc.eulerian.net",
+  "fbu8.hoteldeparismontecarlo.com": "sbm.eulerian.net",
+  "fbu8.hotelhermitagemontecarlo.com": "sbm.eulerian.net",
+  "fbu8.monte-carlo-beach.com": "sbm.eulerian.net",
+  "fbu8.montecarlobay.com": "sbm.eulerian.net",
+  "fbu8.montecarloluxuryhotels.com": "sbm.eulerian.net",
+  "fbu8.montecarlosbm.com": "sbm.eulerian.net",
+  "fbu8.montecarloseasonalsale.com": "sbm.eulerian.net",
+  "fbu8.ticket-online.montecarlolive.com": "sbm.eulerian.net",
+  "fec1.optimhome.com": "dr.eulerian.net",
+  "fkwc.sfr.fr": "sfr.eulerian.net",
+  "fl5dpe.oui.sncf": "vsc.eulerian.net",
+  "fpb8.esce.fr": "ins.eulerian.net",
+  "fsz1.francoisesaget.com": "et6.eulerian.net",
+  "ftn.fortuneo.fr": "ftn.eulerian.net",
+  "fzb5.laboratoire-giphar.fr": "et4.eulerian.net",
+  "fzu4.bysidecar.com": "bsc.eulerian.net",
+  "g1be.swisslife-direct.fr": "et4.eulerian.net",
+  "gdm1.toner.fr": "et3.eulerian.net",
+  "gfn1.ugap.fr": "et2.eulerian.net",
+  "gfv4.destinia.co.za": "dsa.eulerian.net",
+  "gi7a.structube.com": "bca.ca-eulerian.net",
+  "gti3.culture.leclerc": "lcr.eulerian.net",
+  "gti3.hightech.leclerc": "lcr.eulerian.net",
+  "guq9.vente-unique.it": "vu.eulerian.net",
+  "gwtc.sfr.fr": "sfr.eulerian.net",
+  "h00c.sfr.fr": "sfr.eulerian.net",
+  "hbo5.concours-pass.com": "ins.eulerian.net",
+  "hby7.destinia.it": "dsa.eulerian.net",
+  "he6e.lavieimmo.com": "atc.eulerian.net",
+  "hgf4.zanzicar.fr": "et7.eulerian.net",
+  "hk2d.tourismemauricie.com": "aca.ca-eulerian.net",
+  "hkj8.evobanco.com": "evb.eulerian.net",
+  "idg1.idgarages.com": "et6.eulerian.net",
+  "inv3te.oui.sncf": "vsc.eulerian.net",
+  "jcr3.onlyyouhotels.com": "pld.eulerian.net",
+  "jelr1.dili.fr": "dr.eulerian.net",
+  "jfp6.destinia.de": "dsa.eulerian.net",
+  "jg0c.sfr.fr": "sfr.eulerian.net",
+  "jhm3.ifgexecutive.com": "ins.eulerian.net",
+  "jln3.clstudios.com": "cha.eulerian.net",
+  "jo2f.cheque-cadhoc.fr": "et3.eulerian.net",
+  "jxy6.evobanco.es": "evb.eulerian.net",
+  "k4fu.verif.com": "atc.eulerian.net",
+  "kux5.raileurope.com": "vsc.eulerian.net",
+  "kvt5.blesscollectionhotels.com": "pld.eulerian.net",
+  "kwsjy9.oui.sncf": "vsc.eulerian.net",
+  "leo1.leon-de-bruxelles.fr": "et9.eulerian.net",
+  "let1.devialet.com": "eta.eulerian.net",
+  "lio8.destinia.com.pa": "dsa.eulerian.net",
+  "ljb0.assuronline.com": "et1.eulerian.net",
+  "lmvc1.vivatechnology.com": "et2.eulerian.net",
+  "ls.cartecarburant.leclerc": "lcr.eulerian.net",
+  "ls.e-cartecadeauleclerc.fr": "lcr.eulerian.net",
+  "lsv5.belambra.fr": "et5.eulerian.net",
+  "ly8c.caci-online.fr": "etc.eulerian.net",
+  "lzuc.sfr.fr": "sfr.eulerian.net",
+  "m10.m1029.com": "aca.ca-eulerian.net",
+  "m3ds.subarumetropolitain.com": "aca.eulerian.net",
+  "mfd.myfirstdressing.com": "et6.eulerian.net",
+  "mgt7.madeindesign.it": "et2.eulerian.net",
+  "mi.miliboo.be": "et7.eulerian.net",
+  "mi.miliboo.ch": "et7.eulerian.net",
+  "mi.miliboo.co.uk": "et7.eulerian.net",
+  "mi.miliboo.com": "et7.eulerian.net",
+  "mi.miliboo.de": "et7.eulerian.net",
+  "mi.miliboo.es": "et7.eulerian.net",
+  "mi.miliboo.it": "et7.eulerian.net",
+  "mi.miliboo.lu": "et7.eulerian.net",
+  "mm.melia.com": "ml.eulerian.net",
+  "mn.mistermenuiserie.com": "et6.eulerian.net",
+  "msz3.destinia.cn": "dsa.eulerian.net",
+  "mud4.destinia.com.eg": "dsa.eulerian.net",
+  "mva1.maeva.com": "et7.eulerian.net",
+  "ncx2.voyage-prive.it": "vp.eulerian.net",
+  "net1.coolsailing.com": "et2.eulerian.net",
+  "net1.netski.com": "et2.eulerian.net",
+  "netc.sfr.fr": "sfr.eulerian.net",
+  "ni8.lafuma-boutique.com": "et2.eulerian.net",
+  "ni8.lafuma.com": "et2.eulerian.net",
+  "nlf6.vente-unique.pl": "vu.eulerian.net",
+  "nmo1.orpi.com": "or.eulerian.net",
+  "noa0.compteczam.fr": "et1.eulerian.net",
+  "nrg.red-by-sfr.fr": "sfr.eulerian.net",
+  "nym5c.bonlook.com": "aca.ca-eulerian.net",
+  "nym5c.laura.ca": "bca.ca-eulerian.net",
+  "nyt1.biosens-leanature.fr": "et4.eulerian.net",
+  "o68c.sfr.fr": "sfr.eulerian.net",
+  "oal2.destinia.co.uk": "dsa.eulerian.net",
+  "oek7.april-moto.com": "alm.eulerian.net",
+  "ofk3.orcanta.fr": "cha.eulerian.net",
+  "ogb2.biovie.com": "et4.eulerian.net",
+  "ogb2.eauthermalejonzac.com": "et4.eulerian.net",
+  "ogb2.leanatureboutique.com": "et4.eulerian.net",
+  "ogb2.natessance.com": "et4.eulerian.net",
+  "ojm4.palladiumhotelgroup.com": "pld.eulerian.net",
+  "oor.ooreka.fr": "et7.eulerian.net",
+  "oph7o.montecarlosbm-corporate.com": "sbm.eulerian.net",
+  "oqr4.destinia.in": "dsa.eulerian.net",
+  "pbox.no.photobox.com": "pb.eulerian.net",
+  "pbox.photobox.be": "pb.eulerian.net",
+  "pbox.photobox.ch": "pb.eulerian.net",
+  "pbox.photobox.co.nz": "pb.eulerian.net",
+  "pbox.photobox.co.uk": "pb.eulerian.net",
+  "pbox.photobox.com.au": "pb.eulerian.net",
+  "pbox.photobox.de": "pb.eulerian.net",
+  "pbox.photobox.dk": "pb.eulerian.net",
+  "pbox.photobox.es": "pb.eulerian.net",
+  "pbox.photobox.fr": "pb.eulerian.net",
+  "pbox.photobox.ie": "pb.eulerian.net",
+  "pbox.photobox.it": "pb.eulerian.net",
+  "pbox.photobox.nl": "pb.eulerian.net",
+  "pbox.photobox.se": "pb.eulerian.net",
+  "pgt1.voyage-prive.es": "vp.eulerian.net",
+  "pjh7.us.chantelle.com": "cha.eulerian.net",
+  "pk1u.melanielyne.com": "bca.ca-eulerian.net",
+  "pkc5.hardrockhoteltenerife.com": "pld.eulerian.net",
+  "po.ponant.com": "et7.eulerian.net",
+  "pol3.cheque-domicile.fr": "et3.eulerian.net",
+  "pp.promocionesfarma.com": "pf.eulerian.net",
+  "ppp7.destinia.kr": "dsa.eulerian.net",
+  "pqn7.cheque-dejeuner.fr": "et3.eulerian.net",
+  "prx6.destinia.ch": "dsa.eulerian.net",
+  "pv.partenaires-verisure.fr": "et7.eulerian.net",
+  "qaz3.wethenew.com": "etb.eulerian.net",
+  "qfo.eurotierce.be": "pmu.eulerian.net",
+  "qpl9.destinia.dk": "dsa.eulerian.net",
+  "quk9.destinia.com.ar": "dsa.eulerian.net",
+  "r1ztni.oui.sncf": "vsc.eulerian.net",
+  "r4nds.absorba.com": "et6.eulerian.net",
+  "rh5i.tradingsat.com": "atc.eulerian.net",
+  "rqz4.supdigital.fr": "ins.eulerian.net",
+  "rup5.destinia.ru": "dsa.eulerian.net",
+  "rvz9.destinia.co.ro": "dsa.eulerian.net",
+  "ry0.rythmefm.com": "aca.ca-eulerian.net",
+  "s4e8.cascades.com": "bca.eulerian.net",
+  "sby1.madeindesign.de": "et2.eulerian.net",
+  "sd.securitasdirect.fr": "et7.eulerian.net",
+  "sfp7.eco-conscient.com": "etc.eulerian.net",
+  "sis8.premieremoisson.com": "aca.eulerian.net",
+  "sis8.sisley-paris.com": "et2.eulerian.net",
+  "ski1.skiset.com": "et2.eulerian.net",
+  "sls2.loisirsencheres.com": "et7.eulerian.net",
+  "snr4.canalplus.com": "cp.eulerian.net",
+  "ssrlot.lotoquebec.com": "aca.eulerian.net",
+  "ssy7.destinia.com.ua": "dsa.eulerian.net",
+  "sykc.madeindesign.ch": "et2.eulerian.net",
+  "t.locasun-vp.fr": "et9.eulerian.net",
+  "t.locasun.co.uk": "et9.eulerian.net",
+  "t.locasun.de": "et9.eulerian.net",
+  "t.locasun.es": "et9.eulerian.net",
+  "t.locasun.fr": "et9.eulerian.net",
+  "t.locasun.it": "et9.eulerian.net",
+  "t.locasun.nl": "et9.eulerian.net",
+  "t.voyages-sncf.com": "vsc.eulerian.net",
+  "t0y.toyota.ca": "aca.ca-eulerian.net",
+  "t9h2.ricardocuisine.com": "bca.eulerian.net",
+  "t9k3a.jeanpaulfortin.com": "aca.eulerian.net",
+  "tce0.primes-energie.leclerc": "lcr.eulerian.net",
+  "tdf1.admyjob.com": "et8.eulerian.net",
+  "tdf1.easyviaggio.com": "et2.eulerian.net",
+  "tdf1.easyviajar.com": "et2.eulerian.net",
+  "tdf1.easyvols.fr": "et2.eulerian.net",
+  "tdf1.easyvoyage.co.uk": "et2.eulerian.net",
+  "tdf1.easyvoyage.com": "et2.eulerian.net",
+  "tdf1.easyvoyage.de": "et2.eulerian.net",
+  "tdf1.laredoute.fr": "lrd.eulerian.net",
+  "tdf1.vente-unique.pt": "vu.eulerian.net",
+  "tmy8.madeindesign.ch": "et2.eulerian.net",
+  "tsj0.madeindesign.com": "et2.eulerian.net",
+  "txv0.destinia.hu": "dsa.eulerian.net",
+  "udr9.livera.nl": "cha.eulerian.net",
+  "uhn9.up-france.fr": "et3.eulerian.net",
+  "upz1.destinia.lt": "dsa.eulerian.net",
+  "uue2.destinia.ir": "dsa.eulerian.net",
+  "uwy4.aegon.es": "eta.eulerian.net",
+  "uzd1.madeindesign.com": "et2.eulerian.net",
+  "v.oui.sncf": "vsc.eulerian.net",
+  "vbe.voyage-prive.be": "vp.eulerian.net",
+  "vch.voyage-prive.ch": "vp.eulerian.net",
+  "vde1.voyage-prive.de": "vp.eulerian.net",
+  "vet0.carrefour-banque.fr": "et1.eulerian.net",
+  "vfo.voyage-prive.co.uk": "vp.eulerian.net",
+  "vgo.vegaoo.de": "et2.eulerian.net",
+  "vgo.vegaoo.es": "et2.eulerian.net",
+  "vgo.vegaoo.it": "et2.eulerian.net",
+  "vgo.vegaoo.nl": "et2.eulerian.net",
+  "vgo.vegaoo.pt": "et2.eulerian.net",
+  "vgo.vegaooparty.com": "et2.eulerian.net",
+  "vgo.vegaoopro.com": "et2.eulerian.net",
+  "vnf4.belleetbio.com": "et3.eulerian.net",
+  "vnl1.voyage-prive.nl": "vp.eulerian.net",
+  "vpf4.euskaltelofertas.com": "bsc.eulerian.net",
+  "vqp3.madeindesign.co.uk": "et2.eulerian.net",
+  "vry9.destinia.com": "dsa.eulerian.net",
+  "vtf2f.banque-casino.fr": "et3.eulerian.net",
+  "wfd7.carventura.com": "et4.eulerian.net",
+  "why3.inseec.education": "ins.eulerian.net",
+  "wph2.destinia.us": "dsa.eulerian.net",
+  "xay5o.toscane-boutique.fr": "et1.eulerian.net",
+  "xjq5.belambra.be": "et5.eulerian.net",
+  "xy33.smallable.com": "et1.eulerian.net",
+  "yf5.voyage-prive.at": "vp.eulerian.net",
+  "yh6u.dealeusedevoyages.com": "vps.eulerian.net",
+  "yoc.younited-credit.com": "et1.eulerian.net",
+  "zkc5.fleurancenature.fr": "frn.eulerian.net",
+  "zm5d.lexpress.fr": "atc.eulerian.net",
+  "znq9.destinia.mx": "dsa.eulerian.net",
+  "zrw1.destinia.jp": "dsa.eulerian.net",
+  "zsi7.destinia.do": "dsa.eulerian.net",
+  "zum7cc.oui.sncf": "vsc.eulerian.net",
+  "zyq2.destinia.sk": "dsa.eulerian.net",
+  "4ke5b4ila.codedge.de": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "9kz9cttz76.antonsten.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "aardvark.helpingpets.org.uk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "aardvark.revolana.rs": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "aardvark.steadybit.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "aardwolf.ass.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "aardwolf.chrisblackwell.me": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "aardwolf.keygen.sh": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "aardwolf.meinsmartplan.de": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "albatross.coachmydiet.gr": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "albatross.creacoon.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "albatross.ohseesoftware.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "alligator.remotecyberwork.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "alpaca.fiibarbat.ro": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "alpaca.reclaimthenet.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "alpaca.thesocialmedwork.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "alpaca.wingmantracker.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "amphibian.30pin.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "amphibian.juergenhaller.at": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "amphibian.pinestc.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "angelfish.owlbear.rodeo": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "anglerfish.annaand.co": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "anglerfish.pfolios.net": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ant.prefinery.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "anteater.benborgers.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "antelope.electricbrighton.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "antelope.mywingmanstore.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "antelope.u3a.com.au": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "antlion.launch.fyi": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "antlion.nomedium.dev": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ape.maximzubarev.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ape.mfj.se": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ape.nusii.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ape.smartplanschema.se": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "armadillo.stacking.club": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "asp.chop-shop.com.au": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "azlej8cdm.pragmaticwebsecurity.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "baboon.alexmedick.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "badger.bytesized.xyz": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "badger.livingwithyourplane.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "badger.pager.app": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "badger.roidi.gr": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bandicoot.lettera.co": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bandicoot.mohit.dev": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "barnacle.viewsource.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "barracuda.ottsysteme.rs": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bass.goulet.dev": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bass.kidneystonediet.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bass.siterig.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bear.jake.nyc": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bear.modulr.design": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "beaver.brush.ninja": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bedbug.bragi.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bird.brondby.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bird.recruitkit.com.au": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bird.whatadoddle.co.uk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bird.whopaystechnicalwriters.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bison.mikeoliver.me": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bison.weitweit.at": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "blackbird.docstation.co": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "blackbird.marcelgil.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "blackbird.opensourcerails.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "blackbird.westboroughcovidplan.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bluejay.postmediagroup.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bluejay.twelve70.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "boa.brycewray.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "boar.indieweb.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "boar.jreviews.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bobcat.floriangaechter.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bobcat.snapshooter.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bobolink.itpeters.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "booby.deanyeong.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "boom.laravel.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bovid.arshaw.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bovid.neural.love": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bts2dvz.taguiginfo.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "bug.onlinedating.de": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "butterfly.ecouch.com.au": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "butterfly.rfortherestofus.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "butterfly.scottspence.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "buzzard.donotresearch.net": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "canid.peterakkies.net": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "canidae.introcrm.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "canidae.sellerjournal.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "capybara.bell0bytes.eu": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "capybara.stefanguy.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cardinal.businessfirstonline.co.uk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cardinal.ensembleblock.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cardinal.iwgb.org.uk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cardinal.krisenchat.de": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "caribou.color.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "caribou.landlordsguild.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "carp.seniorsinjobs.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "carp.steplawfirm.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "carp.trailofterror.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cat.1000things.at": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cat.acesandaros.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cat.gfx.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cat.laravel-news.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cat.mattr.global": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cat.pushworth.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cat.ticketshifu.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "caterpilla.tigeroakes.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "catshark.nervecentral.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cattle.apisyouwonthate.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cattle.domaincomet.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cattle.kirkebaekke.dk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cattle.kumo.at": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cattle.spiral11.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cattle.weiss-bregenz.at": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cattle.yourdallashandyman.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "centipede.fjellvann.no": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "centipede.medusa.codes": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cephalopod.cemah.cloud": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cephalopod.ds.band": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cephalopod.notevilads.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cephalopod.polymath.net": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cephalopod.staff.design": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cheetah.songrender.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "chickadee.getreplybox.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "chickadee.serverlessfirst.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "chicken.alpla.info": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "chicken.foxglove.dev": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "chimpanzee.ines-papert.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "chinchilla.68keys.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "chinchilla.ubclaunchpad.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "chipmunk.balancer.fi": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "chipmunk.crestedbuttejobs.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "clam.figmachina.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "clam.mglaman.dev": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "clownfish.aaronmoodie.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "clownfish.philipkiely.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cobra.didhost.pl": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cod.fotis.xyz": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cod.onemanandhisblog.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "condor.kuhnsmfg.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "coral.doublefine.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "coral.palmosnews.gr": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "coyote.gnx.cloud": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "coyote.titlerun.xyz": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "crab.cachix.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "crane.thegardenroomguide.co.uk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "crane.trescolori.cloud": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "crawdad.internetassociation.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "crayfish.fansubbing.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "crayfish.spotlessconcepts.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "crayfish.thingelstad.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "crow.kenchi.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "crow.redview.gr": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cuckoo.minaexplorer.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "cuckoo.peoplefirstjobs.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "dakqbwpduu.coywolf.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "deer.ray.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "dog.freddyheppell.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "dog.jessarcher.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "dog.justsketch.me": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "dog.orbit.love": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "dolphin.biodom.rs": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "dolphin.brandname.tech": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "dolphin.maybe.co": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "dolphin.sfelc.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "donkey.bahr.dev": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "donkey.routinehub.co": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "donkey.taxifare.com.au": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "dove.fullcalendar.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "dragonfly.codebar.ch": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "dragonfly.filmmakerfreedom.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "dragonfly.jala-one.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "earwig.architecturesofhiding.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "echidna.honeybadger.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "eel.aware7.de": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "eel.beekeeperstudio.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "eel.tunspress.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "elephant.stempelwiese.de": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "elephant.superdense.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "elk.andrewfomera.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "elk.okcrowd.co": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "emu.balsa.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "emu.cortexfutura.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "emu.pin13.net": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "epfykmaw.opencagedata.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "falcon.aniftyco.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "falcon.rowanmanning.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "fancyrat.calebporzio.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "fancyrat.flatuicolors.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "felidae.mysuperportal.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "felidae.theforeignarchitect.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "felidae.vegamuze.be": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ferret.emilkowal.ski": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ferret.helpspace.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ferret.linksoftwarellc.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ferret.siloam.ch": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ferret.tailgraph.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "finch.koronasporing.no": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "finch.market.xyz": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "firefly.daroncreative.co": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "fish.eventpay.be": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "fish.muted.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "fish.trampoline.cx": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "fish.whitney.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "fjikgr.dennmart.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "flamingo.stacking-club.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "flyingfish.jak-zrobic-strone.pl": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "fowl.saulhardman.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "fox.domainr.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "gamefowl.emailforward.mx": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "gamefowl.nonprofit.foundation": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "gayal.maxmasnick.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "gayal.stockshouse.co": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "gazelle.emanager.gg": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "gecko.rrrelax.app": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "gecko.withclarify.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "gerbil.buf.build": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "gibbon.ehubhealth.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "giraffe.0xtracker.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "giraffe.fnd.info": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "goat.aicontentdojo.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "goat.codeofar.ms": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "goat.studiobruikbaar.nl": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "goldfish.mergeedu.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "goldfish.shingle.fi": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "goose.accountsjs.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "goose.joelclermont.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "goose.pooltogether.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "grouse.devopsnewsletters.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "grouse.i21.co": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "grouse.textile.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "grouse.yannev.es": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "guan.domainnamesanity.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "guanaco.homeandgardenmakeover.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "guanaco.redpixelthemes.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "guanaco.shelter.stream": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "guineapig.recap.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "gull.technikempfehlung.de": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "guppy.estimate.taxi": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "guppy.setasign.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "haddock.affilimate.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "halibut.ozspeedtest.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "hamster.darkbit.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "hare.felix-schmid.de": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "hare.restory.nl": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "hawk.makroskop.eu": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "hedgehog.fightforthefuture.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "hedgehog.impira.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "heron.cleanenergyproject.tw": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "heron.joel.is": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "heron.notability.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "hookworm.commanddot.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "hornet.lifewithpectus.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "hornet.thunderbite.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "horse.deadmanssnitch.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "horse.fgilio.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "horse.ohseemedia.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "horse.rmrk.app": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "horse.uhaveto.click": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "horse.vibecreativemarketing.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "horse.zwei-bags.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "hoverfly.cdengine.co.uk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "hoverfly.dailyblocks.tv": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "hoverfly.papercrowns.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "hyena.baseline.is": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "hyena.kitafund.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "hyena.m1guelpf.blog": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "iamej24d.brianlovin.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "iguana.delbaoliveira.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "iguana.thesubtimes.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ijderu.tr.af": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "impala.vnv.nl": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "jackal.goldsteinmedia.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "jackal.laravelpackage.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "jaguar.thankbox.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "jay.andycroll.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "jcpjfyikk.dogbonemarket.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "kangaroo.covidtracking.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "kangaroo.kraenk.de": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "kaxlfq.testingwithtestcafe.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "kite.ibirthdayclub.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "kite.kochie.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "kite.open-contracting.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "kiwi.emilkowal.ski": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "kiwi.railway.app": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "koala.getslopes.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "koala.stopdesign.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "koi.artsvp.co": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "koi.lkae.dev": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "koi.omnimove.health": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "krill.jorijn.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "krill.octanna.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ks42zt.spec.fm": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "kxmye.event1.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ladybug.cargolabs.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ladybug.paulstovell.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "landfowl.typegang.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "landfowl.worldeventsandthebible.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "landsnail.bindle.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "leech.stargate-project.de": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "lemur.bendaron.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "lemur.joliebulle.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "leopard.joytotheworld.info": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "leopard.ui-snippets.dev": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "leopard.understandit.se": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "limpet.padbury.app": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "lion.kusama.network": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "lizard.utropia.es": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "llama.growthinkers.nl": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "llama.moodgym.com.au": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "lobster.justunderwear.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "loon.hardin.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "loon.uselauncher.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "louse.messengo.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "louse.seanconnolly.dev": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "louse.sigle.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "lungfish.datadividendproject.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "lynx.localticketing.de": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "lynx.sbstjn.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "macaw.ianmitchell.dev": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mackerel.passiveincome.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mammal.haglund.dev": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mammal.polkadot.network": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "manatee.creativepassport.net": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "manatee.wikijob.co.uk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "marmot.theshootingcentre.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "marsupial.stfc.space": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "marten.emperor-creative.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mastodon.thoughtbot.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "meerkat.inprivy.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "meerkat.missinglettr.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mink.faq-bregenzerwald.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mink.xconfessions.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "minnow.smartquotesforsmartpeople.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mole.bubblefoundation.org.uk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mole.dansksejlunion.dk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mole.energizer.eu": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mole.rtbhouse.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mollusk.12grados.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mollusk.forwardmx.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mollusk.saferingz.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mongoose.base-training.com.au": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mongoose.thechocolatelife.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "moose.octo.app": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mosquito.birbs.art": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mosquito.zero.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "moth.artsmia.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "moth.underscoretw.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mouse.voyagefuneralhomes.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "mule.caddyserver.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "muskox.michaelaerni.ch": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "narwhal.projectf.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "narwhal.teachinginhighered.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "newt.turtle.network": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "nkydma.newbuild.studio": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "noapr1lsed.solo.to": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ocelot.pixlwebs.nl": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "orangutan.equaliteam.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "orangutan.userflow.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "orca.getnodo.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "orca.weatherontheway.app": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "otter.gpu.stream": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "owl.boatingscout.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "owl.gregwolanski.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "owl.sentrydiscord.dev": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ox.ebalus.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ox.sprucely.host": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "pa5xjc.m1guelpf.me": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "panda.along.video": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "panda.moritz-petersen.de": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "panther.activelink.ie": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "panther.atgonlinecoaching.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "panther.codyhatfield.me": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "panther.datocms.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "panther.hoprnet.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "panther.pit-pit.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "panther.thestocks.im": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "panther.tigil.rs": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "parrot.binarymoon.co.uk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "parrot.matcha.xyz": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "parrotfish.wilderworld.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "partridge.unfamiliar.land": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "peacock.davidlevai.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "peacock.tourismtuneup.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "pelican.jatikhwan.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "pelican.protomaps.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "penguin.craftpeak.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "penguin.mobiadroit.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "perch.searchwp.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "pheasant.cadbooster.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "pheasant.facetwp.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "pig.notion.chat": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "pigeon.sushi.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "pinniped.coachingforleaders.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "pinniped.gardenofficeguide.co.uk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "pinniped.resist.bot": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "piranha.jsmobiledev.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "piranha.minnmyatsoe.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "planarian.reverberate.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "platypus.cmp.is": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "platypus.facet.net": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "polarbear.codeday.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "pony.bylt.co": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "pony.ftm.cat": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "pony.gugg.at": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "pony.musicmixpro.co.uk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "porcupine.dvresolve.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "porcupine.simpleprax.de": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "porpoise.azettl.net": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "possum.luro.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "prairiedog.hashnode.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "prawn.fffuel.co": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "prawn.lionsmouth.digital": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "primate.builds.gg": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "primate.dmarcdigests.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ptarmigan.codebycorey.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ptarmigan.q-free.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "puffin.geocode.earth": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "puffin.nex4.net": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "python.flightcontrol.dev": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "python.mux.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "quail.cheatsheets.xyz": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "quelea.llresearch.dev": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "quokka.curbnumberpro.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "quokka.webgems.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "rabbit.llresearch.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "rabbit.radicalxchange.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "raccoon.smzr.co.uk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "rat.gimlet.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "raven.prijzenvolger.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "raven.zimristats.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "reindeer.cablemod.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "reindeer.iainbroome.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "reptile.sat.trading": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "rodent.beersport.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "rodent.kubernetesreadme.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "rook.clarify.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "rook.moodgym.de": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "rooster.chek.dev": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "salamander.heydesigner.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "salamander.showandtelldata.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "salmon.literallife.church": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "salmon.thespiritualpsychologist.co.uk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "sawfish.loqbooq.app": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "scallop.esolia.pro": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "scallop.notionchina.co": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "scorpion.byteside.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "seahorse.okse.no": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "shrimp.leccy.net": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "silkworm.energizergrouplegal.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "silkworm.preventingsuicideinsussex.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "skink.madewithlove.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "skunk.deathstare.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "slug.vatsim.uk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "smelt.allenpike.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "smelt.cryptocodeschool.in": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "smelt.validator.pizza": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "smelt.waltrack.net": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "snake.kiramclean.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "snipe.nipht.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "sparrow.workingincontent.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "spermwhale.thankbox.co": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "spider.capricciocolumbus.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "spider.chrisshort.net": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "spider.privacyone.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "spider.scottw.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "spoonbill.deknot.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "squid.antevo.com.au": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "squirrel.laravel-mix.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "stingray.communityally.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "stingray.cryptovoxels.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "stingray.pawsmood.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "stingray.reform.app": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "stoat.death-to-ie11.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "stork.notlessbutbetter.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "sturgeon.petjeaf.net": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "swallow.axiom.co": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "swallow.pelias.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "swan.datingjungle.de": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "swift.avenue.so": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "swift.ciudadanob.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "swift.jos.ht": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "swift.vanuitjehuis.nl": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "swordfish.hotcross.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "swordfish.joebuhlig.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "swordtail.animeuknews.net": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "swordtail.thocstock.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "tahr.componentsui.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "tahr.rasen.dev": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "tapir.analyse.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "tarantula.hashicorp.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "tarsier.worldwide-casting.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "tick.pcrpriser.se": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "tigershark.moonpot.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "tigershark.oilpriceapi.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "tiglon.beyondco.de": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "tiglon.davidroessli.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "tiglon.orisdental.no": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "toad.frontendmentor.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "toad.kubenews.net": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "tortoise.mdx.one": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "tortoise.transistor.fm": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "tortoise.trysmartplan.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "toucan.ateliermilky.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "treefrog.elysiacity.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "treefrog.kaffeknappen.no": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "treefrog.walkingwithdaddy.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "trout.batzo.net": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "tuna.purplespider.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "turkey.tella.tv": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "turtle.geshem.space": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "turtle.hackstock.net": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "uktgg.dev-tester.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "vampirebat.git-tower.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "vampirebat.sharpend.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "vicuna.casa-moebel.at": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "vicuna.joblicant.de": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "viper.sitesauce.app": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "vole.contemporaryartlibrary.org": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "vole.darylshaw.co.uk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "vole.noteapps.info": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "wallaby.cron.help": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "wallaby.legendkeeper.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "wallaby.short1.link": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "warbler.nycmode.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "wasp.generalaviationnews.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "waterboa.midu.dev": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "whitefish.finanzritter.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "wildcat.codesalt.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "wildcat.fspy.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "wildfowl.minter.io": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "worm.paulstamatiou.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "yak.embeddedartistry.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "ycpkuophoy.vole.wtf": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "zebra.lasantisimagourmet.com": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "zebra.rightly.co.uk": "a2f41194651173ebf.awsglobalaccelerator.com",
+  "d.image-ad.jp": "site-112900816347.gslb5.sakura.ne.jp",
+  "d.newssuite.sony.net": "site-112900816347.gslb5.sakura.ne.jp",
+  "favor1.fractal.jp": "fractal-auth.ad-cloud.jp",
+  "i.image-ad.jp": "e10217.g.akamaiedge.net",
+  "i.newssuite.sony.net": "e26817.f.akamaiedge.net",
+  "j.bg.adresult-sp.jp": "site-112900816347.gslb5.sakura.ne.jp",
+  "j.image-ad.jp": "e10217.f.akamaiedge.net",
+  "j.newssuite.sony.net": "e26817.f.akamaiedge.net",
+  "newssuite.sony.net": "newssuite-sony-net.storage.googleapis.com",
+  "1.marketing.net.zooplus.de": "lb1.affex.org",
+  "114-track.net.daraz.com": "daraz-com.affex.org",
+  "16www.partner.net.daraz.com": "daraz-com.affex.org",
+  "181.net.daraz.com": "daraz-com.affex.org",
+  "76.ingenioustech.biz": "lb1.affex.org",
+  "8qy.net.zooplus.de": "lb1.affex.org",
+  "a.dogfood.ns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "a.ghcpins.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "a.ns.emailvision.net.zooplus.it": "lb1.affex.org",
+  "a.ns.internalemailvision.net.daraz.com": "daraz-com.affex.org",
+  "a.ns.internalsvision.net.daraz.com": "daraz-com.affex.org",
+  "a.ns.region-emailvision.net.daraz.com": "daraz-com.affex.org",
+  "a.pass-ns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "a52.net.zooplus.de": "lb1.affex.org",
+  "acc-marketing.net.daraz.com": "daraz-com.affex.org",
+  "acclax-mgmt.net.zooplus.de": "lb1.affex.org",
+  "account.net.zooplus.com": "lb1.affex.org",
+  "accounting.b.ns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "accountingns2.viviotech.net.daraz.com": "daraz-com.affex.org",
+  "active-lax-mgmt.net.zooplus.de": "lb1.affex.org",
+  "active-r-is-1-2.net.daraz.com": "daraz-com.affex.org",
+  "activeseason.net.daraz.com": "daraz-com.affex.org",
+  "addvbux.net.daraz.com": "daraz-com.affex.org",
+  "adm.www.net.daraz.com": "daraz-com.affex.org",
+  "adminassets.net.zooplus.de": "lb1.affex.org",
+  "admincgi.net.zooplus.de": "lb1.affex.org",
+  "admindata.mail.net.zooplus.de": "lb1.affex.org",
+  "admineuropewest.net.zooplus.de": "lb1.affex.org",
+  "administrator-nfreya.net.daraz.com": "daraz-com.affex.org",
+  "administrator.lax-mgmt.net.zooplus.de": "lb1.affex.org",
+  "administrators-marketing.net.daraz.com": "daraz-com.affex.org",
+  "administrators.mgmt.docker.net.zooplus.de": "lb1.affex.org",
+  "administrators.net.zooplus.com": "lb1.affex.org",
+  "administratorslocalhost.net.daraz.com": "daraz-com.affex.org",
+  "adminproxy.net.zooplus.com": "lb1.affex.org",
+  "admins-d.ns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "admins.summer.net.daraz.com": "daraz-com.affex.org",
+  "adminsapi.admins.net.zooplus.de": "lb1.affex.org",
+  "adminsfreya.net.daraz.com": "daraz-com.affex.org",
+  "ai-marketing.net.daraz.com": "daraz-com.affex.org",
+  "allbesta.net.daraz.com": "daraz-com.affex.org",
+  "alpha.ids.net.zooplus.de": "lb1.affex.org",
+  "alphamgmt.docker.net.zooplus.de": "lb1.affex.org",
+  "amp-bkup.net.daraz.com": "daraz-com.affex.org",
+  "analytics.net.zooplus.de": "lb1.affex.org",
+  "apac-lax-mgmt.net.zooplus.de": "lb1.affex.org",
+  "apac.car10.net.daraz.com": "daraz-com.affex.org",
+  "apaccsr31.net.daraz.com": "daraz-com.affex.org",
+  "apacdata.disabled.net.zooplus.de": "lb1.affex.org",
+  "apacwlan-switch.net.daraz.com": "daraz-com.affex.org",
+  "api-docsprint-mo.net.daraz.com": "daraz-com.affex.org",
+  "api.1-priv.net.zooplus.de": "lb1.affex.org",
+  "api.alphaadmins.net.zooplus.de": "lb1.affex.org",
+  "api.apidocs-repo.net.zooplus.de": "lb1.affex.org",
+  "api.beta.login.net.zooplus.de": "lb1.affex.org",
+  "api.chd.repo.net.zooplus.de": "lb1.affex.org",
+  "api.client-admins.net.zooplus.de": "lb1.affex.org",
+  "api.cloudfront.admins.net.zooplus.de": "lb1.affex.org",
+  "api.cloudfront.net.zooplus.de": "lb1.affex.org",
+  "api.container.net.zooplus.de": "lb1.affex.org",
+  "api.ctl.api.net.zooplus.de": "lb1.affex.org",
+  "api.developdisabled.net.zooplus.de": "lb1.affex.org",
+  "api.disabled.controller.net.zooplus.de": "lb1.affex.org",
+  "api.disabled.mail.net.zooplus.de": "lb1.affex.org",
+  "api.disabled.paywall.net.zooplus.de": "lb1.affex.org",
+  "api.docsdrop.login.net.zooplus.de": "lb1.affex.org",
+  "api.ebspriv.net.zooplus.de": "lb1.affex.org",
+  "api.europewest-disabled.net.zooplus.de": "lb1.affex.org",
+  "api.firewall.disabled.net.zooplus.de": "lb1.affex.org",
+  "api.getter-priv.net.zooplus.de": "lb1.affex.org",
+  "api.gits.net.zooplus.de": "lb1.affex.org",
+  "api.help.priv.net.zooplus.de": "lb1.affex.org",
+  "api.internal-repo.net.zooplus.de": "lb1.affex.org",
+  "api.login.history.net.zooplus.de": "lb1.affex.org",
+  "api.login.net.zooplus.de": "lb1.affex.org",
+  "api.login.ops.net.zooplus.de": "lb1.affex.org",
+  "api.login.staff.net.zooplus.de": "lb1.affex.org",
+  "api.mail.net.zooplus.de": "lb1.affex.org",
+  "api.market.login.net.zooplus.de": "lb1.affex.org",
+  "api.net.zooplus.de": "lb1.affex.org",
+  "api.old.net.zooplus.de": "lb1.affex.org",
+  "api.partnerrepo.net.zooplus.de": "lb1.affex.org",
+  "api.paymentrepo.net.zooplus.de": "lb1.affex.org",
+  "api.priv.authenticate.net.zooplus.de": "lb1.affex.org",
+  "api.priv.europewest.net.zooplus.de": "lb1.affex.org",
+  "api.priv.firewall.net.zooplus.de": "lb1.affex.org",
+  "api.priv.net.zooplus.de": "lb1.affex.org",
+  "api.repo.net.zooplus.de": "lb1.affex.org",
+  "api.repo.trial.net.zooplus.de": "lb1.affex.org",
+  "api.repository.net.zooplus.de": "lb1.affex.org",
+  "api.resets.net.zooplus.de": "lb1.affex.org",
+  "api.rpcadmins.net.zooplus.de": "lb1.affex.org",
+  "api.server.net.zooplus.de": "lb1.affex.org",
+  "api.skinsrepo.net.zooplus.de": "lb1.affex.org",
+  "api.stafflogin.net.zooplus.de": "lb1.affex.org",
+  "api.staffrepo.net.zooplus.de": "lb1.affex.org",
+  "api.staging-login.net.zooplus.de": "lb1.affex.org",
+  "api.support-login.net.zooplus.de": "lb1.affex.org",
+  "api.tpe-login.net.zooplus.de": "lb1.affex.org",
+  "apidocsr-ln-1.net.daraz.com": "daraz-com.affex.org",
+  "apiserver-mgmt.docker.net.zooplus.de": "lb1.affex.org",
+  "appassets.androidplatform.net.iberostar.com": "lb1.affex.org",
+  "application-spring.net.daraz.com": "daraz-com.affex.org",
+  "application.net.zooplus.de": "lb1.affex.org",
+  "application.r-ht-2.net.daraz.com": "daraz-com.affex.org",
+  "apppartner.net.daraz.com": "daraz-com.affex.org",
+  "apps.data.net.zooplus.de": "lb1.affex.org",
+  "apps.tpe.net.zooplus.de": "lb1.affex.org",
+  "appschef.net.zooplus.de": "lb1.affex.org",
+  "appskube.net.zooplus.de": "lb1.affex.org",
+  "appsmgmt.kubectl.net.zooplus.de": "lb1.affex.org",
+  "appsportal.net.zooplus.de": "lb1.affex.org",
+  "asana.net.zooplus.de": "lb1.affex.org",
+  "asana.r-hx-1.net.daraz.com": "daraz-com.affex.org",
+  "asp.net.daraz.com": "daraz-com.affex.org",
+  "assets-r-dw-1.net.daraz.com": "daraz-com.affex.org",
+  "assets.train-mgmt.net.zooplus.de": "lb1.affex.org",
+  "assetssitory-legacy.net.zooplus.com": "lb1.affex.org",
+  "assetssupport.api.net.zooplus.de": "lb1.affex.org",
+  "assetsyancancook.net.daraz.com": "daraz-com.affex.org",
+  "atid.net.daraz.com": "daraz-com.affex.org",
+  "atlas.r.akipam.com": "lb1.affex.org",
+  "authenticate.localhost.net.daraz.com": "daraz-com.affex.org",
+  "authenticate.net.daraz.com": "daraz-com.affex.org",
+  "authenticationmarketing.net.daraz.com": "daraz-com.affex.org",
+  "authorization.docker.net.zooplus.de": "lb1.affex.org",
+  "authorization.summer.net.daraz.com": "daraz-com.affex.org",
+  "authpartner.net.daraz.com": "daraz-com.affex.org",
+  "autumn.net.daraz.com": "daraz-com.affex.org",
+  "aws.management.tpe.net.zooplus.de": "lb1.affex.org",
+  "aws.net.zooplus.com": "lb1.affex.org",
+  "azure-r-oa-1.net.daraz.com": "daraz-com.affex.org",
+  "azure.keele-nnw-leis-mc-leis.net.daraz.com": "daraz-com.affex.org",
+  "b.admins-ns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "b.admns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "b.chdns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "b.ns.apachevision.net.daraz.com": "daraz-com.affex.org",
+  "b.ns.apacvision.net.daraz.com": "daraz-com.affex.org",
+  "b.ns.cloudfrontemailvision.net.daraz.com": "daraz-com.affex.org",
+  "b.ns.emailvision.ebs.net.daraz.com": "daraz-com.affex.org",
+  "b.ns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "b.ns.login.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "backend-management.ids.net.zooplus.de": "lb1.affex.org",
+  "backend-management.net.zooplus.de": "lb1.affex.org",
+  "backendmgmt.net.zooplus.de": "lb1.affex.org",
+  "backendr-oa-2.net.daraz.com": "daraz-com.affex.org",
+  "barcelo.ingenioustech.biz": "lb1.affex.org",
+  "be.net.daraz.com": "daraz-com.affex.org",
+  "berndpulchmedotcom-merchant.net.daraz.com": "daraz-com.affex.org",
+  "beta-aws.net.daraz.com": "daraz-com.affex.org",
+  "beta.stg.mgmt.net.zooplus.de": "lb1.affex.org",
+  "betasupport.api.net.zooplus.de": "lb1.affex.org",
+  "betawww.partner.net.daraz.com": "daraz-com.affex.org",
+  "billing.train-mgmt.net.zooplus.de": "lb1.affex.org",
+  "billingapi.login.net.zooplus.de": "lb1.affex.org",
+  "billingr-is-1-2.net.daraz.com": "daraz-com.affex.org",
+  "bitbucketmarketing.net.daraz.com": "daraz-com.affex.org",
+  "bitchop.net.daraz.com": "daraz-com.affex.org",
+  "bucket.api.net.zooplus.de": "lb1.affex.org",
+  "bucketfreya.net.daraz.com": "daraz-com.affex.org",
+  "bucketns3.cl.bellsouth.net.daraz.com": "daraz-com.affex.org",
+  "c.ns.account-emailvision.net.daraz.com": "daraz-com.affex.org",
+  "c.ns.admemailvision.net.daraz.com": "daraz-com.affex.org",
+  "c.ns.authenticatevision.net.daraz.com": "daraz-com.affex.org",
+  "c.ns.documentationemailvision.net.daraz.com": "daraz-com.affex.org",
+  "c.ns.eclientvision.net.daraz.com": "daraz-com.affex.org",
+  "c.ns.edisabledvision.net.daraz.com": "daraz-com.affex.org",
+  "c.ns.emailvision.net.zooplus.de": "lb1.affex.org",
+  "c.ns.eoriginvision.net.daraz.com": "daraz-com.affex.org",
+  "c.ns.kubectlvision.net.daraz.com": "daraz-com.affex.org",
+  "captchaclub.net.daraz.com": "daraz-com.affex.org",
+  "car10.jenkins.net.daraz.com": "daraz-com.affex.org",
+  "car10.net.daraz.com": "daraz-com.affex.org",
+  "car13.cdn.net.daraz.com": "daraz-com.affex.org",
+  "car13.confluence.net.daraz.com": "daraz-com.affex.org",
+  "car13.net.daraz.com": "daraz-com.affex.org",
+  "car21.net.daraz.com": "daraz-com.affex.org",
+  "car21.net.zooplus.de": "lb1.affex.org",
+  "car21.net.zooplus.fr": "lb1.affex.org",
+  "car31.ctl.net.daraz.com": "daraz-com.affex.org",
+  "car40.net.zooplus.es": "lb1.affex.org",
+  "cc-generator.net.daraz.com": "daraz-com.affex.org",
+  "ccgenerator.net.daraz.com": "daraz-com.affex.org",
+  "cdn.cs-utils-rtr.net.daraz.com": "daraz-com.affex.org",
+  "cdn.net.elogia.net": "lb1.affex.org",
+  "cdnappsmgmt.net.zooplus.de": "lb1.affex.org",
+  "cdnmgmt.net.zooplus.de": "lb1.affex.org",
+  "cec-formation.net.daraz.com": "daraz-com.affex.org",
+  "cgi.tpe.net.zooplus.de": "lb1.affex.org",
+  "chd.api.net.zooplus.de": "lb1.affex.org",
+  "chd.net.daraz.com": "daraz-com.affex.org",
+  "chimcanhviet.net.daraz.com": "daraz-com.affex.org",
+  "ci.net.zooplus.de": "lb1.affex.org",
+  "ciadmindata.net.zooplus.de": "lb1.affex.org",
+  "cisco-capwap-controller.net.daraz.com": "daraz-com.affex.org",
+  "clark.efscle.com": "lb1.affex.org",
+  "client.r-ht-1.net.daraz.com": "daraz-com.affex.org",
+  "cloud-data.net.zooplus.de": "lb1.affex.org",
+  "cloudapp.mgmt.documents.net.zooplus.de": "lb1.affex.org",
+  "cloudsummer.net.daraz.com": "daraz-com.affex.org",
+  "cms-lib-ht-2.net.daraz.com": "daraz-com.affex.org",
+  "cms.s3.legacy.net.zooplus.com": "lb1.affex.org",
+  "cmsing.net.daraz.com": "daraz-com.affex.org",
+  "cnpatner.net.daraz.com": "daraz-com.affex.org",
+  "cointoon.net.daraz.com": "daraz-com.affex.org",
+  "conbert2mp3.net.daraz.com": "daraz-com.affex.org",
+  "confluencepatner.net.daraz.com": "daraz-com.affex.org",
+  "container-csr31.net.daraz.com": "daraz-com.affex.org",
+  "container.management.tpe.net.zooplus.de": "lb1.affex.org",
+  "controller-patner.net.daraz.com": "daraz-com.affex.org",
+  "controller.winter.net.daraz.com": "daraz-com.affex.org",
+  "controlmgmt.docker.net.zooplus.de": "lb1.affex.org",
+  "controlsupport.api.net.zooplus.de": "lb1.affex.org",
+  "cryptotax.efscle.com": "lb1.affex.org",
+  "cs-utils-rtr.edge.net.daraz.com": "daraz-com.affex.org",
+  "cs-utils-rtr.net.daraz.com": "daraz-com.affex.org",
+  "csprod-staff.net.daraz.com": "daraz-com.affex.org",
+  "csr11.ingress.net.daraz.com": "daraz-com.affex.org",
+  "csr11.net.daraz.com": "daraz-com.affex.org",
+  "csr11.net.home24.de": "lb1.affex.org",
+  "csr11.net.zooplus.de": "lb1.affex.org",
+  "csr12.kube.net.daraz.com": "daraz-com.affex.org",
+  "csr12.net.home24.de": "lb1.affex.org",
+  "csr12.net.zooplus.de": "lb1.affex.org",
+  "csr12.net.zooplus.it": "lb1.affex.org",
+  "csr12.svcgateway.net.daraz.com": "daraz-com.affex.org",
+  "csr21.net.daraz.com": "daraz-com.affex.org",
+  "csr21.net.home24.de": "lb1.affex.org",
+  "csr31.net.home24.de": "lb1.affex.org",
+  "csr31.v2.net.daraz.com": "daraz-com.affex.org",
+  "csr41.docs.net.daraz.com": "daraz-com.affex.org",
+  "csr41.net.home24.de": "lb1.affex.org",
+  "csr41.net.zooplus.com": "lb1.affex.org",
+  "csr41.northamerica.net.daraz.com": "daraz-com.affex.org",
+  "ctl-ns2.viviotech.net.daraz.com": "daraz-com.affex.org",
+  "ctl.api.bucket.net.zooplus.de": "lb1.affex.org",
+  "ctl.api.net.zooplus.de": "lb1.affex.org",
+  "ctl.api.node.net.zooplus.de": "lb1.affex.org",
+  "ctl.api.proxy.net.zooplus.de": "lb1.affex.org",
+  "ctl.cloudapi.net.zooplus.de": "lb1.affex.org",
+  "ctl.org.net.zooplus.de": "lb1.affex.org",
+  "ctl.static-api.net.zooplus.de": "lb1.affex.org",
+  "cvs-car10.net.daraz.com": "daraz-com.affex.org",
+  "cvs-ctl.api.net.zooplus.de": "lb1.affex.org",
+  "d.corpns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "d.gatewayns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "d.ns.eadminvision.net.daraz.com": "daraz-com.affex.org",
+  "d.ns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "d.ns.emailvision.net.zooplus.com": "lb1.affex.org",
+  "d.ns.emailvision.net.zooplus.es": "lb1.affex.org",
+  "d.ns.emailvision.net.zooplus.it": "lb1.affex.org",
+  "d.ns.enorthamericavision.net.daraz.com": "daraz-com.affex.org",
+  "d.ns.k8s-devvision.net.daraz.com": "daraz-com.affex.org",
+  "d.ns.region-emailvision.net.daraz.com": "daraz-com.affex.org",
+  "d.securityns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "d.sslns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "damxx.net.daraz.com": "daraz-com.affex.org",
+  "data.assetsdocker.net.zooplus.de": "lb1.affex.org",
+  "data.bitbucketorg.net.zooplus.de": "lb1.affex.org",
+  "data.chd-docker.net.zooplus.de": "lb1.affex.org",
+  "data.cloud.org.net.zooplus.de": "lb1.affex.org",
+  "data.docker.pay.net.zooplus.de": "lb1.affex.org",
+  "data.engorg.net.zooplus.de": "lb1.affex.org",
+  "data.marketorg.net.zooplus.de": "lb1.affex.org",
+  "data.mobile.net.zooplus.de": "lb1.affex.org",
+  "data.mobiledocker.net.zooplus.de": "lb1.affex.org",
+  "data.netdocker.net.zooplus.de": "lb1.affex.org",
+  "data.org.bitbucket.net.zooplus.de": "lb1.affex.org",
+  "data.pass.net.zooplus.de": "lb1.affex.org",
+  "data.secorg.net.zooplus.de": "lb1.affex.org",
+  "datar-es-1.net.daraz.com": "daraz-com.affex.org",
+  "ddmix.net.daraz.com": "daraz-com.affex.org",
+  "decimo.product.fidormarket.com": "lb1.affex.org",
+  "dev-r-dw-1.net.daraz.com": "daraz-com.affex.org",
+  "developer.api.net.zooplus.de": "lb1.affex.org",
+  "developer.mgmt.documents.net.zooplus.de": "lb1.affex.org",
+  "developing.net.daraz.com": "daraz-com.affex.org",
+  "development-www.applications.net.daraz.com": "daraz-com.affex.org",
+  "developmentcar21.net.daraz.com": "daraz-com.affex.org",
+  "developmentdata.net.zooplus.de": "lb1.affex.org",
+  "devops-r-oa-1.net.daraz.com": "daraz-com.affex.org",
+  "devs-admindata.net.zooplus.de": "lb1.affex.org",
+  "devstagingmgmt.net.zooplus.de": "lb1.affex.org",
+  "digitalvoice.net.daraz.com": "daraz-com.affex.org",
+  "disabled.a.ns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "disabled.net.daraz.com": "daraz-com.affex.org",
+  "disabledapac.net.zooplus.de": "lb1.affex.org",
+  "disabledauthorization.net.zooplus.de": "lb1.affex.org",
+  "disableddata.net.zooplus.de": "lb1.affex.org",
+  "dm.dmp.net.daraz.com": "daraz-com.affex.org",
+  "dns1.freshegg.client.net.daraz.com": "daraz-com.affex.org",
+  "dns1.freshegg.net.daraz.com": "daraz-com.affex.org",
+  "dns1.freshegg.net.zooplus.fr": "lb1.affex.org",
+  "dns1.freshegg.production.net.daraz.com": "daraz-com.affex.org",
+  "dns1.lab-freshegg.net.daraz.com": "daraz-com.affex.org",
+  "dns1.pass.freshegg.net.daraz.com": "daraz-com.affex.org",
+  "dockerapi.paywall.net.zooplus.de": "lb1.affex.org",
+  "docsapiing.net.daraz.com": "daraz-com.affex.org",
+  "docscsr21.net.daraz.com": "daraz-com.affex.org",
+  "docsdrop.c.ns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "documentation-ns2.cl.bellsouth.net.daraz.com": "daraz-com.affex.org",
+  "documentation.cisco-capwap-controller.net.daraz.com": "daraz-com.affex.org",
+  "documentcar10.net.daraz.com": "daraz-com.affex.org",
+  "documents-ns2.twtelecom.net.daraz.com": "daraz-com.affex.org",
+  "documents-train-mgmt.net.zooplus.de": "lb1.affex.org",
+  "documents.ns2.viviotech.net.daraz.com": "daraz-com.affex.org",
+  "dogfood-www.net.daraz.com": "daraz-com.affex.org",
+  "doitruy.net.daraz.com": "daraz-com.affex.org",
+  "drzliveing.net.daraz.com": "daraz-com.affex.org",
+  "eastprint-mo.net.daraz.com": "daraz-com.affex.org",
+  "ebs.api.admins.net.zooplus.de": "lb1.affex.org",
+  "ebs.mgmt.docker.net.zooplus.de": "lb1.affex.org",
+  "edge-keele-nnw-leis-mc-leis.net.daraz.com": "daraz-com.affex.org",
+  "edge.api.repo.net.zooplus.de": "lb1.affex.org",
+  "edge.legacy.net.zooplus.com": "lb1.affex.org",
+  "edgecar40.net.daraz.com": "daraz-com.affex.org",
+  "elastic-api.login.net.zooplus.de": "lb1.affex.org",
+  "elastic-lib-oa-1.net.daraz.com": "daraz-com.affex.org",
+  "elasticbeanstalk-appsmgmt.net.zooplus.de": "lb1.affex.org",
+  "electraltd.net.daraz.com": "daraz-com.affex.org",
+  "email.localhost.net.daraz.com": "daraz-com.affex.org",
+  "emailcsr41.net.daraz.com": "daraz-com.affex.org",
+  "eng-api.priv.net.zooplus.de": "lb1.affex.org",
+  "eng.train-mgmt.net.zooplus.de": "lb1.affex.org",
+  "engine-marketing.net.daraz.com": "daraz-com.affex.org",
+  "engine-repository-legacy.net.zooplus.com": "lb1.affex.org",
+  "engineering.autumn.net.daraz.com": "daraz-com.affex.org",
+  "enginer-is-1-2.net.daraz.com": "daraz-com.affex.org",
+  "esattamatka.net.daraz.com": "daraz-com.affex.org",
+  "esportesdasorte.net.daraz.com": "daraz-com.affex.org",
+  "europe.r-es-1.net.daraz.com": "daraz-com.affex.org",
+  "europeing.net.daraz.com": "daraz-com.affex.org",
+  "europewest.data.org.net.zooplus.de": "lb1.affex.org",
+  "europewestc.ns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "ext-cisco-capwap-controller.net.daraz.com": "daraz-com.affex.org",
+  "filea.ns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "firewall.proxy.net.zooplus.com": "lb1.affex.org",
+  "fiscal-it.net.daraz.com": "daraz-com.affex.org",
+  "fota-cloud-dn.ospserver.net.iberostar.com": "lb1.affex.org",
+  "freya.admin.net.daraz.com": "daraz-com.affex.org",
+  "freya.mail.net.daraz.com": "daraz-com.affex.org",
+  "frontpageing.net.daraz.com": "daraz-com.affex.org",
+  "fw.docker.net.zooplus.de": "lb1.affex.org",
+  "g.whatsapp.net.iberostar.com": "lb1.affex.org",
+  "getter-www.applications.net.daraz.com": "daraz-com.affex.org",
+  "getter.ns3.cl.bellsouth.net.daraz.com": "daraz-com.affex.org",
+  "gfxtra.net.daraz.com": "daraz-com.affex.org",
+  "gh.management.net.zooplus.de": "lb1.affex.org",
+  "ghcpimanagement.ids.net.zooplus.de": "lb1.affex.org",
+  "ghcpimarketing.net.daraz.com": "daraz-com.affex.org",
+  "git-admindata.net.zooplus.de": "lb1.affex.org",
+  "gitapachement.net.zooplus.de": "lb1.affex.org",
+  "github.csr12.net.daraz.com": "daraz-com.affex.org",
+  "githubappsmgmt.net.zooplus.de": "lb1.affex.org",
+  "githubns2.cl.bellsouth.net.daraz.com": "daraz-com.affex.org",
+  "gitlab.spring.net.daraz.com": "daraz-com.affex.org",
+  "gitmanagement.api.net.zooplus.de": "lb1.affex.org",
+  "gitmanagement.azure.net.zooplus.de": "lb1.affex.org",
+  "gitmanagement.market.net.zooplus.de": "lb1.affex.org",
+  "gitteamment.net.zooplus.de": "lb1.affex.org",
+  "globaldata.net.zooplus.de": "lb1.affex.org",
+  "globaldisableddata.net.zooplus.de": "lb1.affex.org",
+  "googleads.g.doubleclick.net.iberostar.com": "lb1.affex.org",
+  "gw.panel.net.zooplus.de": "lb1.affex.org",
+  "gw.wlan-switch.net.daraz.com": "daraz-com.affex.org",
+  "gwdata.net.zooplus.de": "lb1.affex.org",
+  "hasani.net.daraz.com": "daraz-com.affex.org",
+  "help.admindata.net.zooplus.de": "lb1.affex.org",
+  "helpment.ids.net.zooplus.de": "lb1.affex.org",
+  "historymgmt.net.zooplus.de": "lb1.affex.org",
+  "hw.d.ns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "hwcdn.dockerapi.net.zooplus.de": "lb1.affex.org",
+  "hwcdnyancancook.net.daraz.com": "daraz-com.affex.org",
+  "iad.docker.net.zooplus.de": "lb1.affex.org",
+  "idm.net.daraz.com": "daraz-com.affex.org",
+  "ids.ns2.twtelecom.net.daraz.com": "daraz-com.affex.org",
+  "ids.r-oa-1.net.daraz.com": "daraz-com.affex.org",
+  "ighack.net.daraz.com": "daraz-com.affex.org",
+  "image.net.daraz.com": "daraz-com.affex.org",
+  "images.net.zooplus.com": "lb1.affex.org",
+  "img.service.belboon.com": "lb1.affex.org",
+  "infotaku.net.daraz.com": "daraz-com.affex.org",
+  "ingress.net.zooplus.de": "lb1.affex.org",
+  "ingressstg.mgmt.net.zooplus.de": "lb1.affex.org",
+  "ingresswlan-switch.net.daraz.com": "daraz-com.affex.org",
+  "intd.ns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "intel.net.daraz.com": "daraz-com.affex.org",
+  "internal-dns1.freshegg.net.daraz.com": "daraz-com.affex.org",
+  "internal-freya.net.daraz.com": "daraz-com.affex.org",
+  "internal-stagingmgmt.net.zooplus.de": "lb1.affex.org",
+  "internalmgmt.net.zooplus.de": "lb1.affex.org",
+  "internals.csr41.net.daraz.com": "daraz-com.affex.org",
+  "ipv4-c006-mid001-telmex-isp.1.oca.nflxvideo.net.iberostar.com": "lb1.affex.org",
+  "ipv4-c008-mid001-telmex-isp.1.oca.nflxvideo.net.iberostar.com": "lb1.affex.org",
+  "ironsrc.net.daraz.com": "daraz-com.affex.org",
+  "jamonagoldensilk.net.daraz.com": "daraz-com.affex.org",
+  "janus.r.jakuli.com": "lb1.affex.org",
+  "javhihi.net.daraz.com": "daraz-com.affex.org",
+  "javsex.net.daraz.com": "daraz-com.affex.org",
+  "jenkins.api.net.zooplus.de": "lb1.affex.org",
+  "k8s-api.disabled.net.zooplus.de": "lb1.affex.org",
+  "k8s-dev.keele-nnw-leis-mc-leis.net.daraz.com": "daraz-com.affex.org",
+  "k8s-prd.ns2.viviotech.net.daraz.com": "daraz-com.affex.org",
+  "k8s-prd.r-ht-1.net.daraz.com": "daraz-com.affex.org",
+  "k8s-prod-appsmgmt.net.zooplus.de": "lb1.affex.org",
+  "kannadamasti.net.daraz.com": "daraz-com.affex.org",
+  "kawa.net.daraz.com": "daraz-com.affex.org",
+  "kkz.net.krankenkassenzentrale.de": "lb1.affex.org",
+  "koreamarketing.net.daraz.com": "daraz-com.affex.org",
+  "kube.csr12.net.daraz.com": "daraz-com.affex.org",
+  "kubectl-nfreya.net.daraz.com": "daraz-com.affex.org",
+  "kubectldata.net.zooplus.de": "lb1.affex.org",
+  "kubernetesprint-mo.net.daraz.com": "daraz-com.affex.org",
+  "kubernetesr-oa-2.net.daraz.com": "daraz-com.affex.org",
+  "lab.mgmt.docker.net.zooplus.de": "lb1.affex.org",
+  "latin.net.zooplus.com": "lb1.affex.org",
+  "lax-mgmt.docker.net.zooplus.de": "lb1.affex.org",
+  "lax-mgmt.internals.net.zooplus.de": "lb1.affex.org",
+  "lax-mgmt.net.zooplus.de": "lb1.affex.org",
+  "lax-mgmt.ops.net.zooplus.de": "lb1.affex.org",
+  "lax-patner.net.daraz.com": "daraz-com.affex.org",
+  "lax-v1.net.zooplus.de": "lb1.affex.org",
+  "laxns2.cl.bellsouth.net.daraz.com": "daraz-com.affex.org",
+  "lb.tpe.net.zooplus.de": "lb1.affex.org",
+  "legacy.data.docker.net.zooplus.de": "lb1.affex.org",
+  "legacy.gitmanagement.net.zooplus.de": "lb1.affex.org",
+  "legacy.loadbalancer.net.zooplus.com": "lb1.affex.org",
+  "legacy.net.daraz.com": "daraz-com.affex.org",
+  "legacy.page.net.zooplus.com": "lb1.affex.org",
+  "lib-ht-1.developer.net.daraz.com": "daraz-com.affex.org",
+  "lib-ht-2.preview.net.daraz.com": "daraz-com.affex.org",
+  "lib-ln-2.net.daraz.com": "daraz-com.affex.org",
+  "lib-oa-1.history.net.daraz.com": "daraz-com.affex.org",
+  "lib-oa-1.net.daraz.com": "daraz-com.affex.org",
+  "lib-oa-2.net.daraz.com": "daraz-com.affex.org",
+  "loadbalancer-r-ht-2.net.daraz.com": "daraz-com.affex.org",
+  "loadbalancer.data.docker.net.zooplus.de": "lb1.affex.org",
+  "loadbalancer.lib-ht-1.net.daraz.com": "daraz-com.affex.org",
+  "login-dev.net.zooplus.de": "lb1.affex.org",
+  "login-marketing.net.daraz.com": "daraz-com.affex.org",
+  "login-spring.net.daraz.com": "daraz-com.affex.org",
+  "login.net.daraz.com": "daraz-com.affex.org",
+  "login.net.zooplus.com": "lb1.affex.org",
+  "logindata.net.zooplus.de": "lb1.affex.org",
+  "luna.r.lafamo.com": "lb1.affex.org",
+  "machine-data.docker.net.zooplus.de": "lb1.affex.org",
+  "machinedata.org.net.zooplus.de": "lb1.affex.org",
+  "mail.net.zooplus.fr": "lb1.affex.org",
+  "mail.net.zooplus.it": "lb1.affex.org",
+  "mail10.ingenious.cloud": "lb1.affex.org",
+  "mail4.ingenious.cloud": "lb1.affex.org",
+  "mail8.ingenious.cloud": "lb1.affex.org",
+  "mailapi.disabled.net.zooplus.de": "lb1.affex.org",
+  "mailx.ingenious.cloud": "lb1.affex.org",
+  "manage.mgmt.docker.net.zooplus.de": "lb1.affex.org",
+  "management.admins-tpe.net.zooplus.de": "lb1.affex.org",
+  "management.apache.ids.net.zooplus.de": "lb1.affex.org",
+  "management.cert.ids.net.zooplus.de": "lb1.affex.org",
+  "management.customer-ids.net.zooplus.de": "lb1.affex.org",
+  "management.git.tpe.net.zooplus.de": "lb1.affex.org",
+  "management.ids.market.net.zooplus.de": "lb1.affex.org",
+  "management.ids.webapp.net.zooplus.de": "lb1.affex.org",
+  "management.manage-ids.net.zooplus.de": "lb1.affex.org",
+  "management.resetids.net.zooplus.de": "lb1.affex.org",
+  "management.rpcids.net.zooplus.de": "lb1.affex.org",
+  "managementdata.docker.net.zooplus.de": "lb1.affex.org",
+  "marketing-a.ns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "marketing-apiserver.net.daraz.com": "daraz-com.affex.org",
+  "marketing-cloudfront.net.daraz.com": "daraz-com.affex.org",
+  "marketing-cvs.net.daraz.com": "daraz-com.affex.org",
+  "marketing-euwe.net.daraz.com": "daraz-com.affex.org",
+  "marketing-k8s.net.daraz.com": "daraz-com.affex.org",
+  "marketing-mgmt.docker.net.zooplus.de": "lb1.affex.org",
+  "marketing-mta.net.daraz.com": "daraz-com.affex.org",
+  "marketing-ns2.twtelecom.net.daraz.com": "daraz-com.affex.org",
+  "marketing-r-es-1.net.daraz.com": "daraz-com.affex.org",
+  "marketing.affiliate.logitravel.com": "lb1.affex.org",
+  "marketing.chd.net.daraz.com": "daraz-com.affex.org",
+  "marketing.disableddata.net.zooplus.de": "lb1.affex.org",
+  "marketing.ingenious.cloud": "lb1.affex.org",
+  "marketing.net.24-ads.com": "lb1.affex.org",
+  "marketing.net.brillen.at": "lb1.affex.org",
+  "marketing.net.brillen.com": "lb1.affex.org",
+  "marketing.net.brillen.de": "lb1.affex.org",
+  "marketing.net.brillen.pl": "lb1.affex.org",
+  "marketing.net.daraz.com": "lb1.affex.org",
+  "marketing.net.daraz.com.bd": "lb1.affex.org",
+  "marketing.net.daraz.lk": "lb1.affex.org",
+  "marketing.net.daraz.pk": "lb1.affex.org",
+  "marketing.net.dinlokaleoptiker.dk": "lb1.affex.org",
+  "marketing.net.elogia.net": "lb1.affex.org",
+  "marketing.net.fidor.de": "lb1.affex.org",
+  "marketing.net.gafas.es": "lb1.affex.org",
+  "marketing.net.home24.at": "lb1.affex.org",
+  "marketing.net.home24.be": "lb1.affex.org",
+  "marketing.net.home24.ch": "lb1.affex.org",
+  "marketing.net.home24.de": "lb1.affex.org",
+  "marketing.net.home24.fr": "lb1.affex.org",
+  "marketing.net.home24.it": "lb1.affex.org",
+  "marketing.net.home24.nl": "lb1.affex.org",
+  "marketing.net.idealo-partner.com": "lb1.affex.org",
+  "marketing.net.jumia.ci": "lb1.affex.org",
+  "marketing.net.jumia.co.ke": "lb1.affex.org",
+  "marketing.net.jumia.com.eg": "lb1.affex.org",
+  "marketing.net.jumia.com.gh": "lb1.affex.org",
+  "marketing.net.jumia.com.ng": "lb1.affex.org",
+  "marketing.net.jumia.ma": "lb1.affex.org",
+  "marketing.net.monedo.es": "lb1.affex.org",
+  "marketing.net.monedo.pl": "lb1.affex.org",
+  "marketing.net.occhiali24.it": "lb1.affex.org",
+  "marketing.net.ocm.de": "lb1.affex.org",
+  "marketing.net.specsfactory.co.uk": "lb1.affex.org",
+  "marketing.net.voopter.com.br": "lb1.affex.org",
+  "marketing.net.vsgamers.es": "lb1.affex.org",
+  "marketing.net.wink.es": "lb1.affex.org",
+  "marketing.net.x24factory.com": "lb1.affex.org",
+  "marketing.net.yubyyu.com": "lb1.affex.org",
+  "marketing.net.zooplus.de": "lb1.affex.org",
+  "marketing.net.zooplus.es": "lb1.affex.org",
+  "marketing.net.zooplus.fr": "lb1.affex.org",
+  "marketing.net.zooplus.it": "lb1.affex.org",
+  "marketing.net.zooplus.nl": "lb1.affex.org",
+  "marketing.net.zooroyal.at": "lb1.affex.org",
+  "marketing.net.zooroyal.cz": "lb1.affex.org",
+  "marketing.net.zooroyal.de": "lb1.affex.org",
+  "marketing.r.niwepa.com": "lb1.affex.org",
+  "marketing.seller-shop.net.daraz.com": "daraz-com.affex.org",
+  "marketing.tr.netsalesmedia.pl": "lb1.affex.org",
+  "marketingbucket.net.daraz.com": "daraz-com.affex.org",
+  "marketingfile.net.daraz.com": "daraz-com.affex.org",
+  "marketinggit.net.daraz.com": "daraz-com.affex.org",
+  "marketingnfreya.net.daraz.com": "daraz-com.affex.org",
+  "marketingopen.net.daraz.com": "daraz-com.affex.org",
+  "marketingpre-xspace.net.daraz.com": "daraz-com.affex.org",
+  "marketingtomcat.net.daraz.com": "daraz-com.affex.org",
+  "mastaram.net.daraz.com": "daraz-com.affex.org",
+  "mathieurenard.net.daraz.com": "daraz-com.affex.org",
+  "matrix.net.daraz.com": "daraz-com.affex.org",
+  "media.affiliate.logitravel.com": "lb1.affex.org",
+  "metricsstagingmgmt.net.zooplus.de": "lb1.affex.org",
+  "metro.net.daraz.com": "daraz-com.affex.org",
+  "mgmt.2docker.net.zooplus.de": "lb1.affex.org",
+  "mgmt.administrators.net.zooplus.de": "lb1.affex.org",
+  "mgmt.asana.net.zooplus.de": "lb1.affex.org",
+  "mgmt.confluences.net.zooplus.de": "lb1.affex.org",
+  "mgmt.developer.docker.net.zooplus.de": "lb1.affex.org",
+  "mgmt.docker.k8s-prod.net.zooplus.de": "lb1.affex.org",
+  "mgmt.docker.mail.net.zooplus.de": "lb1.affex.org",
+  "mgmt.docker.nginx.net.zooplus.de": "lb1.affex.org",
+  "mgmt.docker.region.net.zooplus.de": "lb1.affex.org",
+  "mgmt.docker.rpc.net.zooplus.de": "lb1.affex.org",
+  "mgmt.docs.documents.net.zooplus.de": "lb1.affex.org",
+  "mgmt.document.documents.net.zooplus.de": "lb1.affex.org",
+  "mgmt.east.docker.net.zooplus.de": "lb1.affex.org",
+  "mgmt.eventss.net.zooplus.de": "lb1.affex.org",
+  "mgmt.k8s.net.zooplus.de": "lb1.affex.org",
+  "mgmt.lax-docker.net.zooplus.de": "lb1.affex.org",
+  "mgmt.mobileclientdocuments.net.zooplus.de": "lb1.affex.org",
+  "mgmt.net.zooplus.de": "lb1.affex.org",
+  "mgmt.panel.documents.net.zooplus.de": "lb1.affex.org",
+  "mgmt.pass-docker.net.zooplus.de": "lb1.affex.org",
+  "mgmt.svc.net.zooplus.de": "lb1.affex.org",
+  "mgmt.swag.docker.net.zooplus.de": "lb1.affex.org",
+  "mirror-marketing.net.daraz.com": "daraz-com.affex.org",
+  "mobile-www.net.daraz.com": "daraz-com.affex.org",
+  "mobile.yancancook.net.daraz.com": "daraz-com.affex.org",
+  "mobileclient-api.disabled.net.zooplus.de": "lb1.affex.org",
+  "moviemp4hd.net.daraz.com": "daraz-com.affex.org",
+  "moviesraja.net.daraz.com": "daraz-com.affex.org",
+  "moziing.net.daraz.com": "daraz-com.affex.org",
+  "mp4mobilemovies.net.daraz.com": "daraz-com.affex.org",
+  "ms1.ingenious.cloud": "lb1.affex.org",
+  "msgx-space.net.daraz.com": "daraz-com.affex.org",
+  "mx0.ingenious.cloud": "lb1.affex.org",
+  "mybooster.net.daraz.com": "daraz-com.affex.org",
+  "mycoolmoviez.net.daraz.com": "daraz-com.affex.org",
+  "mypension.efscle.com": "lb1.affex.org",
+  "naruspot.net.daraz.com": "daraz-com.affex.org",
+  "nautilus-car21.net.daraz.com": "daraz-com.affex.org",
+  "nautilus-www.applications.net.daraz.com": "daraz-com.affex.org",
+  "nautilus.docker.net.zooplus.de": "lb1.affex.org",
+  "nautilusallseason.net.daraz.com": "daraz-com.affex.org",
+  "neohost01.net.daraz.com": "daraz-com.affex.org",
+  "neso.r.niwepa.com": "lb1.affex.org",
+  "net-csr31.net.daraz.com": "daraz-com.affex.org",
+  "net.anwalt.de": "lb1.affex.org",
+  "net.carrefour.es": "lb1.affex.org",
+  "net.daraz.com": "daraz-com.affex.org",
+  "net.daraz.com.bd": "lb1.affex.org",
+  "net.idealo-partner.com": "lb1.affex.org",
+  "net.jumia.ci": "lb1.affex.org",
+  "net.jumia.com.eg": "lb1.affex.org",
+  "net.penny.de": "lb1.affex.org",
+  "net.toom.de": "lb1.affex.org",
+  "net.x24factory.com": "lb1.affex.org",
+  "net.zooplus.com": "lb1.affex.org",
+  "net.zooplus.de": "lb1.affex.org",
+  "net.zooplus.fr": "lb1.affex.org",
+  "net.zooplus.nl": "lb1.affex.org",
+  "netbotz.net.daraz.com": "daraz-com.affex.org",
+  "netns2.twtelecom.net.daraz.com": "daraz-com.affex.org",
+  "news.net.daraz.com": "daraz-com.affex.org",
+  "nginx-marketing.net.daraz.com": "daraz-com.affex.org",
+  "nginx.disabled.net.zooplus.de": "lb1.affex.org",
+  "nginx.r-dw-1.net.daraz.com": "daraz-com.affex.org",
+  "nl-www.partner.net.daraz.com": "daraz-com.affex.org",
+  "node-marketing.net.daraz.com": "daraz-com.affex.org",
+  "node.stg.mgmt.net.zooplus.de": "lb1.affex.org",
+  "node.winter.net.daraz.com": "daraz-com.affex.org",
+  "north-m3-masterbu.net.daraz.com": "daraz-com.affex.org",
+  "northamerica.api.v1.net.zooplus.de": "lb1.affex.org",
+  "northamerica.dockerapi.net.zooplus.de": "lb1.affex.org",
+  "northamerica.latinapi.net.zooplus.de": "lb1.affex.org",
+  "northamerica.preview.api.net.zooplus.de": "lb1.affex.org",
+  "northamerica.spring.net.daraz.com": "daraz-com.affex.org",
+  "northamericapatner.net.daraz.com": "daraz-com.affex.org",
+  "northamericar-ch-1.net.daraz.com": "daraz-com.affex.org",
+  "ns.labemailvision.net.daraz.com": "daraz-com.affex.org",
+  "ns1.cloudfront.twtelecom.net.daraz.com": "daraz-com.affex.org",
+  "ns1.firewall-twtelecom.net.daraz.com": "daraz-com.affex.org",
+  "ns1.skinsviviotech.net.daraz.com": "daraz-com.affex.org",
+  "ns1.twtelecom.corp.net.daraz.com": "daraz-com.affex.org",
+  "ns1.twtelecom.vpn.net.daraz.com": "daraz-com.affex.org",
+  "ns1.viviotech.net.daraz.com": "daraz-com.affex.org",
+  "ns1.viviotech.net.zooplus.com": "lb1.affex.org",
+  "ns1.viviotech.net.zooplus.es": "lb1.affex.org",
+  "ns2.apac-twtelecom.net.daraz.com": "daraz-com.affex.org",
+  "ns2.app-cl.bellsouth.net.daraz.com": "daraz-com.affex.org",
+  "ns2.cl.bellsouth.net.zooplus.com": "lb1.affex.org",
+  "ns2.cl.bellsouth.northamerica.net.daraz.com": "daraz-com.affex.org",
+  "ns2.cl.devopsbellsouth.net.daraz.com": "daraz-com.affex.org",
+  "ns2.cl.marketing-bellsouth.net.daraz.com": "daraz-com.affex.org",
+  "ns2.cl.nginx.bellsouth.net.daraz.com": "daraz-com.affex.org",
+  "ns2.developmenttwtelecom.net.daraz.com": "daraz-com.affex.org",
+  "ns2.preview.cl.bellsouth.net.daraz.com": "daraz-com.affex.org",
+  "ns2.proxy-viviotech.net.daraz.com": "daraz-com.affex.org",
+  "ns2.twtelecom.azure.net.daraz.com": "daraz-com.affex.org",
+  "ns2.twtelecom.net.daraz.com": "daraz-com.affex.org",
+  "ns2.twtelecom.priv.net.daraz.com": "daraz-com.affex.org",
+  "ns2.viviotech.hwcdn.net.daraz.com": "daraz-com.affex.org",
+  "ns2.viviotech.net.daraz.com": "daraz-com.affex.org",
+  "ns3.cl.bellsouth.administrators.net.daraz.com": "daraz-com.affex.org",
+  "ns3.k8s-cl.bellsouth.net.daraz.com": "daraz-com.affex.org",
+  "ns3.vpn-cl.bellsouth.net.daraz.com": "daraz-com.affex.org",
+  "nsm.tr.netsalesmedia.pl": "lb1.affex.org",
+  "obong.net.daraz.com": "daraz-com.affex.org",
+  "obongnet.net.daraz.com": "daraz-com.affex.org",
+  "occ-0-1590-3934.1.nflxso.net.iberostar.com": "lb1.affex.org",
+  "occ-0-3830-3934.1.nflxso.net.iberostar.com": "lb1.affex.org",
+  "old.documents.net.zooplus.de": "lb1.affex.org",
+  "old.lib-ht-1.net.daraz.com": "daraz-com.affex.org",
+  "old.stagingmgmt.net.zooplus.de": "lb1.affex.org",
+  "oldapi.admins.net.zooplus.de": "lb1.affex.org",
+  "oldapi.login.net.zooplus.de": "lb1.affex.org",
+  "olding.net.daraz.com": "daraz-com.affex.org",
+  "ops-allseason.azure-freya.net.daraz.com": "daraz-com.affex.org",
+  "ops-allseason.net.daraz.com": "daraz-com.affex.org",
+  "ops-b.ns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "org-csr21.net.daraz.com": "daraz-com.affex.org",
+  "org-r-ht-2.net.daraz.com": "daraz-com.affex.org",
+  "orgcar31.net.daraz.com": "daraz-com.affex.org",
+  "origin-s3.legacy.net.zooplus.com": "lb1.affex.org",
+  "originapi.priv.net.zooplus.de": "lb1.affex.org",
+  "ort.net.daraz.com": "daraz-com.affex.org",
+  "owa.net.zooplus.fr": "lb1.affex.org",
+  "owa.net.zooplus.nl": "lb1.affex.org",
+  "page-admindata.net.zooplus.de": "lb1.affex.org",
+  "page-ctl.api.net.zooplus.de": "lb1.affex.org",
+  "panel-lib-ht-1.net.daraz.com": "daraz-com.affex.org",
+  "panel-management.net.zooplus.de": "lb1.affex.org",
+  "panel.billing.net.zooplus.de": "lb1.affex.org",
+  "panel.chef.net.zooplus.de": "lb1.affex.org",
+  "panel.testing.net.zooplus.de": "lb1.affex.org",
+  "panelappsmgmt.net.zooplus.de": "lb1.affex.org",
+  "parmakla.net.daraz.com": "daraz-com.affex.org",
+  "partner-alpha.net.daraz.com": "daraz-com.affex.org",
+  "partner-mgmt.net.zooplus.de": "lb1.affex.org",
+  "partner-payseller.net.daraz.com": "daraz-com.affex.org",
+  "partner-tst.net.daraz.com": "daraz-com.affex.org",
+  "partner-users.net.daraz.com": "daraz-com.affex.org",
+  "partner.net.daraz.com": "daraz-com.affex.org",
+  "partner.s3.legacy.net.zooplus.com": "lb1.affex.org",
+  "partneracc.net.daraz.com": "daraz-com.affex.org",
+  "partnerapi.net.zooplus.de": "lb1.affex.org",
+  "partnereuropewest.net.daraz.com": "daraz-com.affex.org",
+  "partnerlib-oa-2.net.daraz.com": "daraz-com.affex.org",
+  "pass-r-ch-1.net.daraz.com": "daraz-com.affex.org",
+  "pass-www.partner.net.daraz.com": "daraz-com.affex.org",
+  "passapi.net.zooplus.de": "lb1.affex.org",
+  "passr-is-1-2.net.daraz.com": "daraz-com.affex.org",
+  "patner-0.net.daraz.com": "daraz-com.affex.org",
+  "patner-19.net.daraz.com": "daraz-com.affex.org",
+  "patner-netherlands.net.daraz.com": "daraz-com.affex.org",
+  "patner.net.daraz.com": "daraz-com.affex.org",
+  "patneradmin1.net.daraz.com": "daraz-com.affex.org",
+  "patnerpoland.net.daraz.com": "daraz-com.affex.org",
+  "patnerteam.net.daraz.com": "daraz-com.affex.org",
+  "pay-d.ns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "pay.management.tpe.net.zooplus.de": "lb1.affex.org",
+  "pay.net.daraz.com": "daraz-com.affex.org",
+  "pay.net.zooplus.com": "lb1.affex.org",
+  "payment.ctl.api.net.zooplus.de": "lb1.affex.org",
+  "payments3.legacy.net.zooplus.com": "lb1.affex.org",
+  "payr-is-1-2.net.daraz.com": "daraz-com.affex.org",
+  "paywall.csr41.net.daraz.com": "daraz-com.affex.org",
+  "paywallcar21.net.daraz.com": "daraz-com.affex.org",
+  "paywallr-ln-1.net.daraz.com": "daraz-com.affex.org",
+  "pdfslink.net.daraz.com": "daraz-com.affex.org",
+  "perf.af.eficads.com": "lb1.affex.org",
+  "perf.af.funneldrivers.com": "lb1.affex.org",
+  "php.disabled.net.zooplus.de": "lb1.affex.org",
+  "pluto.r.powuta.com": "lb1.affex.org",
+  "pny.net.penny.de": "lb1.affex.org",
+  "portal-gitmanagement.net.zooplus.de": "lb1.affex.org",
+  "portalcsr31.net.daraz.com": "daraz-com.affex.org",
+  "prdr-dw-1.net.daraz.com": "daraz-com.affex.org",
+  "pre-lazada-sg-2.payment.net.daraz.com": "daraz-com.affex.org",
+  "pre-pull-drzlive.net.daraz.com": "daraz-com.affex.org",
+  "pre-webimmarketing.net.daraz.com": "daraz-com.affex.org",
+  "pre-workstationing.net.daraz.com": "daraz-com.affex.org",
+  "pre.net.daraz.com": "daraz-com.affex.org",
+  "print-mo.net.daraz.com": "daraz-com.affex.org",
+  "private.cisco-capwap-controller.net.daraz.com": "daraz-com.affex.org",
+  "privateing.net.daraz.com": "daraz-com.affex.org",
+  "production-patner.net.daraz.com": "daraz-com.affex.org",
+  "productionssitory-legacy.net.zooplus.com": "lb1.affex.org",
+  "productionstrain-mgmt.net.zooplus.de": "lb1.affex.org",
+  "profile.api.net.zooplus.de": "lb1.affex.org",
+  "profilepatner.net.daraz.com": "daraz-com.affex.org",
+  "profilesappsmgmt.net.zooplus.de": "lb1.affex.org",
+  "profilespartner.net.daraz.com": "daraz-com.affex.org",
+  "promotion-marketing.net.daraz.com": "daraz-com.affex.org",
+  "proxy-nfreya.net.daraz.com": "daraz-com.affex.org",
+  "proxy.history.net.zooplus.com": "lb1.affex.org",
+  "proxy.net.zooplus.com": "lb1.affex.org",
+  "proxy.r-is-1-2.net.daraz.com": "daraz-com.affex.org",
+  "proxywlan-switch.net.daraz.com": "daraz-com.affex.org",
+  "qqdewa.net.daraz.com": "daraz-com.affex.org",
+  "r-ch-1.azure.net.daraz.com": "daraz-com.affex.org",
+  "r-ch-1.ids.net.daraz.com": "daraz-com.affex.org",
+  "r-dw-1.chef.net.daraz.com": "daraz-com.affex.org",
+  "r-dw-1.net.daraz.com": "daraz-com.affex.org",
+  "r-dw-1.server.net.daraz.com": "daraz-com.affex.org",
+  "r-dw-1.stg.net.daraz.com": "daraz-com.affex.org",
+  "r-es-1.authorization.net.daraz.com": "daraz-com.affex.org",
+  "r-ht-1.net.daraz.com": "daraz-com.affex.org",
+  "r-ht-2.net.daraz.com": "daraz-com.affex.org",
+  "r-ht-2.training.net.daraz.com": "daraz-com.affex.org",
+  "r-ln-1.net.daraz.com": "daraz-com.affex.org",
+  "r-ln-1.region.net.daraz.com": "daraz-com.affex.org",
+  "r-oa-1.net.daraz.com": "daraz-com.affex.org",
+  "r.net.daraz.com": "daraz-com.affex.org",
+  "redirect.net.zooplus.de": "lb1.affex.org",
+  "redirectcsr21.net.daraz.com": "daraz-com.affex.org",
+  "redirector-ns3.cl.bellsouth.net.daraz.com": "daraz-com.affex.org",
+  "redirectorpatner.net.daraz.com": "daraz-com.affex.org",
+  "region.appsmgmt.net.zooplus.de": "lb1.affex.org",
+  "renaultbankdirekt.efscle.com": "lb1.affex.org",
+  "repoapi.disabled.net.zooplus.de": "lb1.affex.org",
+  "repons1.viviotech.net.daraz.com": "daraz-com.affex.org",
+  "repository-history.net.zooplus.com": "lb1.affex.org",
+  "repository-legacy.internals.net.zooplus.com": "lb1.affex.org",
+  "repository-restricted.net.zooplus.com": "lb1.affex.org",
+  "repository.r-ht-1.net.daraz.com": "daraz-com.affex.org",
+  "resetdata-admindata.net.zooplus.de": "lb1.affex.org",
+  "resetdata-data.disabled.net.zooplus.de": "lb1.affex.org",
+  "resetdatans2.viviotech.net.daraz.com": "daraz-com.affex.org",
+  "restricted-marketing.net.daraz.com": "daraz-com.affex.org",
+  "restricted-partner.net.daraz.com": "daraz-com.affex.org",
+  "restricted.api.net.zooplus.de": "lb1.affex.org",
+  "restricted.mgmt.documents.net.zooplus.de": "lb1.affex.org",
+  "rj82p-marketing.net.daraz.com": "daraz-com.affex.org",
+  "roundcube2.net.daraz.com": "daraz-com.affex.org",
+  "rw.net.rewe.de": "lb1.affex.org",
+  "s3.billinglegacy.net.zooplus.com": "lb1.affex.org",
+  "s3.kubectl.legacy.net.zooplus.com": "lb1.affex.org",
+  "s3.lb-legacy.net.zooplus.com": "lb1.affex.org",
+  "s3.legacy.paywall.net.zooplus.com": "lb1.affex.org",
+  "s3.marketlegacy.net.zooplus.com": "lb1.affex.org",
+  "s3.nodelegacy.net.zooplus.com": "lb1.affex.org",
+  "s3.php.net.zooplus.com": "lb1.affex.org",
+  "s3.rpc.net.zooplus.com": "lb1.affex.org",
+  "s3.service.legacy.net.zooplus.com": "lb1.affex.org",
+  "sandbox-data.docker.net.zooplus.de": "lb1.affex.org",
+  "sandbox.car10.net.daraz.com": "daraz-com.affex.org",
+  "sattadon0001.net.daraz.com": "daraz-com.affex.org",
+  "schwaebischhall.efscle.com": "lb1.affex.org",
+  "scontent.fmid3-1.fna.fbcdn.net.iberostar.com": "lb1.affex.org",
+  "search.net.zooplus.com": "lb1.affex.org",
+  "search.repository-legacy.net.zooplus.com": "lb1.affex.org",
+  "searchprint-mo.net.daraz.com": "daraz-com.affex.org",
+  "season.authorization.net.daraz.com": "daraz-com.affex.org",
+  "sec-lib-oa-2.net.daraz.com": "daraz-com.affex.org",
+  "secapi.net.zooplus.de": "lb1.affex.org",
+  "security.data.disabled.net.zooplus.de": "lb1.affex.org",
+  "security.ns3.cl.bellsouth.net.daraz.com": "daraz-com.affex.org",
+  "securitystagingmgmt.net.zooplus.de": "lb1.affex.org",
+  "securitywww.partner.net.daraz.com": "daraz-com.affex.org",
+  "sept-marketing.net.daraz.com": "daraz-com.affex.org",
+  "server-data.net.zooplus.de": "lb1.affex.org",
+  "server.api.net.zooplus.de": "lb1.affex.org",
+  "server.mgmt.net.zooplus.de": "lb1.affex.org",
+  "servicedata.org.net.zooplus.de": "lb1.affex.org",
+  "sexxdesi.net.daraz.com": "daraz-com.affex.org",
+  "signed.net.daraz.com": "daraz-com.affex.org",
+  "signed.r-oa-2.net.daraz.com": "daraz-com.affex.org",
+  "skins.csr12.net.daraz.com": "daraz-com.affex.org",
+  "skins.lax-mgmt.net.zooplus.de": "lb1.affex.org",
+  "skyapi.live.net.iberostar.com": "lb1.affex.org",
+  "smartbroker.efscle.com": "lb1.affex.org",
+  "sonar6-sea1-1.xx.fbcdn.net.iberostar.com": "lb1.affex.org",
+  "spacemarketing.net.daraz.com": "daraz-com.affex.org",
+  "spring-marketing.net.daraz.com": "daraz-com.affex.org",
+  "spring.ebs.net.daraz.com": "daraz-com.affex.org",
+  "spring.repository.net.daraz.com": "daraz-com.affex.org",
+  "spyder.net.daraz.com": "daraz-com.affex.org",
+  "srv.net.daraz.com": "daraz-com.affex.org",
+  "ssl-dockerapi.net.zooplus.de": "zooplus-de.affex.org",
+  "ssl.affiliate.logitravel.com": "tr-logitravel-com.affex.org",
+  "ssl.net.zooplus.de": "lb1.affex.org",
+  "sslmgmt.net.zooplus.de": "zooplus-de.affex.org",
+  "staff-marketing.net.daraz.com": "daraz-com.affex.org",
+  "staging-marketing.net.daraz.com": "daraz-com.affex.org",
+  "stagingapi.priv.net.zooplus.de": "zooplus-de.affex.org",
+  "stagingmgmt.cloudapp.net.zooplus.de": "zooplus-de.affex.org",
+  "static.gitmanagement.net.zooplus.de": "zooplus-de.affex.org",
+  "static.net.zooplus.de": "zooplus-de.affex.org",
+  "stg.app-mgmt.net.zooplus.de": "zooplus-de.affex.org",
+  "stg.ingress.net.zooplus.de": "zooplus-de.affex.org",
+  "stg.mgmt.pay.net.zooplus.de": "zooplus-de.affex.org",
+  "stg.mgmt.php.net.zooplus.de": "zooplus-de.affex.org",
+  "stg.mobileclientmgmt.net.zooplus.de": "zooplus-de.affex.org",
+  "stg.php.net.zooplus.de": "zooplus-de.affex.org",
+  "stg.s3mgmt.net.zooplus.de": "zooplus-de.affex.org",
+  "summer.net.daraz.com": "daraz-com.affex.org",
+  "support.api.hw.net.zooplus.de": "zooplus-de.affex.org",
+  "support.api.mobile.net.zooplus.de": "zooplus-de.affex.org",
+  "support.api.prod.net.zooplus.de": "zooplus-de.affex.org",
+  "support.data-api.net.zooplus.de": "zooplus-de.affex.org",
+  "support.kube.api.net.zooplus.de": "zooplus-de.affex.org",
+  "support.labapi.net.zooplus.de": "zooplus-de.affex.org",
+  "support.nginxapi.net.zooplus.de": "zooplus-de.affex.org",
+  "support.prd.api.net.zooplus.de": "zooplus-de.affex.org",
+  "support.r-dw-1.net.daraz.com": "daraz-com.affex.org",
+  "supportc.ns.emailvision.net.daraz.com": "daraz-com.affex.org",
+  "svc-ns2.viviotech.net.daraz.com": "daraz-com.affex.org",
+  "system.w-htgb-a.net.daraz.com": "daraz-com.affex.org",
+  "systemlax-mgmt.net.zooplus.de": "zooplus-de.affex.org",
+  "t-patner.net.daraz.com": "daraz-com.affex.org",
+  "t.net.zooplus.de": "zooplus-de.affex.org",
+  "taigete.net.daraz.com": "daraz-com.affex.org",
+  "tamilrasigan.net.daraz.com": "daraz-com.affex.org",
+  "tbm.net.toom.de": "tr-toom-de.affex.org",
+  "team.stg.mgmt.net.zooplus.de": "zooplus-de.affex.org",
+  "test-stg.mgmt.net.zooplus.de": "zooplus-de.affex.org",
+  "test-support.api.net.zooplus.de": "zooplus-de.affex.org",
+  "test.ns1.viviotech.net.daraz.com": "daraz-com.affex.org",
+  "testbed-repository-legacy.net.zooplus.com": "zooplus-com.affex.org",
+  "testerlax-mgmt.net.zooplus.de": "zooplus-de.affex.org",
+  "testing-summer.net.daraz.com": "daraz-com.affex.org",
+  "testment.ids.net.zooplus.de": "zooplus-de.affex.org",
+  "tomcat-data.org.net.zooplus.de": "zooplus-de.affex.org",
+  "toolbar.autumn.net.daraz.com": "daraz-com.affex.org",
+  "toonget.net.daraz.com": "daraz-com.affex.org",
+  "tower.net.daraz.com": "daraz-com.affex.org",
+  "toy-boy-paris.net.daraz.com": "daraz-com.affex.org",
+  "tp-s.nflximg.net.iberostar.com": "lb1.affex.org",
+  "tpe.stg.mgmt.net.zooplus.de": "zooplus-de.affex.org",
+  "tpecsr31.net.daraz.com": "daraz-com.affex.org",
+  "traffic-lib-oa-1.net.daraz.com": "daraz-com.affex.org",
+  "train-jenkins.net.zooplus.de": "zooplus-de.affex.org",
+  "train-machine.net.zooplus.de": "zooplus-de.affex.org",
+  "train-mgmt.gateway.net.zooplus.de": "zooplus-de.affex.org",
+  "train-scm.net.zooplus.de": "zooplus-de.affex.org",
+  "train-sec.net.zooplus.de": "zooplus-de.affex.org",
+  "train.legacy.net.zooplus.com": "zooplus-com.affex.org",
+  "training-gitmanagement.net.zooplus.de": "zooplus-de.affex.org",
+  "training.net.zooplus.com": "lb1.affex.org",
+  "trainingmgmt.docker.net.zooplus.de": "zooplus-de.affex.org",
+  "trial-legacy.net.zooplus.com": "zooplus-com.affex.org",
+  "tubeunblock.net.daraz.com": "daraz-com.affex.org",
+  "uatpartner.net.daraz.com": "daraz-com.affex.org",
+  "ugportal.net.daraz.com": "daraz-com.affex.org",
+  "upload.net.zooplus.com": "zooplus-com.affex.org",
+  "uploads.management.ids.net.zooplus.de": "zooplus-de.affex.org",
+  "uploadsmanagement.ids.net.zooplus.de": "zooplus-de.affex.org",
+  "uploadsns2.viviotech.net.daraz.com": "daraz-com.affex.org",
+  "us.api.net.zooplus.de": "zooplus-de.affex.org",
+  "us.r-ht-1.net.daraz.com": "daraz-com.affex.org",
+  "usdockerapi.net.zooplus.de": "lb1.affex.org",
+  "usns1.viviotech.net.daraz.com": "daraz-com.affex.org",
+  "v.ns2.twtelecom.net.daraz.com": "daraz-com.affex.org",
+  "v1.ns1.viviotech.net.daraz.com": "daraz-com.affex.org",
+  "v3ing.net.daraz.com": "daraz-com.affex.org",
+  "vansax.net.daraz.com": "daraz-com.affex.org",
+  "vidoza.net.daraz.com": "daraz-com.affex.org",
+  "vpn-disableddata.net.zooplus.de": "lb1.affex.org",
+  "vpn.tpe.net.zooplus.de": "lb1.affex.org",
+  "vpnmanagement.ids.net.zooplus.de": "lb1.affex.org",
+  "vstg.mgmt.net.zooplus.de": "lb1.affex.org",
+  "w-htgb-a.active.net.daraz.com": "daraz-com.affex.org",
+  "w-htgb-a.net.daraz.com": "daraz-com.affex.org",
+  "w-htgb-a.v1.net.daraz.com": "daraz-com.affex.org",
+  "webapp-www.partner.net.daraz.com": "daraz-com.affex.org",
+  "webapplib-ln-2.net.daraz.com": "daraz-com.affex.org",
+  "webmanagement.ids.net.zooplus.de": "zooplus-de.affex.org",
+  "webstats.net.zooplus.com": "lb1.affex.org",
+  "winter.admins.net.daraz.com": "daraz-com.affex.org",
+  "winter.net.daraz.com": "daraz-com.affex.org",
+  "wix.net.daraz.com": "daraz-com.affex.org",
+  "wlan-switch.mirror.net.daraz.com": "daraz-com.affex.org",
+  "wlan-switch.net.daraz.com": "daraz-com.affex.org",
+  "wlan-switch.preview.net.daraz.com": "daraz-com.affex.org",
+  "www-auth.partner.net.daraz.com": "daraz-com.affex.org",
+  "www.admin.net.daraz.com": "daraz-com.affex.org",
+  "www.aws.net.daraz.com": "daraz-com.affex.org",
+  "www.chd.net.daraz.com": "daraz-com.affex.org",
+  "www.elasticbeanstalk.net.daraz.com": "daraz-com.affex.org",
+  "www.espace-construction.net.daraz.com": "daraz-com.affex.org",
+  "www.ingenioustech.biz": "lb1.affex.org",
+  "www.mpstar.mpstar.net.daraz.com": "daraz-com.affex.org",
+  "www.net.daraz.com": "daraz-com.affex.org",
+  "www.net.zooplus.fr": "lb1.affex.org",
+  "www.partner-alpha.net.daraz.com": "daraz-com.affex.org",
+  "www.partner-bamboo.net.daraz.com": "daraz-com.affex.org",
+  "www.partner-pay.dcloud.net.daraz.com": "daraz-com.affex.org",
+  "www.partner-paygh.net.daraz.com": "daraz-com.affex.org",
+  "wwwapi-docs.partner.net.daraz.com": "daraz-com.affex.org",
+  "wwwimap.partner.net.daraz.com": "daraz-com.affex.org",
+  "wwwreset.partner.net.daraz.com": "daraz-com.affex.org",
+  "ytmp4.net.daraz.com": "daraz-com.affex.org",
+  "z-partner.net.daraz.com": "daraz-com.affex.org",
+  "clk.boulanger.com": "k.keyade.com",
+  "clk.ubi.com": "k.keyade.com",
+  "k.campanile.com": "k.keyade.com",
+  "k.cocooncenter.be": "k.keyade.com",
+  "k.cocooncenter.co.uk": "k.keyade.com",
+  "k.cocooncenter.com": "k.keyade.com",
+  "k.cocooncenter.de": "k.keyade.com",
+  "k.cocooncenter.es": "k.keyade.com",
+  "k.direct-assurance.fr": "k.keyade.com",
+  "k.empruntis.com": "k.keyade.com",
+  "k.fnacspectacles.com": "k.keyade.com",
+  "k.hofmann.es": "k.keyade.com",
+  "k.laredoute.es": "k.keyade.com",
+  "k.laredoute.ru": "k.keyade.com",
+  "k.premiereclasse.com": "k.keyade.com",
+  "k.rueducommerce.fr": "k.keyade.com",
+  "k.truffaut.com": "k.madmetrics.com",
+  "k.veepee.fr": "k.keyade.com",
+  "k.veepee.it": "k.keyade.com",
+  "k.voyageursdumonde.fr": "k.keyade.com",
+  "ka.ilius.net": "mt.k.keyade.com",
+  "keyade.alltricks.fr": "k.keyade.com",
+  "keyade.ooreka.fr": "k.keyade.com",
+  "tck.photobox.com": "k.keyade.com",
+  "tck.transavia.com": "k.keyade.com",
+  "secure.1-cl0ud.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.acor1sign.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.aiea6gaza.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.alda1mure.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.alea6badb.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.alga9frog.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.aran9midi.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.arid5glop.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.badb5refl.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.bait4role.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.bali6nora.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.bass2poll.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.benn8bord.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.bike6debt.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.bolt8snap.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.bred4tula.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.cage6west.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.care5alea.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.cart8draw.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.cavy9soho.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.chic9usia.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.chip2gift.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.chop8live.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.clue6load.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.coax7nice.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.coup7cold.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.cuba7tilt.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.curl7bike.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.dana8herb.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.dawn3host.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.deng3rada.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.doll9jiva.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.dump4barn.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.east2pony.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.emeu0circ.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.etym6cero.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.fear7calk.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.feed5baby.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.feed5mown.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.file3size.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.flow8free.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.frog9alea.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.game9time.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.gard4mass.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.gaza2lote.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.gift2pair.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.give2hill.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.glue1lazy.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.golp4elik.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.grow1maid.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.haag0some.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.haig7anax.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.half1hell.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.hall3hook.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.harm6stop.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.hazy4cant.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.head3high.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.hear8crew.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.heat6have.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.herb2warn.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.herb7calk.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.hero6bell.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.hims1nice.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.hiss3lark.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.iron0walk.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.jaup0lake.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.jebb8hurt.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.keet1liod.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.kick1pore.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.kilo6alga.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.kota3chat.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.lack4skip.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.late6year.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.late8chew.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.lave6loki.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.lazy8krti.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.left5lock.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.link5view.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.liod1ours.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.loki8lave.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.loom3otto.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.lope4refl.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.lote1otto.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.main5poem.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.make6pain.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.mali4blat.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.malm1coax.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.mari4norm.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.marx7loki.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.mass1soma.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.mean8sigh.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.meet3monk.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.mews2ruck.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.mile0tire.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.mill8grip.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.mown5gaze.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.navy9gear.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.neck6bake.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.nice3aiea.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.node7seat.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.nong3bram.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.nora7nice.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.norm0care.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.oita4bali.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.otto5loki.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.ours3care.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.page1monk.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.path5wall.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.peak2poem.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.peep1alea.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.perk0mean.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.plug1luge.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.poor5zero.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.raab3frog.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.rate2self.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.rear9axis.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.redd7liod.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.refl3alea.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.rigi9bury.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.rime8lope.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.ripe8book.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.risk8belt.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.roar9beer.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.rock5rice.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.rote8mino.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.ruth8badb.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.ryke4peep.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.scan6show.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.shoo5woop.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.silk0palm.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.skye6oner.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.slim2disc.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.soma9vols.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.sour1bare.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.sour7will.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.spit0stge.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.sugh8yami.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.swat8toot.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.tank3pull.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.team8save.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.tent0mown.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.text6film.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.tire1soak.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.toll6kerb.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.torn6back.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.toru0vane.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.tray0bury.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.tula9mari.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.vane3alga.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.vick6duty.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.vols7feed.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.wait8hurl.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.want7feed.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.wauk1care.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.weed6tape.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.wild0army.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.wild8prey.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.wivo2gaza.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.yama1hove.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.yami8alea.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.yeld9auto.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "secure.yirr5frog.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.1-cl0ud.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.100-flannelman.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.123-tracker.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.143nchrtl3.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.1h2h54jkw.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.200summit.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.33-trk-srv.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.44-trk-srv.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.44tele-infra.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.55-trk-srv.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.66-trk-srv.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.66infra-strat.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.88infra-strat.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.acor1sign.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.adgjl13.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.aiea6gaza.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.alea6badb.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.alga9frog.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.alnw3nsdi.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.alskd34.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.altabold1.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.ape78cn2.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.aqedsw4.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.aran9midi.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.asdfg23.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.atl-6-ga.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.badb5refl.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.bae5tracker.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.bait4role.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.bali6nora.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.benn8bord.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.bis-dic15.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.blocwhite7.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.bolt8snap.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.bosctrl32.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.bred4tula.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.burn5tilt.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.cage6west.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.care5alea.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.cart8draw.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.cavy9soho.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.cben9a9s1.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.cdert34.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.central-core-7.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.centralcore7.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.ches5sort.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.chic9usia.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.chip2gift.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.cloud-9751.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.clue6load.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.cnej4912jks.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.cnt-tm-1.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.cntr-di7.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.coax7nice.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.connct-9.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.coup7cold.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.create-tracking.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.cten10010.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.cuba7tilt.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.cube-78.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.dakic-ia-300.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.dana8herb.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.dawn3host.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.dbrtkwaa81.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.deng3rada.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.dens1raec.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.dhenr54m.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.dial4gwyn.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.direct-aws-a1.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.direct-azr-78.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.djkeun1bal.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.doll9jiva.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.dtc-330d.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.dtc-v6t.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.dthvdr9.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.dump4barn.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.east2pony.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.ed-clr-01.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.efvrgb12.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.elite-s001.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.emeu0circ.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.etym6cero.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.eue21east.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.eue27west.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.eventcapture03.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.eventcapture06.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.ever-track-51.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.explore-123.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.fear7calk.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.feed5baby.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.feed5mown.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.file3size.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.final-aws-01.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.final-azr-01.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.finger-info.net": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.flow8free.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.frog9alea.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.game9time.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.gard4mass.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.garm9yuma.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.gaza2lote.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.gbl007.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.gblwebcen.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.gift2pair.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.glb12pkgr.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.glb21pkgr.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.gldsta-02-or.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.golp4elik.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.grow1maid.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.gw100-10.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.haag0some.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.haig7anax.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.half1hell.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.hall3hook.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.harm6stop.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.hazy4cant.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.head3high.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.hear8crew.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.heat6have.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.herb2warn.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.herb7calk.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.hero6bell.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.hims1nice.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.hiss3lark.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.hrb1tng0.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.hunter-details.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.hvgcfx1.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.incline9edge.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.infra-gtc.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.iron0walk.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.jebb8hurt.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.jenxsw21lb.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.jody0sora.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.jsnzoe301m.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.keet1liod.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.kick1pore.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.kilo6alga.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.kota3chat.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.kpr2exp21.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.kprbexp21.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.lack4skip.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.laksjd4.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.lansrv020.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.lansrv030.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.lansrv040.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.lansrv050.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.lansrv060.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.lansrv070.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.lansrv080.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.lansrv090.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.late6year.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.late8chew.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.lave6loki.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.lazy8krti.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.ldfr-cloud.net": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.ledradn.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.left5lock.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.letterbox-path.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.line6agar.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.link5view.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.liod1ours.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.list1holp.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.lmknjb1.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.loki8lave.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.loom3otto.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.lope4refl.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.lote1otto.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.m1ll1c4n0.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.mack7oyes.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.make6pain.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.mali4blat.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.malm1coax.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.mari4norm.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.marx7loki.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.mass1soma.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.mbljpu9.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.me1294hlx.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.mediaedge-info.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.meet3monk.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.mile0tire.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.mill8grip.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.mon-com-01.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.mon-com-net.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.mown5gaze.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.n-core-pipe.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.navy9gear.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.nhyund4.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.nice3aiea.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.node7seat.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.nora7nice.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.norm0care.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.nw-rail-03.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.ny79641.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.nyctrl32.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.oboe3broo.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.ofnsv69.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.oita4bali.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.okc-5190.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.okc-5191.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.optimum-xyz.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.otto5loki.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.pdxor02.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.peep1alea.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.perk0mean.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.pkrchp001.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.poiuy12.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.poor5zero.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.poqwo3.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.pri12mel.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.prt-or-067.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.qetup12.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.qlzn6i1l.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.qpwoei2.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.rdeswa1.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.rear9axis.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.refl3alea.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.rep0pkgr.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.req12pkgb.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.rime8lope.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.roar9beer.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.rock5rice.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.rote8mino.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.ruth8badb.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.ryke4peep.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.s3network1.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.saas-eue-1.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.saon6harz.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.sas15k01.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.scan6show.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.se-core-pipe.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.shrfbdg004.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.sl-ct5.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.slim2disc.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.softtrack08.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.soma9vols.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.sour1bare.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.srv00infra.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.srv1010elan.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.srv2020real.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.srvtrkxx2.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.sugh8yami.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.svr-prc-01.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.svr007phz.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.sw-rail-7.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.swat8toot.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.tghbn12.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.tgvrfc4.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.tire1soak.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.tm1-001.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.toll6kerb.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.torn6back.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.toru0vane.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.trackdiscovery.net": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.trail-viewer.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.tray0bury.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.trksrv44.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.trksrv45.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.trksrv46.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.tst14netreal.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.tst16infra.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.tula9mari.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.uhygtf1.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.ult-blk-cbl.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.vane3alga.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.vice4beek.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.vols7feed.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.wait8hurl.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.want7feed.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.web-01-gbl.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.web-cntr-07.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.wild0army.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.www-path.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.yama1hove.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.yami8alea.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.ydwsjt-2.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.yeld9auto.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.yirr5frog.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.zcbmn14.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.zmxncb5.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "www.zxcvb23.com": "v3-eu-appgwv2.uksouth.cloudapp.azure.com",
+  "emailing.casden.banquepopulaire.fr": "tracking.bp01.net",
+  "epm.mailperformance.com": "tracking.bp01.net",
+  "sms.gestion.cetelem.fr": "tracking.bp01.net",
+  "tr.3ou4xcb.cetelem.fr": "tracking.bp01.net",
+  "tr.abo.cotemaison.fr": "tracking.bp01.net",
+  "tr.actu.bricodepot.com": "tracking.bp01.net",
+  "tr.actualites.01net.com": "tracking.bp01.net",
+  "tr.actualites.bfmtv.com": "tracking.bp01.net",
+  "tr.actupremium.com": "tracking.bp01.net",
+  "tr.animation.lexpress.fr": "tracking.bp01.net",
+  "tr.animation.micromania.fr": "tracking.bp01.net",
+  "tr.animations.01net.com": "tracking.bp01.net",
+  "tr.animations.bfmtv.com": "tracking.bp01.net",
+  "tr.asp002q.espmp-aufr.net": "tracking.bp01.net",
+  "tr.asp1.espmp-agfr.net": "tracking.bp01.net",
+  "tr.asp103z.espmp-nifr.net": "tracking.bp01.net",
+  "tr.asp106g.espmp-nifr.net": "tracking.bp01.net",
+  "tr.asp10ar.espmp-cufr.net": "tracking.bp01.net",
+  "tr.asp10bs.espmp-aufr.net": "tracking.bp01.net",
+  "tr.asp10cr.espmp-nifr.net": "tracking.bp01.net",
+  "tr.asp10hi.espmp-cufr.net": "tracking.bp01.net",
+  "tr.asp2032.espmp-aufr.net": "tracking.bp01.net",
+  "tr.asp2075.espmp-nifr.net": "tracking.bp01.net",
+  "tr.b2d1.espmp-agfr.net": "tracking.bp01.net",
+  "tr.b2d1068.espmp-nifr.net": "tracking.bp01.net",
+  "tr.b2d106z.espmp-aufr.net": "tracking.bp01.net",
+  "tr.batiweb.co": "tracking.bp01.net",
+  "tr.bizzquotes.co.uk": "tracking.bp01.net",
+  "tr.boletim.meu-orcamento.pt": "tracking.bp01.net",
+  "tr.btobquotes.com": "tracking.bp01.net",
+  "tr.buenasofertas.pro": "tracking.bp01.net",
+  "tr.cacf-acq.ipsos-surveys.com": "tracking.bp01.net",
+  "tr.cacf.ipsos-surveys.com": "tracking.bp01.net",
+  "tr.camara.eu.com": "tracking.bp01.net",
+  "tr.carte.lcl.fr": "tracking.bp01.net",
+  "tr.cartegie.fr": "tracking.bp01.net",
+  "tr.cashback.floa.fr": "tracking.bp01.net",
+  "tr.cifa.espmp-nifr.net": "tracking.bp01.net",
+  "tr.cifa02k.espmp-aufr.net": "tracking.bp01.net",
+  "tr.cj.bordeaux-metropole.fr": "tracking.bp01.net",
+  "tr.client.emailing.bnpparibas": "tracking.bp01.net",
+  "tr.clientes.younited-credit.com": "tracking.bp01.net",
+  "tr.clienti.younited-credit.com": "tracking.bp01.net",
+  "tr.clienti.younited-credit.it": "tracking.bp01.net",
+  "tr.clients-mediametrie.fr": "tracking.bp01.net",
+  "tr.clients.boursorama.info": "tracking.bp01.net",
+  "tr.clients.idaia.group": "tracking.bp01.net",
+  "tr.cnaf.espmp-nifr.net": "tracking.bp01.net",
+  "tr.collectif.groupe-vyv.fr": "tracking.bp01.net",
+  "tr.com-clients.sfr.fr": "tracking.bp01.net",
+  "tr.com-parc.sfr.fr": "tracking.bp01.net",
+  "tr.com-red.sfr.fr": "tracking.bp01.net",
+  "tr.com-web.sfr.fr": "tracking.bp01.net",
+  "tr.com.sfr.fr": "tracking.bp01.net",
+  "tr.communaute.caradisiac.com": "tracking.bp01.net",
+  "tr.communautes-mediametrie.fr": "tracking.bp01.net",
+  "tr.communication-comptable.fr": "tracking.bp01.net",
+  "tr.communication.arthur-bonnet.com": "tracking.bp01.net",
+  "tr.communication.b2b-actualites.com": "tracking.bp01.net",
+  "tr.communication.boursorama.info": "tracking.bp01.net",
+  "tr.communication.cgaaer.fr": "tracking.bp01.net",
+  "tr.communication.harmonie-mutuelle.fr": "tracking.bp01.net",
+  "tr.communication.lvmh.fr": "tracking.bp01.net",
+  "tr.communication.moethennessy.com": "tracking.bp01.net",
+  "tr.communication.numericable.fr": "tracking.bp01.net",
+  "tr.communication.offresb2b.fr": "tracking.bp01.net",
+  "tr.compte.fca-capital-france.fr": "tracking.bp01.net",
+  "tr.contact.canalplus.fr": "tracking.bp01.net",
+  "tr.contact.e-turf.fr": "tracking.bp01.net",
+  "tr.courriel.ouestnormandie.cci.fr": "tracking.bp01.net",
+  "tr.courrier.charentelibre.fr": "tracking.bp01.net",
+  "tr.courrier.larepubliquedespyrenees.fr": "tracking.bp01.net",
+  "tr.courrier.sudouest.fr": "tracking.bp01.net",
+  "tr.devis-companeo.be": "tracking.bp01.net",
+  "tr.devis-companeo.com": "tracking.bp01.net",
+  "tr.devis-companeo.fr": "tracking.bp01.net",
+  "tr.devis-express.be": "tracking.bp01.net",
+  "tr.devis.digital": "tracking.bp01.net",
+  "tr.devize-companeo.ro": "tracking.bp01.net",
+  "tr.donateur.afm-telethon.fr": "tracking.bp01.net",
+  "tr.e-mail.axa.fr": "tracking.bp01.net",
+  "tr.e.entreprise-pm.net": "tracking.bp01.net",
+  "tr.e.trouver-un-logement-neuf.com": "tracking.bp01.net",
+  "tr.easy-offertes.be": "tracking.bp01.net",
+  "tr.em.cdiscount-pro.com": "tracking.bp01.net",
+  "tr.em.cdiscountpro.com": "tracking.bp01.net",
+  "tr.email.archiexpo.com": "tracking.bp01.net",
+  "tr.email.contact-landrover.fr": "tracking.bp01.net",
+  "tr.email.custom-campaign.com": "tracking.bp01.net",
+  "tr.email.directindustry.com": "tracking.bp01.net",
+  "tr.email.janedeboy.com": "tracking.bp01.net",
+  "tr.email.securite-routiere.gouv.fr": "tracking.bp01.net",
+  "tr.email.thelem-assurances.fr": "tracking.bp01.net",
+  "tr.email.voyagesleclerc.com": "tracking.bp01.net",
+  "tr.emailing.canalplus-afrique.com": "tracking.bp01.net",
+  "tr.emailing.canalplus-caledonie.com": "tracking.bp01.net",
+  "tr.emailing.canalplus-caraibes.com": "tracking.bp01.net",
+  "tr.emailing.canalplus-maurice.com": "tracking.bp01.net",
+  "tr.emailing.canalplus-reunion.com": "tracking.bp01.net",
+  "tr.emailing.canalplus.ch": "tracking.bp01.net",
+  "tr.emailing.canalplus.fr": "tracking.bp01.net",
+  "tr.emailing.coe.int": "tracking.bp01.net",
+  "tr.emailing.detours.canal.fr": "tracking.bp01.net",
+  "tr.emailing.grassavoye.com": "tracking.bp01.net",
+  "tr.emailium.fr": "tracking.bp01.net",
+  "tr.enedis-infos.fr": "tracking.bp01.net",
+  "tr.envie-de-bien-manger.espmp-aufr.net": "tracking.bp01.net",
+  "tr.europa-organisation.com": "tracking.bp01.net",
+  "tr.evenements.inpi.fr": "tracking.bp01.net",
+  "tr.fr.pro.accor.com": "tracking.bp01.net",
+  "tr.gestion.banque-casino.fr": "tracking.bp01.net",
+  "tr.gestion.cetelem.fr": "tracking.bp01.net",
+  "tr.gestion.cofinoga.fr": "tracking.bp01.net",
+  "tr.gestion.floa.fr": "tracking.bp01.net",
+  "tr.gestion.sygmabnpparibas-pf.com": "tracking.bp01.net",
+  "tr.group-hr.lvmh.fr": "tracking.bp01.net",
+  "tr.groupama-gne.fr": "tracking.bp01.net",
+  "tr.helloartisan.info": "tracking.bp01.net",
+  "tr.info-btob-leaders.com": "tracking.bp01.net",
+  "tr.info-companeo.be": "tracking.bp01.net",
+  "tr.info.actionlogement.fr": "tracking.bp01.net",
+  "tr.info.ag2rlamondiale.fr": "tracking.bp01.net",
+  "tr.info.aprr.fr": "tracking.bp01.net",
+  "tr.info.arialcnp.fr": "tracking.bp01.net",
+  "tr.info.caissenationalegendarme.fr": "tracking.bp01.net",
+  "tr.info.capfun.com": "tracking.bp01.net",
+  "tr.info.casino-proximites.fr": "tracking.bp01.net",
+  "tr.info.easyviaggio.com": "tracking.bp01.net",
+  "tr.info.easyviajar.com": "tracking.bp01.net",
+  "tr.info.easyvoyage.co.uk": "tracking.bp01.net",
+  "tr.info.easyvoyage.com": "tracking.bp01.net",
+  "tr.info.harmonie-mutuelle.fr": "tracking.bp01.net",
+  "tr.info.lacentrale.fr": "tracking.bp01.net",
+  "tr.info.linxea.com": "tracking.bp01.net",
+  "tr.info.mango-mobilites.fr": "tracking.bp01.net",
+  "tr.info.mavoiturecash.fr": "tracking.bp01.net",
+  "tr.info.mdbp.fr": "tracking.bp01.net",
+  "tr.info.mobibam.com": "tracking.bp01.net",
+  "tr.info.offresprivilege.com": "tracking.bp01.net",
+  "tr.info.promoneuve.fr": "tracking.bp01.net",
+  "tr.info.rouen.aeroport.fr": "tracking.bp01.net",
+  "tr.info.rouen.cci.fr": "tracking.bp01.net",
+  "tr.info.snpden.net": "tracking.bp01.net",
+  "tr.info.solidarm.fr": "tracking.bp01.net",
+  "tr.info.valcenis.com": "tracking.bp01.net",
+  "tr.info.vip-mag.co.uk": "tracking.bp01.net",
+  "tr.infolettre.securite-routiere.gouv.fr": "tracking.bp01.net",
+  "tr.information.lacollection-airfrance.fr": "tracking.bp01.net",
+  "tr.informations.dila.gouv.fr": "tracking.bp01.net",
+  "tr.informations.harmonie-mutuelle.fr": "tracking.bp01.net",
+  "tr.informations.lcl.fr": "tracking.bp01.net",
+  "tr.infos.afpa.fr": "tracking.bp01.net",
+  "tr.infos.odalys-vacances.com": "tracking.bp01.net",
+  "tr.inspiration.culture-data.fr": "tracking.bp01.net",
+  "tr.interviews-mediametrie.fr": "tracking.bp01.net",
+  "tr.invitation-mesdessous.fr": "tracking.bp01.net",
+  "tr.jesuis.enformedelotus.com": "tracking.bp01.net",
+  "tr.jevoteenligne.fr": "tracking.bp01.net",
+  "tr.jkyg.espmp-cufr.net": "tracking.bp01.net",
+  "tr.kpyn.espmp-cufr.net": "tracking.bp01.net",
+  "tr.krus.espmp-agfr.net": "tracking.bp01.net",
+  "tr.leads.direct": "tracking.bp01.net",
+  "tr.lesmarques.envie-de-bien-manger.com": "tracking.bp01.net",
+  "tr.louvre-boites.com": "tracking.bp01.net",
+  "tr.lvmhappening.lvmh.fr": "tracking.bp01.net",
+  "tr.mail.enviedebienmanger.fr": "tracking.bp01.net",
+  "tr.mail.floa.fr": "tracking.bp01.net",
+  "tr.mail.koregraf.com": "tracking.bp01.net",
+  "tr.mail.moncoupdepouce.com": "tracking.bp01.net",
+  "tr.mail.satisfactory.fr": "tracking.bp01.net",
+  "tr.mail.vipmag.fr": "tracking.bp01.net",
+  "tr.mailing.lvmhappening.com": "tracking.bp01.net",
+  "tr.mailing.r2e-humanis.fr": "tracking.bp01.net",
+  "tr.marg02n.espmp-agfr.net": "tracking.bp01.net",
+  "tr.marketing.younited-credit.com": "tracking.bp01.net",
+  "tr.mart.espmp-agfr.net": "tracking.bp01.net",
+  "tr.membres.boursorama.info": "tracking.bp01.net",
+  "tr.mhist.moethennessy.com": "tracking.bp01.net",
+  "tr.mm.infopro-digital.com": "tracking.bp01.net",
+  "tr.mnoc.espmp-nifr.net": "tracking.bp01.net",
+  "tr.moja-wycena.pl": "tracking.bp01.net",
+  "tr.mondevis-pro.com": "tracking.bp01.net",
+  "tr.mp.aconclue-business.fr": "tracking.bp01.net",
+  "tr.mp.aconclue-pro.com": "tracking.bp01.net",
+  "tr.n.info.cdgp.fr": "tracking.bp01.net",
+  "tr.news-chocolat.com": "tracking.bp01.net",
+  "tr.news-companeo.fr": "tracking.bp01.net",
+  "tr.news-companeo.mx": "tracking.bp01.net",
+  "tr.news-companeo.pl": "tracking.bp01.net",
+  "tr.news.accessmbatour.com": "tracking.bp01.net",
+  "tr.news.alinea.com": "tracking.bp01.net",
+  "tr.news.allopneus.com": "tracking.bp01.net",
+  "tr.news.assuragency.net": "tracking.bp01.net",
+  "tr.news.capfun.com": "tracking.bp01.net",
+  "tr.news.casino.fr": "tracking.bp01.net",
+  "tr.news.casinodrive.fr": "tracking.bp01.net",
+  "tr.news.casinomax.fr": "tracking.bp01.net",
+  "tr.news.cdiscount.com": "tracking.bp01.net",
+  "tr.news.cotemaison.fr": "tracking.bp01.net",
+  "tr.news.deneuville-chocolat.fr": "tracking.bp01.net",
+  "tr.news.digitpjms.fr": "tracking.bp01.net",
+  "tr.news.directeo.fr": "tracking.bp01.net",
+  "tr.news.easyviaggio.com": "tracking.bp01.net",
+  "tr.news.easyviajar.com": "tracking.bp01.net",
+  "tr.news.easyvoyage.co.uk": "tracking.bp01.net",
+  "tr.news.easyvoyage.com": "tracking.bp01.net",
+  "tr.news.easyvoyage.de": "tracking.bp01.net",
+  "tr.news.economic-studies.fr": "tracking.bp01.net",
+  "tr.news.geantcasino.fr": "tracking.bp01.net",
+  "tr.news.heredis.com": "tracking.bp01.net",
+  "tr.news.infopro-digital.com": "tracking.bp01.net",
+  "tr.news.kpmgnet.fr": "tracking.bp01.net",
+  "tr.news.lacollection-airfrance.fr": "tracking.bp01.net",
+  "tr.news.lacollectionairfrance.fr": "tracking.bp01.net",
+  "tr.news.lexpansion.lexpress.fr": "tracking.bp01.net",
+  "tr.news.lexpress.fr": "tracking.bp01.net",
+  "tr.news.maisonfoody.com": "tracking.bp01.net",
+  "tr.news.mdbp.fr": "tracking.bp01.net",
+  "tr.news.meillandrichardier.com": "tracking.bp01.net",
+  "tr.news.mi-oferta.es": "tracking.bp01.net",
+  "tr.news.perfectstay.com": "tracking.bp01.net",
+  "tr.news.smartdeals-transavia-fr.com": "tracking.bp01.net",
+  "tr.news.smartdealstransavia-fr.com": "tracking.bp01.net",
+  "tr.news.sport2000.fr": "tracking.bp01.net",
+  "tr.news.thelist-emirates.fr": "tracking.bp01.net",
+  "tr.news.toocampmail.com": "tracking.bp01.net",
+  "tr.news.vipmag.fr": "tracking.bp01.net",
+  "tr.news.voyagesleclerc.com": "tracking.bp01.net",
+  "tr.news.vraaguwofferte.be": "tracking.bp01.net",
+  "tr.news.younited-coach.com": "tracking.bp01.net",
+  "tr.news.younited-credit.com": "tracking.bp01.net",
+  "tr.news2pjms.fr": "tracking.bp01.net",
+  "tr.news6.cdiscount.com": "tracking.bp01.net",
+  "tr.newsletter.afpa.fr": "tracking.bp01.net",
+  "tr.newsletter.assuragency.net": "tracking.bp01.net",
+  "tr.newsletter.bouygues-construction.com": "tracking.bp01.net",
+  "tr.newsletter.capdecision.fr": "tracking.bp01.net",
+  "tr.newsletter.location.boulanger.com": "tracking.bp01.net",
+  "tr.newsletter.meilleurmobile.com": "tracking.bp01.net",
+  "tr.newsletter.milleis.fr": "tracking.bp01.net",
+  "tr.newsletter.younited-credit.com": "tracking.bp01.net",
+  "tr.newsletters.odalys-vacances.com": "tracking.bp01.net",
+  "tr.newsmarketing.allopneus.com": "tracking.bp01.net",
+  "tr.nl.2wls.net": "tracking.bp01.net",
+  "tr.nl.mondo-shop.fr": "tracking.bp01.net",
+  "tr.nl.services-sncf.com": "tracking.bp01.net",
+  "tr.nl2.sncf-fidelite.com": "tracking.bp01.net",
+  "tr.notification-gdpr.cafineo.fr": "tracking.bp01.net",
+  "tr.notification-gdpr.cofinoga.fr": "tracking.bp01.net",
+  "tr.notification-gdpr.domofinance.fr": "tracking.bp01.net",
+  "tr.notification-gdpr.sygmabybnpparibas-pf.com": "tracking.bp01.net",
+  "tr.notification.banque-revillon.fr": "tracking.bp01.net",
+  "tr.notification.cafineo.fr": "tracking.bp01.net",
+  "tr.notification.cdiscount.com": "tracking.bp01.net",
+  "tr.notification.cetelem.fr": "tracking.bp01.net",
+  "tr.notification.credit-moderne.fr": "tracking.bp01.net",
+  "tr.notification.norrsken.fr": "tracking.bp01.net",
+  "tr.np6.com": "tracking.bp01.net",
+  "tr.observatoire.musee-orsay.fr": "tracking.bp01.net",
+  "tr.offerte.migliorifornitori.it": "tracking.bp01.net",
+  "tr.offre-companeo.com": "tracking.bp01.net",
+  "tr.offres-professionnelles.fr": "tracking.bp01.net",
+  "tr.offres.01net.com": "tracking.bp01.net",
+  "tr.offres.bfmtv.com": "tracking.bp01.net",
+  "tr.offrevip.banque-casino.fr": "tracking.bp01.net",
+  "tr.offrevip.floa.fr": "tracking.bp01.net",
+  "tr.orange-lease.fr": "tracking.bp01.net",
+  "tr.orcamentos-companeo.pt": "tracking.bp01.net",
+  "tr.panels-mediametrie.fr": "tracking.bp01.net",
+  "tr.pole-emploi-services.com": "tracking.bp01.net",
+  "tr.politicolive.eu": "tracking.bp01.net",
+  "tr.politicomarketing.eu": "tracking.bp01.net",
+  "tr.portail.afpa.fr": "tracking.bp01.net",
+  "tr.prevention.harmonie-mutuelle.fr": "tracking.bp01.net",
+  "tr.preventivo.risparmiazienda.it": "tracking.bp01.net",
+  "tr.pro.odalys-vacances.com": "tracking.bp01.net",
+  "tr.quotes.digital": "tracking.bp01.net",
+  "tr.quotes4business.info": "tracking.bp01.net",
+  "tr.ra.cofinoga.fr": "tracking.bp01.net",
+  "tr.ratm.espmp-agfr.net": "tracking.bp01.net",
+  "tr.read.glose.com": "tracking.bp01.net",
+  "tr.redaction.essentiel-sante-magazine.fr": "tracking.bp01.net",
+  "tr.reglementaire.emailing.bnpparibas": "tracking.bp01.net",
+  "tr.route-solutiondata.fr": "tracking.bp01.net",
+  "tr.satisfaction.alinea.com": "tracking.bp01.net",
+  "tr.satisfaction.groupe-pv-cp.com": "tracking.bp01.net",
+  "tr.scienceshumaines.pro": "tracking.bp01.net",
+  "tr.secteurentreprises.harmonie-mutuelle.fr": "tracking.bp01.net",
+  "tr.serviceclient.younited-credit.com": "tracking.bp01.net",
+  "tr.services.alinea.com": "tracking.bp01.net",
+  "tr.services.caradisiac.com": "tracking.bp01.net",
+  "tr.servicesclients.canalplus.fr": "tracking.bp01.net",
+  "tr.servicoaocliente.younited-credit.com": "tracking.bp01.net",
+  "tr.smtp1.email-mediapost.fr": "tracking.bp01.net",
+  "tr.solution.uneo.fr": "tracking.bp01.net",
+  "tr.souscription.floa.fr": "tracking.bp01.net",
+  "tr.toner-service.fr": "tracking.bp01.net",
+  "tr.toner-services.fr": "tracking.bp01.net",
+  "tr.trafficnews.lyria.com": "tracking.bp01.net",
+  "tr.uk.icicibank.com": "tracking.bp01.net",
+  "tr.urfk03u.espmp-nifr.net": "tracking.bp01.net",
+  "tr.ville.bordeaux.fr": "tracking.bp01.net",
+  "tr.votrealarme.securitasdirect.fr": "tracking.bp01.net",
+  "tr.vous.hellobank.fr": "tracking.bp01.net",
+  "tr.welcome.easyviaggio.com": "tracking.bp01.net",
+  "tr.welcome.easyvoyage.co.uk": "tracking.bp01.net",
+  "tr.welcome.easyvoyage.com": "tracking.bp01.net",
+  "tr.welcome.lexpress.fr": "tracking.bp01.net",
+  "tr.welcome.vipmag.fr": "tracking.bp01.net",
+  "tr1.citroen-ipsos.com": "tracking.bp01.net",
+  "tr1.mailperf.com": "tracking.bp01.net",
+  "trpreviews.bp01.net": "tracking.bp01.net",
+  "abo.schibsted.no": "p03.hs.eloqua.com",
+  "access.acspubs.org": "p01.hs.eloqua.com",
+  "access.sunpower.com": "p01.hs.eloqua.com",
+  "acq-hk.americanexpress.com": "p01.hs.eloqua.com",
+  "acq-sg.americanexpress.com": "p01.hs.eloqua.com",
+  "activity.asce.org": "p01.hs.eloqua.com",
+  "admina.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "adminspace.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "advantages.americanexpress.com": "p01.hs.eloqua.com",
+  "advise.gallup.com": "p04.hs.eloqua.com",
+  "afhleads.keurig.ca": "p04.hs.eloqua.com",
+  "agexpo.americanexpress.com": "p01.hs.eloqua.com",
+  "ai.mist.com": "p04.hs.eloqua.com",
+  "ai.thermo.com": "p04.hs.eloqua.com",
+  "aladdinupdate.blackrock.com": "p04.hs.eloqua.com",
+  "alertsatwork.americanexpress.com": "p01.hs.eloqua.com",
+  "alquiler.carflex.es": "p06.hs.eloqua.com",
+  "amplify.strategic-i.com": "p04.hs.eloqua.com",
+  "analytics.aba.com": "p01.hs.eloqua.com",
+  "analytics.cognyte.com": "p06.hs.eloqua.com",
+  "analytics.ferguson.com": "p04.hs.eloqua.com",
+  "answers.teradata.pl": "p04.hs.eloqua.com",
+  "apac.zendesk.com": "p03.hs.eloqua.com",
+  "apcinfo.motorolasolutions.com": "p04.hs.eloqua.com",
+  "apcinfo.vertexstandard.com": "p04.hs.eloqua.com",
+  "app.assetscem.endeavorb2b.com": "p01.hs.eloqua.com",
+  "app.assetsdes.endeavorb2b.com": "p01.hs.eloqua.com",
+  "app.assetsmanu.endeavorb2b.com": "p01.hs.eloqua.com",
+  "app.bncontacto.fi.cr": "p04.hs.eloqua.com",
+  "app.business.westernunion.com": "p01.hs.eloqua.com",
+  "app.demand.ptc.com": "p01.hs.eloqua.com",
+  "app.go.bge.com": "p04.hs.eloqua.com",
+  "app.gopsusports.com": "p03.hs.eloqua.com",
+  "app.info.coopenae.fi.cr": "p04.hs.eloqua.com",
+  "app.information.maileva.com": "p06.hs.eloqua.com",
+  "app.mktg.genesys.com": "p04.hs.eloqua.com",
+  "app.thomsonreuters.com": "p04.hs.eloqua.com",
+  "app.updates.digicert.com": "p04.hs.eloqua.com",
+  "appinfosoryz.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "appointments.providence.org": "p04.hs.eloqua.com",
+  "apps.imaginecommunications.com": "p01.hs.eloqua.com",
+  "appsecurezomation.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "ask.legalsolutions.thomsonreuters.info": "p04.hs.eloqua.com",
+  "auforex.americanexpress.com": "p01.hs.eloqua.com",
+  "avaya-engage.avaya.com": "p03.hs.eloqua.com",
+  "b.bloomberglp.com": "p03.hs.eloqua.com",
+  "b2bmarketing.swisscom.ch": "p06.hs.eloqua.com",
+  "b2bmarketingsb.swisscom.ch": "p06.hs.eloqua.com",
+  "b2bmarketingsb.swisscom.com": "p06.hs.eloqua.com",
+  "b2bmarketingsb2.swisscom.com": "p06.hs.eloqua.com",
+  "b2bmkt.lge.co.kr": "p03.hs.eloqua.com",
+  "badirectoryz.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "banmlkjih.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "bapages.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "belgium.wolterskluwer.com": "p06.hs.eloqua.com",
+  "belong.curtin.edu.au": "p07.hs.eloqua.com",
+  "beneficios.davivienda.cr": "p04.hs.eloqua.com",
+  "beneficios.davivienda.hn": "p04.hs.eloqua.com",
+  "beuniquelyinsured.selective.com": "p03.hs.eloqua.com",
+  "bldr.mkt.samsung.com": "p03.hs.eloqua.com",
+  "bmages.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "boutiqueal.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "business-cards.americanexpress.com": "p01.hs.eloqua.com",
+  "business.samsungusa.com": "p03.hs.eloqua.com",
+  "business.vodafone.co.nz": "p07.hs.eloqua.com",
+  "business.vodafone.com": "p01.hs.eloqua.com",
+  "businessaffiliate.americanexpress.com": "p01.hs.eloqua.com",
+  "businessengage.comcast.com": "p04.hs.eloqua.com",
+  "businessmaking.progress.com": "p01.hs.eloqua.com",
+  "by.bollore-logistics.com": "p06.hs.eloqua.com",
+  "ca.creditacceptance.com": "p03.hs.eloqua.com",
+  "ca.mattamyhomes.com": "p03.hs.eloqua.com",
+  "camagess.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "campaign-fbsg.fujifilm.com": "p01.hs.eloqua.com",
+  "campaign.amadeus.com": "p06.hs.eloqua.com",
+  "campaign.bbmbonnier.se": "p06.hs.eloqua.com",
+  "campaign.hach.com.cn": "p07.hs.eloqua.com",
+  "campaign.item-china.cn": "p07.hs.eloqua.com",
+  "campaign.motorolasolutions.com": "p04.hs.eloqua.com",
+  "campaign.onetrust.com": "p06.hs.eloqua.com",
+  "campaign.ruukki.com": "p01.hs.eloqua.com",
+  "campaigninfo.motorolasolutions.com": "p04.hs.eloqua.com",
+  "campaignresources.motorolasolutions.com": "p04.hs.eloqua.com",
+  "campaigns.amadeus.com": "p06.hs.eloqua.com",
+  "campaigns.cm.be": "p06.hs.eloqua.com",
+  "campaigns.engage.cebglobal.com": "p01.hs.eloqua.com",
+  "campaigns.husky.ca": "p01.hs.eloqua.com",
+  "campaigns.mc.be": "p06.hs.eloqua.com",
+  "campaigns.panasonic.eu": "p01.hs.eloqua.com",
+  "carburanalyticsspace.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "carburantsanalyticsa.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "carburez-a-l-emotion.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "cardexchanges.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "cardshare.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "carreras.unisabana.edu.co": "p04.hs.eloqua.com",
+  "cascadion.thermofisher.com": "p04.hs.eloqua.com",
+  "catracking.finning.com": "p04.hs.eloqua.com",
+  "ccaas.avaya.com": "p03.hs.eloqua.com",
+  "ccmd.coveredca.com": "p03.hs.eloqua.com",
+  "challengeh.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "channelusa.samsung.com": "p03.hs.eloqua.com",
+  "choose.nu.edu": "p03.hs.eloqua.com",
+  "clicks.tableau.com": "p01.hs.eloqua.com",
+  "clinical.questdiagnostics.com": "p04.hs.eloqua.com",
+  "clogindustresmails.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "cloud.aspiresys.com": "p07.hs.eloqua.com",
+  "cm-in.americanexpress.com": "p01.hs.eloqua.com",
+  "cm-jp.americanexpress.com": "p01.hs.eloqua.com",
+  "cm-sg.americanexpress.com": "p01.hs.eloqua.com",
+  "cockpitdcbaima.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "cockpitexchanges.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "cockpitproximity.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "cockpitwaykonectoryz.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "comm.toro.com": "p01.hs.eloqua.com",
+  "commanslabdpp.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "commanslabdspace.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "comms.hello.global.ntt": "p03.hs.eloqua.com",
+  "communicatie.vub.be": "p03.hs.eloqua.com",
+  "communication.imec.be": "p06.hs.eloqua.com",
+  "communication.imechyperspectral.com": "p06.hs.eloqua.com",
+  "communication.ricoh.fr": "p03.hs.eloqua.com",
+  "comunicaciones.davivienda.com.pa": "p04.hs.eloqua.com",
+  "comunicaciones.daviviendacorredores.com": "p04.hs.eloqua.com",
+  "comunicazioni.bancamediolanum.it": "p06.hs.eloqua.com",
+  "connect-qa.netapp.com": "p01.hs.eloqua.com",
+  "connect.abm.netapp.com": "p01.hs.eloqua.com",
+  "connect.acams.org": "p04.hs.eloqua.com",
+  "connect.acspubs.org": "p01.hs.eloqua.com",
+  "connect.blog.netapp.com": "p01.hs.eloqua.com",
+  "connect.caringcrowd.org": "p04.hs.eloqua.com",
+  "connect.chamberlain.edu": "p04.hs.eloqua.com",
+  "connect.cloud.netapp.com": "p01.hs.eloqua.com",
+  "connect.cognex.com": "p03.hs.eloqua.com",
+  "connect.content-hub.netapp.com": "p01.hs.eloqua.com",
+  "connect.customers.netapp.com": "p01.hs.eloqua.com",
+  "connect.dimensiondata.com": "p03.hs.eloqua.com",
+  "connect.flowroute.com": "p01.hs.eloqua.com",
+  "connect.intel.com": "p03.hs.eloqua.com",
+  "connect.medical.rossu.edu": "p04.hs.eloqua.com",
+  "connect.mycwt.com": "p04.hs.eloqua.com",
+  "connect.netapp.co.il": "p01.hs.eloqua.com",
+  "connect.netapp.co.kr": "p01.hs.eloqua.com",
+  "connect.netapp.com": "p01.hs.eloqua.com",
+  "connect.netapp.com.au": "p01.hs.eloqua.com",
+  "connect.netapp.com.br": "p01.hs.eloqua.com",
+  "connect.netapp.com.sg": "p01.hs.eloqua.com",
+  "connect.netapp.com.tw": "p01.hs.eloqua.com",
+  "connect.partner-connect.netapp.com": "p01.hs.eloqua.com",
+  "connect.senecacollege.ca": "p04.hs.eloqua.com",
+  "connect.telstrawholesale.com": "p07.hs.eloqua.com",
+  "connect.zebra.com": "p01.hs.eloqua.com",
+  "connectfpc.zebra.com": "p01.hs.eloqua.com",
+  "connection.arrow.com": "p01.hs.eloqua.com",
+  "connectlp.keysight.com": "p04.hs.eloqua.com",
+  "connectportal.netapp.com": "p01.hs.eloqua.com",
+  "connecttest.arubanetworks.com": "p04.hs.eloqua.com",
+  "consult.americanexpress.com": "p01.hs.eloqua.com",
+  "consulting.guidehouse.com": "p03.hs.eloqua.com",
+  "contact-us.adp.ca": "p01.hs.eloqua.com",
+  "contact.dksh.com": "p03.hs.eloqua.com",
+  "contact.lesmills.com": "p07.hs.eloqua.com",
+  "contact.samsungsds.com": "p07.hs.eloqua.com",
+  "contact.sjdaccountancy.com": "p03.hs.eloqua.com",
+  "contact.tsr-net.co.jp": "p03.hs.eloqua.com",
+  "contactforms.53.com": "p01.hs.eloqua.com",
+  "contacto.gtc.com.gt": "p04.hs.eloqua.com",
+  "content-datacenter.hello.global.ntt": "p03.hs.eloqua.com",
+  "content.cercle-actionnaires.bnpparibas": "p06.hs.eloqua.com",
+  "content.eaton.com": "p01.hs.eloqua.com",
+  "content.hydraulicsproducts.com": "p04.hs.eloqua.com",
+  "content.juniper.net": "p01.hs.eloqua.com",
+  "content.tatatelebusiness.com": "p06.hs.eloqua.com",
+  "content.verint.com": "p01.hs.eloqua.com",
+  "conteudos.lp.deloittecomunicacao.com.br": "p04.hs.eloqua.com",
+  "conversations.al-enterprise.com": "p01.hs.eloqua.com",
+  "cookie.amerigas.com": "p03.hs.eloqua.com",
+  "cookie.cynch.com": "p03.hs.eloqua.com",
+  "cookiejar.atea.no": "p06.hs.eloqua.com",
+  "cookies.ec4u.com": "p01.hs.eloqua.com",
+  "cookies.engage.russellinvestments.com": "p01.hs.eloqua.com",
+  "cookies.siemens-energy.com": "p04.hs.eloqua.com",
+  "cookies.siemens.com": "p06.hs.eloqua.com",
+  "cookietracking.eatonpowersource.com": "p01.hs.eloqua.com",
+  "corporate.americanexpress.com": "p01.hs.eloqua.com",
+  "corporate.mattamyhomes.com": "p03.hs.eloqua.com",
+  "corporateforms.americanexpress.com": "p01.hs.eloqua.com",
+  "create.unity.com": "p06.hs.eloqua.com",
+  "create.unity3d.com": "p06.hs.eloqua.com",
+  "cs.coopeservidores.fi.cr": "p04.hs.eloqua.com",
+  "cs.hot.net.il": "p04.hs.eloqua.com",
+  "cs.nexttv.co.il": "p04.hs.eloqua.com",
+  "ctc.wolterskluwer.com": "p01.hs.eloqua.com",
+  "cyber-pages.att.com": "p03.hs.eloqua.com",
+  "cyber-tracking.att.com": "p03.hs.eloqua.com",
+  "data.aonunited.com": "p01.hs.eloqua.com",
+  "de.inform.janssenpro.eu": "p03.hs.eloqua.com",
+  "de.secure.sonosite.com": "p01.hs.eloqua.com",
+  "dependable-s.hyster.com": "p03.hs.eloqua.com",
+  "design.endeavorb2b.com": "p01.hs.eloqua.com",
+  "design.informabi.com": "p01.hs.eloqua.com",
+  "dg.irco.com": "p06.hs.eloqua.com",
+  "dhlsupplychain.dhl.com": "p01.hs.eloqua.com",
+  "dialogue.de.mazda.ch": "p06.hs.eloqua.com",
+  "dialogue.fr.mazda.be": "p06.hs.eloqua.com",
+  "dialogue.fr.mazda.ch": "p06.hs.eloqua.com",
+  "dialogue.mazda.at": "p06.hs.eloqua.com",
+  "dialogue.mazda.ch": "p06.hs.eloqua.com",
+  "dialogue.mazda.co.uk": "p06.hs.eloqua.com",
+  "dialogue.mazda.cz": "p06.hs.eloqua.com",
+  "dialogue.mazda.de": "p06.hs.eloqua.com",
+  "dialogue.mazda.dk": "p06.hs.eloqua.com",
+  "dialogue.mazda.es": "p06.hs.eloqua.com",
+  "dialogue.mazda.eu": "p06.hs.eloqua.com",
+  "dialogue.mazda.fr": "p06.hs.eloqua.com",
+  "dialogue.mazda.hr": "p06.hs.eloqua.com",
+  "dialogue.mazda.hu": "p06.hs.eloqua.com",
+  "dialogue.mazda.ie": "p06.hs.eloqua.com",
+  "dialogue.mazda.it": "p06.hs.eloqua.com",
+  "dialogue.mazda.lu": "p06.hs.eloqua.com",
+  "dialogue.mazda.nl": "p06.hs.eloqua.com",
+  "dialogue.mazda.no": "p06.hs.eloqua.com",
+  "dialogue.mazda.pl": "p06.hs.eloqua.com",
+  "dialogue.mazda.pt": "p06.hs.eloqua.com",
+  "dialogue.mazda.ro": "p06.hs.eloqua.com",
+  "dialogue.mazda.se": "p06.hs.eloqua.com",
+  "dialogue.mazda.si": "p06.hs.eloqua.com",
+  "dialogue.mazda.sk": "p06.hs.eloqua.com",
+  "dialogue.nl.mazda.be": "p06.hs.eloqua.com",
+  "diamages.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "digital-engineering.de": "p01.hs.eloqua.com",
+  "digital.att.com": "p04.hs.eloqua.com",
+  "digitalworkplace.ricoh.fr": "p03.hs.eloqua.com",
+  "directoryzcb.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "diressources.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "discover.10play.com.au": "p07.hs.eloqua.com",
+  "discover.clarivate.com": "p06.hs.eloqua.com",
+  "discover.conversantmedia.com": "p03.hs.eloqua.com",
+  "discover.parexel.com": "p04.hs.eloqua.com",
+  "discover.parker.com": "p01.hs.eloqua.com",
+  "discover.phenomenex.com": "p04.hs.eloqua.com",
+  "discover.vivo-shopping.com": "p06.hs.eloqua.com",
+  "diwebstatics.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "dmkt.solutions.cas.org": "p04.hs.eloqua.com",
+  "dongesion.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "download.dnv.com": "p06.hs.eloqua.com",
+  "download.dnvgl.com": "p06.hs.eloqua.com",
+  "dx.thermofisher.com": "p04.hs.eloqua.com",
+  "e.beckmancoulter.com": "p01.hs.eloqua.com",
+  "e.darpro-solutions.com": "p04.hs.eloqua.com",
+  "e.fdm.dk": "p03.hs.eloqua.com",
+  "e1c.curtisswrightds.com": "p03.hs.eloqua.com",
+  "easymonitoringnm.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "eb.endeavorb2b.com": "p01.hs.eloqua.com",
+  "ebusinesssr.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "ec.infosys.com": "p03.hs.eloqua.com",
+  "edpsmart.edpcomunicacao.com.br": "p03.hs.eloqua.com",
+  "education.bendigotafe.edu.au": "p07.hs.eloqua.com",
+  "education.moodybible.org": "p01.hs.eloqua.com",
+  "education.seek.intel.com": "p03.hs.eloqua.com",
+  "efficiency.nl.visma.com": "p06.hs.eloqua.com",
+  "efficiency.visma.com": "p06.hs.eloqua.com",
+  "ehtel.endress.com": "p06.hs.eloqua.com",
+  "election-sandwich-en-stationi.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "eloq.fiducial.fr": "p06.hs.eloqua.com",
+  "eloqua-trackings.unity.com": "p06.hs.eloqua.com",
+  "eloqua-trackings.unity3d.com": "p06.hs.eloqua.com",
+  "eloqua-uat.motorolasolutions.com": "p04.hs.eloqua.com",
+  "eloqua.53.com": "p04.hs.eloqua.com",
+  "eloqua.cphi-china.cn": "p04.hs.eloqua.com",
+  "eloqua.eft.com": "p03.hs.eloqua.com",
+  "eloqua.erwin.com": "p04.hs.eloqua.com",
+  "eloqua.ethicalcorp.com": "p03.hs.eloqua.com",
+  "eloqua.infobip.com": "p06.hs.eloqua.com",
+  "eloqua.liberty.edu": "p04.hs.eloqua.com",
+  "eloqua.nissan.com.tw": "p07.hs.eloqua.com",
+  "eloqua.roche.com": "p01.hs.eloqua.com",
+  "eloqua.talktalkbusiness.co.uk": "p01.hs.eloqua.com",
+  "eloqua.teknos.com": "p06.hs.eloqua.com",
+  "eloquamarketing.masterlock.com": "p04.hs.eloqua.com",
+  "eloquatracking.iqvia.com": "p06.hs.eloqua.com",
+  "eloquatracking.relayr.io": "p04.hs.eloqua.com",
+  "elq-trk.fullsail.edu": "p04.hs.eloqua.com",
+  "elq.accuity.com": "p01.hs.eloqua.com",
+  "elq.blackrock.com": "p04.hs.eloqua.com",
+  "elq.cirium.com": "p01.hs.eloqua.com",
+  "elq.eg.co.uk": "p01.hs.eloqua.com",
+  "elq.egi.co.uk": "p01.hs.eloqua.com",
+  "elq.farmplan.co.uk": "p04.hs.eloqua.com",
+  "elq.forrester.com": "p01.hs.eloqua.com",
+  "elq.hamamatsu.com": "p07.hs.eloqua.com",
+  "elq.icis.com": "p01.hs.eloqua.com",
+  "elq.irobot.com": "p04.hs.eloqua.com",
+  "elq.keysight.com": "p04.hs.eloqua.com",
+  "elq.macu.com": "p01.hs.eloqua.com",
+  "elq.mouser.ca": "p03.hs.eloqua.com",
+  "elq.mouser.com": "p03.hs.eloqua.com",
+  "elq.redhat.com": "p01.hs.eloqua.com",
+  "elq.sonicwall.com": "p01.hs.eloqua.com",
+  "elq.symantec.com": "p03.hs.eloqua.com",
+  "elq.utas.edu.au": "p07.hs.eloqua.com",
+  "elqact.gartner.com": "p03.hs.eloqua.com",
+  "elqapp.spectrum.com": "p03.hs.eloqua.com",
+  "elqjourney.pwc.com": "p06.hs.eloqua.com",
+  "elqtrack.kubotausa.com": "p03.hs.eloqua.com",
+  "elqtracking.capella.edu": "p03.hs.eloqua.com",
+  "elqtracking.cengage.com": "p01.hs.eloqua.com",
+  "elqtracking.flexera.com": "p01.hs.eloqua.com",
+  "elqtracking.hitachi-powergrids.com": "p04.hs.eloqua.com",
+  "elqtracking.hitachienergy.com": "p04.hs.eloqua.com",
+  "elqtracking.macegroup.com": "p06.hs.eloqua.com",
+  "elqtracking.medidata.com": "p01.hs.eloqua.com",
+  "elqtracking.revenera.com": "p01.hs.eloqua.com",
+  "elqtracking.strayer.edu": "p03.hs.eloqua.com",
+  "elqtracking.victorops.com": "p04.hs.eloqua.com",
+  "elqtracking1.tetrapak.com": "p06.hs.eloqua.com",
+  "elqtrck.motor.no": "p06.hs.eloqua.com",
+  "elqtrck.nanawall.com": "p01.hs.eloqua.com",
+  "elqtrk.ext.hp.com": "p04.hs.eloqua.com",
+  "elqtrk.hk.morningstar.com": "p01.hs.eloqua.com",
+  "elqtrk.insight.tech": "p03.hs.eloqua.com",
+  "elqtrk.intel.cn": "p03.hs.eloqua.com",
+  "elqtrk.intel.co.il": "p03.hs.eloqua.com",
+  "elqtrk.intel.co.jp": "p03.hs.eloqua.com",
+  "elqtrk.intel.co.kr": "p03.hs.eloqua.com",
+  "elqtrk.intel.co.uk": "p03.hs.eloqua.com",
+  "elqtrk.intel.com": "p03.hs.eloqua.com",
+  "elqtrk.intel.com.au": "p03.hs.eloqua.com",
+  "elqtrk.intel.com.br": "p03.hs.eloqua.com",
+  "elqtrk.intel.com.tr": "p03.hs.eloqua.com",
+  "elqtrk.intel.com.tw": "p03.hs.eloqua.com",
+  "elqtrk.intel.de": "p03.hs.eloqua.com",
+  "elqtrk.intel.es": "p03.hs.eloqua.com",
+  "elqtrk.intel.fr": "p03.hs.eloqua.com",
+  "elqtrk.intel.in": "p03.hs.eloqua.com",
+  "elqtrk.intel.io": "p03.hs.eloqua.com",
+  "elqtrk.intel.it": "p03.hs.eloqua.com",
+  "elqtrk.intel.la": "p03.hs.eloqua.com",
+  "elqtrk.intel.pl": "p03.hs.eloqua.com",
+  "elqtrk.intel.ru": "p03.hs.eloqua.com",
+  "elqtrk.intel.sg": "p03.hs.eloqua.com",
+  "elqtrk.intelrealsense.com": "p03.hs.eloqua.com",
+  "elqtrk.morningstar.be": "p01.hs.eloqua.com",
+  "elqtrk.morningstar.ca": "p01.hs.eloqua.com",
+  "elqtrk.morningstar.co.uk": "p01.hs.eloqua.com",
+  "elqtrk.morningstar.com": "p01.hs.eloqua.com",
+  "elqtrk.morningstar.com.mx": "p01.hs.eloqua.com",
+  "elqtrk.morningstar.de": "p01.hs.eloqua.com",
+  "elqtrk.morningstar.dk": "p01.hs.eloqua.com",
+  "elqtrk.morningstar.es": "p01.hs.eloqua.com",
+  "elqtrk.morningstar.fi": "p01.hs.eloqua.com",
+  "elqtrk.morningstar.fr": "p01.hs.eloqua.com",
+  "elqtrk.morningstar.hk": "p01.hs.eloqua.com",
+  "elqtrk.morningstar.it": "p01.hs.eloqua.com",
+  "elqtrk.morningstar.nl": "p01.hs.eloqua.com",
+  "elqtrk.morningstar.no": "p01.hs.eloqua.com",
+  "elqtrk.morningstar.pt": "p01.hs.eloqua.com",
+  "elqtrk.morningstar.se": "p01.hs.eloqua.com",
+  "elqtrk.morningstarbr.com": "p01.hs.eloqua.com",
+  "elqtrk.morningstarfunds.ie": "p01.hs.eloqua.com",
+  "elqtrk.my.morningstar.com": "p01.hs.eloqua.com",
+  "elqtrk.rsmcanada.com": "p01.hs.eloqua.com",
+  "elqtrk.rsmus.com": "p01.hs.eloqua.com",
+  "elqtrk.sg.morningstar.com": "p01.hs.eloqua.com",
+  "elqtrk.thailand.intel.com": "p03.hs.eloqua.com",
+  "elqtrk.tw.morningstar.com": "p01.hs.eloqua.com",
+  "els298548211.medtronic.com": "p01.hs.eloqua.com",
+  "email-hk.americanexpress.com": "p01.hs.eloqua.com",
+  "email-particuliers.engie.fr": "p06.hs.eloqua.com",
+  "email-tw.americanexpress.com": "p01.hs.eloqua.com",
+  "email.fxcm.com": "p01.hs.eloqua.com",
+  "email.hockeytown.com": "p04.hs.eloqua.com",
+  "email.lottehotel.com": "p06.hs.eloqua.com",
+  "email.mymandg.co.uk": "p06.hs.eloqua.com",
+  "emea.info.mouser.com": "p03.hs.eloqua.com",
+  "emeaevents.americanexpress.com": "p01.hs.eloqua.com",
+  "empresa.ricoh.es": "p03.hs.eloqua.com",
+  "endpoint2.secureforms.mcafee.com": "p01.hs.eloqua.com",
+  "energy.eneco.be": "p06.hs.eloqua.com",
+  "eng.info.mouser.com": "p03.hs.eloqua.com",
+  "engage-emea.jll.com": "p03.hs.eloqua.com",
+  "engage.3m.co.cr": "p04.hs.eloqua.com",
+  "engage.3m.co.id": "p04.hs.eloqua.com",
+  "engage.3m.co.ke": "p04.hs.eloqua.com",
+  "engage.3m.co.kr": "p04.hs.eloqua.com",
+  "engage.3m.co.rs": "p04.hs.eloqua.com",
+  "engage.3m.co.th": "p04.hs.eloqua.com",
+  "engage.3m.co.uk": "p04.hs.eloqua.com",
+  "engage.3m.co.za": "p04.hs.eloqua.com",
+  "engage.3m.com.ar": "p04.hs.eloqua.com",
+  "engage.3m.com.au": "p04.hs.eloqua.com",
+  "engage.3m.com.bo": "p04.hs.eloqua.com",
+  "engage.3m.com.br": "p04.hs.eloqua.com",
+  "engage.3m.com.by": "p04.hs.eloqua.com",
+  "engage.3m.com.cn": "p04.hs.eloqua.com",
+  "engage.3m.com.co": "p04.hs.eloqua.com",
+  "engage.3m.com.do": "p04.hs.eloqua.com",
+  "engage.3m.com.ec": "p04.hs.eloqua.com",
+  "engage.3m.com.ee": "p04.hs.eloqua.com",
+  "engage.3m.com.es": "p04.hs.eloqua.com",
+  "engage.3m.com.gt": "p04.hs.eloqua.com",
+  "engage.3m.com.hk": "p04.hs.eloqua.com",
+  "engage.3m.com.hn": "p04.hs.eloqua.com",
+  "engage.3m.com.hr": "p04.hs.eloqua.com",
+  "engage.3m.com.kw": "p04.hs.eloqua.com",
+  "engage.3m.com.kz": "p04.hs.eloqua.com",
+  "engage.3m.com.lv": "p04.hs.eloqua.com",
+  "engage.3m.com.mx": "p04.hs.eloqua.com",
+  "engage.3m.com.my": "p04.hs.eloqua.com",
+  "engage.3m.com.ni": "p04.hs.eloqua.com",
+  "engage.3m.com.om": "p04.hs.eloqua.com",
+  "engage.3m.com.pa": "p04.hs.eloqua.com",
+  "engage.3m.com.pe": "p04.hs.eloqua.com",
+  "engage.3m.com.pk": "p04.hs.eloqua.com",
+  "engage.3m.com.pt": "p04.hs.eloqua.com",
+  "engage.3m.com.py": "p04.hs.eloqua.com",
+  "engage.3m.com.qa": "p04.hs.eloqua.com",
+  "engage.3m.com.ro": "p04.hs.eloqua.com",
+  "engage.3m.com.sa": "p04.hs.eloqua.com",
+  "engage.3m.com.sg": "p04.hs.eloqua.com",
+  "engage.3m.com.sv": "p04.hs.eloqua.com",
+  "engage.3m.com.tr": "p04.hs.eloqua.com",
+  "engage.3m.com.tw": "p04.hs.eloqua.com",
+  "engage.3m.com.ua": "p04.hs.eloqua.com",
+  "engage.3m.com.uy": "p04.hs.eloqua.com",
+  "engage.3m.com.vn": "p04.hs.eloqua.com",
+  "engage.3mae.ae": "p04.hs.eloqua.com",
+  "engage.3maustria.at": "p04.hs.eloqua.com",
+  "engage.3mbelgie.be": "p04.hs.eloqua.com",
+  "engage.3mbelgique.be": "p04.hs.eloqua.com",
+  "engage.3mbulgaria.bg": "p04.hs.eloqua.com",
+  "engage.3mcanada.ca": "p04.hs.eloqua.com",
+  "engage.3mcesko.cz": "p04.hs.eloqua.com",
+  "engage.3mchile.cl": "p04.hs.eloqua.com",
+  "engage.3mcompany.jp": "p04.hs.eloqua.com",
+  "engage.3mcompany.lk": "p04.hs.eloqua.com",
+  "engage.3mdanmark.dk": "p04.hs.eloqua.com",
+  "engage.3mdeutschland.de": "p04.hs.eloqua.com",
+  "engage.3megypt.com.eg": "p04.hs.eloqua.com",
+  "engage.3mfrance.fr": "p04.hs.eloqua.com",
+  "engage.3mhellas.gr": "p04.hs.eloqua.com",
+  "engage.3mindia.in": "p04.hs.eloqua.com",
+  "engage.3mireland.ie": "p04.hs.eloqua.com",
+  "engage.3misrael.co.il": "p04.hs.eloqua.com",
+  "engage.3mitalia.it": "p04.hs.eloqua.com",
+  "engage.3mlietuva.lt": "p04.hs.eloqua.com",
+  "engage.3mmagyarorszag.hu": "p04.hs.eloqua.com",
+  "engage.3mmaroc.ma": "p04.hs.eloqua.com",
+  "engage.3mnederland.nl": "p04.hs.eloqua.com",
+  "engage.3mnorge.no": "p04.hs.eloqua.com",
+  "engage.3mnz.co.nz": "p04.hs.eloqua.com",
+  "engage.3mphilippines.com.ph": "p04.hs.eloqua.com",
+  "engage.3mpolska.pl": "p04.hs.eloqua.com",
+  "engage.3mrussia.ru": "p04.hs.eloqua.com",
+  "engage.3mschweiz.ch": "p04.hs.eloqua.com",
+  "engage.3mslovensko.sk": "p04.hs.eloqua.com",
+  "engage.3msuomi.fi": "p04.hs.eloqua.com",
+  "engage.3msverige.se": "p04.hs.eloqua.com",
+  "engage.avalara.com": "p01.hs.eloqua.com",
+  "engage.dow.com": "p01.hs.eloqua.com",
+  "engage.unisa.edu.au": "p07.hs.eloqua.com",
+  "engage.uq.edu.au": "p07.hs.eloqua.com",
+  "engage2demand.cisco.com": "p03.hs.eloqua.com",
+  "engagemetrics.cisco.com": "p03.hs.eloqua.com",
+  "engageru.3mrussia.ru": "p06.hs.eloqua.com",
+  "engageru2.3mrussia.ru": "p06.hs.eloqua.com",
+  "eqclicks.movember.com": "p07.hs.eloqua.com",
+  "eqs.intuit.com": "p03.hs.eloqua.com",
+  "eqtrack.americashomeplace.com": "p04.hs.eloqua.com",
+  "es.secure.sonosite.com": "p01.hs.eloqua.com",
+  "etc.lghausysusa.com": "p03.hs.eloqua.com",
+  "etk.locusrobotics.com": "p04.hs.eloqua.com",
+  "etrack.ext.arubainstanton.com": "p04.hs.eloqua.com",
+  "etrack.ext.arubanetworks.com": "p04.hs.eloqua.com",
+  "etrack.ext.hpe.com": "p01.hs.eloqua.com",
+  "eu.business.samsung.com": "p06.hs.eloqua.com",
+  "eumeainfo.motorolasolutions.com": "p04.hs.eloqua.com",
+  "eurotax-at.autovistagroup.com": "p06.hs.eloqua.com",
+  "eurotax-pl.autovistagroup.com": "p06.hs.eloqua.com",
+  "event.edb.gov.sg": "p03.hs.eloqua.com",
+  "event.jma.or.jp": "p03.hs.eloqua.com",
+  "event1.thermofisher.com": "p01.hs.eloqua.com",
+  "eventos.lp.deloittecomunicacao.com.br": "p04.hs.eloqua.com",
+  "eventos.usj.es": "p06.hs.eloqua.com",
+  "events.avaya.com": "p03.hs.eloqua.com",
+  "events.engage.cebglobal.com": "p01.hs.eloqua.com",
+  "events.georgiancollege.ca": "p04.hs.eloqua.com",
+  "events.gogoair.com": "p04.hs.eloqua.com",
+  "events.kangan.edu.au": "p07.hs.eloqua.com",
+  "events.mywd.com": "p01.hs.eloqua.com",
+  "events.splunk.com": "p01.hs.eloqua.com",
+  "events.strategic-i.com": "p04.hs.eloqua.com",
+  "experience.aifsabroad.com": "p04.hs.eloqua.com",
+  "experience.jcu.edu.au": "p07.hs.eloqua.com",
+  "experience.limelight.com": "p03.hs.eloqua.com",
+  "experience.phenomenex.com": "p04.hs.eloqua.com",
+  "experience.rsm.com.au": "p07.hs.eloqua.com",
+  "experience.techmahindra.com": "p04.hs.eloqua.com",
+  "experienceal.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "experiencia.coopecaja.fi.cr": "p04.hs.eloqua.com",
+  "explore.agilent.com": "p04.hs.eloqua.com",
+  "explore.att.com": "p04.hs.eloqua.com",
+  "explore.firstnet.com": "p04.hs.eloqua.com",
+  "factory.redbull.racing": "p06.hs.eloqua.com",
+  "febusiness.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "fedcbaii.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "feedback.vegasgoldenknights.com": "p04.hs.eloqua.com",
+  "fhages.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "fpc.acponline.org": "p04.hs.eloqua.com",
+  "fpc.broadway.com": "p04.hs.eloqua.com",
+  "fpc.broadwayacrossamerica.com": "p04.hs.eloqua.com",
+  "fpc.gartner.com": "p04.hs.eloqua.com",
+  "fpc.laerdal.com": "p04.hs.eloqua.com",
+  "fpc.pelican.com": "p04.hs.eloqua.com",
+  "fpc.sage.com": "p06.hs.eloqua.com",
+  "fpc.singleplatform.com": "p04.hs.eloqua.com",
+  "fpcdallasstars.nhl.com": "p04.hs.eloqua.com",
+  "fpcsbulls.nba.com": "p04.hs.eloqua.com",
+  "future.uwindsor.ca": "p02.hs.eloqua.com",
+  "gbtracking.finning.com": "p04.hs.eloqua.com",
+  "get.sage.com": "p06.hs.eloqua.com",
+  "go.blackboard.com": "p01.hs.eloqua.com",
+  "go.blackrock.com": "p04.hs.eloqua.com",
+  "go.morningstar.com.au": "p04.hs.eloqua.com",
+  "go.oracle.com": "p03.hs.eloqua.com",
+  "go2.mathworks.com": "p03.hs.eloqua.com",
+  "gocertiport.pearsonvue.com": "p03.hs.eloqua.com",
+  "gsasolutionssecure.gsa.gov": "p03.hs.eloqua.com",
+  "hameln.sergroup.com": "p06.hs.eloqua.com",
+  "hello.bpost.be": "p06.hs.eloqua.com",
+  "hello.krasjecadeau.be": "p06.hs.eloqua.com",
+  "info.authorize.net": "p01.hs.eloqua.com",
+  "info.boozallen.com": "p01.hs.eloqua.com",
+  "info.brightcove.com": "p01.hs.eloqua.com",
+  "info.cengage.com": "p01.hs.eloqua.com",
+  "info.christus.mx": "p04.hs.eloqua.com",
+  "info.clarivate.com": "p01.hs.eloqua.com",
+  "info.commercial.keurig.com": "p04.hs.eloqua.com",
+  "info.cookiepro.com": "p06.hs.eloqua.com",
+  "info.credicomer.com.sv": "p04.hs.eloqua.com",
+  "info.cybersource.com": "p01.hs.eloqua.com",
+  "info.dataguidance.com": "p06.hs.eloqua.com",
+  "info.dfinsolutions.com": "p03.hs.eloqua.com",
+  "info.edb.gov.sg": "p03.hs.eloqua.com",
+  "info.fdbhealth.com": "p03.hs.eloqua.com",
+  "info.fluke.com": "p04.hs.eloqua.com",
+  "info.hmisrael.co.il": "p06.hs.eloqua.com",
+  "info.houzz.com": "p06.hs.eloqua.com",
+  "info.invacare.com.au": "p03.hs.eloqua.com",
+  "info.kangan.edu.au": "p07.hs.eloqua.com",
+  "info.o2business.de": "p03.hs.eloqua.com",
+  "info.onemedical.com": "p04.hs.eloqua.com",
+  "info.perkinelmer.com": "p04.hs.eloqua.com",
+  "info.reutersagency.com": "p01.hs.eloqua.com",
+  "info.shavve.co.il": "p06.hs.eloqua.com",
+  "information.lgcns.com": "p03.hs.eloqua.com",
+  "ins.leavitt.com": "p01.hs.eloqua.com",
+  "insight.business.hsbc.com": "p06.hs.eloqua.com",
+  "insight.intrado.com": "p01.hs.eloqua.com",
+  "insights.harvardbusiness.org": "p01.hs.eloqua.com",
+  "inspire.webfleet.com": "p06.hs.eloqua.com",
+  "intelpartneralliance.intel.com": "p03.hs.eloqua.com",
+  "internalforms.legalsolutions.thomsonreuters.co.uk": "p03.hs.eloqua.com",
+  "internationalfactoring-temp.wf.com": "p01.hs.eloqua.com",
+  "iot.informaengage.com": "p01.hs.eloqua.com",
+  "italia.wolterskluwer.com": "p06.hs.eloqua.com",
+  "itt.enterprises.proximus.com": "p06.hs.eloqua.com",
+  "journey.cisco.com": "p03.hs.eloqua.com",
+  "jponmlkj.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "jubileo-ppb.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "kampanja.bhtelecom.ba": "p06.hs.eloqua.com",
+  "know.wolterskluwerlr.com": "p01.hs.eloqua.com",
+  "lacinfo.motorolasolutions.com": "p04.hs.eloqua.com",
+  "lakerspreferences.gleague.nba.com": "p04.hs.eloqua.com",
+  "landing-legisway.wolterskluwer.com": "p06.hs.eloqua.com",
+  "landing.computershare.com": "p03.hs.eloqua.com",
+  "lantern.kronos.com": "p01.hs.eloqua.com",
+  "learn.armaninollp.com": "p01.hs.eloqua.com",
+  "lincolnfinancialgroup.lfg.com": "p04.hs.eloqua.com",
+  "links.e.response.mayoclinic.org": "p04.hs.eloqua.com",
+  "live.alljobs.co.il": "p06.hs.eloqua.com",
+  "log.cognex.com": "p03.hs.eloqua.com",
+  "lp.embarcadero.com": "p01.hs.eloqua.com",
+  "lp.sophos.com": "p06.hs.eloqua.com",
+  "lrpoland.wolterskluwer.com": "p06.hs.eloqua.com",
+  "m.custom.info.shutterstock.com": "p03.hs.eloqua.com",
+  "m.premier.info.shutterstock.com": "p03.hs.eloqua.com",
+  "m.smb.info.shutterstock.com": "p03.hs.eloqua.com",
+  "ma.hmhco.com": "p01.hs.eloqua.com",
+  "mail.dolce-gusto.be": "p01.hs.eloqua.com",
+  "mail.dolce-gusto.pl": "p01.hs.eloqua.com",
+  "mail.dolce-gusto.pt": "p01.hs.eloqua.com",
+  "mail.dolce-gusto.se": "p01.hs.eloqua.com",
+  "map.rockwellautomation.com": "p01.hs.eloqua.com",
+  "marketing.naf.no": "p06.hs.eloqua.com",
+  "marketing.royalalaskanmovers.com": "p04.hs.eloqua.com",
+  "meet.westuc.com": "p01.hs.eloqua.com",
+  "my.internationalsos.com": "p06.hs.eloqua.com",
+  "myprofile.panasonic.eu": "p01.hs.eloqua.com",
+  "nbg.seagate.com": "p01.hs.eloqua.com",
+  "newsletters.bancsabadell.com": "p06.hs.eloqua.com",
+  "oiat.dow.com": "p01.hs.eloqua.com",
+  "onfages.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "onfleet-lemag.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "online.cphi-china.cn": "p04.hs.eloqua.com",
+  "online.jtiadvance.co.uk": "p06.hs.eloqua.com",
+  "onmlkjiion.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "onnages.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "ops.bpost.be": "p06.hs.eloqua.com",
+  "optifiantsion.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "optifiantss.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "optionen.hager.de": "p06.hs.eloqua.com",
+  "out.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "owp-sg-prop.americanexpress.com": "p01.hs.eloqua.com",
+  "owp-tw.americanexpress.com": "p01.hs.eloqua.com",
+  "page.sangfor.com": "p04.hs.eloqua.com",
+  "pages.att.com": "p04.hs.eloqua.com",
+  "pages.bayer.com": "p06.hs.eloqua.com",
+  "pages.bioglan.com.au": "p07.hs.eloqua.com",
+  "pages.canon.com.au": "p03.hs.eloqua.com",
+  "pages.fatblaster.com.au": "p07.hs.eloqua.com",
+  "pages.health365.com.au": "p07.hs.eloqua.com",
+  "pages.info.exclusive-networks.com": "p06.hs.eloqua.com",
+  "pages.naturopathica.com.au": "p07.hs.eloqua.com",
+  "pages.nuvias.com": "p06.hs.eloqua.com",
+  "pages.visitdubai.com": "p06.hs.eloqua.com",
+  "partnermktg.symantec.com": "p04.hs.eloqua.com",
+  "partners.seek.intel.com": "p03.hs.eloqua.com",
+  "partnersuccess.cisco.com": "p01.hs.eloqua.com",
+  "partnersuccessmetrics.cisco.com": "p01.hs.eloqua.com",
+  "passangos.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "payments.americanexpress.com": "p01.hs.eloqua.com",
+  "pgs.aviationweek.com": "p01.hs.eloqua.com",
+  "pgs.farmprogress.com": "p01.hs.eloqua.com",
+  "phadia.thermofisher.com": "p04.hs.eloqua.com",
+  "phcbi-solution.phchd.com": "p04.hs.eloqua.com",
+  "plan.seek.intel.com": "p03.hs.eloqua.com",
+  "platformsolutions.shutterstock.com": "p04.hs.eloqua.com",
+  "plomaticsb.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "plongezdanslabdkj.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "pm.em.viatrisconnect.com": "p02.hs.eloqua.com",
+  "pm.eu.viatrisconnect.com": "p06.hs.eloqua.com",
+  "podbooth.martela.fi": "p06.hs.eloqua.com",
+  "ponmlsgr.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "pop.dmglobal.com": "p04.hs.eloqua.com",
+  "posgrados.unisabana.edu.co": "p04.hs.eloqua.com",
+  "post.lavapm.com": "p07.hs.eloqua.com",
+  "postuler.bpost.be": "p06.hs.eloqua.com",
+  "pr.prnewswire.com": "p04.hs.eloqua.com",
+  "preference.motorolasolutions.com": "p04.hs.eloqua.com",
+  "preferencecenter.fticonsulting.com": "p01.hs.eloqua.com",
+  "preferences.acspubs.org": "p01.hs.eloqua.com",
+  "preferences.bowerswilkins.com": "p04.hs.eloqua.com",
+  "preferences.deloitte.ca": "p03.hs.eloqua.com",
+  "preferences.la-lakers.com": "p04.hs.eloqua.com",
+  "pregrados.javeriana.edu.co": "p03.hs.eloqua.com",
+  "primary.hasegawa.jp": "p07.hs.eloqua.com",
+  "privilegesal.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "products.marketingcube.com.au": "p01.hs.eloqua.com",
+  "profiling.eurofins.fi": "p06.hs.eloqua.com",
+  "profiling.f-secure.com": "p01.hs.eloqua.com",
+  "profiling.martela.com": "p06.hs.eloqua.com",
+  "profiling.martelaoutlet.fi": "p06.hs.eloqua.com",
+  "profiling.normet.com": "p06.hs.eloqua.com",
+  "profiling.outokumpu.com": "p06.hs.eloqua.com",
+  "profiling.plannja.com": "p01.hs.eloqua.com",
+  "profiling.ruukki.com": "p01.hs.eloqua.com",
+  "promociones.christus.mx": "p04.hs.eloqua.com",
+  "promotions.thermofisher.com": "p01.hs.eloqua.com",
+  "proximity-pprodkj.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "pubstr.acs.org": "p01.hs.eloqua.com",
+  "reach.terumo-bct.com": "p03.hs.eloqua.com",
+  "redwingforbusiness.redwingsafety.com": "p01.hs.eloqua.com",
+  "reg.interop.com": "p01.hs.eloqua.com",
+  "regional.questdiagnostics.com": "p04.hs.eloqua.com",
+  "relay.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "research.gartner.com": "p03.hs.eloqua.com",
+  "resources.att.com": "p01.hs.eloqua.com",
+  "resources.opentext.fr": "p01.hs.eloqua.com",
+  "response.arizonacoyotes.com": "p04.hs.eloqua.com",
+  "response.splunk.com": "p01.hs.eloqua.com",
+  "s.clientes.construrama.com": "p04.hs.eloqua.com",
+  "s.sick.com": "p03.hs.eloqua.com",
+  "s362693299.aon.com": "p01.hs.eloqua.com",
+  "safety.dupont.com": "p01.hs.eloqua.com",
+  "satracking.finning.com": "p04.hs.eloqua.com",
+  "schwacke.autovistagroup.com": "p06.hs.eloqua.com",
+  "secure-anzgo.arrow.com": "p07.hs.eloqua.com",
+  "secure-e.healthiq.com": "p03.hs.eloqua.com",
+  "secure.arrow.com": "p01.hs.eloqua.com",
+  "secure.desjardinsgeneralinsurance.com": "p02.hs.eloqua.com",
+  "secure.fortinet.com": "p03.hs.eloqua.com",
+  "secure.mycalcas.com": "p01.hs.eloqua.com",
+  "secure.wiley.com": "p03.hs.eloqua.com",
+  "secure1.desjardinsgeneralinsurance.com": "p02.hs.eloqua.com",
+  "secure1.lapersonnelle.com": "p02.hs.eloqua.com",
+  "securecookies.dustin.dk": "p01.hs.eloqua.com",
+  "securecookies.dustin.fi": "p01.hs.eloqua.com",
+  "securecookies.dustin.no": "p01.hs.eloqua.com",
+  "securecookies.dustin.se": "p01.hs.eloqua.com",
+  "securecookies.dustinhome.dk": "p01.hs.eloqua.com",
+  "securecookies.dustinhome.fi": "p01.hs.eloqua.com",
+  "securecookies.dustinhome.no": "p01.hs.eloqua.com",
+  "securecookies.dustinhome.se": "p01.hs.eloqua.com",
+  "secureforms.icis.com": "p01.hs.eloqua.com",
+  "secureforms.xperthr.com": "p01.hs.eloqua.com",
+  "securetracking.eaton.com": "p01.hs.eloqua.com",
+  "securetracking.golfpride.com": "p04.hs.eloqua.com",
+  "site.att.com": "p04.hs.eloqua.com",
+  "site.connect.mydrreddys.com": "p06.hs.eloqua.com",
+  "site.firstnet.com": "p04.hs.eloqua.com",
+  "smb.info.shutterstock.com": "p03.hs.eloqua.com",
+  "smtpauth.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "smtpmail.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "software.seek.intel.com": "p03.hs.eloqua.com",
+  "solutions.desertfinancial.com": "p01.hs.eloqua.com",
+  "solutions.refinitiv.com": "p01.hs.eloqua.com",
+  "solutions.risk.lexisnexis.co.uk": "p01.hs.eloqua.com",
+  "st.azcardinals.com": "p04.hs.eloqua.com",
+  "stat.altalex.com": "p06.hs.eloqua.com",
+  "stat.bdc.ca": "p01.hs.eloqua.com",
+  "stat.dbschenker.com": "p06.hs.eloqua.com",
+  "stat.guiasjuridicas.es": "p06.hs.eloqua.com",
+  "stat.ipsoa.it": "p06.hs.eloqua.com",
+  "stat.juridicas.com": "p06.hs.eloqua.com",
+  "stat.laleynext.es": "p06.hs.eloqua.com",
+  "stat.lex.pl": "p06.hs.eloqua.com",
+  "stat.liaisons-sociales.fr": "p06.hs.eloqua.com",
+  "stat.prawo.pl": "p06.hs.eloqua.com",
+  "stat.profinfo.pl": "p06.hs.eloqua.com",
+  "stat.starterre.fr": "p06.hs.eloqua.com",
+  "stat.wolterskluwer.com": "p06.hs.eloqua.com",
+  "stat.wolterskluwer.es": "p06.hs.eloqua.com",
+  "stat.wolterskluwer.pl": "p06.hs.eloqua.com",
+  "stationion.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "study.vu.edu.au": "p07.hs.eloqua.com",
+  "t.aptuspet.com": "p06.hs.eloqua.com",
+  "t.cubuffs.com": "p03.hs.eloqua.com",
+  "t.fightingillini.com": "p03.hs.eloqua.com",
+  "t.foxtheatre.org": "p03.hs.eloqua.com",
+  "t.gohuskies.com": "p03.hs.eloqua.com",
+  "t.gopsusports.com": "p03.hs.eloqua.com",
+  "t.goxavier.com": "p03.hs.eloqua.com",
+  "t.hailstate.com": "p03.hs.eloqua.com",
+  "t.iowawild.com": "p03.hs.eloqua.com",
+  "t.itsehoitoapteekki.fi": "p06.hs.eloqua.com",
+  "t.kstatesports.com": "p03.hs.eloqua.com",
+  "t.mktg.genesys.com": "p04.hs.eloqua.com",
+  "t.msuspartans.com": "p03.hs.eloqua.com",
+  "t.ramblinwreck.com": "p03.hs.eloqua.com",
+  "t.tulsahurricane.com": "p03.hs.eloqua.com",
+  "tarifs-reglementes-gazh.carte-gr.total.fr": "p06.hs.eloqua.com",
+  "technology.informaengage.com": "p01.hs.eloqua.com",
+  "tkelq.genesys.com": "p04.hs.eloqua.com",
+  "trace.insead.edu": "p03.hs.eloqua.com",
+  "track-e.cypress.com": "p06.hs.eloqua.com",
+  "track.auckland.ac.nz": "p07.hs.eloqua.com",
+  "track.connectwise.com": "p03.hs.eloqua.com",
+  "track.docusign.com": "p01.hs.eloqua.com",
+  "track.docusign.com.es": "p01.hs.eloqua.com",
+  "track.docusign.de": "p01.hs.eloqua.com",
+  "track.docusign.mx": "p01.hs.eloqua.com",
+  "track.ferrari.com": "p06.hs.eloqua.com",
+  "track.ferraridealers.com": "p06.hs.eloqua.com",
+  "track.postkodlotteriet.se": "p06.hs.eloqua.com",
+  "tracker.providence.org": "p04.hs.eloqua.com",
+  "tracker.swedish.org": "p04.hs.eloqua.com",
+  "tracking.aapa.org": "p04.hs.eloqua.com",
+  "tracking.about.bgov.com": "p03.hs.eloqua.com",
+  "tracking.adp.com": "p01.hs.eloqua.com",
+  "tracking.adtran.com": "p03.hs.eloqua.com",
+  "tracking.agora.io": "p04.hs.eloqua.com",
+  "tracking.aifsabroad.com": "p04.hs.eloqua.com",
+  "tracking.almirallmed.es": "p06.hs.eloqua.com",
+  "tracking.americas.business.samsung.com": "p06.hs.eloqua.com",
+  "tracking.attsavings.com": "p04.hs.eloqua.com",
+  "tracking.bettingexpert.com": "p06.hs.eloqua.com",
+  "tracking.blackboard.com": "p01.hs.eloqua.com",
+  "tracking.bonava.de": "p06.hs.eloqua.com",
+  "tracking.bonava.lv": "p06.hs.eloqua.com",
+  "tracking.bonava.ru": "p06.hs.eloqua.com",
+  "tracking.bonava.se": "p06.hs.eloqua.com",
+  "tracking.bradyid.com": "p01.hs.eloqua.com",
+  "tracking.build.com": "p04.hs.eloqua.com",
+  "tracking.business.comcast.com": "p04.hs.eloqua.com",
+  "tracking.businessdirect.bt.com": "p06.hs.eloqua.com",
+  "tracking.bv.com": "p04.hs.eloqua.com",
+  "tracking.cairn.info": "p06.hs.eloqua.com",
+  "tracking.cengage.com": "p01.hs.eloqua.com",
+  "tracking.clarivate.com": "p06.hs.eloqua.com",
+  "tracking.compactappliance.com": "p04.hs.eloqua.com",
+  "tracking.connect.nicklaushealth.org": "p04.hs.eloqua.com",
+  "tracking.culturalinsurance.com": "p04.hs.eloqua.com",
+  "tracking.dataloen.dk": "p06.hs.eloqua.com",
+  "tracking.dfinsolutions.com": "p03.hs.eloqua.com",
+  "tracking.direxion.com": "p01.hs.eloqua.com",
+  "tracking.edb.gov.sg": "p03.hs.eloqua.com",
+  "tracking.ehrintelligence.com": "p04.hs.eloqua.com",
+  "tracking.eloq.soa.org": "p03.hs.eloqua.com",
+  "tracking.eloqua.modernize.com": "p04.hs.eloqua.com",
+  "tracking.epsilon.com": "p03.hs.eloqua.com",
+  "tracking.europe.business.samsung.com": "p06.hs.eloqua.com",
+  "tracking.evanta.com": "p04.hs.eloqua.com",
+  "tracking.evergy.com": "p04.hs.eloqua.com",
+  "tracking.faucet.com": "p04.hs.eloqua.com",
+  "tracking.faucetdirect.com": "p04.hs.eloqua.com",
+  "tracking.fdm.dk": "p03.hs.eloqua.com",
+  "tracking.go.atcc.org": "p04.hs.eloqua.com",
+  "tracking.go.onshape.com": "p04.hs.eloqua.com",
+  "tracking.go.provident.bank": "p03.hs.eloqua.com",
+  "tracking.goal.pl": "p06.hs.eloqua.com",
+  "tracking.guidehouse.com": "p03.hs.eloqua.com",
+  "tracking.healthitanalytics.com": "p04.hs.eloqua.com",
+  "tracking.igloosoftware.com": "p01.hs.eloqua.com",
+  "tracking.info.ivanti.com": "p03.hs.eloqua.com",
+  "tracking.info.servicenow.com": "p01.hs.eloqua.com",
+  "tracking.insperity.com": "p04.hs.eloqua.com",
+  "tracking.janssenmed.hu": "p03.hs.eloqua.com",
+  "tracking.kubota.ca": "p01.hs.eloqua.com",
+  "tracking.lightingdirect.com": "p04.hs.eloqua.com",
+  "tracking.mail.ti.com": "p04.hs.eloqua.com",
+  "tracking.mail.tij.co.jp": "p04.hs.eloqua.com",
+  "tracking.mathworks.com": "p03.hs.eloqua.com",
+  "tracking.max.co.il": "p06.hs.eloqua.com",
+  "tracking.mkt-email.samsungsds.com": "p07.hs.eloqua.com",
+  "tracking.motorolasolutions.com": "p04.hs.eloqua.com",
+  "tracking.myaupairinamerica.com": "p04.hs.eloqua.com",
+  "tracking.nasdaq.com": "p04.hs.eloqua.com",
+  "tracking.newyorklifeinvestments.com": "p01.hs.eloqua.com",
+  "tracking.nkbm.si": "p06.hs.eloqua.com",
+  "tracking.oldnational.com": "p04.hs.eloqua.com",
+  "tracking.omron.ru": "p03.hs.eloqua.com",
+  "tracking.opentable.com": "p03.hs.eloqua.com",
+  "tracking.pella.com": "p03.hs.eloqua.com",
+  "tracking.pennmedicine.princetonhcs.org": "p04.hs.eloqua.com",
+  "tracking.pharmanewsintel.com": "p04.hs.eloqua.com",
+  "tracking.pirelli.com": "p06.hs.eloqua.com",
+  "tracking.precisely.com": "p03.hs.eloqua.com",
+  "tracking.ptc.com": "p01.hs.eloqua.com",
+  "tracking.pullsdirect.com": "p04.hs.eloqua.com",
+  "tracking.regus.com": "p03.hs.eloqua.com",
+  "tracking.risk.lexisnexis.com": "p01.hs.eloqua.com",
+  "tracking.rotogrinders.com": "p06.hs.eloqua.com",
+  "tracking.scoresandodds.com": "p06.hs.eloqua.com",
+  "tracking.shl.com": "p01.hs.eloqua.com",
+  "tracking.shop.verymobile.it": "p06.hs.eloqua.com",
+  "tracking.sierrawireless.com": "p03.hs.eloqua.com",
+  "tracking.ssab.de": "p06.hs.eloqua.com",
+  "tracking.ssab.fr": "p06.hs.eloqua.com",
+  "tracking.ssab.it": "p06.hs.eloqua.com",
+  "tracking.ssab.ru": "p06.hs.eloqua.com",
+  "tracking.stihl.de": "p06.hs.eloqua.com",
+  "tracking.tdk.com": "p07.hs.eloqua.com",
+  "tracking.ti.com": "p04.hs.eloqua.com",
+  "tracking.tij.co.jp": "p04.hs.eloqua.com",
+  "tracking.tripletex.no": "p06.hs.eloqua.com",
+  "tracking.umbrella.com": "p03.hs.eloqua.com",
+  "tracking.unisabana.edu.co": "p04.hs.eloqua.com",
+  "tracking.uwindsor.ca": "p02.hs.eloqua.com",
+  "tracking.vegasinsider.com": "p06.hs.eloqua.com",
+  "tracking.visitdubai.com": "p06.hs.eloqua.com",
+  "tracking.visma.lv": "p06.hs.eloqua.com",
+  "tracking.visma.no": "p06.hs.eloqua.com",
+  "tracking.vismaraet.nl": "p06.hs.eloqua.com",
+  "tracking.wettfreunde.net": "p06.hs.eloqua.com",
+  "tracking.yealink.com": "p04.hs.eloqua.com",
+  "trackingcareers.accenture.com": "p04.hs.eloqua.com",
+  "trackingmms.accenture.com": "p04.hs.eloqua.com",
+  "trail.thomsonreuters.com": "p04.hs.eloqua.com",
+  "trk.advancedmanufacturingminneapolis.com": "p04.hs.eloqua.com",
+  "trk.aviationweek.com": "p01.hs.eloqua.com",
+  "trk.business.westernunion.com": "p01.hs.eloqua.com",
+  "trk.channelfutures.com": "p01.hs.eloqua.com",
+  "trk.contentmarketinginstitute.com": "p04.hs.eloqua.com",
+  "trk.darkreading.com": "p01.hs.eloqua.com",
+  "trk.datacenterknowledge.com": "p01.hs.eloqua.com",
+  "trk.drdobbs.com": "p01.hs.eloqua.com",
+  "trk.gamasutra.com": "p01.hs.eloqua.com",
+  "trk.gamedeveloper.com": "p01.hs.eloqua.com",
+  "trk.informationweek.com": "p01.hs.eloqua.com",
+  "trk.itprotoday.com": "p01.hs.eloqua.com",
+  "trk.mddionline.com": "p04.hs.eloqua.com",
+  "trk.mk.westernunion.com": "p01.hs.eloqua.com",
+  "trk.networkcomputing.com": "p01.hs.eloqua.com",
+  "trk.nojitter.com": "p01.hs.eloqua.com",
+  "trk.optum.com": "p01.hs.eloqua.com",
+  "trk.powderandbulksolids.com": "p04.hs.eloqua.com",
+  "trk.thebatteryshow.eu": "p04.hs.eloqua.com",
+  "trk.thinkhdi.com": "p03.hs.eloqua.com",
+  "trk.wealthmanagement.com": "p01.hs.eloqua.com",
+  "trk.webhostingtalk.com": "p01.hs.eloqua.com",
+  "trust.zebra.com": "p01.hs.eloqua.com",
+  "ucaas.avaya.com": "p03.hs.eloqua.com",
+  "updates.gaylordhotels.com": "p01.hs.eloqua.com",
+  "updates.thesalonoutlet.com": "p04.hs.eloqua.com",
+  "ussolutions.equifax.com": "p03.hs.eloqua.com",
+  "visit.hypertherm.com": "p01.hs.eloqua.com",
+  "visit.lifeblood.com.au": "p07.hs.eloqua.com",
+  "visit.tafensw.edu.au": "p07.hs.eloqua.com",
+  "visitor.furniture-china.cn": "p07.hs.eloqua.com",
+  "web.akademiai.hu": "p06.hs.eloqua.com",
+  "web.care.eehealth.org": "p04.hs.eloqua.com",
+  "web.care.sheppardpratt.org": "p04.hs.eloqua.com",
+  "web.care.wakemed.org": "p04.hs.eloqua.com",
+  "web.health.childrenswi.org": "p04.hs.eloqua.com",
+  "web.houstontexans.com": "p03.hs.eloqua.com",
+  "web.northwestern.nm.org": "p04.hs.eloqua.com",
+  "web.zoominfo.com": "p04.hs.eloqua.com",
+  "webinar.intel.com": "p03.hs.eloqua.com",
+  "webtracking.acams.org": "p04.hs.eloqua.com",
+  "webtracking.aucmed.edu": "p04.hs.eloqua.com",
+  "workforcesolutions.equifax.com": "p03.hs.eloqua.com",
+  "www.enterprises.proximus.be": "p06.hs.eloqua.com",
+  "www.medtronicsolutions.com": "p01.hs.eloqua.com",
+  "www1.kawasaki-motors.com": "p07.hs.eloqua.com",
+  "www3.restek.com": "p04.hs.eloqua.com",
+  "yourporsche.nabooda-auto.com": "p06.hs.eloqua.com",
+  "te.ackermann.ch": "te.oghub.io",
+  "te.ambria.de": "te.oghub.io",
+  "te.baur.de": "te.oghub.io",
+  "te.creation-l.de": "te.oghub.io",
+  "te.frankonia.com": "te.oghub.io",
+  "te.frankonia.de": "te.oghub.io",
+  "te.heine-shop.nl": "te.oghub.io",
+  "te.heine.at": "te.oghub.io",
+  "te.heine.ch": "te.oghub.io",
+  "te.heine.de": "te.oghub.io",
+  "te.imwalking.de": "te.oghub.io",
+  "te.jelmoli-shop.ch": "te.oghub.io",
+  "te.limango.de": "te.oghub.io",
+  "te.mirapodo.de": "te.oghub.io",
+  "te.mytoys.de": "te.oghub.io",
+  "te.otto.de": "te.oghub.io",
+  "te.ottoversand.at": "te.oghub.io",
+  "te.quelle.ch": "te.oghub.io",
+  "te.quelle.de": "te.oghub.io",
+  "te.sheego.de": "te.oghub.io",
+  "te.sieh-an.de": "te.oghub.io",
+  "te.universal.at": "te.oghub.io",
+  "te.witt-international.nl": "te.oghub.io",
+  "te.witt-weiden.at": "te.oghub.io",
+  "te.witt-weiden.ch": "te.oghub.io",
+  "te.witt-weiden.de": "te.oghub.io",
+  "te.yomonda.de": "te.oghub.io",
+  "te.your-look-for-less.nl": "te.oghub.io",
+  "tp.ackermann.ch": "js.oghub.io",
+  "tp.baur.de": "js.oghub.io",
+  "tp.frankonia.at": "js.oghub.io",
+  "tp.frankonia.com": "js.oghub.io",
+  "tp.frankonia.de": "js.oghub.io",
+  "tp.frankoniamoda.ch": "js.oghub.io",
+  "tp.heine.at": "js.oghub.io",
+  "tp.heine.ch": "js.oghub.io",
+  "tp.heine.de": "js.oghub.io",
+  "tp.imwalking.de": "js.oghub.io",
+  "tp.jelmoli-shop.ch": "js.oghub.io",
+  "tp.limango.de": "js.oghub.io",
+  "tp.mirapodo.de": "js.oghub.io",
+  "tp.mytoys.de": "js.oghub.io",
+  "tp.otto.de": "js.oghub.io",
+  "tp.ottoversand.at": "js.oghub.io",
+  "tp.quelle.at": "js.oghub.io",
+  "tp.quelle.ch": "js.oghub.io",
+  "tp.quelle.de": "js.oghub.io",
+  "tp.sheego.de": "js.oghub.io",
+  "tp.universal.at": "js.oghub.io",
+  "tp.yomonda.de": "js.oghub.io",
+  "1.appexchange.com": "pi-ue1-lba6.pardot.com",
+  "1.librestream.com": "pi-ue1-lba4.pardot.com",
+  "1.salesforce-partners.com": "go.pardot.com",
+  "2.brinkshome.com": "pi-ue1-lba4.pardot.com",
+  "2.tgtdiagnostics.com": "pi-ue1-lba4.pardot.com",
+  "a.nissyoku.co.jp": "pi-ue1-lba4.pardot.com",
+  "about.bridge-u.com": "pi-ue1-lba4.pardot.com",
+  "access.bespokerealestate.com": "pi-ue1-lba4.pardot.com",
+  "acl.wowma.jp": "go.pardot.com",
+  "action.greenpeace.org.uk": "go.pardot.com",
+  "admission.iilm.edu": "pi-ue1-lba4.pardot.com",
+  "adssea.byspotify.com": "go.pardot.com",
+  "agency.thelevelup.com": "pi-ue1-lba4.pardot.com",
+  "air.hitachiaircon.com": "pi-ue1-lba4.pardot.com",
+  "angieslistpardot.angieslist.com": "go.pardot.com",
+  "apply.usc.edu": "pi-ue1-lba4.pardot.com",
+  "as.saiglobal.com": "pi-ue1-lba4.pardot.com",
+  "aspire.ivywise.com": "go.pardot.com",
+  "au.arjo.com": "pi-ue1-lba1.pardot.com",
+  "b2b.angi.com": "go.pardot.com",
+  "b2b.angieslist.com": "go.pardot.com",
+  "b2b.automotive-mediaventions.nl": "pi-ue1-lba4.pardot.com",
+  "b2b.persgroep.digital": "go.pardot.com",
+  "bankingfinance.euromoney.com": "pi-ue1-lba6.pardot.com",
+  "bb.blackberry.com": "go.pardot.com",
+  "bc.bannerengineering.com": "pi-ue1-lba4.pardot.com",
+  "beat.thedrum.com": "go.pardot.com",
+  "bigtime.floridacitrussports.com": "pi-ue1-lba4.pardot.com",
+  "biz-info.fielding.co.jp": "pi-ue1-lba2.pardot.com",
+  "biz-sol.sony.jp": "go.pardot.com",
+  "biz.accs-c.co.jp": "pi-ue1-lba2.pardot.com",
+  "biz.beautyexperience.com": "pi-ue1-lba2.pardot.com",
+  "biz.locoguide.co.jp": "go.pardot.com",
+  "biz.mkt.global.dnp.co.jp": "pi-ue1-lba4.pardot.com",
+  "biz.optage.co.jp": "pi-ue1-lba2.pardot.com",
+  "biz.paypay.ne.jp": "pi.pardot.com",
+  "biz.vipre.com": "go.pardot.com",
+  "biz.wantedly.com": "pi-ue1-lba4.pardot.com",
+  "bizsol.nttdocomo.co.jp": "pi-ue1-lba2.pardot.com",
+  "boxcharter.jitbox.co.jp": "pi-ue1-lba4.pardot.com",
+  "br.zettle.com": "go.pardot.com",
+  "brands.coxauto.co.uk": "pi-ue1-lba4.pardot.com",
+  "bs-offers.konicaminolta.jp": "pi-ue1-lba2.pardot.com",
+  "build.usgbc.org": "go.pardot.com",
+  "business.adorama.com": "go.pardot.com",
+  "business.campbelltown.nsw.gov.au": "pi-ue1-lba5.pardot.com",
+  "business.cogeco.ca": "pi-ue1-lba2.pardot.com",
+  "business.dyson.com": "go.pardot.com",
+  "business.europcar.com": "pi-ue1-lba4.pardot.com",
+  "business.guinnessworldrecords.com": "go.pardot.com",
+  "business.nbnco.com.au": "go.pardot.com",
+  "business.united.com": "go.pardot.com",
+  "campaign.abb.com": "go.pardot.com",
+  "campaign.idemia.com": "go.pardot.com",
+  "campaign.kermi.de": "go.pardot.com",
+  "campaign.slackhq.com": "go.pardot.com",
+  "campaign2.tradeshift.com": "pi-ue1-lba4.pardot.com",
+  "campaigns.abb.com": "pi-ue1-lba4.pardot.com",
+  "campaigns.yotta.com": "pi-ue1-lba4.pardot.com",
+  "careers.bmsperformance.com": "go.pardot.com",
+  "cargosupermarket.volga-dnepr.com": "go.pardot.com",
+  "choose.cruiseweb.com": "pi-ue1-lba5.pardot.com",
+  "choose.tarleton.edu": "pi-ue1-lba6.pardot.com",
+  "choosegrad.ttu.edu": "go.pardot.com",
+  "click.go.idcf.jp": "pi-ue1-lba2.pardot.com",
+  "click.surfrider.org": "go.pardot.com",
+  "click.xpand-it.com": "go.pardot.com",
+  "click.zoom.us": "go.pardot.com",
+  "clicks.piie.com": "go.pardot.com",
+  "clinic.knee-joint.net": "pi-ue1-lba4.pardot.com",
+  "cloud.jumpcloud.com": "go.pardot.com",
+  "cn.dematic.cn": "pi-ue1-lba4.pardot.com",
+  "cocreation.tsunagaru-design.co.jp": "pi-ue1-lba2.pardot.com",
+  "commercial.global.com": "pi-ue1-lba4.pardot.com",
+  "comms.ceilingfanswarehouse.com.au": "pi-ue1-lba5.pardot.com",
+  "comms.datacom.com": "pi.t.pardot.com",
+  "comms.datacomgroup.net": "go.pardot.com",
+  "comms.thenbs.com": "go.pardot.com",
+  "comms.universalfans.com.au": "pi-ue1-lba5.pardot.com",
+  "communicatie.marketing-zm.kpn.com": "pi-ue1-lba4.pardot.com",
+  "communication.stormshield.com": "pi-ue1-lba4.pardot.com",
+  "communication.thomas-krenn.com": "pi-ue1-lba4.pardot.com",
+  "communications.agi.com": "go.pardot.com",
+  "communications.hunterindustries.com": "pi-ue1-lba4.pardot.com",
+  "communications.icef.com": "pi-ue1-lba6.pardot.com",
+  "connect.endofound.org": "go.pardot.com",
+  "connect.est.org.uk": "pi-ue1-lba4.pardot.com",
+  "connect.hexagongeosystems.com": "go.pardot.com",
+  "connect.hexagonppm.com": "pi-ue1-lba4.pardot.com",
+  "connect.leica-geosystems.com": "go.pardot.com",
+  "connect.mastercard-emailb2b.com": "pi-ue1-lba4.pardot.com",
+  "connect.oclc.org": "go.pardot.com",
+  "connect.taluspay.com": "go.pardot.com",
+  "connect.unitedphilforum.org": "go.pardot.com",
+  "connect.wri.org": "go.pardot.com",
+  "connect2.asana.com": "pi-ue1-lba4.pardot.com",
+  "consign.therealreal.com": "pi-ue1-lba6.pardot.com",
+  "cont.sendenkaigi.com": "pi-ue1-lba4.pardot.com",
+  "contact.embroker.com": "pi-ue1-lba4.pardot.com",
+  "contact.flo.com": "pi-ue1-lba4.pardot.com",
+  "contact.illustrativemathematics.org": "pi-ue1-lba6.pardot.com",
+  "contact.rsisecurity.com": "pi-ue1-lba6.pardot.com",
+  "contact.ucdenver.edu": "pi-ue1-lba4.pardot.com",
+  "contacto.leaseplango.es": "go.pardot.com",
+  "content.allsafe.nl": "pi-ue1-lba4.pardot.com",
+  "content.awaze.com": "pi-ue1-lba4.pardot.com",
+  "content.barracuda.com": "go.pardot.com",
+  "content.biotronik.com": "pi-ue1-lba4.pardot.com",
+  "content.claris.com": "pi-ue1-lba4.pardot.com",
+  "content.ctherm.com": "pi.t.pardot.com",
+  "content.entercom.com": "pi-ue1-lba4.pardot.com",
+  "content.exclaimer.com": "go.pardot.com",
+  "content.filemaker.com": "pi-ue1-lba6.pardot.com",
+  "content.formstack.com": "go.pardot.com",
+  "content.lansweeper.com": "go.pardot.com",
+  "content.listeninc.com": "go.pardot.com",
+  "content.loyalistcollege.com": "pi-ue1-lba4.pardot.com",
+  "content.moogsoft.com": "pi-ue1-lba4.pardot.com",
+  "content.nielsen.com": "pi-ue1-lba6.pardot.com",
+  "content.openbanking.org.uk": "pi-ue1-lba4.pardot.com",
+  "content.paypoint.com": "pi-ue1-lba4.pardot.com",
+  "content.propertyfinder.ae": "pi-ue1-lba2.pardot.com",
+  "content.quark.com": "pi-ue1-lba5.pardot.com",
+  "content.regencyfamily.com": "pi-ue1-lba4.pardot.com",
+  "content.solvay.com": "go.pardot.com",
+  "content.truelearn.com": "pi-ue1-lba4.pardot.com",
+  "content.woodgate.com": "pi-ue1-lba4.pardot.com",
+  "content.zensar.com": "pi-ue1-lba5.pardot.com",
+  "content2.solvay.com": "go.pardot.com",
+  "corp.dancyu.jp": "pi-ue1-lba4.pardot.com",
+  "corp.president.co.jp": "pi-ue1-lba2.pardot.com",
+  "corp.president.jp": "pi-ue1-lba2.pardot.com",
+  "cpsglobal.bureauveritas.com": "go.pardot.com",
+  "createwith.wrapbook.com": "pi-ue1-lba4.pardot.com",
+  "creditrisk.creditbenchmark.com": "pi-ue1-lba4.pardot.com",
+  "crm.geodis.com": "go.pardot.com",
+  "crm.jmam.co.jp": "pi-ue1-lba2.pardot.com",
+  "crm.miraxs.co.jp": "pi-ue1-lba4.pardot.com",
+  "crm.smu.edu": "go.pardot.com",
+  "customers.simplyhired.com": "go.pardot.com",
+  "customersuccessjp.salesforce.com": "go.pardot.com",
+  "cx.quadient.com": "go.pardot.com",
+  "dai.diamondaircraft.com": "pi-ue1-lba4.pardot.com",
+  "data.cloudian.com": "go.pardot.com",
+  "demo.keeper.io": "pi-ue1-lba4.pardot.com",
+  "dev.enterprise.rev.com": "go.pardot.com",
+  "digital.geniussports.com": "pi-ue1-lba4.pardot.com",
+  "digital.pagar.me": "pi-ue1-lba6.pardot.com",
+  "directml.jfc.go.jp": "go.pardot.com",
+  "discover.ap.org": "go.pardot.com",
+  "discover.commscope.com": "go.pardot.com",
+  "discover.flowserve.com": "go.pardot.com",
+  "discover.selinc.com": "pi-ue1-lba4.pardot.com",
+  "discover.tatatechnologies.com": "pi-ue1-lba4.pardot.com",
+  "dk.zettle.com": "pi.t.pardot.com",
+  "dmt2.canon.jp": "pi-ue1-lba4.pardot.com",
+  "do.swile.co": "pi-ue1-lba4.pardot.com",
+  "dot.discovery.org": "pi-ue1-lba4.pardot.com",
+  "dot.evolutionnews.org": "pi-ue1-lba6.pardot.com",
+  "dot.mindmatters.ai": "go.pardot.com",
+  "ds.digital-science.com": "pi.t.pardot.com",
+  "dsc.cs-park.jp": "pi-ue1-lba4.pardot.com",
+  "e-ese.uandes.cl": "pi-ue1-lba4.pardot.com",
+  "e.cloudsecurityalliance.org": "pi-ue1-lba6.pardot.com",
+  "e.crf.org": "go.pardot.com",
+  "e.grci.group": "pi-ue1-lba4.pardot.com",
+  "e.marketing.dpd.co.uk": "go.pardot.com",
+  "e.oaktreemobility.co.uk": "pi.t.pardot.com",
+  "e.uccs.edu": "pi-ue1-lba4.pardot.com",
+  "e.webfleet.com": "pi-ue1-lba4.pardot.com",
+  "e.wework.com": "pi-ue1-lba4.pardot.com",
+  "e2.hazeldenbettyford.org": "pi-ue1-lba6.pardot.com",
+  "easy.surepayroll.com": "go.pardot.com",
+  "ecc.executivecoachingconnections.com": "pi-ue1-lba4.pardot.com",
+  "edm.crikey.com.au": "go.pardot.com",
+  "edm.privatemedia.com.au": "go.pardot.com",
+  "education.lifelearn.com": "pi-ue1-lba4.pardot.com",
+  "eduinfo-di.casio-intl.com": "pi-ue1-lba4.pardot.com",
+  "eduinfo-eu.casio-intl.com": "pi-ue1-lba4.pardot.com",
+  "eltres.sony-semicon.co.jp": "pi.t.pardot.com",
+  "email.aboutamazon.com": "pi-ue1-lba4.pardot.com",
+  "email.eutelsat.com": "go.pardot.com",
+  "email.evan-moor.com": "pi-ue1-lba4.pardot.com",
+  "email.takemefishing.org": "pi-ue1-lba4.pardot.com",
+  "enews.mortonarb.org": "go.pardot.com",
+  "engage.ansys.com": "pi-ue1-lba4.pardot.com",
+  "engage.atos.net": "pi-ue1-lba6.pardot.com",
+  "engage.mcphs.edu": "pi.t.pardot.com",
+  "engage.mparticle.com": "go.pardot.com",
+  "engage.poverty-action.org": "go.pardot.com",
+  "engage.publichealth.gwu.edu": "pi-ue1-lba4.pardot.com",
+  "engage.valley.com": "pi-ue1-lba4.pardot.com",
+  "engage.wearemarketing.com": "pi-ue1-lba4.pardot.com",
+  "enterprise.grab.com": "pi-ue1-lba4.pardot.com",
+  "enterprise.rev.com": "pi-ue1-lba4.pardot.com",
+  "enterprisesolutions.bell.ca": "pi-ue1-lba4.pardot.com",
+  "es.netmind.net": "pi-ue1-lba4.pardot.com",
+  "es.zettle.com": "pi-ue1-lba4.pardot.com",
+  "event.lifecare.com.my": "pi-ue1-lba6.pardot.com",
+  "events.alefeducation.com": "pi-ue1-lba4.pardot.com",
+  "events.angelassociation.co.nz": "pi-ue1-lba4.pardot.com",
+  "events.baesystems.com": "pi-ue1-lba4.pardot.com",
+  "events.camm-hooper.co.uk": "pi-ue1-lba6.pardot.com",
+  "events.constellation.com": "pi-ue1-lba4.pardot.com",
+  "events.epitech.eu": "pi-ue1-lba4.pardot.com",
+  "events.fst.net.au": "pi-ue1-lba4.pardot.com",
+  "events.microland.com": "pi-ue1-lba4.pardot.com",
+  "exec-info.imperial.ac.uk": "pi-ue1-lba6.pardot.com",
+  "exhibit.emeraldx.com": "pi-ue1-lba6.pardot.com",
+  "experience.rrd.com": "pi-ue1-lba4.pardot.com",
+  "explore.amd.com": "pi-ue1-lba6.pardot.com",
+  "explore.kraftheinzingredients.com": "pi-ue1-lba6.pardot.com",
+  "explore.parexel.com": "pi-ue1-lba4.pardot.com",
+  "fairy.wfairyg.com": "pi-ue1-lba6.pardot.com",
+  "fi.zettle.com": "pi-ue1-lba4.pardot.com",
+  "form.reg.canon-its.co.jp": "pi-ue1-lba4.pardot.com",
+  "forms.creatoriq.com": "pi-ue1-lba6.pardot.com",
+  "forms.gocardless.com": "pi-ue1-lba4.pardot.com",
+  "forms.share.works": "pi-ue1-lba4.pardot.com",
+  "forms.whispir.com": "pi-ue1-lba4.pardot.com",
+  "forms.yoriso.com": "pi-ue1-lba6.pardot.com",
+  "fr.zettle.com": "pi-ue1-lba4.pardot.com",
+  "fun.apcplay.com": "pi-ue1-lba6.pardot.com",
+  "futur.hec.ca": "pi-ue1-lba4.pardot.com",
+  "get.argyle.com": "pi-ue1-lba4.pardot.com",
+  "get.compleo-cs.com": "pi-ue1-lba6.pardot.com",
+  "get.dialogue.co": "pi-ue1-lba4.pardot.com",
+  "get.fetchpackage.com": "pi-ue1-lba5.pardot.com",
+  "get.info.themisbar.com": "pi-ue1-lba4.pardot.com",
+  "get.labster.com": "pi-ue1-lba4.pardot.com",
+  "get.netprotections.com": "pi-ue1-lba4.pardot.com",
+  "get.purplevrs.com": "pi-ue1-lba1.pardot.com",
+  "get.siriuscom.com": "pi-ue1-lba4.pardot.com",
+  "get.thelactationnetwork.com": "pi-ue1-lba4.pardot.com",
+  "get.togethertv.com": "pi-ue1-lba6.pardot.com",
+  "get.untangle.com": "pi-ue1-lba6.pardot.com",
+  "get.updater.com": "pi-ue1-lba4.pardot.com",
+  "get.ypulse.com": "pi-ue1-lba6.pardot.com",
+  "getqualified.collegeforadultlearning.edu.au": "pi-ue1-lba4.pardot.com",
+  "getstarted.ufred.ca": "pi-ue1-lba6.pardot.com",
+  "global.cognizant.com": "pi-ue1-lba6.pardot.com",
+  "go-execed.gsb.columbia.edu": "pi-ue1-lba6.pardot.com",
+  "go-to.fair-life.jp": "pi-ue1-lba4.pardot.com",
+  "go-us.janushenderson.com": "pi-ue1-lba6.pardot.com",
+  "go.1-act.com": "pi-ue1-lba4.pardot.com",
+  "go.1800gotjunk.com": "pi-ue1-lba4.pardot.com",
+  "go.1sbc.com": "pi-ue1-lba5.pardot.com",
+  "go.2n.cz": "pi-ue1-lba4.pardot.com",
+  "go.47club.jp": "pi-ue1-lba4.pardot.com",
+  "go.47co.jp": "pi-ue1-lba4.pardot.com",
+  "go.7shifts.com": "pi-ue1-lba6.pardot.com",
+  "go.8451.com": "pi-ue1-lba6.pardot.com",
+  "go.abaegitim.com": "pi-ue1-lba3.pardot.com",
+  "go.abi.co.jp": "pi-ue1-lba4.pardot.com",
+  "go.abtasty.com": "pi-ue1-lba4.pardot.com",
+  "go.accea.co.jp": "pi-ue1-lba5.pardot.com",
+  "go.accertify.com": "go.pardot.com",
+  "go.accesswire.com": "pi-ue1-lba4.pardot.com",
+  "go.acilearning.com": "pi-ue1-lba6.pardot.com",
+  "go.adaptiv-networks.com": "pi-ue1-lba6.pardot.com",
+  "go.adara.com": "pi-ue1-lba4.pardot.com",
+  "go.addigy.com": "pi-ue1-lba4.pardot.com",
+  "go.address.love": "pi-ue1-lba4.pardot.com",
+  "go.adecco.com.au": "pi-ue1-lba4.pardot.com",
+  "go.adeccousa.com": "pi-ue1-lba6.pardot.com",
+  "go.adesso.de": "pi-ue1-lba4.pardot.com",
+  "go.adflegal.org": "pi-ue1-lba3.pardot.com",
+  "go.adinstruments.com": "pi-ue1-lba6.pardot.com",
+  "go.adish.co.jp": "pi-ue1-lba4.pardot.com",
+  "go.adjust.com": "pi-ue1-lba6.pardot.com",
+  "go.adm.com": "pi-ue1-lba2.pardot.com",
+  "go.advantage.zpg.co.uk": "pi-ue1-lba4.pardot.com",
+  "go.adventure-life.com": "pi-ue1-lba1.pardot.com",
+  "go.afa.org": "pi-ue1-lba5.pardot.com",
+  "go.afd.tech": "pi-ue1-lba6.pardot.com",
+  "go.afs.cl": "pi-ue1-lba6.pardot.com",
+  "go.agf.com": "pi-ue1-lba4.pardot.com",
+  "go.aggregage.com": "pi-ue1-lba4.pardot.com",
+  "go.ahnlab.com": "pi-ue1-lba4.pardot.com",
+  "go.aidem.co.jp": "pi-ue1-lba4.pardot.com",
+  "go.aidma-hd.jp": "pi-ue1-lba6.pardot.com",
+  "go.aiven.io": "pi-ue1-lba4.pardot.com",
+  "go.ajis.jp": "pi-ue1-lba3.pardot.com",
+  "go.ak4.jp": "pi-ue1-lba1.pardot.com",
+  "go.alliedtelesis.com": "pi-ue1-lba4.pardot.com",
+  "go.alorica.com": "pi-ue1-lba1.pardot.com",
+  "go.alueducation.com": "pi-ue1-lba6.pardot.com",
+  "go.alula.net": "pi-ue1-lba4.pardot.com",
+  "go.alvernolabs.com": "pi-ue1-lba4.pardot.com",
+  "go.am.amazon.care": "pi-ue1-lba4.pardot.com",
+  "go.amazonnews.com": "pi-ue1-lba6.pardot.com",
+  "go.amazonrecruits.com": "pi-ue1-lba4.pardot.com",
+  "go.amazonsellerservices.com": "pi-ue1-lba6.pardot.com",
+  "go.americancentury.com": "pi-ue1-lba4.pardot.com",
+  "go.americansurplus.com": "pi-ue1-lba4.pardot.com",
+  "go.americantraveler.com": "pi-ue1-lba6.pardot.com",
+  "go.ameyo.com": "pi-ue1-lba4.pardot.com",
+  "go.amirmexico.com": "pi-ue1-lba4.pardot.com",
+  "go.anconsulting.jp": "pi-ue1-lba6.pardot.com",
+  "go.animalequality.org.uk": "pi-ue1-lba4.pardot.com",
+  "go.animationmentor.com": "pi-ue1-lba6.pardot.com",
+  "go.anycolor.co.jp": "pi-ue1-lba4.pardot.com",
+  "go.aoki-amex.com": "pi-ue1-lba4.pardot.com",
+  "go.appa.pe": "pi-ue1-lba6.pardot.com",
+  "go.appsassociates.com": "pi-ue1-lba6.pardot.com",
+  "go.apptimize.com": "pi-ue1-lba4.pardot.com",
+  "go.aqu.am": "pi-ue1-lba6.pardot.com",
+  "go.arcadia.edu": "pi-ue1-lba4.pardot.com",
+  "go.arcfertility.com": "pi-ue1-lba3.pardot.com",
+  "go.arcxp.com": "pi-ue1-lba4.pardot.com",
+  "go.arden.ac.uk": "pi-ue1-lba4.pardot.com",
+  "go.art-trading.co.jp": "pi-ue1-lba6.pardot.com",
+  "go.aruplab.com": "pi-ue1-lba2.pardot.com",
+  "go.ashita-team.com": "pi-ue1-lba4.pardot.com",
+  "go.asicentral.com": "pi-ue1-lba3.pardot.com",
+  "go.askattest.com": "pi-ue1-lba4.pardot.com",
+  "go.associaonline.com": "pi-ue1-lba6.pardot.com",
+  "go.astcorporation.com": "pi-ue1-lba6.pardot.com",
+  "go.at-jinji.jp": "pi-ue1-lba6.pardot.com",
+  "go.auamed.org": "pi-ue1-lba3.pardot.com",
+  "go.aucfan.com": "pi-ue1-lba6.pardot.com",
+  "go.autofi.io": "pi-ue1-lba6.pardot.com",
+  "go.automationedgerpa.com": "pi-ue1-lba6.pardot.com",
+  "go.autorabit.com": "pi-ue1-lba6.pardot.com",
+  "go.autosoftdms.com": "pi-ue1-lba6.pardot.com",
+  "go.avantax.com": "pi-ue1-lba6.pardot.com",
+  "go.aviatnetworks.com": "pi-ue1-lba6.pardot.com",
+  "go.avisonyoung.com": "pi-ue1-lba6.pardot.com",
+  "go.avixa.org": "pi-ue1-lba6.pardot.com",
+  "go.awspartner.com": "pi-ue1-lba6.pardot.com",
+  "go.axesslaw.com": "pi-ue1-lba6.pardot.com",
+  "go.ayudante.jp": "pi-ue1-lba3.pardot.com",
+  "go.azcommerce.com": "pi-ue1-lba4.pardot.com",
+  "go.b2b.postnl.nl": "pi-ue1-lba6.pardot.com",
+  "go.babypark.jp": "pi-ue1-lba6.pardot.com",
+  "go.bachem.com": "pi-ue1-lba6.pardot.com",
+  "go.bailproject.org": "pi-ue1-lba6.pardot.com",
+  "go.bal.com": "pi-ue1-lba2.pardot.com",
+  "go.ballotpedia.org": "pi-ue1-lba4.pardot.com",
+  "go.barona.fi": "pi-ue1-lba4.pardot.com",
+  "go.bats.com": "pi-ue1-lba6.pardot.com",
+  "go.bc-collection.eu": "pi-ue1-lba2.pardot.com",
+  "go.beanscafe.org": "pi-ue1-lba4.pardot.com",
+  "go.bell-group.co.jp": "pi-ue1-lba4.pardot.com",
+  "go.bendix.com.au": "pi-ue1-lba6.pardot.com",
+  "go.benefit-one.co.jp": "pi-ue1-lba6.pardot.com",
+  "go.berry.edu": "pi-ue1-lba4.pardot.com",
+  "go.bibleproject.com": "pi-ue1-lba4.pardot.com",
+  "go.bio.tomys.co.jp": "pi-ue1-lba6.pardot.com",
+  "go.biomerieux.com": "pi-ue1-lba4.pardot.com",
+  "go.bioporto.com": "pi-ue1-lba6.pardot.com",
+  "go.bizrateinsights.com": "pi-ue1-lba6.pardot.com",
+  "go.bizzdesign.com": "pi-ue1-lba6.pardot.com",
+  "go.bluebeam.com": "pi-ue1-lba4.pardot.com",
+  "go.bluecatnetworks.com": "pi-ue1-lba4.pardot.com",
+  "go.bluecorona.com": "pi-ue1-lba6.pardot.com",
+  "go.boomtownroi.com": "pi-ue1-lba6.pardot.com",
+  "go.bosa.com": "pi-ue1-lba4.pardot.com",
+  "go.bostonglobemedia.com": "pi-ue1-lba6.pardot.com",
+  "go.bouygues-immobilier.fr": "pi-ue1-lba6.pardot.com",
+  "go.brandcast.com": "pi-ue1-lba6.pardot.com",
+  "go.breastcancerfoundation.org.nz": "pi-ue1-lba4.pardot.com",
+  "go.brennancenter.org": "pi-ue1-lba6.pardot.com",
+  "go.brighthorizons.com": "pi-ue1-lba6.pardot.com",
+  "go.buildertrend.com": "pi-ue1-lba6.pardot.com",
+  "go.buildon.org": "pi-ue1-lba4.pardot.com",
+  "go.buildwithbmc.com": "pi-ue1-lba4.pardot.com",
+  "go.burtprocess.com": "pi-ue1-lba6.pardot.com",
+  "go.business.rutgers.edu": "pi-ue1-lba2.pardot.com",
+  "go.business.t-mobile.com": "pi-ue1-lba4.pardot.com",
+  "go.buzzvil.com": "pi-ue1-lba4.pardot.com",
+  "go.calendly.com": "pi-ue1-lba6.pardot.com",
+  "go.cambiumnetworks.com": "pi-ue1-lba4.pardot.com",
+  "go.campus.doda.jp": "pi-ue1-lba4.pardot.com",
+  "go.campus.org": "pi-ue1-lba4.pardot.com",
+  "go.canadianctb.ca": "pi-ue1-lba6.pardot.com",
+  "go.canva.com": "go.pardot.com",
+  "go.capgeminigroup.com": "pi-ue1-lba2.pardot.com",
+  "go.capify.com": "pi-ue1-lba2.pardot.com",
+  "go.career-adv.jp": "pi-ue1-lba6.pardot.com",
+  "go.cashstar.com": "pi-ue1-lba2.pardot.com",
+  "go.castellanbc.com": "pi-ue1-lba2.pardot.com",
+  "go.catalina.com": "pi-ue1-lba6.pardot.com",
+  "go.cbdrx4u.com": "pi-ue1-lba2.pardot.com",
+  "go.cboe.com": "pi-ue1-lba6.pardot.com",
+  "go.centralequity.com.au": "pi-ue1-lba2.pardot.com",
+  "go.ceo.org": "pi-ue1-lba4.pardot.com",
+  "go.cerner.com": "pi-ue1-lba4.pardot.com",
+  "go.charisbiblecollege.org": "pi-ue1-lba2.pardot.com",
+  "go.checkout.com": "pi-ue1-lba6.pardot.com",
+  "go.chep.com": "pi-ue1-lba6.pardot.com",
+  "go.cheshireimpact.com": "pi-ue1-lba2.pardot.com",
+  "go.cigr.co.jp": "pi-ue1-lba2.pardot.com",
+  "go.circlek.ee": "pi-ue1-lba2.pardot.com",
+  "go.circlek.ie": "pi-ue1-lba2.pardot.com",
+  "go.circlek.lt": "pi-ue1-lba2.pardot.com",
+  "go.circlek.no": "pi-ue1-lba2.pardot.com",
+  "go.circlek.pl": "pi-ue1-lba2.pardot.com",
+  "go.circlek.se": "pi-ue1-lba6.pardot.com",
+  "go.circu.co.jp": "pi-ue1-lba6.pardot.com",
+  "go.citinet.jp": "pi-ue1-lba4.pardot.com",
+  "go.citysprint.co.uk": "pi-ue1-lba6.pardot.com",
+  "go.cj.com": "pi-ue1-lba6.pardot.com",
+  "go.clearcapital.com": "pi-ue1-lba4.pardot.com",
+  "go.clearwaveinc.com": "pi-ue1-lba6.pardot.com",
+  "go.clever.com": "pi-ue1-lba4.pardot.com",
+  "go.clientdirectmtg.com": "pi-ue1-lba6.pardot.com",
+  "go.clippings.com": "pi-ue1-lba4.pardot.com",
+  "go.cloudcraze.com": "pi-ue1-lba6.pardot.com",
+  "go.cloudflight.io": "pi-ue1-lba4.pardot.com",
+  "go.cloudshare.com": "pi-ue1-lba6.pardot.com",
+  "go.cmegroup.com": "pi-ue1-lba4.pardot.com",
+  "go.cnm.edu": "pi-ue1-lba3.pardot.com",
+  "go.coconutsoftware.com": "pi-ue1-lba6.pardot.com",
+  "go.codefuel.com": "pi-ue1-lba4.pardot.com",
+  "go.cohencpa.com": "pi-ue1-lba4.pardot.com",
+  "go.coherentsolutions.com": "pi-ue1-lba4.pardot.com",
+  "go.coleparmer.com": "pi-ue1-lba4.pardot.com",
+  "go.comiru.jp": "pi-ue1-lba4.pardot.com",
+  "go.commercial.ft.com": "pi-ue1-lba4.pardot.com",
+  "go.communityinfo.org.au": "pi-ue1-lba4.pardot.com",
+  "go.computerhistory.org": "pi-ue1-lba6.pardot.com",
+  "go.comunica-inmobiliaria.acciona.com": "pi-ue1-lba4.pardot.com",
+  "go.concernusa.org": "pi-ue1-lba6.pardot.com",
+  "go.condotravelclub.com": "pi-ue1-lba6.pardot.com",
+  "go.connect.herzing.edu": "pi-ue1-lba6.pardot.com",
+  "go.contractornation.com": "pi-ue1-lba6.pardot.com",
+  "go.coople.com": "pi-ue1-lba6.pardot.com",
+  "go.coosto.com": "pi-ue1-lba6.pardot.com",
+  "go.copado.com": "pi-ue1-lba6.pardot.com",
+  "go.coral.org": "pi-ue1-lba6.pardot.com",
+  "go.cotaexperiences.com": "pi-ue1-lba6.pardot.com",
+  "go.covetrus.com": "pi-ue1-lba6.pardot.com",
+  "go.cqegroup.com": "pi-ue1-lba2.pardot.com",
+  "go.crassone.jp": "pi-ue1-lba2.pardot.com",
+  "go.creaform3d.com": "pi-ue1-lba2.pardot.com",
+  "go.creativevillage.ne.jp": "pi-ue1-lba6.pardot.com",
+  "go.creditorwatch.com.au": "pi-ue1-lba2.pardot.com",
+  "go.crestroninfo.com": "pi-ue1-lba2.pardot.com",
+  "go.crisis24.garda.com": "pi-ue1-lba2.pardot.com",
+  "go.criteriacorp.com": "pi-ue1-lba2.pardot.com",
+  "go.csagroup.org": "pi-ue1-lba2.pardot.com",
+  "go.csusm.edu": "pi-ue1-lba2.pardot.com",
+  "go.cuinsight.com": "pi-ue1-lba2.pardot.com",
+  "go.currencycloud.com": "pi-ue1-lba2.pardot.com",
+  "go.curry.edu": "pi-ue1-lba4.pardot.com",
+  "go.curvature.com": "pi-ue1-lba6.pardot.com",
+  "go.cushmanwakefield.com": "pi-ue1-lba2.pardot.com",
+  "go.customerthermometer.com": "pi-ue1-lba2.pardot.com",
+  "go.cyclingwear.jp": "pi-ue1-lba2.pardot.com",
+  "go.czub.cz": "pi-ue1-lba2.pardot.com",
+  "go.daiichi-kagaku.co.jp": "pi-ue1-lba6.pardot.com",
+  "go.daiko-nexta.co.jp": "pi-ue1-lba6.pardot.com",
+  "go.dawnfoods.com": "pi-ue1-lba6.pardot.com",
+  "go.decom.org": "pi-ue1-lba6.pardot.com",
+  "go.deliveroo.com": "pi-ue1-lba6.pardot.com",
+  "go.demand.technologyadvice.com": "pi-ue1-lba2.pardot.com",
+  "go.demica.com": "pi-ue1-lba4.pardot.com",
+  "go.detectify.com": "pi-ue1-lba6.pardot.com",
+  "go.devskiller.com": "pi-ue1-lba6.pardot.com",
+  "go.dignitymemorial.com": "pi-ue1-lba2.pardot.com",
+  "go.directdefense.com": "pi-ue1-lba2.pardot.com",
+  "go.discoveringthejewishjesus.com": "pi-ue1-lba4.pardot.com",
+  "go.dlink.com": "pi-ue1-lba6.pardot.com",
+  "go.docseducation.com": "pi-ue1-lba2.pardot.com",
+  "go.domino-printing.com": "pi-ue1-lba2.pardot.com",
+  "go.drcody.kr": "pi-ue1-lba5.pardot.com",
+  "go.dream-h.com": "pi-ue1-lba6.pardot.com",
+  "go.dropsuite.com": "pi-ue1-lba6.pardot.com",
+  "go.dubaiairshow.aero": "pi-ue1-lba2.pardot.com",
+  "go.duolingo.com": "pi-ue1-lba6.pardot.com",
+  "go.duotax.com.au": "pi-ue1-lba5.pardot.com",
+  "go.dynamiccatholic.com": "pi-ue1-lba2.pardot.com",
+  "go.e2school.com": "pi-ue1-lba6.pardot.com",
+  "go.eastern.edu": "pi-ue1-lba2.pardot.com",
+  "go.ebq.com": "pi-ue1-lba6.pardot.com",
+  "go.echosupply.com": "pi-ue1-lba6.pardot.com",
+  "go.ecodenchi.com": "pi-ue1-lba6.pardot.com",
+  "go.econsultancy.com": "pi-ue1-lba2.pardot.com",
+  "go.edu.chegg.com": "pi-ue1-lba6.pardot.com",
+  "go.eg.dk": "pi-ue1-lba6.pardot.com",
+  "go.eidebailly.com": "pi-ue1-lba4.pardot.com",
+  "go.element-designs.com": "pi-ue1-lba2.pardot.com",
+  "go.eliinc.com": "pi-ue1-lba6.pardot.com",
+  "go.elkay.com": "pi-ue1-lba2.pardot.com",
+  "go.elliemae.com": "pi-ue1-lba6.pardot.com",
+  "go.enargroup.com": "pi-ue1-lba4.pardot.com",
+  "go.enaspiration.com": "pi-ue1-lba6.pardot.com",
+  "go.energypower.com.au": "pi-ue1-lba4.pardot.com",
+  "go.enetworks.gy": "pi-ue1-lba1.pardot.com",
+  "go.ent.stryker.com": "pi-ue1-lba2.pardot.com",
+  "go.envestnet.com": "pi-ue1-lba1.pardot.com",
+  "go.enweb.jp": "pi-ue1-lba6.pardot.com",
+  "go.epiqglobal.com": "pi-ue1-lba4.pardot.com",
+  "go.episource.com": "pi-ue1-lba5.pardot.com",
+  "go.epm-pro.com": "pi-ue1-lba5.pardot.com",
+  "go.equifax.com": "pi-ue1-lba4.pardot.com",
+  "go.erecta.co.jp": "pi-ue1-lba4.pardot.com",
+  "go.eroad.com": "pi-ue1-lba2.pardot.com",
+  "go.esri.com": "pi-ue1-lba2.pardot.com",
+  "go.esri.in": "pi-ue1-lba4.pardot.com",
+  "go.esrt.nyc": "pi-ue1-lba4.pardot.com",
+  "go.est-pro.co.jp": "pi-ue1-lba6.pardot.com",
+  "go.etfsecurities.com.au": "pi-ue1-lba6.pardot.com",
+  "go.etftrends.com": "pi-ue1-lba2.pardot.com",
+  "go.etsglobal.org": "pi-ue1-lba5.pardot.com",
+  "go.eu.uponor.com": "pi-ue1-lba6.pardot.com",
+  "go.everlongcaptive.com": "pi-ue1-lba6.pardot.com",
+  "go.evopayments.us": "pi-ue1-lba2.pardot.com",
+  "go.experityhealth.com": "pi-ue1-lba2.pardot.com",
+  "go.expertise.com": "pi-ue1-lba2.pardot.com",
+  "go.exploregod.com": "pi-ue1-lba2.pardot.com",
+  "go.exterro.com": "pi-ue1-lba2.pardot.com",
+  "go.exxonmobilchemical.com": "pi-ue1-lba6.pardot.com",
+  "go.ezinvoicefactoring.com": "pi-ue1-lba2.pardot.com",
+  "go.f-ness.com": "pi-ue1-lba2.pardot.com",
+  "go.f24.com": "pi-ue1-lba6.pardot.com",
+  "go.factoryathletics.com": "pi-ue1-lba2.pardot.com",
+  "go.fashionsnoops.com": "pi-ue1-lba2.pardot.com",
+  "go.fathommfg.com": "pi-ue1-lba2.pardot.com",
+  "go.fee.org": "pi-ue1-lba2.pardot.com",
+  "go.fidm.edu": "pi-ue1-lba2.pardot.com",
+  "go.fingercheck.com": "pi-ue1-lba4.pardot.com",
+  "go.finicity.com": "pi-ue1-lba4.pardot.com",
+  "go.fiorentini.com": "pi-ue1-lba2.pardot.com",
+  "go.firm-bond.com": "pi-ue1-lba2.pardot.com",
+  "go.first-finance.fr": "pi-ue1-lba2.pardot.com",
+  "go.firstsolar.com": "pi-ue1-lba5.pardot.com",
+  "go.flashpoint-intel.com": "pi-ue1-lba2.pardot.com",
+  "go.flyingacademy.com": "pi-ue1-lba2.pardot.com",
+  "go.fordhaminstitute.org": "pi-ue1-lba4.pardot.com",
+  "go.foresight.jp": "pi-ue1-lba6.pardot.com",
+  "go.formtechnologies.com": "pi-ue1-lba5.pardot.com",
+  "go.fortinet.com": "pi-ue1-lba1.pardot.com",
+  "go.foryourbusiness.jp": "pi-ue1-lba6.pardot.com",
+  "go.foxitinfo.com": "pi-ue1-lba2.pardot.com",
+  "go.frankgroup.com": "pi-ue1-lba2.pardot.com",
+  "go.frommbeauty.com": "pi-ue1-lba5.pardot.com",
+  "go.fshdsociety.org": "pi-ue1-lba6.pardot.com",
+  "go.fuji.co.jp": "pi-ue1-lba4.pardot.com",
+  "go.fullcontact.com": "pi-ue1-lba6.pardot.com",
+  "go.funoflife.co.jp": "pi-ue1-lba2.pardot.com",
+  "go.garda.com": "pi-ue1-lba6.pardot.com",
+  "go.genelite.com.au": "pi-ue1-lba5.pardot.com",
+  "go.generationjoshua.org": "pi-ue1-lba2.pardot.com",
+  "go.generatorsource.com": "pi-ue1-lba6.pardot.com",
+  "go.gensteel.com": "pi-ue1-lba2.pardot.com",
+  "go.gerbertechnology.com": "pi-ue1-lba2.pardot.com",
+  "go.gesseducation.com": "pi-ue1-lba6.pardot.com",
+  "go.gestilar.com": "pi-ue1-lba2.pardot.com",
+  "go.getabstract.com": "pi-ue1-lba2.pardot.com",
+  "go.getbento.com": "pi-ue1-lba6.pardot.com",
+  "go.getconvey.com": "pi-ue1-lba2.pardot.com",
+  "go.getpantheon.com": "pi-ue1-lba2.pardot.com",
+  "go.getsling.com": "pi-ue1-lba2.pardot.com",
+  "go.gett.com": "pi-ue1-lba6.pardot.com",
+  "go.gilmours.co.nz": "pi-ue1-lba2.pardot.com",
+  "go.gisma.com": "pi-ue1-lba4.pardot.com",
+  "go.glamox.com": "pi-ue1-lba2.pardot.com",
+  "go.global.com": "pi-ue1-lba4.pardot.com",
+  "go.global.medical.canon": "pi-ue1-lba4.pardot.com",
+  "go.globalknowledge.com": "pi-ue1-lba2.pardot.com",
+  "go.globalxetfs.com": "pi-ue1-lba6.pardot.com",
+  "go.gmercyu.edu": "pi-ue1-lba6.pardot.com",
+  "go.gmo-agree.com": "pi-ue1-lba6.pardot.com",
+  "go.gn.com": "pi-ue1-lba6.pardot.com",
+  "go.gni.ca": "pi-ue1-lba6.pardot.com",
+  "go.goldbelly.com": "pi-ue1-lba6.pardot.com",
+  "go.goldentours.co.il": "pi-ue1-lba6.pardot.com",
+  "go.goodcycle.net": "pi-ue1-lba4.pardot.com",
+  "go.goodpatch.com": "pi-ue1-lba6.pardot.com",
+  "go.goodstartgenetics.com": "pi-ue1-lba6.pardot.com",
+  "go.gradle.com": "pi-ue1-lba6.pardot.com",
+  "go.grammarly.com": "pi-ue1-lba6.pardot.com",
+  "go.grandvan.co.jp": "pi-ue1-lba3.pardot.com",
+  "go.grayscale.com": "pi-ue1-lba6.pardot.com",
+  "go.greatergiving.com": "pi-ue1-lba6.pardot.com",
+  "go.grist.org": "pi-ue1-lba6.pardot.com",
+  "go.groadvisorworldwide.com": "pi-ue1-lba6.pardot.com",
+  "go.grow-up1.co.jp": "pi-ue1-lba6.pardot.com",
+  "go.gtl.net": "pi-ue1-lba6.pardot.com",
+  "go.guardicore.com": "pi-ue1-lba2.pardot.com",
+  "go.guidedent.net": "pi-ue1-lba6.pardot.com",
+  "go.guildmortgage.net": "pi-ue1-lba2.pardot.com",
+  "go.gunosy.co.jp": "pi-ue1-lba6.pardot.com",
+  "go.hacknotice.com": "pi-ue1-lba4.pardot.com",
+  "go.happyfox.com": "pi-ue1-lba2.pardot.com",
+  "go.harvardclub.com": "pi-ue1-lba6.pardot.com",
+  "go.hatchwork.co.jp": "pi-ue1-lba6.pardot.com",
+  "go.health.marketing.elsevier.com": "pi-ue1-lba4.pardot.com",
+  "go.healthcaretriangle.com": "pi-ue1-lba2.pardot.com",
+  "go.healthnet.com": "pi-ue1-lba2.pardot.com",
+  "go.healthsavings.com": "pi-ue1-lba2.pardot.com",
+  "go.heartlandpaymentsystems.com": "pi-ue1-lba2.pardot.com",
+  "go.hendrickson-intl.com": "pi-ue1-lba2.pardot.com",
+  "go.hertie-school.org": "pi-ue1-lba4.pardot.com",
+  "go.hexagonmi.com": "pi-ue1-lba2.pardot.com",
+  "go.hexagonsi.com": "pi-ue1-lba4.pardot.com",
+  "go.highradius.com": "pi-ue1-lba4.pardot.com",
+  "go.hireheroesusa.org": "pi-ue1-lba1.pardot.com",
+  "go.hitachi-kokusai.co.jp": "pi-ue1-lba5.pardot.com",
+  "go.hitachi-solutions.co.jp": "pi-ue1-lba4.pardot.com",
+  "go.hks.harvard.edu": "pi-ue1-lba1.pardot.com",
+  "go.hldc.co.jp": "pi-ue1-lba6.pardot.com",
+  "go.hojyokin-portal.jp": "pi-ue1-lba3.pardot.com",
+  "go.homecareassistance.com": "pi-ue1-lba6.pardot.com",
+  "go.homestars.com": "pi-ue1-lba6.pardot.com",
+  "go.honestreporting.com": "pi-ue1-lba6.pardot.com",
+  "go.honorlock.com": "pi-ue1-lba6.pardot.com",
+  "go.horizonsetfs.com": "pi-ue1-lba4.pardot.com",
+  "go.hornblower.com": "pi-ue1-lba4.pardot.com",
+  "go.hornetsecurity.com": "pi-ue1-lba4.pardot.com",
+  "go.hospitalitynet.org": "pi-ue1-lba4.pardot.com",
+  "go.houndify.com": "pi-ue1-lba6.pardot.com",
+  "go.hslda.org": "pi-ue1-lba4.pardot.com",
+  "go.huboo.co.uk": "pi-ue1-lba4.pardot.com",
+  "go.hulu.com": "pi-ue1-lba4.pardot.com",
+  "go.human.sankei.co.jp": "pi-ue1-lba4.pardot.com",
+  "go.iam-media.com": "pi-ue1-lba2.pardot.com",
+  "go.iansresearch.com": "pi-ue1-lba5.pardot.com",
+  "go.ibjapan.com": "pi-ue1-lba5.pardot.com",
+  "go.ibwave.com": "pi-ue1-lba5.pardot.com",
+  "go.iccworld.co.jp": "pi-ue1-lba2.pardot.com",
+  "go.icontainers.com": "pi-ue1-lba2.pardot.com",
+  "go.icotek.com": "pi-ue1-lba6.pardot.com",
+  "go.idealistconsulting.com": "pi-ue1-lba2.pardot.com",
+  "go.identiv.com": "pi-ue1-lba6.pardot.com",
+  "go.iemca.com": "pi-ue1-lba4.pardot.com",
+  "go.iesve.com": "pi-ue1-lba4.pardot.com",
+  "go.iiba.org": "pi-ue1-lba6.pardot.com",
+  "go.iirp.edu": "pi-ue1-lba2.pardot.com",
+  "go.imd.org": "pi-ue1-lba6.pardot.com",
+  "go.imitsu.jp": "pi-ue1-lba2.pardot.com",
+  "go.immuta.com": "pi-ue1-lba6.pardot.com",
+  "go.in.kantar.com": "pi-ue1-lba6.pardot.com",
+  "go.indowwindows.com": "pi-ue1-lba2.pardot.com",
+  "go.inese.es": "pi-ue1-lba2.pardot.com",
+  "go.influencerintelligence.com": "pi-ue1-lba4.pardot.com",
+  "go.infotech.com": "pi.t.pardot.com",
+  "go.ingredion.com": "pi-ue1-lba4.pardot.com",
+  "go.innova-jp.com": "pi-ue1-lba4.pardot.com",
+  "go.innovyze.com": "pi-ue1-lba6.pardot.com",
+  "go.inntopia.com": "pi-ue1-lba6.pardot.com",
+  "go.inside.man": "pi-ue1-lba4.pardot.com",
+  "go.integritystaffing.com": "pi-ue1-lba6.pardot.com",
+  "go.internationalit.com": "pi-ue1-lba6.pardot.com",
+  "go.intrix.co.jp": "pi-ue1-lba4.pardot.com",
+  "go.invcanada.ca": "pi-ue1-lba4.pardot.com",
+  "go.iocdf.org": "pi-ue1-lba4.pardot.com",
+  "go.iotm2mcouncil.org": "pi-ue1-lba2.pardot.com",
+  "go.ipgphotonics.com": "pi.t.pardot.com",
+  "go.is.com": "pi-ue1-lba4.pardot.com",
+  "go.ishin1853.co.jp": "pi-ue1-lba4.pardot.com",
+  "go.isil.pe": "pi-ue1-lba5.pardot.com",
+  "go.itmedia.co.jp": "pi-ue1-lba6.pardot.com",
+  "go.itpro.tv": "pi-ue1-lba2.pardot.com",
+  "go.jaarbeurs.nl": "pi-ue1-lba4.pardot.com",
+  "go.jabil.com": "pi-ue1-lba2.pardot.com",
+  "go.jacksonphysiciansearch.com": "pi-ue1-lba4.pardot.com",
+  "go.jaggaer.com": "pi-ue1-lba4.pardot.com",
+  "go.jerseyfinance.je": "pi-ue1-lba2.pardot.com",
+  "go.jessup.edu": "pi-ue1-lba4.pardot.com",
+  "go.jfklfoundation.org": "pi-ue1-lba2.pardot.com",
+  "go.jinjibu.jp": "pi-ue1-lba2.pardot.com",
+  "go.jlg.com": "pi-ue1-lba1.pardot.com",
+  "go.jmdc.co.jp": "pi-ue1-lba2.pardot.com",
+  "go.johnmaxwellteam.com": "pi-ue1-lba2.pardot.com",
+  "go.johnmaxwellteam.es": "pi-ue1-lba4.pardot.com",
+  "go.joho-translation.com": "pi-ue1-lba2.pardot.com",
+  "go.joindrizly.com": "pi-ue1-lba2.pardot.com",
+  "go.joinlpl.com": "pi-ue1-lba6.pardot.com",
+  "go.jointhebibleproject.com": "pi-ue1-lba2.pardot.com",
+  "go.jopwell.com": "pi-ue1-lba2.pardot.com",
+  "go.jumio.com": "pi-ue1-lba2.pardot.com",
+  "go.just-internet.nl": "pi-ue1-lba6.pardot.com",
+  "go.kanopy.com": "pi-ue1-lba2.pardot.com",
+  "go.karat.com": "pi-ue1-lba2.pardot.com",
+  "go.katena.com": "pi-ue1-lba6.pardot.com",
+  "go.keeptruckin.com": "pi-ue1-lba6.pardot.com",
+  "go.kellimeador.com": "pi-ue1-lba2.pardot.com",
+  "go.kerzner.com": "pi-ue1-lba2.pardot.com",
+  "go.kidsoutandabout.com": "pi-ue1-lba6.pardot.com",
+  "go.kirinoikeuchi.co.jp": "pi-ue1-lba2.pardot.com",
+  "go.knime.com": "pi-ue1-lba6.pardot.com",
+  "go.komen.org": "pi-ue1-lba6.pardot.com",
+  "go.komori.com": "pi-ue1-lba6.pardot.com",
+  "go.konespares.us": "pi-ue1-lba2.pardot.com",
+  "go.konghq.com": "pi-ue1-lba6.pardot.com",
+  "go.koujishi.com": "pi-ue1-lba6.pardot.com",
+  "go.kryteriononline.com": "pi-ue1-lba6.pardot.com",
+  "go.kuronekoyamato.co.jp": "pi-ue1-lba2.pardot.com",
+  "go.kyckr.com": "pi-ue1-lba4.pardot.com",
+  "go.labelexpo.com": "pi-ue1-lba4.pardot.com",
+  "go.lambweston.com": "pi-ue1-lba2.pardot.com",
+  "go.lares.com": "pi-ue1-lba2.pardot.com",
+  "go.lasikplus.com": "pi-ue1-lba2.pardot.com",
+  "go.leaptodigital.com": "pi-ue1-lba2.pardot.com",
+  "go.learning.sankei.co.jp": "pi-ue1-lba2.pardot.com",
+  "go.learninga-z.com": "pi-ue1-lba2.pardot.com",
+  "go.learningagency.co.jp": "pi-ue1-lba6.pardot.com",
+  "go.learnosity.com": "pi-ue1-lba2.pardot.com",
+  "go.legrand.us": "pi-ue1-lba6.pardot.com",
+  "go.lennox.com": "pi-ue1-lba6.pardot.com",
+  "go.lepide.com": "pi-ue1-lba6.pardot.com",
+  "go.lexisnexis.ca": "pi-ue1-lba6.pardot.com",
+  "go.lexology.com": "pi-ue1-lba2.pardot.com",
+  "go.liaisonedu.com": "pi-ue1-lba6.pardot.com",
+  "go.lifefitness.com": "pi-ue1-lba6.pardot.com",
+  "go.lightbend.com": "pi-ue1-lba2.pardot.com",
+  "go.liveon.ne.jp": "pi-ue1-lba4.pardot.com",
+  "go.liveu.tv": "pi-ue1-lba2.pardot.com",
+  "go.livingvehicle.com": "pi-ue1-lba4.pardot.com",
+  "go.lixil.co.jp": "pi-ue1-lba6.pardot.com",
+  "go.local.fr": "pi-ue1-lba6.pardot.com",
+  "go.logicaloperations.com": "pi-ue1-lba4.pardot.com",
+  "go.lorienglobal.com": "pi-ue1-lba6.pardot.com",
+  "go.loungemembers.com": "pi-ue1-lba6.pardot.com",
+  "go.lsbf.org.uk": "pi-ue1-lba2.pardot.com",
+  "go.ltgplc.com": "pi-ue1-lba2.pardot.com",
+  "go.lwtears.com": "pi-ue1-lba4.pardot.com",
+  "go.lyftbusiness.com": "pi-ue1-lba2.pardot.com",
+  "go.mac-v.org": "pi-ue1-lba6.pardot.com",
+  "go.machadomeyer.com.br": "pi-ue1-lba6.pardot.com",
+  "go.macrobond.com": "pi-ue1-lba4.pardot.com",
+  "go.magmfg.com": "pi-ue1-lba2.pardot.com",
+  "go.maground.com": "pi-ue1-lba6.pardot.com",
+  "go.mainline.com": "pi-ue1-lba6.pardot.com",
+  "go.majesco.com": "pi-ue1-lba2.pardot.com",
+  "go.marcofi.com": "pi-ue1-lba4.pardot.com",
+  "go.marcusmillichap.com": "pi-ue1-lba2.pardot.com",
+  "go.marketing.br-succeed.jp": "pi-ue1-lba4.pardot.com",
+  "go.marketing.castoredc.com": "pi-ue1-lba2.pardot.com",
+  "go.marketing.hcibulletin.com": "pi-ue1-lba2.pardot.com",
+  "go.marketing.hitachi-systems-security.com": "pi-ue1-lba4.pardot.com",
+  "go.marquiscompanies.com": "pi-ue1-lba2.pardot.com",
+  "go.martindale.com": "pi-ue1-lba4.pardot.com",
+  "go.masterclass.com": "pi-ue1-lba2.pardot.com",
+  "go.materialise.com": "pi-ue1-lba6.pardot.com",
+  "go.matific.com": "pi-ue1-lba2.pardot.com",
+  "go.mawer.com": "pi-ue1-lba4.pardot.com",
+  "go.mbs.com.vn": "pi-ue1-lba5.pardot.com",
+  "go.meau.com": "pi-ue1-lba2.pardot.com",
+  "go.meclabs.com": "pi-ue1-lba4.pardot.com",
+  "go.mecyes.co.jp": "pi-ue1-lba5.pardot.com",
+  "go.medical-tribune.co.jp": "pi-ue1-lba5.pardot.com",
+  "go.mega-hatsu.com": "pi-ue1-lba5.pardot.com",
+  "go.memsource.com": "pi-ue1-lba2.pardot.com",
+  "go.mercatus.org": "pi-ue1-lba6.pardot.com",
+  "go.mercyforanimals.org": "pi-ue1-lba4.pardot.com",
+  "go.meredith.com": "pi-ue1-lba4.pardot.com",
+  "go.message.ofx.com": "pi-ue1-lba6.pardot.com",
+  "go.metacompliance.com": "pi-ue1-lba4.pardot.com",
+  "go.mi.edu": "pi-ue1-lba6.pardot.com",
+  "go.michelman.com": "pi-ue1-lba4.pardot.com",
+  "go.mikro.com.tr": "pi-ue1-lba2.pardot.com",
+  "go.milanlaser.com": "pi-ue1-lba2.pardot.com",
+  "go.mimacom.com": "pi-ue1-lba5.pardot.com",
+  "go.minerva.kgi.edu": "pi-ue1-lba2.pardot.com",
+  "go.minnadeooyasan.com": "pi-ue1-lba2.pardot.com",
+  "go.missingkids.org": "pi-ue1-lba4.pardot.com",
+  "go.mitek-us.com": "pi-ue1-lba1.pardot.com",
+  "go.mksinst.com": "pi-ue1-lba2.pardot.com",
+  "go.modernstar.com": "pi-ue1-lba2.pardot.com",
+  "go.moleculardevices.com": "pi-ue1-lba5.pardot.com",
+  "go.moneris.com": "pi-ue1-lba4.pardot.com",
+  "go.moranyachts.com": "pi-ue1-lba4.pardot.com",
+  "go.movementontheground.com": "pi-ue1-lba5.pardot.com",
+  "go.myacn.com": "pi-ue1-lba6.pardot.com",
+  "go.mybusinessacademy.ph": "pi-ue1-lba6.pardot.com",
+  "go.myflvs.net": "pi-ue1-lba4.pardot.com",
+  "go.mylawshield.com": "pi-ue1-lba6.pardot.com",
+  "go.mymajors.com": "pi-ue1-lba6.pardot.com",
+  "go.mynavi-works.jp": "pi-ue1-lba6.pardot.com",
+  "go.navitar.com": "pi-ue1-lba6.pardot.com",
+  "go.ncoa.org": "pi-ue1-lba6.pardot.com",
+  "go.nearpod.com": "pi-ue1-lba6.pardot.com",
+  "go.neb.com": "pi-ue1-lba6.pardot.com",
+  "go.neo-career.co.jp": "pi-ue1-lba3.pardot.com",
+  "go.netbasequid.com": "pi-ue1-lba6.pardot.com",
+  "go.netcore.in": "pi-ue1-lba4.pardot.com",
+  "go.netcorecloud.com": "pi-ue1-lba6.pardot.com",
+  "go.netcraftsmen.com": "pi-ue1-lba6.pardot.com",
+  "go.neteller.com": "pi-ue1-lba6.pardot.com",
+  "go.netgaincloud.com": "pi-ue1-lba6.pardot.com",
+  "go.nevensuboticstiftung.de": "pi-ue1-lba5.pardot.com",
+  "go.neverware.com": "pi-ue1-lba2.pardot.com",
+  "go.newmotion.com": "pi-ue1-lba5.pardot.com",
+  "go.nextiva.com": "pi-ue1-lba2.pardot.com",
+  "go.nfpa.org": "pi-ue1-lba1.pardot.com",
+  "go.nielseniq.com": "pi-ue1-lba5.pardot.com",
+  "go.nihon-eiga.com": "pi-ue1-lba2.pardot.com",
+  "go.ninjaone.com": "pi-ue1-lba2.pardot.com",
+  "go.ninjarmm.com": "pi-ue1-lba2.pardot.com",
+  "go.nisc.coop": "pi-ue1-lba2.pardot.com",
+  "go.nivati.com": "pi-ue1-lba4.pardot.com",
+  "go.njc.co.jp": "pi-ue1-lba2.pardot.com",
+  "go.njit.edu": "pi-ue1-lba4.pardot.com",
+  "go.nlpacademy.co.uk": "pi-ue1-lba4.pardot.com",
+  "go.nlpjapan.co.jp": "pi-ue1-lba1.pardot.com",
+  "go.nomaco.com": "pi-ue1-lba4.pardot.com",
+  "go.northsideentertainmentholdings.com": "pi-ue1-lba4.pardot.com",
+  "go.northwest.sg": "pi-ue1-lba5.pardot.com",
+  "go.nsfocusglobal.com": "pi-ue1-lba1.pardot.com",
+  "go.nst-inc.com": "pi-ue1-lba2.pardot.com",
+  "go.nurse.tv": "pi-ue1-lba4.pardot.com",
+  "go.ocearch.org": "pi-ue1-lba2.pardot.com",
+  "go.odysseylogistics.com": "pi-ue1-lba5.pardot.com",
+  "go.officedeyasai.jp": "pi-ue1-lba4.pardot.com",
+  "go.officestation.jp": "pi-ue1-lba5.pardot.com",
+  "go.onecareer.jp": "pi-ue1-lba1.pardot.com",
+  "go.onfido.com": "pi-ue1-lba1.pardot.com",
+  "go.onrec.com": "pi-ue1-lba5.pardot.com",
+  "go.opendoors.nl": "pi-ue1-lba5.pardot.com",
+  "go.openspace.ai": "pi-ue1-lba5.pardot.com",
+  "go.openspacetrust.org": "pi-ue1-lba1.pardot.com",
+  "go.opmantek.com": "pi-ue1-lba4.pardot.com",
+  "go.orgain.com": "pi-ue1-lba4.pardot.com",
+  "go.orixrentec.jp": "pi-ue1-lba2.pardot.com",
+  "go.oru.edu": "pi-ue1-lba4.pardot.com",
+  "go.ossur.com": "pi-ue1-lba3.pardot.com",
+  "go.ouriginal.com": "pi-ue1-lba1.pardot.com",
+  "go.oventrop.com": "pi-ue1-lba1.pardot.com",
+  "go.ownbackup.com": "pi-ue1-lba1.pardot.com",
+  "go.ownyourlaundromat.com": "pi-ue1-lba1.pardot.com",
+  "go.pace.uwinnipegcourses.ca": "pi-ue1-lba1.pardot.com",
+  "go.packback.co": "pi-ue1-lba1.pardot.com",
+  "go.packsize.com": "pi-ue1-lba3.pardot.com",
+  "go.pacsci.org": "pi-ue1-lba4.pardot.com",
+  "go.pageuppeople.com": "pi-ue1-lba4.pardot.com",
+  "go.pal-planning.jp": "pi-ue1-lba6.pardot.com",
+  "go.panasonic.biz": "pi-ue1-lba4.pardot.com",
+  "go.pardot.wondershare.com": "pi-ue1-lba1.pardot.com",
+  "go.pasonagroup.biz": "pi-ue1-lba4.pardot.com",
+  "go.patrontechnology.com": "pi-ue1-lba4.pardot.com",
+  "go.pcci.edu": "pi-ue1-lba3.pardot.com",
+  "go.pcna.com": "pi-ue1-lba6.pardot.com",
+  "go.pcssoft.com": "pi-ue1-lba5.pardot.com",
+  "go.pdf.com": "pi-ue1-lba1.pardot.com",
+  "go.pemphigus.org": "pi-ue1-lba4.pardot.com",
+  "go.perkville.com": "pi-ue1-lba6.pardot.com",
+  "go.persistent.com": "pi-ue1-lba1.pardot.com",
+  "go.phoenixaustralia.org": "pi-ue1-lba6.pardot.com",
+  "go.pictet.co.jp": "pi-ue1-lba3.pardot.com",
+  "go.pilotflyingj.com": "pi-ue1-lba6.pardot.com",
+  "go.plan-international.jp": "pi-ue1-lba1.pardot.com",
+  "go.planar.com": "pi-ue1-lba6.pardot.com",
+  "go.planetdepos.com": "pi-ue1-lba1.pardot.com",
+  "go.planmeca.com": "pi-ue1-lba1.pardot.com",
+  "go.planpartners.com.au": "pi-ue1-lba1.pardot.com",
+  "go.pleiades-agent.com": "pi-ue1-lba1.pardot.com",
+  "go.plivo.com": "pi-ue1-lba1.pardot.com",
+  "go.plotly.com": "pi-ue1-lba3.pardot.com",
+  "go.portadafrente.com": "pi-ue1-lba1.pardot.com",
+  "go.positive.co.jp": "pi-ue1-lba1.pardot.com",
+  "go.powerblanket.com": "pi-ue1-lba1.pardot.com",
+  "go.prasetiyamulya.ac.id": "pi-ue1-lba1.pardot.com",
+  "go.precor.com": "pi-ue1-lba3.pardot.com",
+  "go.pricer.com": "pi-ue1-lba1.pardot.com",
+  "go.privy.id": "pi-ue1-lba1.pardot.com",
+  "go.processmaker.com": "pi-ue1-lba1.pardot.com",
+  "go.procommit.co.jp": "pi-ue1-lba1.pardot.com",
+  "go.proficio.com": "pi-ue1-lba1.pardot.com",
+  "go.progyny.com": "pi-ue1-lba1.pardot.com",
+  "go.promedia.nl": "pi-ue1-lba1.pardot.com",
+  "go.prontest.co.jp": "pi-ue1-lba1.pardot.com",
+  "go.quantumxc.com": "pi-ue1-lba1.pardot.com",
+  "go.quintevents.com": "pi-ue1-lba3.pardot.com",
+  "go.quocard.com": "pi-ue1-lba1.pardot.com",
+  "go.r-ac.jp": "pi-ue1-lba1.pardot.com",
+  "go.radsource.us": "pi-ue1-lba6.pardot.com",
+  "go.rainn.org": "pi-ue1-lba1.pardot.com",
+  "go.rajapack.es": "pi-ue1-lba1.pardot.com",
+  "go.rambus.com": "pi-ue1-lba1.pardot.com",
+  "go.ravensdown.co.nz": "pi-ue1-lba6.pardot.com",
+  "go.rbfinance.com": "pi-ue1-lba1.pardot.com",
+  "go.reccoo.com": "pi-ue1-lba1.pardot.com",
+  "go.reiwa.com.au": "pi-ue1-lba1.pardot.com",
+  "go.relsci.com": "pi-ue1-lba3.pardot.com",
+  "go.rendia.com": "pi-ue1-lba1.pardot.com",
+  "go.retailmenot.com": "pi-ue1-lba3.pardot.com",
+  "go.rethinkfirst.com": "pi-ue1-lba1.pardot.com",
+  "go.rho.co": "pi-ue1-lba3.pardot.com",
+  "go.ricksoft.jp": "pi-ue1-lba1.pardot.com",
+  "go.rightpoint.com": "pi-ue1-lba1.pardot.com",
+  "go.ringteacher.com": "pi-ue1-lba4.pardot.com",
+  "go.ripple.com": "pi-ue1-lba3.pardot.com",
+  "go.riskscreen.com": "pi-ue1-lba3.pardot.com",
+  "go.risorse.it": "pi-ue1-lba1.pardot.com",
+  "go.rmbcap.com": "pi-ue1-lba4.pardot.com",
+  "go.rockhall.com": "pi-ue1-lba1.pardot.com",
+  "go.rocktechnology.sandvik": "pi-ue1-lba1.pardot.com",
+  "go.rolanddg.com": "pi-ue1-lba1.pardot.com",
+  "go.rolanddg.eu": "pi-ue1-lba3.pardot.com",
+  "go.rolanddga.com": "pi-ue1-lba3.pardot.com",
+  "go.roundhillinvestments.com": "pi-ue1-lba3.pardot.com",
+  "go.rrfedu.com": "pi-ue1-lba1.pardot.com",
+  "go.rtautomation.com": "pi-ue1-lba1.pardot.com",
+  "go.rworks.jp": "pi-ue1-lba1.pardot.com",
+  "go.sacap.edu.za": "pi-ue1-lba1.pardot.com",
+  "go.safe.com": "go.pardot.com",
+  "go.sagasix.jp": "go.pardot.com",
+  "go.saintleo.edu": "go.pardot.com",
+  "go.saintpaul.com.br": "go.pardot.com",
+  "go.sakai-news.jp": "go.pardot.com",
+  "go.scad.edu": "go.pardot.com",
+  "go.schoolwith.me": "go.pardot.com",
+  "go.schwabenhaus.de": "go.pardot.com",
+  "go.science.ne.jp": "go.pardot.com",
+  "go.sdworx.com": "go.pardot.com",
+  "go.searchdiscovery.com": "go.pardot.com",
+  "go.sejuku.net": "go.pardot.com",
+  "go.sellerlabs.com": "go.pardot.com",
+  "go.seraku.co.jp": "go.pardot.com",
+  "go.serda.com": "go.pardot.com",
+  "go.sharpusa.com": "go.pardot.com",
+  "go.shipenergy.com": "go.pardot.com",
+  "go.shipware.com": "go.pardot.com",
+  "go.siemon.com": "go.pardot.com",
+  "go.sightdx.com": "go.pardot.com",
+  "go.silverchef.com.au": "go.pardot.com",
+  "go.similarweb.com": "go.pardot.com",
+  "go.simplertrading.com": "go.pardot.com",
+  "go.simutechgroup.com": "go.pardot.com",
+  "go.sinch.com": "go.pardot.com",
+  "go.sitecore.com": "go.pardot.com",
+  "go.skience.com": "go.pardot.com",
+  "go.skillsurvey.com": "go.pardot.com",
+  "go.skrill.com": "go.pardot.com",
+  "go.skuvault.com": "go.pardot.com",
+  "go.skymedia.co.uk": "go.pardot.com",
+  "go.skyward.com": "go.pardot.com",
+  "go.slalom.com": "go.pardot.com",
+  "go.smarthr.co.jp": "go.pardot.com",
+  "go.smarthr.jp": "go.pardot.com",
+  "go.smartinsights.com": "go.pardot.com",
+  "go.smashfly.com": "pi-ue1-lba1.pardot.com",
+  "go.snowplowanalytics.com": "pi-ue1-lba5.pardot.com",
+  "go.sodexo.com": "pi-ue1-lba5.pardot.com",
+  "go.solutions.jbhifi.com.au": "pi-ue1-lba5.pardot.com",
+  "go.som.yale.edu": "pi-ue1-lba2.pardot.com",
+  "go.somu-lier.jp": "pi-ue1-lba4.pardot.com",
+  "go.sonnenbatterie.de": "pi-ue1-lba5.pardot.com",
+  "go.sonybsc.com": "pi-ue1-lba2.pardot.com",
+  "go.soprema.ca": "pi-ue1-lba5.pardot.com",
+  "go.sorotouch.jp": "pi-ue1-lba2.pardot.com",
+  "go.soudal.com.au": "pi-ue1-lba2.pardot.com",
+  "go.spacesaver.com": "pi-ue1-lba1.pardot.com",
+  "go.spellingcity.com": "pi-ue1-lba5.pardot.com",
+  "go.spottswoode.com": "pi-ue1-lba4.pardot.com",
+  "go.sre-group.co.jp": "pi-ue1-lba1.pardot.com",
+  "go.ssl247.co.uk": "pi-ue1-lba2.pardot.com",
+  "go.stackadapt.com": "pi-ue1-lba4.pardot.com",
+  "go.standuptocancer.org": "go.pardot.com",
+  "go.starkeypro.com": "go.pardot.com",
+  "go.steadyinvestor.com": "go.pardot.com",
+  "go.stealthbits.com": "go.pardot.com",
+  "go.stemcell.co.jp": "go.pardot.com",
+  "go.stlpartners.com": "go.pardot.com",
+  "go.stmary.edu": "go.pardot.com",
+  "go.stmrobotics.com": "go.pardot.com",
+  "go.stockmark.co.jp": "go.pardot.com",
+  "go.stocknews.com": "go.pardot.com",
+  "go.store.yahoo-net.jp": "go.pardot.com",
+  "go.str.com": "go.pardot.com",
+  "go.streetlightdata.com": "go.pardot.com",
+  "go.strongtie.com": "go.pardot.com",
+  "go.studentbeans.com": "go.pardot.com",
+  "go.stworld.jp": "pi-ue1-lba6.pardot.com",
+  "go.style--plus.jp": "pi-ue1-lba6.pardot.com",
+  "go.submittable.com": "pi-ue1-lba6.pardot.com",
+  "go.suite-elite.com": "pi-ue1-lba6.pardot.com",
+  "go.sulzer.com": "pi-ue1-lba6.pardot.com",
+  "go.superiorglove.com": "pi-ue1-lba6.pardot.com",
+  "go.support.nec.co.jp": "pi-ue1-lba3.pardot.com",
+  "go.surestep.net": "pi-ue1-lba6.pardot.com",
+  "go.sustainablebrands.com": "pi-ue1-lba6.pardot.com",
+  "go.swagup.com": "pi-ue1-lba6.pardot.com",
+  "go.swiftcapital.com": "pi-ue1-lba6.pardot.com",
+  "go.swit.io": "pi-ue1-lba6.pardot.com",
+  "go.tabiiro.jp": "pi-ue1-lba6.pardot.com",
+  "go.tabitabigujo.com": "pi-ue1-lba4.pardot.com",
+  "go.talknote.com": "pi-ue1-lba6.pardot.com",
+  "go.tamko.com": "pi-ue1-lba4.pardot.com",
+  "go.tapp-co.jp": "pi-ue1-lba6.pardot.com",
+  "go.taylorandfrancis.com": "pi-ue1-lba4.pardot.com",
+  "go.tbmcg.com": "pi-ue1-lba6.pardot.com",
+  "go.teamsilverback.com": "pi-ue1-lba6.pardot.com",
+  "go.tecido.co.jp": "pi-ue1-lba6.pardot.com",
+  "go.telusinternational.com": "pi-ue1-lba4.pardot.com",
+  "go.temenos.com": "pi-ue1-lba6.pardot.com",
+  "go.tempoautomation.com": "pi-ue1-lba6.pardot.com",
+  "go.ten-x.com": "pi-ue1-lba4.pardot.com",
+  "go.terminus.com": "pi-ue1-lba6.pardot.com",
+  "go.terracanis.eu": "pi-ue1-lba5.pardot.com",
+  "go.tetrapak.com": "pi-ue1-lba4.pardot.com",
+  "go.thanks-gift.net": "pi-ue1-lba6.pardot.com",
+  "go.theblueground.com": "pi-ue1-lba6.pardot.com",
+  "go.thecaq.org": "pi-ue1-lba6.pardot.com",
+  "go.thecmoclub.com": "pi-ue1-lba6.pardot.com",
+  "go.thefire.org": "pi-ue1-lba6.pardot.com",
+  "go.thefork.com": "pi-ue1-lba6.pardot.com",
+  "go.thehub-amazon.com": "go.pardot.com",
+  "go.thelawreviews.co.uk": "go.pardot.com",
+  "go.theoceancleanup.com": "go.pardot.com",
+  "go.theofficegroup.com": "go.pardot.com",
+  "go.thetruth.com": "go.pardot.com",
+  "go.theworknumber.com": "go.pardot.com",
+  "go.thinkful.com": "go.pardot.com",
+  "go.thisisthemovement.org": "go.pardot.com",
+  "go.thoughtspot.com": "go.pardot.com",
+  "go.thycotic.com": "go.pardot.com",
+  "go.tidalsoftware.com": "go.pardot.com",
+  "go.timberlyne.com": "go.pardot.com",
+  "go.tireworldkan.com": "go.pardot.com",
+  "go.tmp.com": "go.pardot.com",
+  "go.tmx.com": "go.pardot.com",
+  "go.toiretumari-center.com": "go.pardot.com",
+  "go.tomatis.com": "go.pardot.com",
+  "go.topmarkfunding.com": "go.pardot.com",
+  "go.toshibatec.co.jp": "go.pardot.com",
+  "go.toshin.com": "go.pardot.com",
+  "go.traccsolution.com": "go.pardot.com",
+  "go.tradewindfinance.com": "go.pardot.com",
+  "go.tradeworks.co.jp": "go.pardot.com",
+  "go.tradingtechnologies.com": "go.pardot.com",
+  "go.trendexpress.jp": "go.pardot.com",
+  "go.trendhunter.com": "go.pardot.com",
+  "go.trilogyed.com": "go.pardot.com",
+  "go.tripplite.com": "go.pardot.com",
+  "go.truckstop.com": "go.pardot.com",
+  "go.trueterpenes.com": "go.pardot.com",
+  "go.trustificorp.com": "go.pardot.com",
+  "go.tsmedia.si": "go.pardot.com",
+  "go.tsvconnect.com": "go.pardot.com",
+  "go.tubu-tubu.net": "go.pardot.com",
+  "go.turnitin.com": "go.pardot.com",
+  "go.turtle.com": "go.pardot.com",
+  "go.twinprime.com": "go.pardot.com",
+  "go.twistertrimmer.com": "go.pardot.com",
+  "go.tyndaleusa.com": "go.pardot.com",
+  "go.tyro.com": "go.pardot.com",
+  "go.ucanwest.ca": "go.pardot.com",
+  "go.ucccoffeeprofessional.co.jp": "go.pardot.com",
+  "go.ue-germany.com": "go.pardot.com",
+  "go.ufm.edu": "go.pardot.com",
+  "go.ultragenyx.com": "go.pardot.com",
+  "go.umassmed.edu": "go.pardot.com",
+  "go.unbabel.com": "go.pardot.com",
+  "go.uninorte.edu.co": "go.pardot.com",
+  "go.updates.iata.org": "go.pardot.com",
+  "go.uplight.com": "go.pardot.com",
+  "go.urkund.com": "go.pardot.com",
+  "go.usp.org": "go.pardot.com",
+  "go.utimaco.com": "go.pardot.com",
+  "go.uwstout.edu": "go.pardot.com",
+  "go.valpak.com": "go.pardot.com",
+  "go.vantagepointsoftware.com": "go.pardot.com",
+  "go.vari.com": "go.pardot.com",
+  "go.venusconcept.com": "go.pardot.com",
+  "go.verifi.com": "go.pardot.com",
+  "go.vertex-group.co.jp": "go.pardot.com",
+  "go.vhslearning.org": "go.pardot.com",
+  "go.viator.com": "go.pardot.com",
+  "go.viewics.com": "go.pardot.com",
+  "go.villahomes.com": "go.pardot.com",
+  "go.vineyard29.com": "go.pardot.com",
+  "go.visaplace.com": "go.pardot.com",
+  "go.volansys.com": "go.pardot.com",
+  "go.volava.com": "pi-ue1-lba1.pardot.com",
+  "go.volusion.com": "pi-ue1-lba1.pardot.com",
+  "go.wabco-auto.com": "pi-ue1-lba1.pardot.com",
+  "go.wajax.com": "pi-ue1-lba4.pardot.com",
+  "go.walkme.com": "pi-ue1-lba3.pardot.com",
+  "go.walsworth.com": "pi-ue1-lba1.pardot.com",
+  "go.waris.jp": "pi-ue1-lba1.pardot.com",
+  "go.washingtongas.com": "pi-ue1-lba4.pardot.com",
+  "go.webhose.io": "pi-ue1-lba1.pardot.com",
+  "go.weinig.com": "pi-ue1-lba1.pardot.com",
+  "go.wernerco.com": "pi-ue1-lba1.pardot.com",
+  "go.whatfix.com": "pi-ue1-lba3.pardot.com",
+  "go.whill.us": "pi-ue1-lba1.pardot.com",
+  "go.whitehousehistory.org": "pi-ue1-lba6.pardot.com",
+  "go.wholesaleclub.ca": "pi-ue1-lba6.pardot.com",
+  "go.wholesaleinvestor.com.au": "pi-ue1-lba4.pardot.com",
+  "go.whyryerson.ca": "pi-ue1-lba4.pardot.com",
+  "go.wildmontana.org": "pi-ue1-lba4.pardot.com",
+  "go.willof-work.co.jp": "pi-ue1-lba4.pardot.com",
+  "go.willof.co.jp": "pi-ue1-lba6.pardot.com",
+  "go.wilsonamplifiers.com": "pi-ue1-lba5.pardot.com",
+  "go.woodmac.com": "pi-ue1-lba4.pardot.com",
+  "go.woodstoxx.be": "pi-ue1-lba1.pardot.com",
+  "go.wpvip.com": "pi-ue1-lba4.pardot.com",
+  "go.xrite.com": "pi-ue1-lba4.pardot.com",
+  "go.yit.fi": "pi-ue1-lba4.pardot.com",
+  "go.yokohama-style.jp": "pi-ue1-lba3.pardot.com",
+  "go.yomoni.fr": "pi-ue1-lba4.pardot.com",
+  "go.yotsuyaotsuka.com": "pi-ue1-lba4.pardot.com",
+  "go.yume-tec.co.jp": "pi-ue1-lba6.pardot.com",
+  "go.zen.co.uk": "pi-ue1-lba1.pardot.com",
+  "go.zenlayer.com": "pi-ue1-lba1.pardot.com",
+  "go.zextras.com": "pi-ue1-lba1.pardot.com",
+  "go.zillowgroup.com": "pi-ue1-lba1.pardot.com",
+  "go.zimperium.com": "go.pardot.com",
+  "go.zipwater.com": "go.pardot.com",
+  "go.zumper.com": "go.pardot.com",
+  "go1.pbmedia.org": "go.pardot.com",
+  "go1.pearson.com": "go.pardot.com",
+  "go2.bounteous.com": "go.pardot.com",
+  "go2.edwardian.com": "go.pardot.com",
+  "go2.ipfabric.io": "go.pardot.com",
+  "go2.lilyandlime.com": "go.pardot.com",
+  "go2.manta.com": "go.pardot.com",
+  "go2.onemarketing.jp": "go.pardot.com",
+  "go2.ottawa.edu": "go.pardot.com",
+  "go2.remax.it": "go.pardot.com",
+  "go2.sciton.com": "go.pardot.com",
+  "go2.signalboosters.com": "go.pardot.com",
+  "go2.tlv.com": "go.pardot.com",
+  "go4.toshiba.com": "go.pardot.com",
+  "goconnect.safehorizon.org": "go.pardot.com",
+  "goemail.electrorent.com": "go.pardot.com",
+  "gonow.threatconnect.com": "go.pardot.com",
+  "got.newrelic.com": "go.pardot.com",
+  "goto.blackbox.com": "go.pardot.com",
+  "goto.sportradar.com": "go.pardot.com",
+  "gould.law.usc.edu": "go.pardot.com",
+  "goworkforce.equifax.com": "go.pardot.com",
+  "gradprograms.cals.cornell.edu": "go.pardot.com",
+  "grow.restaurant365.com": "go.pardot.com",
+  "guidance.godaddy.com": "go.pardot.com",
+  "hello.endeavour.com.au": "go.pardot.com",
+  "hello.hearingchoices.com.au": "go.pardot.com",
+  "hello.heroku.com": "go.pardot.com",
+  "hello.homecorp.com": "go.pardot.com",
+  "hello.learn.mailgun.com": "go.pardot.com",
+  "hello.learn.mailjet.com": "go.pardot.com",
+  "hello.tollbrothers.com": "go.pardot.com",
+  "hello.vagaro.com": "go.pardot.com",
+  "help.iagcargo.com": "go.pardot.com",
+  "hola.calamoycran.com": "go.pardot.com",
+  "home.kcprofessional.com": "go.pardot.com",
+  "homes.stanleymartin.com": "go.pardot.com",
+  "houjin.resort.co.jp": "pi-ue1-lba1.pardot.com",
+  "hs.healthstream.com": "pi-ue1-lba2.pardot.com",
+  "hub.cantabrialabs.com": "pi-ue1-lba4.pardot.com",
+  "hyp.sekologistics.com": "pi-ue1-lba5.pardot.com",
+  "i.resilio.com": "pi-ue1-lba1.pardot.com",
+  "iam.investecassetmanagement.com": "pi-ue1-lba5.pardot.com",
+  "id.schroders.email": "pi-ue1-lba1.pardot.com",
+  "ideas.360factors.com": "pi-ue1-lba5.pardot.com",
+  "ij.itojuku.co.jp": "pi-ue1-lba2.pardot.com",
+  "imagine.rolanddg.co.jp": "go.pardot.com",
+  "inbound.veem.com": "go.pardot.com",
+  "inf.clickpay.com": "go.pardot.com",
+  "info-analytics.keyence.com": "go.pardot.com",
+  "info-mail.val.co.jp": "go.pardot.com",
+  "info.2020spaces.com": "pi-ue1-lba5.pardot.com",
+  "info.439610.com": "go.pardot.com",
+  "info.abgoutbound.com": "go.pardot.com",
+  "info.acara.edu.au": "go.pardot.com",
+  "info.accuroemr.com": "go.pardot.com",
+  "info.advertising.roku.com": "go.pardot.com",
+  "info.aeris.com": "go.pardot.com",
+  "info.affiliatesummit.com": "go.pardot.com",
+  "info.affirm.com": "go.pardot.com",
+  "info.agoop.co.jp": "go.pardot.com",
+  "info.aimservices.co.jp": "go.pardot.com",
+  "info.alive-web.co.jp": "go.pardot.com",
+  "info.anchor.com.au": "pi-ue1-lba4.pardot.com",
+  "info.anesthesiabusinessconsultant.com": "pi-ue1-lba6.pardot.com",
+  "info.anna-media.jp": "pi-ue1-lba4.pardot.com",
+  "info.apart-toushi.com": "pi-ue1-lba4.pardot.com",
+  "info.api-odm.com": "pi-ue1-lba4.pardot.com",
+  "info.appspace.com": "pi-ue1-lba4.pardot.com",
+  "info.aramex.com": "pi-ue1-lba4.pardot.com",
+  "info.ariasystems.com": "go.pardot.com",
+  "info.ausa.org": "pi-ue1-lba4.pardot.com",
+  "info.aviot.jp": "pi-ue1-lba4.pardot.com",
+  "info.azek.com": "go.pardot.com",
+  "info.badgermeter.com": "pi-ue1-lba6.pardot.com",
+  "info.bakodx.com": "go.pardot.com",
+  "info.baslerweb.com": "pi-ue1-lba4.pardot.com",
+  "info.bernstein.com": "go.pardot.com",
+  "info.bigassfans.com": "go.pardot.com",
+  "info.biworldwide.com": "pi-ue1-lba6.pardot.com",
+  "info.biz.nuro.jp": "go.pardot.com",
+  "info.bizdrive.ntt-east.co.jp": "go.pardot.com",
+  "info.bostonmedicalgroup.es": "go.pardot.com",
+  "info.bringme.com": "go.pardot.com",
+  "info.business.rutgers.edu": "go.pardot.com",
+  "info.cafe.co.jp": "go.pardot.com",
+  "info.caltex.com.au": "go.pardot.com",
+  "info.candid.org": "go.pardot.com",
+  "info.car.harman.com": "go.pardot.com",
+  "info.caratt.jp": "go.pardot.com",
+  "info.cbps.canon.com": "go.pardot.com",
+  "info.cca.edu": "go.pardot.com",
+  "info.cepheid.com": "go.pardot.com",
+  "info.clarion-defence.com": "go.pardot.com",
+  "info.clarion-fire-rescue.com": "go.pardot.com",
+  "info.clariongaming.com": "pi-ue1-lba6.pardot.com",
+  "info.classmethod.jp": "pi-ue1-lba4.pardot.com",
+  "info.clinic-mail.net": "pi-ue1-lba6.pardot.com",
+  "info.closemotorfinance.co.uk": "pi-ue1-lba6.pardot.com",
+  "info.clubdaikin.jp": "pi-ue1-lba3.pardot.com",
+  "info.conet.de": "pi-ue1-lba6.pardot.com",
+  "info.contently.com": "pi-ue1-lba4.pardot.com",
+  "info.cordenpharma.com": "pi-ue1-lba6.pardot.com",
+  "info.coxbusiness.com": "pi-ue1-lba1.pardot.com",
+  "info.cpr.org": "pi-ue1-lba6.pardot.com",
+  "info.crasco.jp": "pi-ue1-lba6.pardot.com",
+  "info.criticalmention.com": "pi-ue1-lba6.pardot.com",
+  "info.crjobs.co.jp": "pi-ue1-lba6.pardot.com",
+  "info.csgi.com": "pi-ue1-lba5.pardot.com",
+  "info.cybrary.it": "pi-ue1-lba4.pardot.com",
+  "info.daikin.co.jp": "pi-ue1-lba4.pardot.com",
+  "info.daikinaircon.com": "pi-ue1-lba3.pardot.com",
+  "info.daikincc.com": "pi-ue1-lba3.pardot.com",
+  "info.datacore.com": "pi-ue1-lba1.pardot.com",
+  "info.datavail.com": "pi-ue1-lba6.pardot.com",
+  "info.denso-am.eu": "pi-ue1-lba4.pardot.com",
+  "info.digital-marketing.jp": "pi-ue1-lba6.pardot.com",
+  "info.discoverychannel.jp": "pi-ue1-lba6.pardot.com",
+  "info.duckerfrontier.com": "pi-ue1-lba6.pardot.com",
+  "info.e-sogi.com": "pi-ue1-lba6.pardot.com",
+  "info.eco-house21.com": "pi-ue1-lba4.pardot.com",
+  "info.edenbraehomes.com.au": "pi-ue1-lba6.pardot.com",
+  "info.eishinkan.net": "pi-ue1-lba4.pardot.com",
+  "info.elmark.com.pl": "pi-ue1-lba4.pardot.com",
+  "info.embarkbh.com": "pi-ue1-lba6.pardot.com",
+  "info.energage.com": "pi-ue1-lba4.pardot.com",
+  "info.energycouncil.com": "pi-ue1-lba6.pardot.com",
+  "info.epsilon.jp": "pi-ue1-lba3.pardot.com",
+  "info.equilar.com": "pi-ue1-lba6.pardot.com",
+  "info.eseye.com": "go.pardot.com",
+  "info.esker.com": "go.pardot.com",
+  "info.etoile.co.jp": "go.pardot.com",
+  "info.ezdi.com": "go.pardot.com",
+  "info.falkonry.com": "go.pardot.com",
+  "info.faro.com": "go.pardot.com",
+  "info.fcbgroup.com.au": "go.pardot.com",
+  "info.fcg.fi": "go.pardot.com",
+  "info.flocksafety.com": "go.pardot.com",
+  "info.focus-economics.com": "go.pardot.com",
+  "info.foresightfactory.co": "go.pardot.com",
+  "info.freee.co.jp": "go.pardot.com",
+  "info.gaba.co.jp": "go.pardot.com",
+  "info.gardenstory.jp": "go.pardot.com",
+  "info.genscape.com": "go.pardot.com",
+  "info.georgebrown.ca": "go.pardot.com",
+  "info.global.weir": "go.pardot.com",
+  "info.goanritsu.com": "go.pardot.com",
+  "info.grmdocumentmanagement.com": "go.pardot.com",
+  "info.gurock.com": "go.pardot.com",
+  "info.ha-ds.com": "pi-ue1-lba2.pardot.com",
+  "info.hape.co.jp": "pi-ue1-lba2.pardot.com",
+  "info.hedgeye.com": "go.pardot.com",
+  "info.henryscheinone.com": "pi-ue1-lba3.pardot.com",
+  "info.hireright.com": "pi-ue1-lba6.pardot.com",
+  "info.hitachi-lg.com": "go.pardot.com",
+  "info.hnavi.co.jp": "go.pardot.com",
+  "info.hoitomo.jp": "go.pardot.com",
+  "info.hometech.co.jp": "go.pardot.com",
+  "info.homunity.com": "go.pardot.com",
+  "info.hon.com": "go.pardot.com",
+  "info.hrbrain.jp": "go.pardot.com",
+  "info.hsabank.com": "go.pardot.com",
+  "info.hurex.jp": "go.pardot.com",
+  "info.hyland.com": "go.pardot.com",
+  "info.ic-medical-clinic.com": "go.pardot.com",
+  "info.icertis.com": "go.pardot.com",
+  "info.idexx.com": "go.pardot.com",
+  "info.imagotechmedia.com": "go.pardot.com",
+  "info.invast.jp": "go.pardot.com",
+  "info.iproov.com": "go.pardot.com",
+  "info.irt.org.au": "go.pardot.com",
+  "info.isnetworld.com": "go.pardot.com",
+  "info.jobteaser.com": "go.pardot.com",
+  "info.johnmaxwell.com": "go.pardot.com",
+  "info.joinmosaic.com": "go.pardot.com",
+  "info.jwplayer.com": "go.pardot.com",
+  "info.kanden-rd.co.jp": "go.pardot.com",
+  "info.kataduke-kaitori.com": "go.pardot.com",
+  "info.katsumi-jyutaku.co.jp": "go.pardot.com",
+  "info.kensington.com": "go.pardot.com",
+  "info.korr.com": "go.pardot.com",
+  "info.ktc-school.com": "go.pardot.com",
+  "info.kyoceradocumentsolutions.co.jp": "go.pardot.com",
+  "info.laserfiche.com": "pi-ue1-lba6.pardot.com",
+  "info.legrandav.com": "pi-ue1-lba6.pardot.com",
+  "info.lendbuzz.com": "pi-ue1-lba6.pardot.com",
+  "info.leviton.com": "pi-ue1-lba1.pardot.com",
+  "info.lexipol.com": "pi-ue1-lba6.pardot.com",
+  "info.lgsolarusa.com": "pi-ue1-lba6.pardot.com",
+  "info.linkties.com": "pi-ue1-lba1.pardot.com",
+  "info.liprose-group.jp": "pi-ue1-lba3.pardot.com",
+  "info.lonsec.com.au": "pi-ue1-lba4.pardot.com",
+  "info.lovelandinnovations.com": "pi-ue1-lba1.pardot.com",
+  "info.lr.org": "pi-ue1-lba4.pardot.com",
+  "info.lrqa.com": "pi-ue1-lba6.pardot.com",
+  "info.lsuonline.lsu.edu": "pi-ue1-lba5.pardot.com",
+  "info.lucca.fr": "pi-ue1-lba1.pardot.com",
+  "info.lukerchocolate.com": "pi-ue1-lba4.pardot.com",
+  "info.m-orefice.com": "pi-ue1-lba3.pardot.com",
+  "info.ma-cp.com": "pi-ue1-lba3.pardot.com",
+  "info.maccabi-tlv.co.il": "go.pardot.com",
+  "info.macromill.com": "go.pardot.com",
+  "info.mairsandpower.com": "go.pardot.com",
+  "info.maki-web.co.jp": "go.pardot.com",
+  "info.marel.com": "go.pardot.com",
+  "info.markem-imaje.com": "go.pardot.com",
+  "info.marsh.com": "go.pardot.com",
+  "info.maru-sin.co.jp": "go.pardot.com",
+  "info.mastercard.com": "go.pardot.com",
+  "info.maxdigital.com": "go.pardot.com",
+  "info.mazex.jp": "go.pardot.com",
+  "info.mcquaig.com": "go.pardot.com",
+  "info.medialink-ml.co.jp": "go.pardot.com",
+  "info.medprodisposal.com": "go.pardot.com",
+  "info.meitetsufudosan.co.jp": "go.pardot.com",
+  "info.mention.com": "go.pardot.com",
+  "info.meyerproducts.com": "go.pardot.com",
+  "info.milanounica.it": "go.pardot.com",
+  "info.mindmax.net": "go.pardot.com",
+  "info.mining.komatsu": "go.pardot.com",
+  "info.mirai-works.co.jp": "go.pardot.com",
+  "info.moo.com": "go.pardot.com",
+  "info.mrc.org": "go.pardot.com",
+  "info.msci.com": "go.pardot.com",
+  "info.nagoya-dolphins.co.jp": "go.pardot.com",
+  "info.nankodo.co.jp": "go.pardot.com",
+  "info.nettix.fi": "go.pardot.com",
+  "info.netzsch-grinding.com": "go.pardot.com",
+  "info.nihonkiin.or.jp": "go.pardot.com",
+  "info.nissenren-scort.co.jp": "go.pardot.com",
+  "info.nitto.com": "go.pardot.com",
+  "info.nna.jp": "go.pardot.com",
+  "info.nowait.com": "pi-ue1-lba4.pardot.com",
+  "info.npd.com": "pi-ue1-lba4.pardot.com",
+  "info.nttcoms.com": "pi-ue1-lba4.pardot.com",
+  "info.nuveen.com": "pi-ue1-lba4.pardot.com",
+  "info.nybc.org": "pi-ue1-lba4.pardot.com",
+  "info.orientalbank.com": "pi-ue1-lba6.pardot.com",
+  "info.pasona.co.jp": "pi-ue1-lba4.pardot.com",
+  "info.pasonagroup.co.jp": "pi-ue1-lba4.pardot.com",
+  "info.paylocity.com": "pi-ue1-lba4.pardot.com",
+  "info.pbcruise.com": "pi-ue1-lba4.pardot.com",
+  "info.perfect-space.jp": "pi-ue1-lba5.pardot.com",
+  "info.persado.com": "go.pardot.com",
+  "info.piramalpharmasolutions.com": "pi-ue1-lba5.pardot.com",
+  "info.plusad.co.jp": "pi-ue1-lba4.pardot.com",
+  "info.pods.com": "pi-ue1-lba6.pardot.com",
+  "info.porterdavis.com.au": "pi-ue1-lba5.pardot.com",
+  "info.publicissapient.com": "pi-ue1-lba6.pardot.com",
+  "info.qbsol.com": "go.pardot.com",
+  "info.r3.com": "go.pardot.com",
+  "info.rasmech.com": "go.pardot.com",
+  "info.rcni.com": "go.pardot.com",
+  "info.republicservices.com": "go.pardot.com",
+  "info.revizto.com": "go.pardot.com",
+  "info.ridecell.com": "go.pardot.com",
+  "info.ridewithvia.com": "go.pardot.com",
+  "info.rightcapital.com": "go.pardot.com",
+  "info.righteye.com": "go.pardot.com",
+  "info.riso-kyoikugroup.com": "go.pardot.com",
+  "info.ritehite.com": "go.pardot.com",
+  "info.roadie.com": "go.pardot.com",
+  "info.roomsketcher.com": "go.pardot.com",
+  "info.rtv.co.jp": "go.pardot.com",
+  "info.ryte.com": "go.pardot.com",
+  "info.safetyservicescompany.com": "go.pardot.com",
+  "info.safie.link": "go.pardot.com",
+  "info.salesforce.org": "go.pardot.com",
+  "info.sangetsu-vosne.co.jp": "go.pardot.com",
+  "info.saultcollege.ca": "go.pardot.com",
+  "info.searchsolution.goo.ne.jp": "go.pardot.com",
+  "info.securitymetrics.com": "go.pardot.com",
+  "info.shaip.com": "go.pardot.com",
+  "info.share.co.uk": "go.pardot.com",
+  "info.sheahomes.com": "go.pardot.com",
+  "info.shfb.org": "go.pardot.com",
+  "info.shiki.jp": "go.pardot.com",
+  "info.skylinkjapan.com": "go.pardot.com",
+  "info.sony-semicon.co.jp": "go.pardot.com",
+  "info.soumunomori.com": "go.pardot.com",
+  "info.specopssoft.com": "go.pardot.com",
+  "info.spintelligent.com": "go.pardot.com",
+  "info.startia.co.jp": "go.pardot.com",
+  "info.studykik.com": "go.pardot.com",
+  "info.sumai1.com": "go.pardot.com",
+  "info.supremo.jp": "go.pardot.com",
+  "info.sylvania.com": "go.pardot.com",
+  "info.t-marketing.jp": "go.pardot.com",
+  "info.takachiho-kk.co.jp": "go.pardot.com",
+  "info.teamhgs.com": "go.pardot.com",
+  "info.terex.com": "go.pardot.com",
+  "info.terrace.co.jp": "go.pardot.com",
+  "info.thebulletin.org": "go.pardot.com",
+  "info.theiwsr.com": "go.pardot.com",
+  "info.thghosting.com": "go.pardot.com",
+  "info.thumbtack.com": "go.pardot.com",
+  "info.ticketbud.com": "go.pardot.com",
+  "info.tokyoconsultinggroup.com": "go.pardot.com",
+  "info.tori-seikei.jp": "go.pardot.com",
+  "info.toy-factory.jp": "go.pardot.com",
+  "info.toyama-nishi.jp": "go.pardot.com",
+  "info.tpx.com": "go.pardot.com",
+  "info.traverselegal.com": "pi-ue1-lba6.pardot.com",
+  "info.travis-ci.com": "pi-ue1-lba4.pardot.com",
+  "info.trustly.net": "pi-ue1-lba6.pardot.com",
+  "info.tso-int.co.jp": "pi-ue1-lba6.pardot.com",
+  "info.tsukijihongwanji.jp": "pi-ue1-lba3.pardot.com",
+  "info.tsys.com": "pi-ue1-lba6.pardot.com",
+  "info.tubularlabs.com": "pi-ue1-lba6.pardot.com",
+  "info.tyco-fire.com": "pi-ue1-lba6.pardot.com",
+  "info.ucc.or.jp": "pi-ue1-lba4.pardot.com",
+  "info.ufonline.ufl.edu": "pi-ue1-lba4.pardot.com",
+  "info.unav.edu": "pi-ue1-lba2.pardot.com",
+  "info.und.edu": "pi-ue1-lba6.pardot.com",
+  "info.unglobalcompact.org": "pi-ue1-lba6.pardot.com",
+  "info.unifa-e.com": "pi-ue1-lba4.pardot.com",
+  "info.univapay.com": "pi-ue1-lba4.pardot.com",
+  "info.upcea.edu": "pi-ue1-lba4.pardot.com",
+  "info.upperhand.com": "pi-ue1-lba4.pardot.com",
+  "info.urban-expo.com": "go.pardot.com",
+  "info.usknet.com": "go.pardot.com",
+  "info.uw.org": "go.pardot.com",
+  "info.vbest.jp": "go.pardot.com",
+  "info.verizondigitalmedia.com": "go.pardot.com",
+  "info.viewsonic.com": "go.pardot.com",
+  "info.watergen.com": "go.pardot.com",
+  "info.welocalize.com": "go.pardot.com",
+  "info.whitehouse.co.jp": "go.pardot.com",
+  "info.wwwad17.mitsubishielectric.co.jp": "go.pardot.com",
+  "info.yha.com.au": "go.pardot.com",
+  "info.yourland.com": "go.pardot.com",
+  "info.zenhoren.jp": "go.pardot.com",
+  "info2.jove.com": "go.pardot.com",
+  "infolettres.groupemediatfo.org": "pi-ue1-lba1.pardot.com",
+  "inform.biohithealthcare.com": "pi-ue1-lba6.pardot.com",
+  "information.grovepointfinancial.com": "pi-ue1-lba1.pardot.com",
+  "information.kestrafinancial.com": "pi-ue1-lba1.pardot.com",
+  "information.liftmaster.com": "pi-ue1-lba1.pardot.com",
+  "information.mastercard.com": "pi-ue1-lba5.pardot.com",
+  "information.plusseikotsuin.com": "pi-ue1-lba6.pardot.com",
+  "inquiry.homes.co.jp": "pi-ue1-lba6.pardot.com",
+  "insights.idbs.com": "pi-ue1-lba1.pardot.com",
+  "insights.renasantbank.com": "pi-ue1-lba1.pardot.com",
+  "inspiratie.talisman.nl": "pi-ue1-lba4.pardot.com",
+  "integrations.rev.com": "pi-ue1-lba6.pardot.com",
+  "international.bau.edu.tr": "pi-ue1-lba5.pardot.com",
+  "intr.marubun.co.jp": "pi-ue1-lba6.pardot.com",
+  "ism.brother.com": "pi-ue1-lba6.pardot.com",
+  "it.100tb.com": "pi-ue1-lba6.pardot.com",
+  "it.zettle.com": "pi-ue1-lba1.pardot.com",
+  "join.checkatrade.com": "go.pardot.com",
+  "join.ibo.org": "go.pardot.com",
+  "join.stmichaelsabbey.com": "go.pardot.com",
+  "jp.bostonscientific.com": "go.pardot.com",
+  "jp.globalsign.marketing": "go.pardot.com",
+  "kits.diesellaptops.com": "go.pardot.com",
+  "landing.ni.com": "go.pardot.com",
+  "landings.ealde.es": "go.pardot.com",
+  "learn.advertising.snapchat.com": "go.pardot.com",
+  "learn.cisecurity.org": "go.pardot.com",
+  "learn.codefellows.org": "go.pardot.com",
+  "learn.ctscorp.com": "go.pardot.com",
+  "learn.fusionrm.com": "go.pardot.com",
+  "learn.hedera.com": "go.pardot.com",
+  "learn.middlebury.edu": "go.pardot.com",
+  "learn.oclc.org": "go.pardot.com",
+  "learn.supportlogic.io": "go.pardot.com",
+  "library.axial.net": "go.pardot.com",
+  "link.cgdev.org": "go.pardot.com",
+  "link.ferret-plus.com": "go.pardot.com",
+  "link.saba.edu": "go.pardot.com",
+  "links.calcpa.org": "go.pardot.com",
+  "links.osl.com": "go.pardot.com",
+  "listing.yahoo-net.jp": "go.pardot.com",
+  "live.imimobile.com": "go.pardot.com",
+  "livein.common.com": "go.pardot.com",
+  "lp.chemicaldaily.co.jp": "go.pardot.com",
+  "lp.infomart.co.jp": "go.pardot.com",
+  "lp.kenshoku-bank.com": "go.pardot.com",
+  "lp.motivation-cloud.com": "go.pardot.com",
+  "lp.protolabs.com": "go.pardot.com",
+  "lp.rev.ai": "go.pardot.com",
+  "lp.rev.com": "go.pardot.com",
+  "lp.scylladb.com": "go.pardot.com",
+  "lubricants.shell.com": "go.pardot.com",
+  "m.amazonappservices.com": "go.pardot.com",
+  "m.bellwethercoffee.com": "go.pardot.com",
+  "m.blackberry.com": "go.pardot.com",
+  "m.cialfo.co": "go.pardot.com",
+  "m.kencorp.co.jp": "go.pardot.com",
+  "m1.ccc.edu": "go.pardot.com",
+  "ma.55truck.com": "go.pardot.com",
+  "ma.ceneje.si": "go.pardot.com",
+  "ma.ga-tech.co.jp": "go.pardot.com",
+  "ma.goopass.jp": "go.pardot.com",
+  "ma.hitachi-solutions-west.co.jp": "go.pardot.com",
+  "ma.mitsuihome.co.jp": "go.pardot.com",
+  "ma.polytechhealth.com": "go.pardot.com",
+  "ma.weeklybcn.com": "go.pardot.com",
+  "mag.link-academy.co.jp": "go.pardot.com",
+  "mail.aap.nl": "go.pardot.com",
+  "mail.electrorent.com": "go.pardot.com",
+  "mail.mercatoradvisorygroup.com": "go.pardot.com",
+  "mail.subscription-store.com": "go.pardot.com",
+  "mal.ntt-at.info": "go.pardot.com",
+  "map.liferay.com": "go.pardot.com",
+  "marcomm.synechroncrm.com": "go.pardot.com",
+  "markeinfo.zenrin.co.jp": "go.pardot.com",
+  "marketing-agro.basf.com": "go.pardot.com",
+  "marketing.accessdata.com": "go.pardot.com",
+  "marketing.amalan.com": "go.pardot.com",
+  "marketing.americanpest.net": "go.pardot.com",
+  "marketing.aureusacademy.com": "go.pardot.com",
+  "marketing.avoxi.com": "go.pardot.com",
+  "marketing.bengroup.com": "go.pardot.com",
+  "marketing.championhomes.com": "go.pardot.com",
+  "marketing.cloudco.com.mx": "go.pardot.com",
+  "marketing.ctbuh.org": "go.pardot.com",
+  "marketing.euncet.es": "go.pardot.com",
+  "marketing.eurofiber.nl": "go.pardot.com",
+  "marketing.genesiscapital.com": "go.pardot.com",
+  "marketing.gilderlehrman.org": "go.pardot.com",
+  "marketing.global.com": "go.pardot.com",
+  "marketing.hvivo.com": "go.pardot.com",
+  "marketing.iagcargo.com": "go.pardot.com",
+  "marketing.ideastatica.com": "go.pardot.com",
+  "marketing.ihrdc.com": "go.pardot.com",
+  "marketing.investlithuania.com": "go.pardot.com",
+  "marketing.iss-shipping.com": "go.pardot.com",
+  "marketing.itap.it": "go.pardot.com",
+  "marketing.jacuzziontario.com": "go.pardot.com",
+  "marketing.katalystng.com": "go.pardot.com",
+  "marketing.lawvu.com": "go.pardot.com",
+  "marketing.lh-oumi.co.jp": "go.pardot.com",
+  "marketing.libry.jp": "go.pardot.com",
+  "marketing.loopnetmail.com": "go.pardot.com",
+  "marketing.meaningcloud.com": "pi-ue1-lba2.pardot.com",
+  "marketing.mytvsuper.com": "go.pardot.com",
+  "marketing.nexa.com": "go.pardot.com",
+  "marketing.nytlicensing.com": "go.pardot.com",
+  "marketing.optelgroup.com": "pi-ue1-lba2.pardot.com",
+  "marketing.piano.io": "pi-ue1-lba2.pardot.com",
+  "marketing.potocco.it": "pi-ue1-lba2.pardot.com",
+  "marketing.rently.com": "go.pardot.com",
+  "marketing.simplepart.com": "go.pardot.com",
+  "marketing.smartcamp.asia": "pi-ue1-lba2.pardot.com",
+  "marketing.spglobal.com": "go.pardot.com",
+  "marketing.terranovasecurity.com": "go.pardot.com",
+  "marketing.testbirds.com": "go.pardot.com",
+  "marketing.thephoenix.org": "go.pardot.com",
+  "marketing.upsidetosmartside.com": "go.pardot.com",
+  "marketing.worldcourier.com": "go.pardot.com",
+  "marketing.xertica.com": "pi-ue1-lba6.pardot.com",
+  "materials.vtex.com": "go.pardot.com",
+  "mbdtrack.cyrilshroff.com": "pi-ue1-lba2.pardot.com",
+  "mcc.engineering.northwestern.edu": "go.pardot.com",
+  "mct.paypay.ne.jp": "go.pardot.com",
+  "media.bupasalud.com.mx": "go.pardot.com",
+  "media.globalsign.com": "go.pardot.com",
+  "media.polleverywhere.com": "pi-ue1-lba4.pardot.com",
+  "meet.maddyness.com": "go.pardot.com",
+  "messagespardot.paysafe.com": "go.pardot.com",
+  "metal.schrott24.de": "go.pardot.com",
+  "missions.advancingnativemissions.com": "go.pardot.com",
+  "mk.8card.net": "go.pardot.com",
+  "mk.desknets.com": "go.pardot.com",
+  "mk.ma.livable.jp": "go.pardot.com",
+  "mk.sios.jp": "go.pardot.com",
+  "mk01.toshiba.semicon-storage.com": "go.pardot.com",
+  "mkg.bespinglobal.com": "go.pardot.com",
+  "mkt.alue.co.jp": "go.pardot.com",
+  "mkt.bankokuya.jp": "go.pardot.com",
+  "mkt.bigo.mx": "go.pardot.com",
+  "mkt.enterprise.kt.com": "pi-ue1-lba3.pardot.com",
+  "mkt.karcher.co.jp": "pi-ue1-lba4.pardot.com",
+  "mkt.letgo.com": "pi-ue1-lba6.pardot.com",
+  "mkt.marzanoresources.com": "pi-ue1-lba6.pardot.com",
+  "mkt.solutiontree.com": "pi-ue1-lba6.pardot.com",
+  "mkt.tecsup.edu.pe": "pi-ue1-lba3.pardot.com",
+  "mkt.unex.net": "pi-ue1-lba2.pardot.com",
+  "mktg.nexenta.com": "pi-ue1-lba4.pardot.com",
+  "mktg.ryerson.com": "pi-ue1-lba4.pardot.com",
+  "mktlatam.adecco.com": "pi-ue1-lba6.pardot.com",
+  "mlit.cybernet.co.jp": "pi-ue1-lba4.pardot.com",
+  "mma.marshmma.com": "pi-ue1-lba6.pardot.com",
+  "more.athene.com": "pi-ue1-lba4.pardot.com",
+  "more.criteo.com": "pi-ue1-lba6.pardot.com",
+  "more.globant.com": "pi-ue1-lba6.pardot.com",
+  "more.spectralink.com": "pi-ue1-lba4.pardot.com",
+  "more.transparency.org": "pi-ue1-lba6.pardot.com",
+  "mp.digital.wilhelmsen.com": "go.pardot.com",
+  "mx.zettle.com": "go.pardot.com",
+  "my.firmafx.com": "go.pardot.com",
+  "my.npace.org": "go.pardot.com",
+  "my.rapidrecon.com": "go.pardot.com",
+  "my.stylerow.com": "go.pardot.com",
+  "my.tsys.com": "go.pardot.com",
+  "na.brenntag.com": "go.pardot.com",
+  "naturallyinspiredflooring.woodpeckerflooring.co.uk": "go.pardot.com",
+  "ne.dematic.com": "go.pardot.com",
+  "negocios.orientalbank.com": "go.pardot.com",
+  "net.genmaikoso.co.jp": "go.pardot.com",
+  "net.panasonic.co.jp": "go.pardot.com",
+  "newcustomer.iagcargo.com": "go.pardot.com",
+  "news.autotune.com": "go.pardot.com",
+  "news.bradken.com": "go.pardot.com",
+  "news.pruftechnik.com": "go.pardot.com",
+  "news.thebosco.com": "go.pardot.com",
+  "news.trakref.com": "go.pardot.com",
+  "ng.nextgen.com": "go.pardot.com",
+  "njc.n-create.co.jp": "go.pardot.com",
+  "nl.zettle.com": "go.pardot.com",
+  "nnn.knippgroup.com": "go.pardot.com",
+  "no.zettle.com": "go.pardot.com",
+  "noexcuses.coyote.com": "go.pardot.com",
+  "nordics.gn.com": "go.pardot.com",
+  "note.takara-bio.co.jp": "go.pardot.com",
+  "notification.pond.co.nz": "go.pardot.com",
+  "now.inriver.com": "go.pardot.com",
+  "now.kennasecurity.com": "go.pardot.com",
+  "now.strategiccoach.com": "go.pardot.com",
+  "now.t-mobile.com": "go.pardot.com",
+  "now.theceomagazine.com": "go.pardot.com",
+  "now1.t-mobile.com": "go.pardot.com",
+  "nps.info.cardinalhealth.com": "go.pardot.com",
+  "nuevocliente.iagcargo.com": "go.pardot.com",
+  "oc.opencorp.com.au": "go.pardot.com",
+  "offers.amilia.com": "go.pardot.com",
+  "offers.egym.com": "go.pardot.com",
+  "offers.netpulse.com": "go.pardot.com",
+  "official.jpreturns.com": "go.pardot.com",
+  "okr.resily.com": "go.pardot.com",
+  "om.owens-minor.com": "go.pardot.com",
+  "one.apu.ac.jp": "go.pardot.com",
+  "one.fanuc.eu": "go.pardot.com",
+  "onlineidi.abdn.ac.uk": "go.pardot.com",
+  "our.ldk.com.au": "go.pardot.com",
+  "our.transparency.org": "go.pardot.com",
+  "outreach.adgm.com": "go.pardot.com",
+  "p.circaworks.com": "go.pardot.com",
+  "p.jxpress.net": "go.pardot.com",
+  "p.keywalker.co.jp": "go.pardot.com",
+  "p.lbresearch.com": "go.pardot.com",
+  "p.opro.net": "go.pardot.com",
+  "p.reed.co.uk": "go.pardot.com",
+  "p.shure.com": "pi-ue1-lba4.pardot.com",
+  "page.bsigroup.com": "pi-ue1-lba2.pardot.com",
+  "page.franchisebusiness.com.au": "go.pardot.com",
+  "pages.atlassian.com": "go.pardot.com",
+  "pages.bsigroup.com": "pi-ue1-lba4.pardot.com",
+  "pages.cloud.vmware.com": "pi-ue1-lba4.pardot.com",
+  "pages.jp.meviy.misumi-ec.com": "pi-ue1-lba1.pardot.com",
+  "pages.linxglobal.com": "pi-ue1-lba1.pardot.com",
+  "pages.netbase.com": "go.pardot.com",
+  "pages.nikoninst.com": "go.pardot.com",
+  "pages.okamura.com": "go.pardot.com",
+  "pages.rex-rental.jp": "go.pardot.com",
+  "pages.ssi-schaefer.com": "go.pardot.com",
+  "pages.telestream.net": "go.pardot.com",
+  "pages.wartsila.digital": "go.pardot.com",
+  "par.shop-pro.jp": "go.pardot.com",
+  "pardot-tracker.displayr.com": "go.pardot.com",
+  "pardot.alliancebernstein.com": "go.pardot.com",
+  "pardot.aspph.org": "go.pardot.com",
+  "pardot.bcorporation.net": "go.pardot.com",
+  "pardot.bynder.com": "go.pardot.com",
+  "pardot.californiafamilyfitness.com": "go.pardot.com",
+  "pardot.canterbury.ac.uk": "go.pardot.com",
+  "pardot.cesi.be": "go.pardot.com",
+  "pardot.cloudflight.io": "go.pardot.com",
+  "pardot.columbiaassociation.org": "go.pardot.com",
+  "pardot.commonlook.com": "go.pardot.com",
+  "pardot.crevo.jp": "go.pardot.com",
+  "pardot.csis.org": "go.pardot.com",
+  "pardot.csisolar.com": "go.pardot.com",
+  "pardot.cydas.com": "go.pardot.com",
+  "pardot.endomag.com": "go.pardot.com",
+  "pardot.energyavenue.com": "go.pardot.com",
+  "pardot.epitech.eu": "go.pardot.com",
+  "pardot.forenom.com": "go.pardot.com",
+  "pardot.gobonfire.com": "go.pardot.com",
+  "pardot.gppro.com": "go.pardot.com",
+  "pardot.hkex.com.hk": "go.pardot.com",
+  "pardot.hkexgroup.com": "go.pardot.com",
+  "pardot.hytera.com": "go.pardot.com",
+  "pardot.hytera.la": "go.pardot.com",
+  "pardot.kobedenshi.ac.jp": "go.pardot.com",
+  "pardot.linkindustrialtools.com": "go.pardot.com",
+  "pardot.luc.id": "go.pardot.com",
+  "pardot.makersights.com": "go.pardot.com",
+  "pardot.milestonesys.com": "go.pardot.com",
+  "pardot.msasafety.com": "go.pardot.com",
+  "pardot.multnomah.edu": "go.pardot.com",
+  "pardot.netspi.com": "pi-ue1-lba6.pardot.com",
+  "pardot.pageantmedia.com": "pi-ue1-lba6.pardot.com",
+  "pardot.panjiva.com": "go.pardot.com",
+  "pardot.perfectcorp.com": "go.pardot.com",
+  "pardot.shieldhealthcare.com": "go.pardot.com",
+  "pardot.stjohn.org.nz": "go.pardot.com",
+  "pardot.tcbs.com.vn": "go.pardot.com",
+  "pardot.techscheme.grgtest.co.uk": "go.pardot.com",
+  "pardot.upwork.com": "go.pardot.com",
+  "pardot2.connecteduniversity.us": "go.pardot.com",
+  "parmail.syncromsp.com": "go.pardot.com",
+  "partnerships.inman.com": "go.pardot.com",
+  "pd.afsusa.org": "go.pardot.com",
+  "pd.biglobe.ne.jp": "go.pardot.com",
+  "pd.coinshares.com": "go.pardot.com",
+  "pd.epson.jp": "go.pardot.com",
+  "pd.gochikuru.com": "go.pardot.com",
+  "pd.hitachi-hightech.com": "go.pardot.com",
+  "pd.pacificlegal.org": "go.pardot.com",
+  "pd.recruit-ms.co.jp": "go.pardot.com",
+  "pd.reform-online.jp": "go.pardot.com",
+  "pd.tis.jp": "go.pardot.com",
+  "pd.zip.co": "go.pardot.com",
+  "pdt.best-practice.co.jp": "go.pardot.com",
+  "pdt.lec-jp.com": "go.pardot.com",
+  "pdt.mcafee.com": "go.pardot.com",
+  "pdt.rehasaku.net": "go.pardot.com",
+  "people-projects.vgcgroup.co.uk": "go.pardot.com",
+  "perspectivas.deloitte.com": "go.pardot.com",
+  "pgo.sunchemical.com": "go.pardot.com",
+  "pi.acaric.co.jp": "go.pardot.com",
+  "pi.amawaterways.com": "go.pardot.com",
+  "pi.idealist.org": "go.pardot.com",
+  "pi.legalandgeneral.com": "go.pardot.com",
+  "pi.msi.org": "go.pardot.com",
+  "pi.revlocal.com": "go.pardot.com",
+  "pi.subsplash.com": "pi-ue1-lba4.pardot.com",
+  "pi.unox.com": "pi-ue1-lba2.pardot.com",
+  "pilgrim.nec.edu": "pi-ue1-lba4.pardot.com",
+  "pinnacle.antipodespartners.com": "pi-ue1-lba6.pardot.com",
+  "pinnacle.hyperion.com.au": "pi-ue1-lba6.pardot.com",
+  "pinnacle.plato.com.au": "pi-ue1-lba6.pardot.com",
+  "places.britishland.com": "pi-ue1-lba4.pardot.com",
+  "plcrm.protolabs.com": "pi-ue1-lba4.pardot.com",
+  "plp.hitachi-solutions-create.co.jp": "pi-ue1-lba4.pardot.com",
+  "post.gocardless.com": "pi-ue1-lba6.pardot.com",
+  "post.knauf.de": "pi-ue1-lba4.pardot.com",
+  "power.gosunpro.com": "pi-ue1-lba3.pardot.com",
+  "power.mtu-solutions.com": "pi-ue1-lba4.pardot.com",
+  "pr.bus-dnavi.com": "pi-ue1-lba4.pardot.com",
+  "prdt.betterfly.cl": "pi-ue1-lba6.pardot.com",
+  "prdt.iese.edu": "pi-ue1-lba6.pardot.com",
+  "prdt.illumina.com": "pi-ue1-lba4.pardot.com",
+  "preferences.kantarworldpanel.com": "go.pardot.com",
+  "privacy.ics.com": "go.pardot.com",
+  "prm.createfertility.co.uk": "go.pardot.com",
+  "professional-education.mit.edu": "go.pardot.com",
+  "programs.pacificbiosciences.com": "pi-ue1-lba2.pardot.com",
+  "promo.mantracgroup.com": "pi-ue1-lba2.pardot.com",
+  "promotion.iagcargo.com": "go.pardot.com",
+  "promotion.pfu.fujitsu.com": "pi-ue1-lba2.pardot.com",
+  "pt.bookshare.org": "pi-ue1-lba2.pardot.com",
+  "pt.ziprecruiter.com": "pi-ue1-lba2.pardot.com",
+  "ptr.creema.jp": "pi-ue1-lba2.pardot.com",
+  "puremade.torani.com": "go.pardot.com",
+  "pypd.paypal-mktg.com": "pi-ue1-lba2.pardot.com",
+  "qol.konicaminolta.jp": "go.pardot.com",
+  "rapid-design.misumi-ec.com": "go.pardot.com",
+  "rd.comm.rakuten.net": "go.pardot.com",
+  "rd.insight.rakuten.net": "pi-ue1-lba2.pardot.com",
+  "re.ghc-j.com": "go.pardot.com",
+  "realestate.spin.pm": "pi-ue1-lba2.pardot.com",
+  "registration.britishcouncil.org": "go.pardot.com",
+  "request.iagcargo.com": "go.pardot.com",
+  "research.alpinemacro.com": "go.pardot.com",
+  "resource.gutcheckit.com": "pi-ue1-lba2.pardot.com",
+  "resource.smartling.com": "go.pardot.com",
+  "resources.cisecurity.org": "go.pardot.com",
+  "resources.humu.com": "go.pardot.com",
+  "resources.marinerwealthadvisors.com": "go.pardot.com",
+  "resources.movidiam.com": "go.pardot.com",
+  "resources.newlandchase.com": "go.pardot.com",
+  "resources.titus.com": "go.pardot.com",
+  "resources.usercentrics.com": "go.pardot.com",
+  "resources.wns.com": "go.pardot.com",
+  "response.syngenta.ca": "go.pardot.com",
+  "ride.lyftbusiness.com": "go.pardot.com",
+  "sa.digital.wilhelmsen.com": "go.pardot.com",
+  "safe.peoplesafe.co.uk": "go.pardot.com",
+  "sales.luxorworkspaces.com": "go.pardot.com",
+  "salesforce.demandblue.com": "go.pardot.com",
+  "salesforce.lyricfind.com": "go.pardot.com",
+  "salesforce.unity.edu": "go.pardot.com",
+  "sbisl.sbi-sociallending.co.jp": "go.pardot.com",
+  "scinfo.mitsuifudosan.co.jp": "go.pardot.com",
+  "seagull.wwnorton.com": "go.pardot.com",
+  "secure.imagers.co.jp": "go.pardot.com",
+  "security.claroty.com": "go.pardot.com",
+  "see2.xactlycorp.com": "go.pardot.com",
+  "sent.petdesk.com": "go.pardot.com",
+  "serve.mercyships.org": "go.pardot.com",
+  "service.avilen.co.jp": "go.pardot.com",
+  "service.joy2call.com": "go.pardot.com",
+  "service.sbpayment.jp": "go.pardot.com",
+  "services.aberdeen.com": "go.pardot.com",
+  "services.demanddynamics.com": "go.pardot.com",
+  "services.preludesys.com": "go.pardot.com",
+  "sf.anest-iwata.co.jp": "go.pardot.com",
+  "signup.iagcargo.com": "go.pardot.com",
+  "signup.rcfp.org": "go.pardot.com",
+  "silicone.avantorsciences.com": "go.pardot.com",
+  "site.cosentino.com": "go.pardot.com",
+  "site.instamed.com": "go.pardot.com",
+  "site.nextenergy.jp": "go.pardot.com",
+  "sites.pancommunications.com": "go.pardot.com",
+  "sites.postnord.dk": "go.pardot.com",
+  "sites.postnord.fi": "go.pardot.com",
+  "sites.postnord.no": "go.pardot.com",
+  "sites.postnord.se": "go.pardot.com",
+  "skillsoft.website": "go.pardot.com",
+  "sn.simplenexus.com": "go.pardot.com",
+  "sns.mcafee.com": "go.pardot.com",
+  "solucoes.ultragazempresas.com.br": "go.pardot.com",
+  "solution.javelin-tech.com": "go.pardot.com",
+  "solutions.bell.ca": "go.pardot.com",
+  "solutions.bouyguestelecom-entreprises.fr": "go.pardot.com",
+  "solutions.canon.co.nz": "go.pardot.com",
+  "solutions.canon.com.au": "go.pardot.com",
+  "solutions.chirotouch.com": "go.pardot.com",
+  "solutions.kiosk.com": "go.pardot.com",
+  "solutions.officite.com": "go.pardot.com",
+  "solutions.parsons.com": "go.pardot.com",
+  "starcards.caltex.com.au": "go.pardot.com",
+  "start.ecornell.com": "go.pardot.com",
+  "start.ecornell.cornell.edu": "go.pardot.com",
+  "start.ef.com": "go.pardot.com",
+  "start.revolutionparts.com": "go.pardot.com",
+  "storage.softdocs.com": "go.pardot.com",
+  "study.sjsu.edu": "go.pardot.com",
+  "subscribe.car.org": "go.pardot.com",
+  "subscribe.dpd.be": "go.pardot.com",
+  "success.construction.com": "go.pardot.com",
+  "success.datasoftlogic.com": "go.pardot.com",
+  "success.elekta.com": "go.pardot.com",
+  "success.marketleader.com": "go.pardot.com",
+  "success.messagegears.com": "go.pardot.com",
+  "success.motorola.com": "go.pardot.com",
+  "success.propertyware.com": "go.pardot.com",
+  "success.realpage.com": "go.pardot.com",
+  "success.schulthess.ch": "go.pardot.com",
+  "suppliercommunications.walmart.com": "go.pardot.com",
+  "support.svenson.co.jp": "go.pardot.com",
+  "t.kinliser.co.jp": "go.pardot.com",
+  "t.pushdoctor.co.uk": "go.pardot.com",
+  "tandc.salesforce.com": "go.pardot.com",
+  "tax.ryan.com": "go.pardot.com",
+  "tci.taborcommunications.com": "go.pardot.com",
+  "tech.flexport.com": "go.pardot.com",
+  "tem.zpg.co.uk": "go.pardot.com",
+  "tgf.thegrowthfaculty.com.au": "go.pardot.com",
+  "think.unbounce.com": "go.pardot.com",
+  "think.vyond.com": "go.pardot.com",
+  "thrive.rainforest-alliance.org": "go.pardot.com",
+  "tkcexpress.tkc.co.jp": "go.pardot.com",
+  "tmwl.kyodoprinting.co.jp": "go.pardot.com",
+  "to.onlinelearningconsortium.org": "go.pardot.com",
+  "track.fineos.com": "pi-ue1-lba6.pardot.com",
+  "tracker-empresas.ifood.com.br": "go.pardot.com",
+  "tracker.engage.tomtom.com": "pi-ue1-lba6.pardot.com",
+  "tracker.gold.org": "go.pardot.com",
+  "tracker.noandt.com": "go.pardot.com",
+  "tracking.marketing.kbl.co.in": "go.pardot.com",
+  "trials.uservoice.com": "go.pardot.com",
+  "trk.prdt.computrabajo.com": "go.pardot.com",
+  "trk.prdt.sherlockhr.com": "go.pardot.com",
+  "trk.securitycompass.com": "go.pardot.com",
+  "trk.zkai.co.jp": "go.pardot.com",
+  "try.dirak-inc.com": "go.pardot.com",
+  "try.mymarble.ca": "go.pardot.com",
+  "tu.tungsram.com": "go.pardot.com",
+  "u.fules.jp": "go.pardot.com",
+  "ua.united-athle.jp": "go.pardot.com",
+  "ual.unitedcargo.com": "go.pardot.com",
+  "uk.thetrainingroom.com": "go.pardot.com",
+  "unlock.veritone.com": "go.pardot.com",
+  "update.lgim.com": "go.pardot.com",
+  "us.arjo.com": "go.pardot.com",
+  "us.schroders.email": "go.pardot.com",
+  "useful-info.iniks.jp": "go.pardot.com",
+  "vdp.safety.expert": "go.pardot.com",
+  "veterans.hillandponton.com": "go.pardot.com",
+  "view.scoutrfp.com": "go.pardot.com",
+  "vip.swiftcapital.com": "go.pardot.com",
+  "visit.sabre.com": "go.pardot.com",
+  "vps.uk2.net": "pi-ue1-lba4.pardot.com",
+  "w2.techinsights.com": "pi-ue1-lba4.pardot.com",
+  "weare.ninetyone.com": "pi-ue1-lba4.pardot.com",
+  "web.araglegal.com": "pi-ue1-lba6.pardot.com",
+  "web.brighttalk.com": "pi-ue1-lba4.pardot.com",
+  "web.healthcatalyst.com": "pi-ue1-lba2.pardot.com",
+  "web.irdeto.com": "pi-ue1-lba6.pardot.com",
+  "web.preventiongenetics.com": "pi-ue1-lba4.pardot.com",
+  "web.proact.eu": "pi-ue1-lba4.pardot.com",
+  "web.saint-christophe-assurances.fr": "pi-ue1-lba6.pardot.com",
+  "web.spendhq.com": "pi-ue1-lba2.pardot.com",
+  "welkom.ardosz.nl": "pi-ue1-lba4.pardot.com",
+  "wn.worknest.com": "pi-ue1-lba2.pardot.com",
+  "wo.wormland.de": "pi-ue1-lba4.pardot.com",
+  "workstyle.itoki.jp": "pi-ue1-lba4.pardot.com",
+  "wvw.barry-callebaut.com": "pi-ue1-lba6.pardot.com",
+  "wvw.caringbridge.org": "pi-ue1-lba4.pardot.com",
+  "wvw.catholic.com": "pi-ue1-lba2.pardot.com",
+  "wvw.naef.ch": "go.pardot.com",
+  "wvw.swisseducation.com": "pi-ue1-lba1.pardot.com",
+  "wvw.unitedsiteservices.com": "go.pardot.com",
+  "ww1.eztexting.com": "go.pardot.com",
+  "ww2.agdata.com": "pi-ue1-lba2.pardot.com",
+  "ww2.coralhomes.com.au": "go.pardot.com",
+  "ww2.ecosio.com": "go.pardot.com",
+  "ww2.forgeglobal.com": "go.pardot.com",
+  "ww2.homerenergy.com": "go.pardot.com",
+  "ww2.kirkpatrickprice.com": "pi-ue1-lba2.pardot.com",
+  "ww2.landseahomes.com": "go.pardot.com",
+  "ww2.lindamoodbell.com": "go.pardot.com",
+  "ww2.merchantriskcouncil.org": "go.pardot.com",
+  "ww2.office-hub.com": "go.pardot.com",
+  "ww2.office-hub.com.au": "pi-ue1-lba2.pardot.com",
+  "ww2.sharespost.com": "go.pardot.com",
+  "ww2.smartmtgs.com": "go.pardot.com",
+  "ww2.thecpapclinic.com.au": "go.pardot.com",
+  "ww2.uai.cl": "go.pardot.com",
+  "ww2.ukas.com": "go.pardot.com",
+  "ww2.verdict.co.uk": "go.pardot.com",
+  "ww2.virtusa.com": "go.pardot.com",
+  "ww3.business.vonage.com": "go.pardot.com",
+  "ww3.nexmo.com": "go.pardot.com",
+  "ww3.reged.com": "go.pardot.com",
+  "ww3.vonage.com.ar": "go.pardot.com",
+  "ww3.vonage.com.es": "go.pardot.com",
+  "ww3.vonage.com.my": "go.pardot.com",
+  "ww3.vonage.com.ph": "go.pardot.com",
+  "ww5.vonage.com": "pi-ue1-lba2.pardot.com",
+  "ww5.vonage.com.es": "go.pardot.com",
+  "ww5.vonage.com.my": "go.pardot.com",
+  "ww5.vonage.com.tw": "go.pardot.com",
+  "wwvv.wilsongroupau.com": "go.pardot.com",
+  "www.1.cpanel.net": "go.pardot.com",
+  "www.amazon-incentives.com": "go.pardot.com",
+  "www.amazonbusiness.co.in": "go.pardot.com",
+  "www.amazonbusiness.com": "go.pardot.com",
+  "www.amazonbusiness.eu": "pi-ue1-lba2.pardot.com",
+  "www.amazonbusiness.jp": "pi-ue1-lba5.pardot.com",
+  "www.axis-communications.com": "pi-ue1-lba2.pardot.com",
+  "www.clarion-events-group.com": "go.pardot.com",
+  "www.clr.vn": "go.pardot.com",
+  "www.crunch.uk": "go.pardot.com",
+  "www.dearsbrain.com": "go.pardot.com",
+  "www.email.shredit.com": "go.pardot.com",
+  "www.enterprise.hw.ac.uk": "go.pardot.com",
+  "www.gmodigitallab.jp": "pi-ue1-lba4.pardot.com",
+  "www.go.builtin.com": "go.pardot.com",
+  "www.go.cevalogistics.com": "pi-ue1-lba2.pardot.com",
+  "www.go.dic-global.com": "pi-ue1-lba4.pardot.com",
+  "www.go.webhelp.com": "go.pardot.com",
+  "www.infosmc.jp": "go.pardot.com",
+  "www.jcb.jnto.go.jp": "go.pardot.com",
+  "www.ldg-exh.mitsubishielectric.co.jp": "go.pardot.com",
+  "www.myra.my": "go.pardot.com",
+  "www.newsschoolspecialty.com": "go.pardot.com",
+  "www.preziteams.com": "go.pardot.com",
+  "www.solutions.telus.com": "go.pardot.com",
+  "www.syngenta-lg.com": "go.pardot.com",
+  "www.tmone.link": "pi-ue1-lba2.pardot.com",
+  "www.usazbil.com": "go.pardot.com",
+  "www1.aozorabank.co.jp": "go.pardot.com",
+  "www1.carestream.com": "go.pardot.com",
+  "www1.nihon-ma.co.jp": "go.pardot.com",
+  "www2.3dsystems.com": "pi-ue1-lba2.pardot.com",
+  "www2.abrfid.com": "go.pardot.com",
+  "www2.accedo.tv": "go.pardot.com",
+  "www2.aceee.org": "go.pardot.com",
+  "www2.acehome.co.jp": "go.pardot.com",
+  "www2.acumensolutions.com": "go.pardot.com",
+  "www2.advantagefamily.com": "pi-ue1-lba1.pardot.com",
+  "www2.advantmed.com": "pi-ue1-lba1.pardot.com",
+  "www2.alliantgroup.com": "pi-ue1-lba1.pardot.com",
+  "www2.allycoffee.com": "go.pardot.com",
+  "www2.altpaper.net": "pi-ue1-lba1.pardot.com",
+  "www2.americanbible.org": "go.pardot.com",
+  "www2.amnhealthcare.com": "go.pardot.com",
+  "www2.annenberg.usc.edu": "go.pardot.com",
+  "www2.anteristech.com": "go.pardot.com",
+  "www2.aopen.com": "go.pardot.com",
+  "www2.arkusinc.com": "go.pardot.com",
+  "www2.armament.com": "go.pardot.com",
+  "www2.ashtonwoods.com": "go.pardot.com",
+  "www2.assetmanagement.pictet": "go.pardot.com",
+  "www2.astoundcommerce.com": "go.pardot.com",
+  "www2.asuprepdigital.org": "go.pardot.com",
+  "www2.at-languagesolutions.com": "go.pardot.com",
+  "www2.atlascopcorental.com": "go.pardot.com",
+  "www2.atlaslightingproducts.com": "go.pardot.com",
+  "www2.atlona.com": "go.pardot.com",
+  "www2.atrae.co.jp": "go.pardot.com",
+  "www2.atta45.se": "go.pardot.com",
+  "www2.audienceview.com": "go.pardot.com",
+  "www2.axway.com": "go.pardot.com",
+  "www2.basfconstruction.us": "go.pardot.com",
+  "www2.bdo.fr": "go.pardot.com",
+  "www2.berkadia.com": "go.pardot.com",
+  "www2.bidtravel.es": "go.pardot.com",
+  "www2.bipsolutions.com": "go.pardot.com",
+  "www2.bizcap.com": "go.pardot.com",
+  "www2.blackbullmarkets.com": "go.pardot.com",
+  "www2.blackline.com": "go.pardot.com",
+  "www2.blinkist.com": "go.pardot.com",
+  "www2.bobcat.com": "go.pardot.com",
+  "www2.bomi.org": "go.pardot.com",
+  "www2.bonusan.com": "go.pardot.com",
+  "www2.brenntag.com": "go.pardot.com",
+  "www2.bridge-systems.com": "go.pardot.com",
+  "www2.bridge.edu": "go.pardot.com",
+  "www2.brightgen.com": "go.pardot.com",
+  "www2.brill.com": "go.pardot.com",
+  "www2.cabotcorp.com": "go.pardot.com",
+  "www2.cadenceinc.com": "go.pardot.com",
+  "www2.cariot.jp": "go.pardot.com",
+  "www2.cdkglobal.com": "go.pardot.com",
+  "www2.celonis.com": "go.pardot.com",
+  "www2.centreon.com": "go.pardot.com",
+  "www2.centriqgroup.com": "go.pardot.com",
+  "www2.cesa.edu.co": "go.pardot.com",
+  "www2.cfgi.com": "go.pardot.com",
+  "www2.chapter-london.co.uk": "go.pardot.com",
+  "www2.childmind.org": "go.pardot.com",
+  "www2.chirohealthusa.com": "go.pardot.com",
+  "www2.citation.co.uk": "go.pardot.com",
+  "www2.clearcom.com": "go.pardot.com",
+  "www2.clickview.com.au": "go.pardot.com",
+  "www2.clickviewcommunity.com": "go.pardot.com",
+  "www2.cogeco.ca": "go.pardot.com",
+  "www2.collinsongroup.com": "go.pardot.com",
+  "www2.comcasttechnologysolutions.com": "go.pardot.com",
+  "www2.comeca.es": "go.pardot.com",
+  "www2.complyadvantage.com": "go.pardot.com",
+  "www2.contrinex.com": "go.pardot.com",
+  "www2.cornwall-insight.com": "go.pardot.com",
+  "www2.covius.com": "go.pardot.com",
+  "www2.cprime.com": "go.pardot.com",
+  "www2.creditcardprocessing.com": "go.pardot.com",
+  "www2.crfs.com": "go.pardot.com",
+  "www2.criver.com": "go.pardot.com",
+  "www2.crugroup.com": "go.pardot.com",
+  "www2.cytomic.ai": "go.pardot.com",
+  "www2.deptagency.com": "go.pardot.com",
+  "www2.desotec.com": "go.pardot.com",
+  "www2.deviceatlas.com": "go.pardot.com",
+  "www2.digitales.es": "go.pardot.com",
+  "www2.diva.co.jp": "go.pardot.com",
+  "www2.doble.com": "go.pardot.com",
+  "www2.dohouse.co.jp": "go.pardot.com",
+  "www2.dr-recella.com": "go.pardot.com",
+  "www2.dynamicevents.ie": "go.pardot.com",
+  "www2.e-tenki.co.jp": "go.pardot.com",
+  "www2.ecisolutions.com": "go.pardot.com",
+  "www2.edenred.com.tr": "go.pardot.com",
+  "www2.educationpioneers.org": "go.pardot.com",
+  "www2.emeritus.org": "go.pardot.com",
+  "www2.ennatuurlijk.nl": "go.pardot.com",
+  "www2.enscape3d.com": "go.pardot.com",
+  "www2.enterprise.grab.com": "go.pardot.com",
+  "www2.enterprise.rogers.com": "go.pardot.com",
+  "www2.ento.com": "go.pardot.com",
+  "www2.enxoo.com": "go.pardot.com",
+  "www2.enzolifesciences.com": "go.pardot.com",
+  "www2.eos.info": "go.pardot.com",
+  "www2.ephox.com": "go.pardot.com",
+  "www2.ergotron.com": "go.pardot.com",
+  "www2.erlang-solutions.com": "go.pardot.com",
+  "www2.eruditus.com": "go.pardot.com",
+  "www2.est-aegis.com": "go.pardot.com",
+  "www2.etl-adhoga.de": "go.pardot.com",
+  "www2.europe.ryder.com": "go.pardot.com",
+  "www2.everplans.com": "go.pardot.com",
+  "www2.eversensediabetes.com": "go.pardot.com",
+  "www2.everywoman.com": "go.pardot.com",
+  "www2.evolis.com": "go.pardot.com",
+  "www2.exec-comm.com": "go.pardot.com",
+  "www2.execsintheknow.com": "go.pardot.com",
+  "www2.exitcertified.com": "go.pardot.com",
+  "www2.ext.tau.ac.il": "go.pardot.com",
+  "www2.extendaretail.com": "go.pardot.com",
+  "www2.factorfinders.com": "go.pardot.com",
+  "www2.fauna.com": "go.pardot.com",
+  "www2.festivalofmarketing.com": "go.pardot.com",
+  "www2.financeit.io": "go.pardot.com",
+  "www2.firmex.com": "go.pardot.com",
+  "www2.firstconnect.co.jp": "go.pardot.com",
+  "www2.flandersscientific.com": "go.pardot.com",
+  "www2.floridamba.ufl.edu": "go.pardot.com",
+  "www2.flotman.pl": "go.pardot.com",
+  "www2.fossanalytics.com": "go.pardot.com",
+  "www2.fostermusic.jp": "go.pardot.com",
+  "www2.foundationfinance.com": "go.pardot.com",
+  "www2.foureyes.io": "go.pardot.com",
+  "www2.francespagne-education.net": "go.pardot.com",
+  "www2.franchisepipelinesolutions.com": "go.pardot.com",
+  "www2.franklincovey.co.jp": "go.pardot.com",
+  "www2.freshbooks.com": "go.pardot.com",
+  "www2.friend-chintai.com": "pi-ue1-lba4.pardot.com",
+  "www2.fundsmith.co.uk": "pi-ue1-lba2.pardot.com",
+  "www2.futurdata.pt": "go.pardot.com",
+  "www2.gainsco.com": "go.pardot.com",
+  "www2.gex-fp.co.jp": "pi-ue1-lba4.pardot.com",
+  "www2.globusgroup.com": "go.pardot.com",
+  "www2.gradientai.com": "go.pardot.com",
+  "www2.greatplacetowork.de": "go.pardot.com",
+  "www2.gripumps.com": "go.pardot.com",
+  "www2.grupoctc.com": "go.pardot.com",
+  "www2.grupoitra.com": "go.pardot.com",
+  "www2.hazelcast.com": "go.pardot.com",
+  "www2.heartmath.org": "go.pardot.com",
+  "www2.hebsdigital.com": "go.pardot.com",
+  "www2.henry.com": "go.pardot.com",
+  "www2.hiperpool.com": "pi-ue1-lba4.pardot.com",
+  "www2.hitex.com": "pi-ue1-lba4.pardot.com",
+  "www2.hl.com": "pi-ue1-lba4.pardot.com",
+  "www2.hmarkets.com": "pi-ue1-lba4.pardot.com",
+  "www2.holmes-cloud.com": "go.pardot.com",
+  "www2.hotelrez.com": "pi-ue1-lba6.pardot.com",
+  "www2.hrdirectapps.com": "pi-ue1-lba2.pardot.com",
+  "www2.hydropoint.com": "pi-ue1-lba6.pardot.com",
+  "www2.i2cinc.com": "pi-ue1-lba4.pardot.com",
+  "www2.iaccessportal.com": "go.pardot.com",
+  "www2.iconplc.com": "pi.t.pardot.com",
+  "www2.ideagen.com": "pi-ue1-lba4.pardot.com",
+  "www2.ideascale.com": "pi.t.pardot.com",
+  "www2.idwholesaler.com": "pi-ue1-lba2.pardot.com",
+  "www2.ikey.com": "pi-ue1-lba2.pardot.com",
+  "www2.ilxgroup.com": "pi-ue1-lba4.pardot.com",
+  "www2.imcdgroup.com": "pi-ue1-lba6.pardot.com",
+  "www2.impellus.com": "go.pardot.com",
+  "www2.impinj.com": "go.pardot.com",
+  "www2.incidentiq.com": "go.pardot.com",
+  "www2.inlite.com.au": "go.pardot.com",
+  "www2.inmarsat.com": "go.pardot.com",
+  "www2.innovmetric.com": "go.pardot.com",
+  "www2.inrix.com": "go.pardot.com",
+  "www2.instructure.com": "go.pardot.com",
+  "www2.inteplastef.com": "go.pardot.com",
+  "www2.internet2.edu": "go.pardot.com",
+  "www2.intraway.com": "go.pardot.com",
+  "www2.intrum.com": "go.pardot.com",
+  "www2.irisvision.com": "go.pardot.com",
+  "www2.ironhack.com": "go.pardot.com",
+  "www2.ispot.tv": "go.pardot.com",
+  "www2.j-focus.or.jp": "go.pardot.com",
+  "www2.jamesbeard.org": "go.pardot.com",
+  "www2.jameshardie.com.au": "go.pardot.com",
+  "www2.jenseninvestment.com": "go.pardot.com",
+  "www2.jm.com": "go.pardot.com",
+  "www2.jobboss.com": "go.pardot.com",
+  "www2.joyce-meyer.de": "go.pardot.com",
+  "www2.jusnet.co.jp": "go.pardot.com",
+  "www2.jwnenergy.com": "go.pardot.com",
+  "www2.kantar.com": "go.pardot.com",
+  "www2.keieisha.jp": "go.pardot.com",
+  "www2.keyloop.com": "go.pardot.com",
+  "www2.kf.org": "go.pardot.com",
+  "www2.kinesis.money": "go.pardot.com",
+  "www2.kommunaldigital.de": "go.pardot.com",
+  "www2.kone.fr": "go.pardot.com",
+  "www2.kroschke.de": "go.pardot.com",
+  "www2.landginvestments.com": "go.pardot.com",
+  "www2.leapmotion.com": "go.pardot.com",
+  "www2.leica-microsystems.com": "go.pardot.com",
+  "www2.leicabiosystems.com": "go.pardot.com",
+  "www2.lenoxsoft.com": "go.pardot.com",
+  "www2.leucan.qc.ca": "go.pardot.com",
+  "www2.lgcgroup.com": "go.pardot.com",
+  "www2.life.litalico.jp": "go.pardot.com",
+  "www2.lighthouseinstruments.com": "go.pardot.com",
+  "www2.linnworks.com": "go.pardot.com",
+  "www2.loba.com": "go.pardot.com",
+  "www2.londonstockexchangegroup.com": "go.pardot.com",
+  "www2.loyolapress.com": "go.pardot.com",
+  "www2.lseg.com": "go.pardot.com",
+  "www2.lsports.eu": "go.pardot.com",
+  "www2.lumapps.com": "go.pardot.com",
+  "www2.malvernpanalytical.com": "go.pardot.com",
+  "www2.mantec.org": "go.pardot.com",
+  "www2.marcloudconsulting.com": "go.pardot.com",
+  "www2.maystar.com": "go.pardot.com",
+  "www2.medius.com": "go.pardot.com",
+  "www2.merkleinc.com": "go.pardot.com",
+  "www2.messagebird.com": "go.pardot.com",
+  "www2.messagepoint.com": "go.pardot.com",
+  "www2.mestrelab.com": "go.pardot.com",
+  "www2.metricinsights.com": "go.pardot.com",
+  "www2.meyn.com": "go.pardot.com",
+  "www2.microfocus.com": "go.pardot.com",
+  "www2.mindraynorthamerica.com": "go.pardot.com",
+  "www2.miovision.com": "go.pardot.com",
+  "www2.miyajimusic.com": "go.pardot.com",
+  "www2.mofo.com": "go.pardot.com",
+  "www2.mtsmarkets.com": "go.pardot.com",
+  "www2.multichem.pl": "go.pardot.com",
+  "www2.multimediaplus.com": "go.pardot.com",
+  "www2.myemma.com": "go.pardot.com",
+  "www2.myplanmanager.com.au": "go.pardot.com",
+  "www2.na-sika.com": "go.pardot.com",
+  "www2.naris-online.jp": "go.pardot.com",
+  "www2.natc.co.jp": "go.pardot.com",
+  "www2.nationalultrasound.com": "go.pardot.com",
+  "www2.naturalproducts.co.uk": "go.pardot.com",
+  "www2.nebotools.com": "go.pardot.com",
+  "www2.nebulaconsulting.co.uk": "go.pardot.com",
+  "www2.neoscorp.jp": "go.pardot.com",
+  "www2.newportacademy.com": "go.pardot.com",
+  "www2.news.vi-grade.com": "go.pardot.com",
+  "www2.newsletter.bkvibro.com": "go.pardot.com",
+  "www2.nexant.com": "go.pardot.com",
+  "www2.nichifutsu.co.jp": "go.pardot.com",
+  "www2.nichiha.com": "go.pardot.com",
+  "www2.nihonzaitaku.co.jp": "go.pardot.com",
+  "www2.nilfisk.com": "go.pardot.com",
+  "www2.noc-net.co.jp": "go.pardot.com",
+  "www2.nordcloud.com": "go.pardot.com",
+  "www2.novatel.com": "go.pardot.com",
+  "www2.nsf.org": "go.pardot.com",
+  "www2.nssf.org": "go.pardot.com",
+  "www2.nutanix.com": "go.pardot.com",
+  "www2.nvtphybridge.com": "go.pardot.com",
+  "www2.oasisfinancial.com": "go.pardot.com",
+  "www2.oberk.com": "go.pardot.com",
+  "www2.onalytica.com": "go.pardot.com",
+  "www2.oneome.com": "go.pardot.com",
+  "www2.onlocationexp.com": "go.pardot.com",
+  "www2.opayo.co.uk": "go.pardot.com",
+  "www2.openfin.co": "go.pardot.com",
+  "www2.openstax.org": "go.pardot.com",
+  "www2.operationeyesight.com": "go.pardot.com",
+  "www2.orbcomm.com": "go.pardot.com",
+  "www2.orbussoftware.com": "go.pardot.com",
+  "www2.orea.com": "go.pardot.com",
+  "www2.origoeducation.com": "go.pardot.com",
+  "www2.orix.com.au": "go.pardot.com",
+  "www2.osoujihonpo.com": "go.pardot.com",
+  "www2.otrcapital.com": "go.pardot.com",
+  "www2.partena.be": "go.pardot.com",
+  "www2.paymetric.com": "go.pardot.com",
+  "www2.perficient.com": "go.pardot.com",
+  "www2.policylink.org": "go.pardot.com",
+  "www2.powersolutions.danfoss.com": "go.pardot.com",
+  "www2.pplprs.co.uk": "go.pardot.com",
+  "www2.priorygroup.com": "go.pardot.com",
+  "www2.prometheanworld.com": "go.pardot.com",
+  "www2.prontoforms.com": "go.pardot.com",
+  "www2.provej.jp": "go.pardot.com",
+  "www2.qdoscontractor.com": "go.pardot.com",
+  "www2.quectel.com": "go.pardot.com",
+  "www2.ratpanat.com": "go.pardot.com",
+  "www2.raymarine.eu": "go.pardot.com",
+  "www2.re-ism.co.jp": "go.pardot.com",
+  "www2.regisuccess.com": "go.pardot.com",
+  "www2.reinteractive.com": "go.pardot.com",
+  "www2.roomclip.jp": "go.pardot.com",
+  "www2.roundcorner.com": "go.pardot.com",
+  "www2.safeguardglobal.com": "go.pardot.com",
+  "www2.salary.com": "go.pardot.com",
+  "www2.samtec.com": "go.pardot.com",
+  "www2.school.dhw.co.jp": "go.pardot.com",
+  "www2.schumacherhomes.com": "go.pardot.com",
+  "www2.scotwork.com": "go.pardot.com",
+  "www2.sensus-processmanagement.com": "go.pardot.com",
+  "www2.servicedeskinstitute.com": "go.pardot.com",
+  "www2.sftravel.com": "go.pardot.com",
+  "www2.sharecare.com": "go.pardot.com",
+  "www2.signaturekitchensuite.com": "go.pardot.com",
+  "www2.sika-go.com": "go.pardot.com",
+  "www2.simulationiq.com": "go.pardot.com",
+  "www2.sissel.fr": "go.pardot.com",
+  "www2.skytap.com": "go.pardot.com",
+  "www2.smartflower.com": "go.pardot.com",
+  "www2.solarplaza.com": "go.pardot.com",
+  "www2.soti.net": "go.pardot.com",
+  "www2.soundphysicians.com": "go.pardot.com",
+  "www2.sparx.co.jp": "go.pardot.com",
+  "www2.spatial.io": "go.pardot.com",
+  "www2.spcai.org": "go.pardot.com",
+  "www2.spi.recruit.co.jp": "go.pardot.com",
+  "www2.spur.org": "go.pardot.com",
+  "www2.srmax.com": "go.pardot.com",
+  "www2.ssb.ca": "go.pardot.com",
+  "www2.stadefrance.com": "go.pardot.com",
+  "www2.starlighthomes.com": "go.pardot.com",
+  "www2.starr.com": "go.pardot.com",
+  "www2.startuploans.co.uk": "go.pardot.com",
+  "www2.stata-france.com": "go.pardot.com",
+  "www2.stef.com": "go.pardot.com",
+  "www2.stoneagetools.com": "go.pardot.com",
+  "www2.strategyn.com": "go.pardot.com",
+  "www2.structureworksfab.com": "go.pardot.com",
+  "www2.studentsforliberty.org": "go.pardot.com",
+  "www2.suncommon.com": "go.pardot.com",
+  "www2.supreme-system.com": "go.pardot.com",
+  "www2.symetra.com": "go.pardot.com",
+  "www2.synergystaffing.org": "go.pardot.com",
+  "www2.tacton.com": "go.pardot.com",
+  "www2.talentquest.com": "go.pardot.com",
+  "www2.targetprocess.com": "go.pardot.com",
+  "www2.tdgresearch.com": "go.pardot.com",
+  "www2.technicolor.com": "go.pardot.com",
+  "www2.technomile.com": "go.pardot.com",
+  "www2.teliacarrier.com": "go.pardot.com",
+  "www2.telos.com": "go.pardot.com",
+  "www2.tennis-point.de": "go.pardot.com",
+  "www2.terrapinn.com": "go.pardot.com",
+  "www2.thebankofsa.com": "go.pardot.com",
+  "www2.thersa.org": "go.pardot.com",
+  "www2.thinkers-doers.com": "go.pardot.com",
+  "www2.thirdspace.net": "go.pardot.com",
+  "www2.toshiba-infrastructure.jp": "go.pardot.com",
+  "www2.tradeweb.com": "go.pardot.com",
+  "www2.tradewindai.com": "go.pardot.com",
+  "www2.trainingindustry.com": "go.pardot.com",
+  "www2.trccompanies.com": "go.pardot.com",
+  "www2.tycosp.com": "pi-ue1-lba4.pardot.com",
+  "www2.ultraleap.com": "pi-ue1-lba4.pardot.com",
+  "www2.uneecops.com": "pi-ue1-lba4.pardot.com",
+  "www2.verodin.com": "pi-ue1-lba4.pardot.com",
+  "www2.videotron.com": "pi-ue1-lba6.pardot.com",
+  "www2.viglobal.com": "pi-ue1-lba2.pardot.com",
+  "www2.vikinggroupinc.biz": "pi-ue1-lba5.pardot.com",
+  "www2.virtual1.com": "pi-ue1-lba4.pardot.com",
+  "www2.virtustream.com": "pi-ue1-lba4.pardot.com",
+  "www2.vitalitygroup.com": "pi-ue1-lba4.pardot.com",
+  "www2.vonbibra.com.au": "pi-ue1-lba4.pardot.com",
+  "www2.voor-bedrijven.temper.works": "pi-ue1-lba4.pardot.com",
+  "www2.voxco.com": "pi-ue1-lba2.pardot.com",
+  "www2.vwfsfleet.co.uk": "pi-ue1-lba4.pardot.com",
+  "www2.vynedental.com": "pi-ue1-lba4.pardot.com",
+  "www2.wandisco.com": "pi-ue1-lba4.pardot.com",
+  "www2.westermo.com": "pi-ue1-lba6.pardot.com",
+  "www2.westonemusic.com": "go.pardot.com",
+  "www2.wifirst.com": "go.pardot.com",
+  "www2.wilsonassetmanagement.com.au": "go.pardot.com",
+  "www2.woodfriends.jp": "go.pardot.com",
+  "www2.workforcesoftware.com": "go.pardot.com",
+  "www2.wycliffe.org": "go.pardot.com",
+  "www2.xfarm.ag": "go.pardot.com",
+  "www2.yellow.ai": "go.pardot.com",
+  "www2.youngimpact.nl": "go.pardot.com",
+  "www2.yuvtv.com": "go.pardot.com",
+  "www2.zoom.us": "go.pardot.com",
+  "www2.zsi-foster.com": "go.pardot.com",
+  "www3.avast.com": "pi-ue1-lba6.pardot.com",
+  "www3.calypso.com": "pi-ue1-lba6.pardot.com",
+  "www3.campuslabs.com": "pi-ue1-lba6.pardot.com",
+  "www3.canarywharf.com": "pi-ue1-lba6.pardot.com",
+  "www3.cloudera.com": "pi.t.pardot.com",
+  "www3.criteo.com": "pi-ue1-lba5.pardot.com",
+  "www3.d-kanazawaya.com": "pi-ue1-lba5.pardot.com",
+  "www3.despatch.com": "pi-ue1-lba4.pardot.com",
+  "www3.gbta.org": "pi-ue1-lba6.pardot.com",
+  "www3.im.natixis.com": "pi-ue1-lba4.pardot.com",
+  "www3.impinj.com": "pi-ue1-lba4.pardot.com",
+  "www3.javerianacali.edu.co": "pi-ue1-lba6.pardot.com",
+  "www3.kidney.org": "pi-ue1-lba6.pardot.com",
+  "www3.mogroup.com": "pi.t.pardot.com",
+  "www3.neuropeakpro.com": "pi-ue1-lba4.pardot.com",
+  "www3.objective.com": "go.pardot.com",
+  "www3.parqueexplora.org": "pi-ue1-lba6.pardot.com",
+  "www3.raspberrypi.org": "go.pardot.com",
+  "www3.sma.de": "go.pardot.com",
+  "www3.toray-research.co.jp": "go.pardot.com",
+  "www3.wexinc.com": "go.pardot.com",
+  "www4.neles.com": "go.pardot.com",
+  "www4.orangecyberdefense.com": "go.pardot.com",
+  "www5.thalesgroup.com": "go.pardot.com",
+  "www5.untangle.com": "go.pardot.com",
+  "www6.thalesgroup.com": "go.pardot.com",
+  "www8.massmedian.net": "go.pardot.com",
+  "wwwf15.mitsubishielectric.co.jp": "go.pardot.com",
+  "xiv-baycourtclub.resort.co.jp": "go.pardot.com",
+  "you.myubiquity.com": "go.pardot.com",
+  "your.sabre.com": "go.pardot.com",
+  "a.aawp.de": "custom.plausible.io",
+  "a.affcoups.com": "custom.plausible.io",
+  "a.artistasdigitais.net": "custom.plausible.io",
+  "a.easyazon.com": "custom.plausible.io",
+  "a.fdmedia.io": "custom.plausible.io",
+  "a.getaawp.com": "custom.plausible.io",
+  "a.hellonext.co": "custom.plausible.io",
+  "a.kryptonitewp.com": "custom.plausible.io",
+  "a.mhthemes.com": "custom.plausible.io",
+  "a.skcript.com": "custom.plausible.io",
+  "a.visitefoz.com.br": "custom.plausible.io",
+  "analytics.adam.page": "custom.plausible.io",
+  "analytics.adamstoner.com": "custom.plausible.io",
+  "analytics.adonisjs.com": "custom.plausible.io",
+  "analytics.arunraghavan.net": "custom.plausible.io",
+  "analytics.behaheaters.co.uk": "custom.plausible.io",
+  "analytics.betterplaces.nl": "custom.plausible.io",
+  "analytics.churchthemes.com": "custom.plausible.io",
+  "analytics.codeforscience.org": "custom.plausible.io",
+  "analytics.codeskulptor.org": "custom.plausible.io",
+  "analytics.dogecoin.gg": "custom.plausible.io",
+  "analytics.explained-from-first-principles.com": "custom.plausible.io",
+  "analytics.fatalparadox.com": "custom.plausible.io",
+  "analytics.filiotech.com": "custom.plausible.io",
+  "analytics.gamedatacrunch.com": "custom.plausible.io",
+  "analytics.hiome.com": "custom.plausible.io",
+  "analytics.itsnoahevans.co.uk": "custom.plausible.io",
+  "analytics.lapiazzetta-horsham.com": "custom.plausible.io",
+  "analytics.lunge.de": "custom.plausible.io",
+  "analytics.mambaui.com": "custom.plausible.io",
+  "analytics.mc500.info": "custom.plausible.io",
+  "analytics.mhpod.gov.au": "custom.plausible.io",
+  "analytics.mondoweiss.net": "custom.plausible.io",
+  "analytics.naturequant.com": "custom.plausible.io",
+  "analytics.ramiyer.io": "custom.plausible.io",
+  "analytics.ramiyer.me": "custom.plausible.io",
+  "analytics.sixfigureswine.com": "custom.plausible.io",
+  "analytics.souazi.com": "custom.plausible.io",
+  "analytics.ss88.us": "custom.plausible.io",
+  "analytics.sweep.net": "custom.plausible.io",
+  "analytics.teamcovenant.com": "custom.plausible.io",
+  "analytics.top10-charts.com": "custom.plausible.io",
+  "analytics.trust.page": "custom.plausible.io",
+  "analytics.uxmetrics.com": "custom.plausible.io",
+  "analytics.valheimgamer.com": "custom.plausible.io",
+  "analytics.whotargets.me": "custom.plausible.io",
+  "analytics.winter.ink": "custom.plausible.io",
+  "analytics.wittypen.com": "custom.plausible.io",
+  "analytics.zingerwebdesign.com": "custom.plausible.io",
+  "antitracking.owncast.online": "custom.plausible.io",
+  "ap.dt.gl": "custom.plausible.io",
+  "api.decentralize.today": "custom.plausible.io",
+  "api.elliehuxtable.com": "custom.plausible.io",
+  "api.ryanyao.design": "custom.plausible.io",
+  "app-stats.supernotes.app": "custom.plausible.io",
+  "ares.buyersclub.se": "custom.plausible.io",
+  "artistchristinacarmel.ericksonbuilt.com": "custom.plausible.io",
+  "assets.garron.blog": "custom.plausible.io",
+  "assets.garron.me": "custom.plausible.io",
+  "bees.beesbeesbeesbees.com": "custom.plausible.io",
+  "bob.gitclear.com": "custom.plausible.io",
+  "cats.d20.rs": "custom.plausible.io",
+  "cdn.arcstudiopro.com": "custom.plausible.io",
+  "channelwatcher.panda.tech": "custom.plausible.io",
+  "churro.noteapps.info": "custom.plausible.io",
+  "connect.astrobotanicals.com": "custom.plausible.io",
+  "counter.proxycrawl.com": "custom.plausible.io",
+  "counter.subtitlebee.com": "custom.plausible.io",
+  "datum.appfleet.com": "custom.plausible.io",
+  "dragon.moneycoach.io": "custom.plausible.io",
+  "eliteclng.ericksonbuilt.com": "custom.plausible.io",
+  "external.techopian.com": "custom.plausible.io",
+  "f8phvntohv.tpetry.me": "custom.plausible.io",
+  "ftllrl.fotoallerlei.com": "custom.plausible.io",
+  "gullfoss.deepsource.io": "custom.plausible.io",
+  "hej.henriksommerfeld.se": "custom.plausible.io",
+  "hi.streetworkoutlist.com": "custom.plausible.io",
+  "hi.victorbaudot.com": "custom.plausible.io",
+  "hurricane.tinybird.co": "custom.plausible.io",
+  "hype.zlipa.com": "custom.plausible.io",
+  "informatics.filamentcolors.xyz": "custom.plausible.io",
+  "insights.affilimate.com": "custom.plausible.io",
+  "insights.frenchtogether.com": "custom.plausible.io",
+  "insights.growwithless.com": "custom.plausible.io",
+  "iwonttrackyou.xn--gckvb8fzb.com": "custom.plausible.io",
+  "js.webklik.nl": "custom.plausible.io",
+  "juniper.starleaf.com": "custom.plausible.io",
+  "ks.walkq.com": "custom.plausible.io",
+  "l2k30jsa.theochu.com": "custom.plausible.io",
+  "littlebrother.makeplans.net": "custom.plausible.io",
+  "loggychops.paulsmith.site": "custom.plausible.io",
+  "meter.bref.sh": "custom.plausible.io",
+  "miernik.technologiewdomu.pl": "custom.plausible.io",
+  "momotaro.craigmod.com": "custom.plausible.io",
+  "noushe.zevvle.com": "custom.plausible.io",
+  "numbers.triplejack.com": "custom.plausible.io",
+  "p.barrera.io": "custom.plausible.io",
+  "p.classroombookings.com": "custom.plausible.io",
+  "p.e-bot7.com": "custom.plausible.io",
+  "p.fairspot.host": "custom.plausible.io",
+  "p.neil.gg": "custom.plausible.io",
+  "p.nqueue.io": "custom.plausible.io",
+  "p.versacommerce.de": "custom.plausible.io",
+  "p.victoria.dev": "custom.plausible.io",
+  "p.wren.co": "custom.plausible.io",
+  "pa-stats.encore.dev": "custom.plausible.io",
+  "pa.opqr.co": "custom.plausible.io",
+  "pa.travelwhiz.app": "custom.plausible.io",
+  "pan.render.com": "custom.plausible.io",
+  "ping.cavelab.dev": "custom.plausible.io",
+  "ping.richardtaylor.dev": "custom.plausible.io",
+  "pio.fabianfett.de": "custom.plausible.io",
+  "piostats.gdcorner.com": "custom.plausible.io",
+  "pl.1feed.app": "custom.plausible.io",
+  "pl.astro.fi": "custom.plausible.io",
+  "pl.codetheweb.blog": "custom.plausible.io",
+  "pl.ethan.link": "custom.plausible.io",
+  "pl.maya-astro.fi": "custom.plausible.io",
+  "pl.terraintinker.com": "custom.plausible.io",
+  "pl.volunteeringauckland.org.nz": "custom.plausible.io",
+  "pl.volunteeringwaikato.org.nz": "custom.plausible.io",
+  "pl.volunteermarlborough.org.nz": "custom.plausible.io",
+  "pla.wigglepixel.nl": "custom.plausible.io",
+  "plas.imfeld.dev": "custom.plausible.io",
+  "plau.devitjobs.uk": "custom.plausible.io",
+  "plau.devitjobs.us": "custom.plausible.io",
+  "plau.devjob.ro": "custom.plausible.io",
+  "plau.germantechjobs.de": "custom.plausible.io",
+  "plau.hiringnearme.jobs": "custom.plausible.io",
+  "plau.swissdevjobs.ch": "custom.plausible.io",
+  "plauplauplau.app.budg.co": "custom.plausible.io",
+  "plauplauplau.budg.co": "custom.plausible.io",
+  "plaus.svelte.school": "custom.plausible.io",
+  "plausible.as207960.net": "custom.plausible.io",
+  "plausible.banovo.de": "custom.plausible.io",
+  "plausible.bearer.sh": "custom.plausible.io",
+  "plausible.benscarblog.com": "custom.plausible.io",
+  "plausible.bernheisel.com": "custom.plausible.io",
+  "plausible.conveyal.com": "custom.plausible.io",
+  "plausible.corbettbarr.com": "custom.plausible.io",
+  "plausible.deploymentfromscratch.com": "custom.plausible.io",
+  "plausible.derpycoder.com": "custom.plausible.io",
+  "plausible.dev.sketch.com": "custom.plausible.io",
+  "plausible.doctave.com": "custom.plausible.io",
+  "plausible.ericgoebelbecker.com": "custom.plausible.io",
+  "plausible.eurostocks.nl": "custom.plausible.io",
+  "plausible.executeprogram.com": "custom.plausible.io",
+  "plausible.ezrayellin.com": "custom.plausible.io",
+  "plausible.f1laps.com": "custom.plausible.io",
+  "plausible.factly.in": "custom.plausible.io",
+  "plausible.ferranfigueredo.com": "custom.plausible.io",
+  "plausible.flowcv.io": "custom.plausible.io",
+  "plausible.food.game": "custom.plausible.io",
+  "plausible.fwouts.com": "custom.plausible.io",
+  "plausible.gitjournal.io": "custom.plausible.io",
+  "plausible.goatstake.com": "custom.plausible.io",
+  "plausible.golfbreaks.com": "custom.plausible.io",
+  "plausible.goose.game": "custom.plausible.io",
+  "plausible.gryka.net": "custom.plausible.io",
+  "plausible.gymglish.com": "custom.plausible.io",
+  "plausible.haltakov.net": "custom.plausible.io",
+  "plausible.hstmedical.com": "custom.plausible.io",
+  "plausible.inflex.io": "custom.plausible.io",
+  "plausible.kabaret.no": "custom.plausible.io",
+  "plausible.kreya.app": "custom.plausible.io",
+  "plausible.lesbianromantic.com": "custom.plausible.io",
+  "plausible.lovesdata.com": "custom.plausible.io",
+  "plausible.mattpruitt.com": "custom.plausible.io",
+  "plausible.microwire.info": "custom.plausible.io",
+  "plausible.moncefbelyamani.com": "custom.plausible.io",
+  "plausible.nova.app": "custom.plausible.io",
+  "plausible.nubemia.com": "custom.plausible.io",
+  "plausible.nuqu.org": "custom.plausible.io",
+  "plausible.panic.com": "custom.plausible.io",
+  "plausible.pgmustard.com": "custom.plausible.io",
+  "plausible.phuctm97.com": "custom.plausible.io",
+  "plausible.plancagency.com": "custom.plausible.io",
+  "plausible.play.date": "custom.plausible.io",
+  "plausible.prod.sketch.com": "custom.plausible.io",
+  "plausible.promlens.com": "custom.plausible.io",
+  "plausible.rachel.systems": "custom.plausible.io",
+  "plausible.reactpreview.com": "custom.plausible.io",
+  "plausible.regex.help": "custom.plausible.io",
+  "plausible.ruqqus.com": "custom.plausible.io",
+  "plausible.simplelogin.io": "custom.plausible.io",
+  "plausible.simpleportfolio.app": "custom.plausible.io",
+  "plausible.slope.io": "custom.plausible.io",
+  "plausible.staging.sketch.com": "custom.plausible.io",
+  "plausible.starlegacyfoundation.org": "custom.plausible.io",
+  "plausible.strzibny.name": "custom.plausible.io",
+  "plausible.sysloun.cz": "custom.plausible.io",
+  "plausible.tac.dappstar.io": "custom.plausible.io",
+  "plausible.test.sketch.com": "custom.plausible.io",
+  "plausible.urbanekuensteruhr.de": "custom.plausible.io",
+  "plausible.vaughanesports.org": "custom.plausible.io",
+  "plausible.viteshot.com": "custom.plausible.io",
+  "plausible.west.io": "custom.plausible.io",
+  "plausible.zest.dev": "custom.plausible.io",
+  "plausible.zorin.com": "custom.plausible.io",
+  "pls.indiemakers.fr": "custom.plausible.io",
+  "plsbl.edison.se": "custom.plausible.io",
+  "pm.redbull.com": "custom.plausible.io",
+  "prism.raumgleiter.com": "custom.plausible.io",
+  "pstat.akathists.com": "custom.plausible.io",
+  "retention.ankidecks.com": "custom.plausible.io",
+  "s.80000hours.org": "custom.plausible.io",
+  "s.allbootdisks.com": "custom.plausible.io",
+  "s.cameratico.com": "custom.plausible.io",
+  "s.crackedthecode.co": "custom.plausible.io",
+  "s.cuoresportivo.no": "custom.plausible.io",
+  "s.fission.codes": "custom.plausible.io",
+  "s.glimesh.tv": "custom.plausible.io",
+  "s.mannes.tech": "custom.plausible.io",
+  "s.nerdfulmind.com": "custom.plausible.io",
+  "s.nslookup.io": "custom.plausible.io",
+  "s.schlachter.tech": "custom.plausible.io",
+  "s.sporks.space": "custom.plausible.io",
+  "sa.flux.community": "custom.plausible.io",
+  "sats.mailbrew.com": "custom.plausible.io",
+  "server.japanbyrivercruise.com": "custom.plausible.io",
+  "server.olliehorn.com": "custom.plausible.io",
+  "simple.bootify.io": "custom.plausible.io",
+  "site-stats.supernotes.app": "custom.plausible.io",
+  "sp.jrklein.com": "custom.plausible.io",
+  "sp.spaceomatic.fr": "custom.plausible.io",
+  "spock.dom.codes": "custom.plausible.io",
+  "st2.jamesdaniel.dev": "custom.plausible.io",
+  "stat.bill.harding.blog": "custom.plausible.io",
+  "statistics.csweapons.com": "custom.plausible.io",
+  "statistics.heatbeat.de": "custom.plausible.io",
+  "stats.45rpm.ch": "custom.plausible.io",
+  "stats.acadevor.com": "custom.plausible.io",
+  "stats.aixbrain.de": "custom.plausible.io",
+  "stats.allaboutberlin.com": "custom.plausible.io",
+  "stats.alleaktien.de": "custom.plausible.io",
+  "stats.am.ai": "custom.plausible.io",
+  "stats.amiibo.life": "custom.plausible.io",
+  "stats.arquido.com": "custom.plausible.io",
+  "stats.audiorelay.net": "custom.plausible.io",
+  "stats.backprop.co": "custom.plausible.io",
+  "stats.baptistwomen.com": "custom.plausible.io",
+  "stats.barriestephenhair.co.uk": "custom.plausible.io",
+  "stats.basecamp.com": "custom.plausible.io",
+  "stats.bcdtravel.com": "custom.plausible.io",
+  "stats.benui.ca": "custom.plausible.io",
+  "stats.bertwagner.com": "custom.plausible.io",
+  "stats.bestservers.co": "custom.plausible.io",
+  "stats.bholmes.dev": "custom.plausible.io",
+  "stats.bitpost.app": "custom.plausible.io",
+  "stats.blockleviton.com": "custom.plausible.io",
+  "stats.blog.codingmilitia.com": "custom.plausible.io",
+  "stats.blog.sean-wright.com": "custom.plausible.io",
+  "stats.blog.sublimesecurity.com": "custom.plausible.io",
+  "stats.bluesabre.org": "custom.plausible.io",
+  "stats.breadtube.tv": "custom.plausible.io",
+  "stats.breathly.app": "custom.plausible.io",
+  "stats.briskoda.net": "custom.plausible.io",
+  "stats.broddin.be": "custom.plausible.io",
+  "stats.buildingtheelite.com": "custom.plausible.io",
+  "stats.bungeefit.co.uk": "custom.plausible.io",
+  "stats.carrot2.org": "custom.plausible.io",
+  "stats.carrotsearch.com": "custom.plausible.io",
+  "stats.cassidyjames.com": "custom.plausible.io",
+  "stats.catholicluv.com": "custom.plausible.io",
+  "stats.changelog.com": "custom.plausible.io",
+  "stats.chapterist.show": "custom.plausible.io",
+  "stats.chronoslabs.net": "custom.plausible.io",
+  "stats.citizenos.com": "custom.plausible.io",
+  "stats.code-it-studio.de": "custom.plausible.io",
+  "stats.codeexposed.com": "custom.plausible.io",
+  "stats.coditia.com": "custom.plausible.io",
+  "stats.colabra.app": "custom.plausible.io",
+  "stats.console.dev": "custom.plausible.io",
+  "stats.contentwritingjobs.com": "custom.plausible.io",
+  "stats.craftybase.com": "custom.plausible.io",
+  "stats.creativeboom.com": "custom.plausible.io",
+  "stats.crema.fi": "custom.plausible.io",
+  "stats.cremashop.eu": "custom.plausible.io",
+  "stats.cremashop.se": "custom.plausible.io",
+  "stats.crewebo.de": "custom.plausible.io",
+  "stats.dailyposter.com": "custom.plausible.io",
+  "stats.dashbit.co": "custom.plausible.io",
+  "stats.davestewart.co.uk": "custom.plausible.io",
+  "stats.davidlms.com": "custom.plausible.io",
+  "stats.dazzit.com": "custom.plausible.io",
+  "stats.deva.guru": "custom.plausible.io",
+  "stats.digiexpert.store": "custom.plausible.io",
+  "stats.divyanshu013.dev": "custom.plausible.io",
+  "stats.doors.live": "custom.plausible.io",
+  "stats.drewbolles.com": "custom.plausible.io",
+  "stats.drgomesp.dev": "custom.plausible.io",
+  "stats.edkimo.com": "custom.plausible.io",
+  "stats.ekomenyong.com": "custom.plausible.io",
+  "stats.elementary.io": "custom.plausible.io",
+  "stats.elixir-lang.org": "custom.plausible.io",
+  "stats.emaillove.com": "custom.plausible.io",
+  "stats.emailrep.io": "custom.plausible.io",
+  "stats.emmas.site": "custom.plausible.io",
+  "stats.engeldirekt.de": "custom.plausible.io",
+  "stats.engineering.freeagent.com": "custom.plausible.io",
+  "stats.englishadam.com": "custom.plausible.io",
+  "stats.erlef.org": "custom.plausible.io",
+  "stats.executebig.org": "custom.plausible.io",
+  "stats.fabiofranchino.com": "custom.plausible.io",
+  "stats.farbenmeer.de": "custom.plausible.io",
+  "stats.feathercss.makerkits.co": "custom.plausible.io",
+  "stats.felipesere.com": "custom.plausible.io",
+  "stats.femtobill.com": "custom.plausible.io",
+  "stats.filmfed.com": "custom.plausible.io",
+  "stats.finger-ink.com": "custom.plausible.io",
+  "stats.flightsphere.com": "custom.plausible.io",
+  "stats.frenlo.com": "custom.plausible.io",
+  "stats.fruechtl.me": "custom.plausible.io",
+  "stats.fullofwishes.co.uk": "custom.plausible.io",
+  "stats.fundimmo.com": "custom.plausible.io",
+  "stats.galleriacortona.com": "custom.plausible.io",
+  "stats.geobox.app": "custom.plausible.io",
+  "stats.getdoks.org": "custom.plausible.io",
+  "stats.gethyas.com": "custom.plausible.io",
+  "stats.getpickaxe.com": "custom.plausible.io",
+  "stats.glassmountains.co.uk": "custom.plausible.io",
+  "stats.graphql-api.com": "custom.plausible.io",
+  "stats.gslc.utah.edu": "custom.plausible.io",
+  "stats.guersanguillaume.com": "custom.plausible.io",
+  "stats.hex.pm": "custom.plausible.io",
+  "stats.hexdocs.pm": "custom.plausible.io",
+  "stats.hey.com": "custom.plausible.io",
+  "stats.hey.science": "custom.plausible.io",
+  "stats.homerdixon.com": "custom.plausible.io",
+  "stats.homestow.com": "custom.plausible.io",
+  "stats.hone.uk": "custom.plausible.io",
+  "stats.hostfactor.io": "custom.plausible.io",
+  "stats.htmlcsstoimage.com": "custom.plausible.io",
+  "stats.htp.org": "custom.plausible.io",
+  "stats.hugoreeves.com": "custom.plausible.io",
+  "stats.huysmanbouw.be": "custom.plausible.io",
+  "stats.igevia.com": "custom.plausible.io",
+  "stats.immunefi.com": "custom.plausible.io",
+  "stats.infoboard.de": "custom.plausible.io",
+  "stats.innoq.com": "custom.plausible.io",
+  "stats.instabudget.app": "custom.plausible.io",
+  "stats.interactjs.io": "custom.plausible.io",
+  "stats.iscc-system.org": "custom.plausible.io",
+  "stats.ivankahl.com": "custom.plausible.io",
+  "stats.jackwhiting.co.uk": "custom.plausible.io",
+  "stats.jdheyburn.co.uk": "custom.plausible.io",
+  "stats.jerickson.net": "custom.plausible.io",
+  "stats.johnmac.pro": "custom.plausible.io",
+  "stats.joincomet.app": "custom.plausible.io",
+  "stats.justanotherpm.com": "custom.plausible.io",
+  "stats.kejk.tech": "custom.plausible.io",
+  "stats.kensho.com": "custom.plausible.io",
+  "stats.keyscore.me": "custom.plausible.io",
+  "stats.kod.ru": "custom.plausible.io",
+  "stats.kongressen.com": "custom.plausible.io",
+  "stats.krauss.io": "custom.plausible.io",
+  "stats.kryptoslogic.com": "custom.plausible.io",
+  "stats.laxallstars.com": "custom.plausible.io",
+  "stats.layl.app": "custom.plausible.io",
+  "stats.leaguestats.gg": "custom.plausible.io",
+  "stats.learnlinux.tv": "custom.plausible.io",
+  "stats.lessimpact.org": "custom.plausible.io",
+  "stats.liist.io": "custom.plausible.io",
+  "stats.livingedge.ngo": "custom.plausible.io",
+  "stats.lollipoptest.at": "custom.plausible.io",
+  "stats.lord.io": "custom.plausible.io",
+  "stats.ltdhunt.com": "custom.plausible.io",
+  "stats.ltodrivingschools.org": "custom.plausible.io",
+  "stats.lumen-app.com": "custom.plausible.io",
+  "stats.lussoveloce.com": "custom.plausible.io",
+  "stats.macosicons.com": "custom.plausible.io",
+  "stats.macroarraydx.com": "custom.plausible.io",
+  "stats.maferland.com": "custom.plausible.io",
+  "stats.martinbetz.eu": "custom.plausible.io",
+  "stats.marudor.de": "custom.plausible.io",
+  "stats.masjidbox.com": "custom.plausible.io",
+  "stats.matthiasloibl.com": "custom.plausible.io",
+  "stats.matthogg.fyi": "custom.plausible.io",
+  "stats.maurer-rides.de": "custom.plausible.io",
+  "stats.melvingeorge.me": "custom.plausible.io",
+  "stats.mesenvies.fr": "custom.plausible.io",
+  "stats.michaell.io": "custom.plausible.io",
+  "stats.missionrabies.com": "custom.plausible.io",
+  "stats.mkwtas.com": "custom.plausible.io",
+  "stats.mmazzarolo.com": "custom.plausible.io",
+  "stats.motion-effect.com": "custom.plausible.io",
+  "stats.motornation.net": "custom.plausible.io",
+  "stats.muchbetteradventures.com": "custom.plausible.io",
+  "stats.mynfp.de": "custom.plausible.io",
+  "stats.nddmed.com": "custom.plausible.io",
+  "stats.nerdbusiness.com": "custom.plausible.io",
+  "stats.newslit.co": "custom.plausible.io",
+  "stats.nextaction.app": "custom.plausible.io",
+  "stats.nicolabricot.com": "custom.plausible.io",
+  "stats.nicolaskempf.fr": "custom.plausible.io",
+  "stats.nomad.radio": "custom.plausible.io",
+  "stats.nonprofit.foundation": "custom.plausible.io",
+  "stats.nothingbutnylon.com": "custom.plausible.io",
+  "stats.nrcaknights.com": "custom.plausible.io",
+  "stats.ntietz.com": "custom.plausible.io",
+  "stats.nytecomics.com": "custom.plausible.io",
+  "stats.offthekerb.com": "custom.plausible.io",
+  "stats.onepagelove.com": "custom.plausible.io",
+  "stats.openwebcraft.com": "custom.plausible.io",
+  "stats.orbitalhealth.co": "custom.plausible.io",
+  "stats.ortussolutions.com": "custom.plausible.io",
+  "stats.oursky.com": "custom.plausible.io",
+  "stats.oxygem.com": "custom.plausible.io",
+  "stats.p42.ai": "custom.plausible.io",
+  "stats.pandasnap.io": "custom.plausible.io",
+  "stats.parqet.com": "custom.plausible.io",
+  "stats.pasteapp.io": "custom.plausible.io",
+  "stats.patout.dev": "custom.plausible.io",
+  "stats.patriot.win": "custom.plausible.io",
+  "stats.paulbutler.org": "custom.plausible.io",
+  "stats.paysagistes.pro": "custom.plausible.io",
+  "stats.personalkollen.se": "custom.plausible.io",
+  "stats.phili.pe": "custom.plausible.io",
+  "stats.pianoplanet.app": "custom.plausible.io",
+  "stats.pinoymusicstation.com": "custom.plausible.io",
+  "stats.piranhas.co": "custom.plausible.io",
+  "stats.pixify.net": "custom.plausible.io",
+  "stats.plastbest.sk": "custom.plausible.io",
+  "stats.poesieundgenuss.com": "custom.plausible.io",
+  "stats.pointflottant.com": "custom.plausible.io",
+  "stats.polekatfitness.com": "custom.plausible.io",
+  "stats.portabella.io": "custom.plausible.io",
+  "stats.pri.org": "custom.plausible.io",
+  "stats.pricewell.io": "custom.plausible.io",
+  "stats.print.work": "custom.plausible.io",
+  "stats.profilehunt.net": "custom.plausible.io",
+  "stats.raidprotect.org": "custom.plausible.io",
+  "stats.rainlily.org.hk": "custom.plausible.io",
+  "stats.rasulkireev.com": "custom.plausible.io",
+  "stats.readng.co": "custom.plausible.io",
+  "stats.referralhero.com": "custom.plausible.io",
+  "stats.reisemobil.pro": "custom.plausible.io",
+  "stats.remotebear.io": "custom.plausible.io",
+  "stats.remotejobs.co.uk": "custom.plausible.io",
+  "stats.reprage.com": "custom.plausible.io",
+  "stats.robhope.com": "custom.plausible.io",
+  "stats.ruhrfestspiele.de": "custom.plausible.io",
+  "stats.ruthmontenegro.com": "custom.plausible.io",
+  "stats.scailable.net": "custom.plausible.io",
+  "stats.scalgo.com": "custom.plausible.io",
+  "stats.scottbartell.com": "custom.plausible.io",
+  "stats.screen-play.app": "custom.plausible.io",
+  "stats.screenwavemedia.com": "custom.plausible.io",
+  "stats.sebastiangale.ca": "custom.plausible.io",
+  "stats.seedthemes.com": "custom.plausible.io",
+  "stats.seedwebs.com": "custom.plausible.io",
+  "stats.share.link": "custom.plausible.io",
+  "stats.shareup.app": "custom.plausible.io",
+  "stats.sheer.tj": "custom.plausible.io",
+  "stats.shell-tips.com": "custom.plausible.io",
+  "stats.shepherd.com": "custom.plausible.io",
+  "stats.shoutout.so": "custom.plausible.io",
+  "stats.sirdata.com": "custom.plausible.io",
+  "stats.sommselect.com": "custom.plausible.io",
+  "stats.songbox.rocks": "custom.plausible.io",
+  "stats.southpetherwin.com": "custom.plausible.io",
+  "stats.sparkloop.app": "custom.plausible.io",
+  "stats.spp.co": "custom.plausible.io",
+  "stats.stackingthebricks.com": "custom.plausible.io",
+  "stats.stacks.org": "custom.plausible.io",
+  "stats.steuer-soldaten.de": "custom.plausible.io",
+  "stats.stopchikane.nu": "custom.plausible.io",
+  "stats.strawberry.rocks": "custom.plausible.io",
+  "stats.studypages.com": "custom.plausible.io",
+  "stats.sublimesecurity.com": "custom.plausible.io",
+  "stats.sushibyte.io": "custom.plausible.io",
+  "stats.svenadolph.net": "custom.plausible.io",
+  "stats.thelion.website": "custom.plausible.io",
+  "stats.therenegadecoder.com": "custom.plausible.io",
+  "stats.thomasvitale.com": "custom.plausible.io",
+  "stats.toiletmap.org.uk": "custom.plausible.io",
+  "stats.tomorrowacademy.org": "custom.plausible.io",
+  "stats.travel.geek.nz": "custom.plausible.io",
+  "stats.travelfodder.com": "custom.plausible.io",
+  "stats.tresor.one": "custom.plausible.io",
+  "stats.tubecalculator.co.uk": "custom.plausible.io",
+  "stats.twenty.so": "custom.plausible.io",
+  "stats.twhl.xyz": "custom.plausible.io",
+  "stats.unox.com": "custom.plausible.io",
+  "stats.urbanfinn.com": "custom.plausible.io",
+  "stats.useeffect.dev": "custom.plausible.io",
+  "stats.uxtools.co": "custom.plausible.io",
+  "stats.vanityprojects.com": "custom.plausible.io",
+  "stats.vdsnow.ru": "custom.plausible.io",
+  "stats.vngameden.com": "custom.plausible.io",
+  "stats.voltamediahouse.com": "custom.plausible.io",
+  "stats.walkiees.co.uk": "custom.plausible.io",
+  "stats.westswindon-pc.gov.uk": "custom.plausible.io",
+  "stats.whereisit5pmrightnow.com": "custom.plausible.io",
+  "stats.world.hey.com": "custom.plausible.io",
+  "stats.wvs.org.uk": "custom.plausible.io",
+  "stats.wvsindia.org": "custom.plausible.io",
+  "stats.wwdcscholars.com": "custom.plausible.io",
+  "stats.www.agirpourlenvironnement.org": "custom.plausible.io",
+  "stats.x5x.host": "custom.plausible.io",
+  "stats.xn--drivation-b4a.fr": "custom.plausible.io",
+  "stats.yourdallashandyman.com": "custom.plausible.io",
+  "stats.zander.wtf": "custom.plausible.io",
+  "statystyki.ekspertyzy-szkolenia.pl": "custom.plausible.io",
+  "sts.papyrs.com": "custom.plausible.io",
+  "t.andarpersassi.it": "custom.plausible.io",
+  "thor.pureelectric.se": "custom.plausible.io",
+  "thumos.fileside.app": "custom.plausible.io",
+  "tics.seeker.gg": "custom.plausible.io",
+  "tics.techdirt.com": "custom.plausible.io",
+  "tock.weg.plus": "custom.plausible.io",
+  "tocotronic.thomas.me": "custom.plausible.io",
+  "tokei.upstract.com": "custom.plausible.io",
+  "track.slickinbox.com": "custom.plausible.io",
+  "traffic.hostedstatus.page": "custom.plausible.io",
+  "traffic.taktikal.is": "custom.plausible.io",
+  "visite.scambi.org": "custom.plausible.io",
+  "visitors.asadis.net": "custom.plausible.io",
+  "visits.quitsocialmedia.club": "custom.plausible.io",
+  "visits.tommi.space": "custom.plausible.io",
+  "vole.amplenote.com": "custom.plausible.io",
+  "xyz.bestool.pl": "custom.plausible.io",
+  "yolo.phpliveregex.com": "custom.plausible.io",
+  "2tty.overstappen.nl": "a351fec2c318c11ea9b9b0a0ae18fb0b-1529426863.eu-central-1.elb.amazonaws.com",
+  "api.bunzlaucastle.com": "a88045584548111e997c60ac8a4ec150-1610510072.eu-central-1.elb.amazonaws.com",
+  "api.weltevree.eu": "a88045584548111e997c60ac8a4ec150-1610510072.eu-central-1.elb.amazonaws.com",
+  "app1.maatwerkonline.nl": "afc4d9aa2a91d11e997c60ac8a4ec150-2082092489.eu-central-1.elb.amazonaws.com",
+  "bc.semwerkt.nl": "a351fec2c318c11ea9b9b0a0ae18fb0b-1529426863.eu-central-1.elb.amazonaws.com",
+  "box.bossdata.be": "afc4d9aa2a91d11e997c60ac8a4ec150-2082092489.eu-central-1.elb.amazonaws.com",
+  "cms.hardloopaanbiedingen.nl": "a351fec2c318c11ea9b9b0a0ae18fb0b-1529426863.eu-central-1.elb.amazonaws.com",
+  "core.bruynzeelkeukens.nl": "a88045584548111e997c60ac8a4ec150-1610510072.eu-central-1.elb.amazonaws.com",
+  "en.johnhardy.com": "a351fec2c318c11ea9b9b0a0ae18fb0b-1529426863.eu-central-1.elb.amazonaws.com",
+  "erp.qwic.nl": "afc4d9aa2a91d11e997c60ac8a4ec150-2082092489.eu-central-1.elb.amazonaws.com",
+  "host11.traffic-builders.com": "afc4d9aa2a91d11e997c60ac8a4ec150-2082092489.eu-central-1.elb.amazonaws.com",
+  "s0.beyondonline.nl": "afc4d9aa2a91d11e997c60ac8a4ec150-2082092489.eu-central-1.elb.amazonaws.com",
+  "s1.carnext.com": "a351fec2c318c11ea9b9b0a0ae18fb0b-1529426863.eu-central-1.elb.amazonaws.com",
+  "s4.parkeren-amsterdam.com": "afc4d9aa2a91d11e997c60ac8a4ec150-2082092489.eu-central-1.elb.amazonaws.com",
+  "s4.parkeren-haarlem.nl": "afc4d9aa2a91d11e997c60ac8a4ec150-2082092489.eu-central-1.elb.amazonaws.com",
+  "s4.parkeren-utrecht.nl": "afc4d9aa2a91d11e997c60ac8a4ec150-2082092489.eu-central-1.elb.amazonaws.com",
+  "tdep.bunzlonline.nl": "a88045584548111e997c60ac8a4ec150-1610510072.eu-central-1.elb.amazonaws.com",
+  "tdep.growwwdigital.com": "afc4d9aa2a91d11e997c60ac8a4ec150-2082092489.eu-central-1.elb.amazonaws.com",
+  "tdep.mijnurgentie.nl": "afc4d9aa2a91d11e997c60ac8a4ec150-2082092489.eu-central-1.elb.amazonaws.com",
+  "tdep.sdim.nl": "afc4d9aa2a91d11e997c60ac8a4ec150-2082092489.eu-central-1.elb.amazonaws.com",
+  "tdep.suncamp.be": "a88045584548111e997c60ac8a4ec150-1610510072.eu-central-1.elb.amazonaws.com",
+  "tdep.suncamp.de": "a88045584548111e997c60ac8a4ec150-1610510072.eu-central-1.elb.amazonaws.com",
+  "tdep.suncamp.nl": "a88045584548111e997c60ac8a4ec150-1610510072.eu-central-1.elb.amazonaws.com",
+  "tdep.suncamp.pl": "a88045584548111e997c60ac8a4ec150-1610510072.eu-central-1.elb.amazonaws.com",
+  "tdep.teamnijhuis.com": "afc4d9aa2a91d11e997c60ac8a4ec150-2082092489.eu-central-1.elb.amazonaws.com",
+  "tdep.theofficeservice.com": "afc4d9aa2a91d11e997c60ac8a4ec150-2082092489.eu-central-1.elb.amazonaws.com",
+  "a.deutschehospitality.com": "467808562573270.wt-eu02.net",
+  "a.gedidigital.it": "gedidigital.wt-eu02.net",
+  "a.hrewards.com": "307902509027183.wt-eu02.net",
+  "a.intercityhotel.com": "307902509027183.wt-eu02.net",
+  "a.jaz-hotel.com": "307902509027183.wt-eu02.net",
+  "a.steigenberger.com": "307902509027183.wt-eu02.net",
+  "abc.fackelmann.de": "807354460250799.wt-eu02.net",
+  "analytics.hermesworld.com": "analytics-myhermes.wt-eu02.net",
+  "analytics.myhermes.de": "analytics-myhermes.wt-eu02.net",
+  "app03.ikk-classic.de": "ikk-classic-app03.wt-eu02.net",
+  "audev.zeit.de": "audev-zeit.wt-eu02.net",
+  "cdn7.baunetz.de": "baunetzprod01.wt-eu02.net",
+  "census.misterspex.at": "730059294506327.wt-eu02.net",
+  "census.misterspex.ch": "626892113650542.wt-eu02.net",
+  "census.misterspex.co.uk": "972067760041897.wt-eu02.net",
+  "census.misterspex.de": "208005830805862.wt-eu02.net",
+  "census.misterspex.es": "611716061616237.wt-eu02.net",
+  "census.misterspex.fi": "346715981768881.wt-eu02.net",
+  "census.misterspex.fr": "913854712272815.wt-eu02.net",
+  "census.misterspex.nl": "753960264605716.wt-eu02.net",
+  "census.misterspex.no": "524656123914087.wt-eu02.net",
+  "census.misterspex.se": "915651380225350.wt-eu02.net",
+  "cijfers.tweakers.nl": "tweakersnl01.wt-eu02.net",
+  "da.hornbach.at": "hornbach-02.wt-eu02.net",
+  "da.hornbach.ch": "hornbach-02.wt-eu02.net",
+  "da.hornbach.cz": "hornbach-02.wt-eu02.net",
+  "da.hornbach.de": "hornbach-02.wt-eu02.net",
+  "da.hornbach.lu": "hornbach-02.wt-eu02.net",
+  "da.hornbach.nl": "hornbach-02.wt-eu02.net",
+  "da.hornbach.ro": "hornbach-02.wt-eu02.net",
+  "da.hornbach.se": "hornbach-02.wt-eu02.net",
+  "da.hornbach.sk": "hornbach-02.wt-eu02.net",
+  "data.adlermode.com": "669154114435717.wt-eu02.net",
+  "data.all-in.de": "517717528680725.wt-eu02.net",
+  "data.campaign.prenatal.com": "329712103760415.wt-eu02.net",
+  "data.campaign.toyscenter.it": "728252369996325.wt-eu02.net",
+  "data.engelhorn.de": "302631813489498.wt-eu02.net",
+  "data.goertz.de": "goertz-01.wt-eu02.net",
+  "data.inbank.it": "data-inbank01.wt-eu02.net",
+  "data.leipzig.de": "data-leipzig.wt-eu02.net",
+  "data.mainpost.de": "mainpost01.wt-eu02.net",
+  "data.mapp.com": "292595354576025.wt-eu02.net",
+  "data.mediaworld.it": "367128732629814.wt-eu02.net",
+  "data.volksfreund.de": "volksfreund01.wt-eu02.net",
+  "data.westlotto.de": "666882163750646.wt-eu02.net",
+  "daten.union-investment.de": "unioninvestment-de01.wt-eu02.net",
+  "di.ifolor.ch": "di.ifolor.wt-eu02.net",
+  "di.ifolor.net": "di.ifolor.wt-eu02.net",
+  "ed.emp-online.ch": "emp01.wt-eu02.net",
+  "ed.emp-online.com": "emp01.wt-eu02.net",
+  "ed.emp-online.es": "emp01.wt-eu02.net",
+  "ed.emp-online.fr": "emp01.wt-eu02.net",
+  "ed.emp-online.it": "emp01.wt-eu02.net",
+  "ed.emp-shop.cz": "emp01.wt-eu02.net",
+  "ed.emp-shop.dk": "emp01.wt-eu02.net",
+  "ed.emp-shop.no": "emp01.wt-eu02.net",
+  "ed.emp-shop.pl": "emp01.wt-eu02.net",
+  "ed.emp-shop.se": "emp01.wt-eu02.net",
+  "ed.emp-shop.sk": "emp01.wt-eu02.net",
+  "ed.emp.at": "emp01.wt-eu02.net",
+  "ed.emp.co.uk": "emp01.wt-eu02.net",
+  "ed.emp.de": "emp01.wt-eu02.net",
+  "ed.emp.fi": "emp01.wt-eu02.net",
+  "ed.emp.ie": "emp01.wt-eu02.net",
+  "ed.large.be": "emp01.wt-eu02.net",
+  "ed.large.nl": "emp01.wt-eu02.net",
+  "eht.endress.com": "endresshauser01.wt-eu02.net",
+  "fiwinet.firmenwissen.com": "creditreform01.wt-eu02.net",
+  "fiwinet.firmenwissen.de": "creditreform01.wt-eu02.net",
+  "hbbtv-track.prosieben.de": "hbbtv-track.wt-eu02.net",
+  "image.kfw-entwicklungsbank.de": "kfw-07.webtrekk.net",
+  "image.kfw.de": "kfw04.webtrekk.net",
+  "images1.test.de": "warentest-de01.webtrekk.net",
+  "mapp.ewm.co.uk": "145003564476173.wt-eu02.net",
+  "mapp.jysk.dk": "484879729086450.wt-eu02.net",
+  "mapp.jysk.nl": "671130969507772.wt-eu02.net",
+  "mapp.yesstyle.com": "737859735586197.wt-eu02.net",
+  "mit.db.com": "286813086616891.wt-eu02.net",
+  "mit.dws.com": "823532764568303.wt-eu02.net",
+  "mit.dws.de": "823532764568303.wt-eu02.net",
+  "mit.researchlog.db.com": "965607891904117.wt-eu02.net",
+  "mit.researchlog.dbresearch.com": "965607891904117.wt-eu02.net",
+  "mit.researchlog.dbresearch.de": "965607891904117.wt-eu02.net",
+  "mon.ingservices.nl": "ingnl04.webtrekk.net",
+  "ot.obi-italia.it": "obi-all.wt-eu02.net",
+  "ot.obi.at": "obi-all.wt-eu02.net",
+  "ot.obi.ba": "obi-all.wt-eu02.net",
+  "ot.obi.ch": "obi-all.wt-eu02.net",
+  "ot.obi.cz": "obi-all.wt-eu02.net",
+  "ot.obi.de": "obi-all.wt-eu02.net",
+  "ot.obi.hu": "obi-all.wt-eu02.net",
+  "ot.obi.pl": "obi-all.wt-eu02.net",
+  "ot.obi.ru": "obi-all.wt-eu02.net",
+  "ot.obi.si": "obi-all.wt-eu02.net",
+  "ot.obi.sk": "obi-all.wt-eu02.net",
+  "pix.airbusgroup.com": "airbusgroup-de01.wt-eu02.net",
+  "pix.eads.com": "eads-com01.webtrekk.net",
+  "pix.telekom-dienste.de": "telekom02.webtrekk.net",
+  "pix.telekom.com": "579960529907681.wt-eu02.net",
+  "pix.telekom.de": "telekom01.webtrekk.net",
+  "pixel.augsburger-allgemeine.de": "augsburgerallgemeine01.webtrekk.net",
+  "proditor.sparda.de": "sparda01.wt-eu02.net",
+  "prophet.heise.de": "heise02.webtrekk.net",
+  "scout.alpinetrek.co.uk": "img.bergfreunde.wt-eu02.net",
+  "scout.alpiniste.fr": "img.bergfreunde.wt-eu02.net",
+  "scout.berg-freunde.at": "img.bergfreunde.wt-eu02.net",
+  "scout.berg-freunde.ch": "img.bergfreunde.wt-eu02.net",
+  "scout.bergfreunde.de": "img.bergfreunde.wt-eu02.net",
+  "scout.bergfreunde.dk": "img.bergfreunde.wt-eu02.net",
+  "scout.bergfreunde.eu": "img.bergfreunde.wt-eu02.net",
+  "scout.bergfreunde.nl": "img.bergfreunde.wt-eu02.net",
+  "scout.bergfreunde.se": "img.bergfreunde.wt-eu02.net",
+  "spr.bild.de": "bild01.webtrekk.net",
+  "spr.welt.de": "welt-01.wt-eu02.net",
+  "startrekk.flaconi.at": "flaconi-at.wt-eu02.net",
+  "startrekk.flaconi.de": "flaconi02.webtrekk.net",
+  "startrekk.flaconi.pl": "367171131378433.wt-eu02.net",
+  "statistics.tuv.com": "350258498646185.wt-eu02.net",
+  "sub1.cosmosdirekt.de": "cosmos01ssl.webtrekk.net",
+  "t.paydirekt.de": "paydirekt-de01.wt-eu02.net",
+  "text.benefitsatwork.be": "corporate-benefits.wt-eu02.net",
+  "text.benefitsatwork.ch": "corporate-benefits.wt-eu02.net",
+  "text.convenzioniaziendali.it": "corporate-benefits.wt-eu02.net",
+  "text.mitarbeiterangebote.at": "corporate-benefits.wt-eu02.net",
+  "text.mitarbeiterangebote.de": "cbm02.webtrekk.net",
+  "text.rahmenvereinbarungen.de": "corporate-benefits.wt-eu02.net",
+  "tippcom01.tipp24.com": "tipp24-de01.wt-eu02.net",
+  "tr.computeruniverse.net": "tr.computeruniverse.wt-eu02.net",
+  "tr.suedkurier.de": "sdkurier-de01.wt-eu02.net",
+  "track.emeza.com": "emeza-com01.webtrekk.net",
+  "track.yellostrom.de": "yello-de01.webtrekk.net",
+  "tracking.netcologne.de": "netcologne-01.webtrekk.net",
+  "tracking.tchibo.com.tr": "tchibo09.webtrekk.net",
+  "tracking.tchibo.de": "tchibo03.webtrekk.net",
+  "trk.blume2000.de": "blume2000.wt-eu02.net",
+  "trk.nuernberger.de": "nuernberger02.webtrekk.net",
+  "trk.nuernberger.digital": "176652923057792.wt-eu02.net",
+  "w3.flatex.at": "flatex-at01.webtrekk.net",
+  "w3.flatex.de": "flatex-de01.webtrekk.net",
+  "w3.flatex.nl": "flatex-at01.webtrekk.net",
+  "w3.vitrade.de": "vitrade02.webtrekk.net",
+  "w7.berlin.de": "berlinonline-02.wt-eu02.net",
+  "wa.planet-wissen.de": "wa-wdr.wt-eu02.net",
+  "wa.quarks.de": "wa-wdr.wt-eu02.net",
+  "wa.sportschau.de": "wa-wdr.wt-eu02.net",
+  "wa.wdr.de": "wa-wdr.wt-eu02.net",
+  "wa.wdrmaus.de": "wa-wdr.wt-eu02.net",
+  "waaf.medion.com": "medion01.wt-eu02.net",
+  "waaf1.aldilife.com": "medion01.wt-eu02.net",
+  "waaf1.alditalk.de": "medion01.wt-eu02.net",
+  "waaf1.hoferfotos.at": "medion01.wt-eu02.net",
+  "wbtrkk.deutschlandcard.de": "de-card01.wt-eu02.net",
+  "wbtrkk.teufel.ch": "752828619977374.wt-eu02.net",
+  "wbtrkk.teufel.de": "982429105360946.wt-eu02.net",
+  "wbtrkk.teufelaudio.at": "637394170883823.wt-eu02.net",
+  "wbtrkk.teufelaudio.be": "598189357306993.wt-eu02.net",
+  "wbtrkk.teufelaudio.com": "427813503923049.wt-eu02.net",
+  "wbtrkk.teufelaudio.es": "989502084988358.wt-eu02.net",
+  "wbtrkk.teufelaudio.fr": "590838755166551.wt-eu02.net",
+  "wbtrkk.teufelaudio.it": "451504046304293.wt-eu02.net",
+  "wbtrkk.teufelaudio.nl": "148749046266446.wt-eu02.net",
+  "wbtrkk.teufelaudio.pl": "997311968670029.wt-eu02.net",
+  "web.bankofscotland.de": "849036415619964.wt-eu02.net",
+  "web.comunicazioni.iol.it": "215973748390194.wt-eu02.net",
+  "web.diebayerische.de": "729347163621496.wt-eu02.net",
+  "web.email.theindependentpharmacy.co.uk": "802837842744167.wt-eu02.net",
+  "web.emails.elc.co.uk": "107006243521810.wt-eu02.net",
+  "web.emails.thetoyshop.com": "371033713452477.wt-eu02.net",
+  "web.info.bonprix.es": "709114798683263.wt-eu02.net",
+  "web.info.varelotteriet.dk": "734297997850272.wt-eu02.net",
+  "web.info.yeppon.it": "243341177383246.wt-eu02.net",
+  "web.mail.proximaati.com": "741723125859679.wt-eu02.net",
+  "web.mapp.ilgiardinodeilibri.it": "958731023298385.wt-eu02.net",
+  "web.marketing.elbenwald.de": "481977157370244.wt-eu02.net",
+  "web.mytoys.de": "mytoys02.wt-eu02.net",
+  "web.news.creedfragrances.co.uk": "101230059950694.wt-eu02.net",
+  "web.news.eprice.it": "285545256993116.wt-eu02.net",
+  "web.news.lancel.com": "584263287768398.wt-eu02.net",
+  "web.news.piquadro.com": "425587064188106.wt-eu02.net",
+  "web.news.thebridge.it": "669798445377675.wt-eu02.net",
+  "web.newsletter.viviennewestwood.com": "964869656656022.wt-eu02.net",
+  "web.x.ilpost.it": "641523609775483.wt-eu02.net",
+  "webmet.creditreform.de": "creditreform02.wt-eu02.net",
+  "webt.pure.com": "470719744966924.wt-eu02.net",
+  "webts.adac.de": "adac02.webtrekk.net",
+  "wetr.sportscheck.at": "sportscheckde01.wt-eu02.net",
+  "wetr.sportscheck.ch": "sportscheckde01.wt-eu02.net",
+  "wetr.sportscheck.com": "sportscheckde01.wt-eu02.net",
+  "wt.dialog-versicherung.de": "752542050590835.wt-eu02.net",
+  "wt.envivas.de": "865411762489824.wt-eu02.net",
+  "wt.generali.de": "639871942536313.wt-eu02.net",
+  "wt.netze-bw.de": "netze-bw01.wt-eu02.net",
+  "wt.vhb.de": "vhb-01.wt-eu02.net",
+  "wttd.douglas.at": "wttd-douglas.wt-eu02.net",
+  "wttd.douglas.ch": "wttd-douglas.wt-eu02.net",
+  "wttd.douglas.de": "wttd-douglas.wt-eu02.net",
+  "wttd.douglas.it": "wttd-douglas.wt-eu02.net",
+  "wttd.douglas.nl": "wttd-douglas.wt-eu02.net",
+  "wttd.douglas.pl": "wttd-douglas.wt-eu02.net",
+  "wttd.madeleine-fashion.be": "madeleineprod01.wt-eu02.net",
+  "wttd.madeleine-fashion.nl": "madeleineprod01.wt-eu02.net",
+  "wttd.madeleine-mode.at": "madeleineprod01.wt-eu02.net",
+  "wttd.madeleine-mode.ch": "madeleineprod01.wt-eu02.net",
+  "wttd.madeleine.co.uk": "madeleineprod01.wt-eu02.net",
+  "wttd.madeleine.com": "madeleineprod01.wt-eu02.net",
+  "wttd.madeleine.de": "madeleineprod01.wt-eu02.net",
+  "wttd.madeleine.fr": "madeleineprod01.wt-eu02.net",
+  "wttd.madeleine.gr": "madeleineprod01.wt-eu02.net",
+  "tk.abt.com": "tk-abt-com.wizaly.com",
+  "tk.airfrance.ae": "tkairfrance.wizaly.com",
+  "tk.airfrance.at": "tkairfrance.wizaly.com",
+  "tk.airfrance.ca": "tkairfrance.wizaly.com",
+  "tk.airfrance.co.uk": "tkairfrance.wizaly.com",
+  "tk.airfrance.com": "tkairfrance.wizaly.com",
+  "tk.airfrance.de": "tkairfrance.wizaly.com",
+  "tk.airfrance.fr": "tkairfrance.wizaly.com",
+  "tk.airfrance.ga": "tkairfrance.wizaly.com",
+  "tk.airfrance.it": "tkairfrance.wizaly.com",
+  "tk.airfrance.ru": "tkairfrance.wizaly.com",
+  "tk.airfrance.tn": "tkairfrance.wizaly.com",
+  "tk.airfrance.us": "tkairfrance.wizaly.com",
+  "tk.alexandermcqueen.com": "tk-alexandermcqueen-com.wizaly.com",
+  "tk.apprentis-auteuil.org": "tk-apprentis-auteuil-com.wizaly.com",
+  "tk.balenciaga.com": "tk-balenciaga-com.wizaly.com",
+  "tk.biovea.com": "tk-biovea-com.wizaly.com",
+  "tk.bricoprive.com": "tk-bricoprive-com.wizaly.com",
+  "tk.conforama.fr": "tk-conforama-fr.wizaly.com",
+  "tk.dietbon.fr": "tk-dietbon-fr.wizaly.com",
+  "tk.engie.fr": "tk-engie-com.wizaly.com",
+  "tk.healthwarehouse.com": "tk-healthwarehouse-com.wizaly.com",
+  "tk.kitchendiet.fr": "tk-kitchendiet-fr.wizaly.com",
+  "tk.klm.com": "tkairfrance.wizaly.com",
+  "tk.lcl.fr": "tk-lcl-fr.wizaly.com",
+  "tk.little-big-change.com": "tk-little-big-change-com.wizaly.com",
+  "tk.lulli-sur-la-toile.com": "tk-lulli-sur-la-toile-com.wizaly.com",
+  "tk.msccruises.com": "tkmsccruisescom.wizaly.com",
+  "tk.nhlottery.com": "tk-nhlottery-com.wizaly.com",
+  "tk.ornikar.com": "tk-ornikar-com.wizaly.com",
+  "tk.planete-oui.fr": "tk-planete-oui-fr.wizaly.com",
+  "tk.prismashop.fr": "tk_prismashop_fr.wizaly.com",
+  "tk.rentacar.fr": "tk-rentacar-fr.wizaly.com",
+  "tk.salomon.com": "tk-salomon-com.wizaly.com",
+  "tk.svsound.com": "tk-svsound-com.wizaly.com",
+  "tk.transavia.com": "tk_transavia_com.wizaly.com",
+  "tk.viapresse.com": "tk-viapresse-com.wizaly.com",
+  "twiz.wizaly.fr": "t.wizaly.com",
+  "wiz.ghostbed.com": "wiz-ghostbed-com.wizaly.com",
+  "wz.allianz.fr": "wz-allianz-fr.wizaly.com"
+}
\ No newline at end of file
diff --git a/src/data/seed.json b/src/data/seed.json
index 42fc36f2..f5a09ff2 100644
--- a/src/data/seed.json
+++ b/src/data/seed.json
@@ -1,93 +1,29 @@
 {
   "action_map": {
-    "008-jlc-434.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602149702509
-    },
-    "017-dvc-111.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602160757426
-    },
-    "01net.com": {
-      "heuristicAction": "allow"
-    },
-    "067-umd-991.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602330684483
-    },
     "0914.global.ssl.fastly.net": {
-      "heuristicAction": "allow"
-    },
-    "100008946.collect.igodigital.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601989505746
+      "heuristicAction": "cookieblock"
     },
-    "1001.netrk.net": {
+    "0cf.io": {
       "heuristicAction": "allow"
     },
-    "10014956.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602015754030
-    },
-    "10088969.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601907792167
-    },
     "100widgets.com": {
       "heuristicAction": "allow"
     },
-    "10176687.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602024707132
-    },
-    "10190460.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602052259567
-    },
-    "10192984.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602166739691
-    },
-    "10214854.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602197720890
-    },
-    "10233691.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602052712508
-    },
-    "10259902.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602059721131
-    },
-    "10270662.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602346686015
-    },
-    "107-fms-070.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602124849160
-    },
-    "10870841.collect.igodigital.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602076836260
-    },
-    "10hui.es": {
+    "10jqka.com.cn": {
       "heuristicAction": "allow"
     },
-    "110.93.143.144": {
+    "110.242.68.3": {
       "heuristicAction": "allow"
     },
-    "11183.com.cn": {
+    "110.93.143.144": {
       "heuristicAction": "allow"
     },
-    "11186.global.siteimproveanalytics.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602250469591
-    },
     "112.2o7.net": {
       "heuristicAction": "cookieblock"
     },
+    "11h11m.net": {
+      "heuristicAction": "allow"
+    },
     "120askimages.com": {
       "heuristicAction": "allow"
     },
@@ -97,72 +33,55 @@
     "123apps.com": {
       "heuristicAction": "allow"
     },
-    "126.net": {
+    "123formbuilder.com": {
       "heuristicAction": "allow"
     },
-    "1361549.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602355502897
-    },
-    "140cc.v.fwmrm.net": {
-      "heuristicAction": "cookieblock"
-    },
-    "14108.global.siteimproveanalytics.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602275317686
+    "126.net": {
+      "heuristicAction": "block"
     },
     "163.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
-    "172-qer-842.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602301651252
+    "180.210.206.226": {
+      "heuristicAction": "allow"
     },
-    "17620.global.siteimproveanalytics.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602385615672
+    "18f-cloud.com": {
+      "heuristicAction": "allow"
     },
-    "178-uxe-734.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602250689044
+    "1bis.com": {
+      "heuristicAction": "allow"
     },
-    "180-pay-466.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601903596238
+    "1casino.media": {
+      "heuristicAction": "allow"
     },
     "1dmp.io": {
       "heuristicAction": "block"
     },
-    "20726339p.rfihub.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602380586214
-    },
-    "20790133p.rfihub.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602268247489
+    "1internet.tv": {
+      "heuristicAction": "allow"
     },
-    "20824283p.rfihub.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602013061513
+    "1plus1.ua": {
+      "heuristicAction": "allow"
     },
-    "2315.oadz.com": {
+    "1plus1.video": {
       "heuristicAction": "allow"
     },
-    "247-inc.net": {
+    "1rx.io": {
       "heuristicAction": "block"
     },
-    "24smi.net": {
+    "1worldonline.com": {
       "heuristicAction": "allow"
     },
-    "26434.global.siteimproveanalytics.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601975541289
+    "2020mustang.com": {
+      "heuristicAction": "block"
     },
-    "2988354.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601882902532
+    "2345.com": {
+      "heuristicAction": "allow"
     },
-    "2checkout.com": {
+    "247-inc.net": {
+      "heuristicAction": "allow"
+    },
+    "24hstatic.com": {
       "heuristicAction": "allow"
     },
     "2o7.net": {
@@ -171,71 +90,19 @@
     "2t23.net": {
       "heuristicAction": "allow"
     },
-    "3071236.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602224215187
-    },
-    "315-ftt-121.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602374155829
-    },
-    "316-gsv-089.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602152384258
-    },
-    "320-chp-056.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602398839433
-    },
-    "3281045.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602293457750
-    },
-    "329-zem-341.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602214859996
+    "2xclick.ru": {
+      "heuristicAction": "allow"
     },
     "33across.com": {
       "heuristicAction": "block"
     },
-    "3573159.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602124529455
-    },
-    "358-ejs-102.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602040460457
-    },
-    "360-xjz-500.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601912496651
-    },
     "360.cn": {
       "heuristicAction": "block"
     },
     "360yield.com": {
       "heuristicAction": "block"
     },
-    "3668425.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601950532846
-    },
-    "367-mrv-360.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602149618905
-    },
-    "3810813.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602235841060
-    },
-    "3864313.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602087650625
-    },
-    "3conline.com": {
-      "heuristicAction": "block"
-    },
-    "3ds.com": {
+    "37.com": {
       "heuristicAction": "allow"
     },
     "3gl.net": {
@@ -244,60 +111,16 @@
     "3lift.com": {
       "heuristicAction": "block"
     },
-    "406-iur-638.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601980754875
-    },
-    "40nuggets.com": {
+    "451.io": {
       "heuristicAction": "allow"
     },
-    "4234560.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601975178749
-    },
-    "4248738.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601893149252
-    },
-    "4338867.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602114796555
-    },
-    "4389858.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602149801047
-    },
-    "4394967.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602187406773
-    },
-    "4480363.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602019710952
-    },
-    "4599337.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602288870993
-    },
-    "4765202.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602026229016
-    },
-    "4934753.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602058653506
-    },
-    "4968275.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602249574231
-    },
     "4dex.io": {
       "heuristicAction": "block"
     },
-    "4paradigm.com": {
+    "4dsply.com": {
       "heuristicAction": "allow"
     },
-    "4pda.to": {
+    "4gtv.tv": {
       "heuristicAction": "allow"
     },
     "4strokemedia.com": {
@@ -306,35 +129,17 @@
     "50bang.org": {
       "heuristicAction": "block"
     },
+    "50bangzh.com": {
+      "heuristicAction": "allow"
+    },
     "51.la": {
       "heuristicAction": "block"
     },
-    "5165113.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601918619303
-    },
-    "5219529.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602269417704
-    },
-    "5322751.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601940717356
-    },
     "53kf.com": {
       "heuristicAction": "allow"
     },
-    "5490350.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602020056441
-    },
-    "5617400.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602230121505
-    },
-    "564-vfr-008.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602119698899
+    "55haitao.com": {
+      "heuristicAction": "allow"
     },
     "58.com": {
       "heuristicAction": "allow"
@@ -342,449 +147,181 @@
     "58.com.cn": {
       "heuristicAction": "allow"
     },
-    "5865816.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602253920458
-    },
     "58cdn.com.cn": {
       "heuristicAction": "allow"
     },
-    "58che.com": {
+    "6q33.net": {
       "heuristicAction": "allow"
     },
-    "6019066.global.siteimproveanalytics.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602139271771
-    },
-    "6027462.global.siteimproveanalytics.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602152296091
-    },
-    "6034097.global.siteimproveanalytics.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602333530601
-    },
-    "6097260.global.siteimproveanalytics.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602034555469
-    },
-    "6231350.global.siteimproveanalytics.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602319648057
-    },
-    "6254122.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602137743743
-    },
-    "6266241.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602021900067
-    },
-    "638-hhz-510.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602324515078
-    },
-    "6417561.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601985457352
-    },
-    "650-kge-239.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602084388732
-    },
-    "653-smc-783.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601979896861
-    },
-    "6564653.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602044654233
-    },
-    "66356256.global.siteimproveanalytics.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601899997191
-    },
-    "66357621.global.siteimproveanalytics.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601884660235
-    },
-    "66357691.global.siteimproveanalytics.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602156123863
-    },
-    "66357711.global.siteimproveanalytics.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602222197777
-    },
-    "6812680.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602250693884
-    },
-    "6noy.net": {
+    "6rooms.com": {
       "heuristicAction": "allow"
     },
     "6sc.co": {
       "heuristicAction": "block"
     },
-    "706-yia-261.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602295888522
-    },
     "71360.com": {
       "heuristicAction": "allow"
     },
-    "715-yzo-232.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602283385759
-    },
-    "7217216.collect.igodigital.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601882948730
-    },
-    "7324166.collect.igodigital.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602209477442
-    },
-    "745-buq-779.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602351977279
-    },
-    "75536.global.siteimproveanalytics.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602116595842
-    },
-    "768-oqw-145.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602381617080
-    },
     "7eer.net": {
       "heuristicAction": "block"
     },
     "7gra.us": {
-      "heuristicAction": "allow"
-    },
-    "7nwhwds3ex7vjw54abqzb2u3nxyqh6543r2tktmbcada04fd8200f860sac.d.aa.online-metrix.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601906736341
+      "heuristicAction": "block"
     },
-    "7xbid.com": {
+    "7news.az": {
       "heuristicAction": "allow"
     },
-    "8034948.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602349213523
-    },
-    "805-kok-719.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602060502665
-    },
-    "8133010.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601967837951
-    },
-    "81956.global.siteimproveanalytics.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601935447862
-    },
-    "8324482.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602249390225
-    },
-    "8371571.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602272284955
-    },
-    "8379289.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601993766721
-    },
-    "8463383.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601893919453
-    },
-    "8464365.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601918124761
-    },
-    "8496125.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602352685872
-    },
-    "850-zwr-066.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602361665675
-    },
-    "855-qah-699.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602292968596
-    },
-    "8555493.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602297374703
-    },
-    "8666708.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601988700694
-    },
-    "867-pkr-571.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602364740987
-    },
-    "8704383.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602163924057
+    "7ymy.net": {
+      "heuristicAction": "allow"
     },
-    "8832015.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602233311813
+    "8b4b041006.com": {
+      "heuristicAction": "allow"
     },
-    "88721.global.siteimproveanalytics.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601981538168
+    "8bx6ag.net": {
+      "heuristicAction": "allow"
     },
-    "893-qif-790.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601961058405
+    "8digits.com": {
+      "heuristicAction": "allow"
     },
-    "896-pbj-036.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602262838874
+    "8u86.net": {
+      "heuristicAction": "allow"
     },
     "8v4lqg.net": {
       "heuristicAction": "allow"
     },
-    "9.global.siteimproveanalytics.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601948736260
-    },
-    "9200540.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602153371559
-    },
-    "9277599.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602247449028
-    },
-    "942-mym-356.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601936104157
-    },
-    "9446450.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602002577445
-    },
-    "9499947.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602302965497
-    },
-    "9535906.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601880023391
-    },
-    "9591937.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602275502932
-    },
-    "9774013.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602101126331
-    },
-    "9786142.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602099310665
-    },
-    "983-kvh-814.mktoresp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602350102119
-    },
-    "9838407.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602348228862
-    },
-    "9920620.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602000601439
-    },
-    "9949476.fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602351250829
-    },
     "a-mo.net": {
       "heuristicAction": "block"
     },
-    "a.adroll.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602332774637
-    },
-    "a.centrum.cz": {
+    "a-sports.tv": {
       "heuristicAction": "allow"
     },
-    "a.exdynsrv.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601882457106
-    },
-    "a.o333o.com": {
+    "a2f41194651173ebf.awsglobalaccelerator.com": {
       "heuristicAction": "allow"
     },
-    "a.pgtb.me": {
+    "a2hosting.com": {
       "heuristicAction": "allow"
     },
-    "a.pub.network": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602275227626
-    },
-    "a.quora.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602377293204
-    },
-    "a.realsrv.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602229106916
-    },
-    "a.teads.tv": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602232486838
-    },
-    "a.wishabi.com": {
-      "heuristicAction": "cookieblock"
-    },
-    "a2.adform.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601928954271
-    },
-    "aa.agkn.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602048297215
+    "aaas.org": {
+      "heuristicAction": "allow"
     },
     "aafp.net": {
       "heuristicAction": "allow"
     },
-    "aamcf.aamsitecertifier.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601880349664
-    },
-    "aamcftag.aamsitecertifier.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602116239808
-    },
     "aamsitecertifier.com": {
       "heuristicAction": "block"
     },
     "aan.com": {
       "heuristicAction": "allow"
     },
-    "aasaam.com": {
-      "heuristicAction": "block"
-    },
     "aau-search-web-prod.azurewebsites.net": {
       "heuristicAction": "allow"
     },
     "aau-search-webservice-v1-prod.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "aax-eu.amazon-adsystem.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602303655288
-    },
-    "aax-fe.amazon-adsystem.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602244910440
-    },
     "aaxads.com": {
       "heuristicAction": "block"
     },
-    "about.co.kr": {
+    "abc.es": {
       "heuristicAction": "allow"
     },
-    "abtasty.com": {
+    "abc7.com": {
+      "heuristicAction": "allow"
+    },
+    "abmr.net": {
       "heuristicAction": "allow"
     },
-    "abtshield.com": {
+    "about.co.kr": {
+      "heuristicAction": "block"
+    },
+    "abtasty.com": {
+      "heuristicAction": "block"
+    },
+    "abtesting.ai": {
       "heuristicAction": "allow"
     },
-    "acast.cloud": {
+    "ac-ricoh.jp": {
       "heuristicAction": "allow"
     },
-    "acast.com": {
+    "acast.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "accdab.net": {
       "heuristicAction": "allow"
     },
     "accesstrade.net": {
       "heuristicAction": "allow"
     },
-    "accorhotels.com": {
+    "accor.com": {
       "heuristicAction": "allow"
     },
     "accorhotels.ws": {
       "heuristicAction": "allow"
     },
-    "account.berush.com": {
-      "heuristicAction": "allow"
-    },
     "accounts.google.com": {
       "heuristicAction": "cookieblock"
     },
-    "accu-web-raine.azurewebsites.net": {
+    "accunix.net": {
       "heuristicAction": "allow"
     },
-    "acdn.adnxs.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602136078728
+    "accutrackjs-test.azurewebsites.net": {
+      "heuristicAction": "allow"
     },
-    "ace-sync.toast.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602166272069
+    "accuweather.com": {
+      "heuristicAction": "cookieblock"
     },
-    "acint.net": {
+    "acecounter.com": {
       "heuristicAction": "allow"
     },
-    "acpm.fr": {
+    "acint.net": {
       "heuristicAction": "block"
     },
-    "acquia.com": {
+    "acq.io": {
+      "heuristicAction": "allow"
+    },
+    "acquire.io": {
+      "heuristicAction": "allow"
+    },
+    "acquireinsight.net": {
+      "heuristicAction": "allow"
+    },
+    "acrosspf.com": {
       "heuristicAction": "block"
     },
     "acstat.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
-    "action.media6degrees.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602231039734
+    "actionbutton.co": {
+      "heuristicAction": "block"
     },
     "actionnetwork.org": {
       "heuristicAction": "allow"
     },
-    "activecalendar.com": {
+    "activekids.com": {
       "heuristicAction": "allow"
     },
-    "activehosted.com": {
-      "heuristicAction": "block"
-    },
     "activetrail.com": {
       "heuristicAction": "allow"
     },
-    "acuityplatform.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602241789938
-    },
-    "acyzh.com": {
+    "activision.com": {
       "heuristicAction": "allow"
     },
-    "ad-cdn.technoratimedia.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601889638410
+    "actonsoftware.com": {
+      "heuristicAction": "block"
+    },
+    "acuityplatform.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1638041844569
     },
     "ad-lancers.jp": {
       "heuristicAction": "allow"
     },
-    "ad-plus.cn": {
-      "heuristicAction": "allow"
+    "ad-m.asia": {
+      "heuristicAction": "block"
     },
     "ad-score.com": {
       "heuristicAction": "block"
     },
-    "ad-srv.net": {
-      "heuristicAction": "allow"
-    },
     "ad-stir.com": {
       "heuristicAction": "block"
     },
@@ -794,79 +331,117 @@
     "ad-track.jp": {
       "heuristicAction": "allow"
     },
-    "ad.crwdcntrl.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601976893526
-    },
-    "ad.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602154976198
-    },
     "ad.gt": {
       "heuristicAction": "block"
     },
-    "ad.lkqd.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601982456143
-    },
     "ad.org.vn": {
       "heuristicAction": "allow"
     },
     "ad1x.com": {
       "heuristicAction": "allow"
     },
-    "adalliance.io": {
-      "heuristicAction": "block"
+    "ad2iction.com": {
+      "heuristicAction": "allow"
+    },
+    "ad6media.fr": {
+      "heuristicAction": "allow"
+    },
+    "ada.support": {
+      "heuristicAction": "allow"
     },
     "adalyser.com": {
       "heuristicAction": "block"
     },
-    "adaptiveads.com": {
+    "adap.tv": {
       "heuristicAction": "allow"
     },
     "adaraanalytics.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
+    },
+    "adasiaholdings.com": {
+      "heuristicAction": "block"
     },
     "adbinead.com": {
       "heuristicAction": "allow"
     },
+    "adblade.com": {
+      "heuristicAction": "block"
+    },
+    "adblockanalytics.com": {
+      "heuristicAction": "allow"
+    },
     "adbox.lv": {
       "heuristicAction": "allow"
     },
-    "adcampo.com": {
+    "adbrix.io": {
+      "heuristicAction": "allow"
+    },
+    "adcell.com": {
+      "heuristicAction": "allow"
+    },
+    "adcontroll.com": {
       "heuristicAction": "allow"
     },
     "adda247.in": {
       "heuristicAction": "allow"
     },
     "addevent.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637642151779
+    },
+    "addroplet.com": {
       "heuristicAction": "allow"
     },
     "addthis.com": {
       "heuristicAction": "block"
     },
+    "adensemble.com": {
+      "heuristicAction": "allow"
+    },
     "adentifi.com": {
       "heuristicAction": "block"
     },
+    "adflex.com.tr": {
+      "heuristicAction": "allow"
+    },
     "adform.net": {
       "heuristicAction": "block"
     },
     "adfox.ru": {
       "heuristicAction": "block"
     },
+    "adgebra.co.in": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637869210502
+    },
     "adgeek.net": {
       "heuristicAction": "allow"
     },
+    "adhash.org": {
+      "heuristicAction": "allow"
+    },
     "adhaven.com": {
       "heuristicAction": "allow"
     },
     "adhigh.net": {
       "heuristicAction": "block"
     },
+    "adidas.com": {
+      "heuristicAction": "allow"
+    },
+    "adiktivebanners.com": {
+      "heuristicAction": "allow"
+    },
+    "adilligo.com": {
+      "heuristicAction": "allow"
+    },
     "adinc.kr": {
       "heuristicAction": "allow"
     },
-    "adingo.jp": {
+    "adinsight.co.kr": {
+      "heuristicAction": "block"
+    },
+    "adinsight.net": {
       "heuristicAction": "allow"
     },
     "adition.com": {
@@ -875,25 +450,40 @@
     "adjetter.com": {
       "heuristicAction": "allow"
     },
+    "adjust.com": {
+      "heuristicAction": "allow"
+    },
+    "adjust.net.in": {
+      "heuristicAction": "allow"
+    },
+    "adjw.co.kr": {
+      "heuristicAction": "allow"
+    },
     "adkernel.com": {
       "heuristicAction": "block"
     },
+    "adlightning.com": {
+      "heuristicAction": "block"
+    },
     "adlmerge.com": {
       "heuristicAction": "allow"
     },
-    "adm.fwmrm.net": {
-      "heuristicAction": "cookieblock"
-    },
-    "adman.gr": {
+    "admanmedia.com": {
       "heuristicAction": "block"
     },
     "admaster.com.cn": {
       "heuristicAction": "allow"
     },
     "admatic.com.tr": {
+      "heuristicAction": "block"
+    },
+    "admaticcrm.com": {
       "heuristicAction": "allow"
     },
     "admatrix.jp": {
+      "heuristicAction": "block"
+    },
+    "admaxium.com": {
       "heuristicAction": "allow"
     },
     "admedia.com": {
@@ -902,9 +492,6 @@
     "admedo.com": {
       "heuristicAction": "block"
     },
-    "admetrica.ru": {
-      "heuristicAction": "block"
-    },
     "admicro.vn": {
       "heuristicAction": "block"
     },
@@ -912,7 +499,10 @@
       "heuristicAction": "allow"
     },
     "admithub.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
+    },
+    "admixer.co.kr": {
+      "heuristicAction": "block"
     },
     "admixer.net": {
       "heuristicAction": "block"
@@ -921,7 +511,10 @@
       "heuristicAction": "block"
     },
     "adnuntius.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
+    },
+    "adnuntius.delivery": {
+      "heuristicAction": "allow"
     },
     "adnxs.com": {
       "heuristicAction": "block"
@@ -935,63 +528,59 @@
     "adobecqms.net": {
       "heuristicAction": "allow"
     },
-    "adocean.pl": {
+    "adobedc.net": {
       "heuristicAction": "block"
     },
+    "adobemsbasic.com": {
+      "heuristicAction": "allow"
+    },
+    "adocean.pl": {
+      "heuristicAction": "allow"
+    },
+    "adomik.com": {
+      "heuristicAction": "allow"
+    },
     "adop.cc": {
       "heuristicAction": "block"
     },
     "adotmob.com": {
       "heuristicAction": "block"
     },
-    "adpnut.com": {
-      "heuristicAction": "allow"
+    "adpartner.pro": {
+      "heuristicAction": "block"
     },
-    "adpushup.com": {
+    "adpies.com": {
       "heuristicAction": "block"
     },
-    "adpxl.co": {
+    "adplex.co.kr": {
       "heuristicAction": "allow"
     },
-    "adrecover.com": {
+    "adpmbtj.com": {
       "heuristicAction": "allow"
     },
-    "adriver.ru": {
+    "adpnut.com": {
       "heuristicAction": "block"
     },
-    "adroll.com": {
-      "heuristicAction": "block"
+    "adpool.bet": {
+      "heuristicAction": "allow"
     },
-    "adrta.com": {
+    "adpushup.com": {
       "heuristicAction": "block"
     },
-    "ads.exoclick.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602011200868
-    },
-    "ads.exosrv.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602157893909
-    },
-    "ads.pubmatic.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602024130584
+    "adrecover.com": {
+      "heuristicAction": "block"
     },
-    "ads.realsrv.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602271837180
+    "adriamediacontent.com": {
+      "heuristicAction": "allow"
     },
-    "ads.rubiconproject.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602316976938
+    "adriver.ru": {
+      "heuristicAction": "block"
     },
-    "ads.undertone.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602014150970
+    "adroll.com": {
+      "heuristicAction": "block"
     },
-    "ads.yieldmo.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602138201841
+    "ads1-adnow.com": {
+      "heuristicAction": "allow"
     },
     "adsafeprotected.com": {
       "heuristicAction": "allow"
@@ -1000,46 +589,43 @@
       "heuristicAction": "block"
     },
     "adschoom.com": {
-      "heuristicAction": "allow"
-    },
-    "adscience.nl": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "adsco.re": {
-      "heuristicAction": "allow"
-    },
-    "adserver-us.adtech.advertising.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602059968709
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637553308990
     },
-    "adserver.mk": {
+    "adsdata.ru": {
       "heuristicAction": "allow"
     },
-    "adservice.google.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602096281580
-    },
-    "adservices.brandcdn.com": {
+    "adserve.work": {
       "heuristicAction": "allow"
     },
     "adsfactor.net": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "adskeeper.co.uk": {
       "heuristicAction": "block"
     },
     "adskeeper.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "adsniper.ru": {
+      "heuristicAction": "block"
+    },
+    "adsolut.in": {
       "heuristicAction": "allow"
     },
-    "adspsp.com": {
+    "adsparc.net": {
       "heuristicAction": "allow"
     },
-    "adsrv.io": {
+    "adspeed.net": {
       "heuristicAction": "allow"
     },
+    "adspsp.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637528268453
+    },
     "adsrvr.org": {
       "heuristicAction": "block"
     },
@@ -1052,83 +638,94 @@
     "adtarget.com.tr": {
       "heuristicAction": "block"
     },
+    "adtarget.me": {
+      "heuristicAction": "allow"
+    },
     "adtdp.com": {
       "heuristicAction": "block"
     },
-    "adtelli.com": {
-      "heuristicAction": "allow"
-    },
     "adtelligent.com": {
       "heuristicAction": "block"
     },
     "adtimaserver.vn": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
     "adtlgc.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "adtng.com": {
       "heuristicAction": "block"
     },
-    "adtodate.net": {
+    "adtriba.com": {
       "heuristicAction": "allow"
     },
     "adtrue.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
+    },
+    "adultswim.com": {
+      "heuristicAction": "allow"
     },
     "adup-tech.com": {
       "heuristicAction": "allow"
     },
     "advanced-web-analytics.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "advangelists.com": {
+      "heuristicAction": "allow"
+    },
+    "advarkads.com": {
       "heuristicAction": "block"
     },
     "advertising.com": {
       "heuristicAction": "block"
     },
+    "advertnative.com": {
+      "heuristicAction": "allow"
+    },
     "advertserve.com": {
+      "heuristicAction": "block"
+    },
+    "advfn.com": {
       "heuristicAction": "allow"
     },
     "advg.jp": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
+    },
+    "adviad.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637979646800
     },
     "advividnetwork.com": {
       "heuristicAction": "block"
     },
-    "advsnx.net": {
+    "advmusic.com": {
       "heuristicAction": "allow"
     },
     "adweb.co.kr": {
       "heuristicAction": "allow"
     },
-    "adwstats.com": {
+    "adx.com.ru": {
+      "heuristicAction": "block"
+    },
+    "adxadserv.com": {
       "heuristicAction": "allow"
     },
-    "adx.adform.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602260040187
+    "adxpremium.services": {
+      "heuristicAction": "allow"
     },
-    "adxadserv.com": {
+    "adxserve.com": {
       "heuristicAction": "allow"
     },
     "adxvip.com": {
       "heuristicAction": "allow"
     },
     "adyen.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "cookieblock"
     },
     "adzerk.net": {
       "heuristicAction": "block"
     },
-    "aegis.qq.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602044921410
-    },
-    "aetn.com": {
-      "heuristicAction": "allow"
-    },
     "aetnd.com": {
       "heuristicAction": "allow"
     },
@@ -1139,6 +736,12 @@
       "heuristicAction": "allow"
     },
     "affec.tv": {
+      "heuristicAction": "block"
+    },
+    "affex.org": {
+      "heuristicAction": "allow"
+    },
+    "affinity.com": {
       "heuristicAction": "allow"
     },
     "affirm.com": {
@@ -1147,18 +750,27 @@
     "afftrack.pro": {
       "heuristicAction": "allow"
     },
-    "aftonbladet.se": {
+    "afp.ai": {
+      "heuristicAction": "allow"
+    },
+    "agechecked.com": {
       "heuristicAction": "allow"
     },
     "agenziaentrate.it": {
       "heuristicAction": "allow"
     },
-    "agilemeasure.com": {
+    "aggle.net": {
       "heuristicAction": "allow"
     },
-    "agilone.com": {
+    "aggregage.com": {
+      "heuristicAction": "allow"
+    },
+    "agilesrv.com": {
       "heuristicAction": "allow"
     },
+    "agilone.com": {
+      "heuristicAction": "block"
+    },
     "agkn.com": {
       "heuristicAction": "block"
     },
@@ -1166,46 +778,78 @@
       "heuristicAction": "allow"
     },
     "agora.pl": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
-    "ahighapi.com": {
+    "aguanatural.com": {
       "heuristicAction": "allow"
     },
     "aidata.io": {
       "heuristicAction": "block"
     },
-    "aihelp.net": {
-      "heuristicAction": "allow"
-    },
     "aimediagroup.com": {
       "heuristicAction": "block"
     },
+    "ainedameri.one": {
+      "heuristicAction": "allow"
+    },
     "aio.media": {
       "heuristicAction": "allow"
     },
+    "aip24.pl": {
+      "heuristicAction": "allow"
+    },
+    "aipam.ru": {
+      "heuristicAction": "allow"
+    },
     "aiproxies.com": {
       "heuristicAction": "block"
     },
-    "airpr.com": {
+    "airfind.com": {
+      "heuristicAction": "allow"
+    },
+    "airtable.com": {
+      "heuristicAction": "allow"
+    },
+    "airtrfx.com": {
+      "heuristicAction": "allow"
+    },
+    "ais.co.th": {
+      "heuristicAction": "block"
+    },
+    "ais.th": {
       "heuristicAction": "block"
     },
     "aismo.ru": {
       "heuristicAction": "allow"
     },
-    "aj1015.online": {
+    "aj1047.online": {
+      "heuristicAction": "allow"
+    },
+    "aj1090.online": {
       "heuristicAction": "allow"
     },
     "aj1431.online": {
       "heuristicAction": "allow"
     },
+    "aj1559.online": {
+      "heuristicAction": "allow"
+    },
+    "aj1907.online": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637990762817
+    },
     "aj2031.online": {
       "heuristicAction": "allow"
     },
-    "aj2208.online": {
+    "aj2178.online": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637827589633
+    },
+    "aj2373.online": {
       "heuristicAction": "allow"
     },
-    "ajax.googleapis.com": {
-      "heuristicAction": "cookieblock"
+    "akamai-access.com": {
+      "heuristicAction": "block"
     },
     "akamaihd.net": {
       "heuristicAction": "cookieblock"
@@ -1213,53 +857,56 @@
     "akamaized.net": {
       "heuristicAction": "cookieblock"
     },
-    "akstat.io": {
+    "akimilo.com": {
       "heuristicAction": "allow"
     },
-    "alb.reddit.com": {
-      "heuristicAction": "cookieblock"
+    "akstat.io": {
+      "heuristicAction": "block"
     },
     "albacross.com": {
       "heuristicAction": "block"
     },
     "alcmpn.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
     "alexametrics.com": {
       "heuristicAction": "block"
     },
-    "alfasense.com": {
-      "heuristicAction": "block"
-    },
     "aliapp.org": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "alibaba.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
     "alicdn.com": {
       "heuristicAction": "cookieblock"
     },
     "aliexpress.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
-    "alifafdlnjeruif.com": {
+    "aliexpress.ru": {
       "heuristicAction": "allow"
     },
     "alipay.com": {
       "heuristicAction": "allow"
     },
     "aliyun.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
     "aliyuncs.com": {
       "heuristicAction": "allow"
     },
-    "all-cod.com": {
+    "alkhwarizmi.io": {
       "heuristicAction": "allow"
     },
-    "allure.com": {
-      "heuristicAction": "block"
+    "alli.ai": {
+      "heuristicAction": "allow"
+    },
+    "allowme.com.br": {
+      "heuristicAction": "allow"
+    },
+    "allyable.com": {
+      "heuristicAction": "allow"
     },
     "almamedia.fi": {
       "heuristicAction": "allow"
@@ -1267,246 +914,146 @@
     "alocdn.com": {
       "heuristicAction": "block"
     },
-    "alphonso.tv": {
+    "alsa.org": {
+      "heuristicAction": "allow"
+    },
+    "altmetric.com": {
       "heuristicAction": "allow"
     },
-    "alsa.org": {
+    "altopd.com": {
       "heuristicAction": "allow"
     },
-    "alwasela.com": {
+    "alxbgo.com": {
       "heuristicAction": "allow"
     },
     "am15.net": {
       "heuristicAction": "allow"
     },
+    "am3t9s.net": {
+      "heuristicAction": "allow"
+    },
+    "ama-assn.org": {
+      "heuristicAction": "allow"
+    },
     "amap.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
     "amazon-adsystem.com": {
       "heuristicAction": "block"
     },
+    "amazon.co.jp": {
+      "heuristicAction": "allow"
+    },
     "amazon.com": {
       "heuristicAction": "cookieblock"
     },
-    "amazonaws.com": {
+    "amazon.es": {
       "heuristicAction": "allow"
     },
     "amazoncustomerservice.d2.sc.omtrdc.net": {
       "heuristicAction": "cookieblock"
     },
-    "amazonwebservices.d2.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602353927309
-    },
-    "amazonwebservicesinc.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601904603488
-    },
     "amcdn.vn": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602189818063
+      "nextUpdateTime": 1637944462238
     },
-    "ameba.jp": {
+    "amcn.com": {
       "heuristicAction": "allow"
     },
-    "amnet.tw": {
+    "ameba.jp": {
       "heuristicAction": "allow"
     },
-    "amplify.outbrain.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602163387484
-    },
-    "amplifypixel.outbrain.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602336500276
-    },
-    "amunx.de": {
+    "amgs5.com": {
       "heuristicAction": "allow"
     },
-    "an.facebook.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602383201434
-    },
-    "an.yandex.ru": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602217661472
+    "amna01mstra8s42prod.azurewebsites.net": {
+      "heuristicAction": "allow"
     },
-    "analytics-egain.com": {
+    "amnet.tw": {
       "heuristicAction": "block"
     },
-    "analytics-sm.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602273074367
-    },
-    "analytics.aasaam.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602229451869
-    },
-    "analytics.contentexchange.me": {
+    "amplitude.com": {
       "heuristicAction": "block"
     },
-    "analytics.google.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602050172332
-    },
-    "analytics.prod.jpp.cnyes.cool": {
+    "analdin.com": {
       "heuristicAction": "allow"
     },
-    "analytics.vodgc.net": {
+    "analitits.com": {
       "heuristicAction": "allow"
     },
-    "anandabazar.com": {
-      "heuristicAction": "allow"
+    "analytics-egain.com": {
+      "heuristicAction": "block"
     },
-    "and.co.uk": {
+    "analytics-sm.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637835226779
+    },
+    "andata.ru": {
       "heuristicAction": "allow"
     },
-    "andertoons.com": {
+    "anews.az": {
       "heuristicAction": "allow"
     },
     "aniview.com": {
       "heuristicAction": "block"
     },
     "anm.co.uk": {
+      "heuristicAction": "block"
+    },
+    "annocdn.com": {
       "heuristicAction": "allow"
     },
     "anquan.org": {
-      "heuristicAction": "block"
-    },
-    "ansira.com": {
       "heuristicAction": "allow"
     },
     "answerscloud.com": {
       "heuristicAction": "allow"
     },
-    "anura.io": {
+    "antena3.com": {
       "heuristicAction": "allow"
     },
-    "anvato.net": {
-      "heuristicAction": "cookieblock"
+    "anuntul.ro": {
+      "heuristicAction": "allow"
     },
-    "anyclip.com": {
+    "anura.io": {
       "heuristicAction": "allow"
     },
+    "anyclip.com": {
+      "heuristicAction": "block"
+    },
     "anz.com": {
       "heuristicAction": "allow"
     },
-    "ap.lijit.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601949385805
+    "ap.org": {
+      "heuristicAction": "allow"
     },
     "aparat.com": {
       "heuristicAction": "block"
     },
-    "apeartalb.site": {
+    "apeagle.io": {
       "heuristicAction": "allow"
     },
-    "apester.com": {
-      "heuristicAction": "block"
-    },
-    "apex.go.sonobi.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601985122364
-    },
     "api-maps.yandex.ru": {
       "heuristicAction": "cookieblock"
     },
-    "api.adsymptotic.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601902177122
-    },
-    "api.aws.parking.godaddy.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602110820606
-    },
-    "api.clerk.io": {
-      "heuristicAction": "allow"
-    },
-    "api.company-target.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602116268703
-    },
-    "api.connecto.io": {
-      "heuristicAction": "allow"
-    },
-    "api.flocktory.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602334865404
-    },
-    "api.growingio.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602134271770
-    },
     "api.hubspot.com": {
       "heuristicAction": "cookieblock"
     },
-    "api.ipgeolocation.io": {
-      "heuristicAction": "allow"
-    },
-    "api.livechatinc.com": {
-      "heuristicAction": "cookieblock"
-    },
-    "api.look.360.cn": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602249379189
-    },
     "api.map.baidu.com": {
       "heuristicAction": "cookieblock"
     },
-    "api.nanigans.com": {
-      "heuristicAction": "allow"
-    },
-    "api.parking.godaddy.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602389760124
-    },
-    "api.parsely.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602263472144
-    },
-    "api.popin.cc": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602358565468
-    },
-    "api.rec-engine.com": {
-      "heuristicAction": "allow"
-    },
-    "api.rlcdn.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601933549471
-    },
     "api.soundcloud.com": {
       "heuristicAction": "cookieblock"
     },
-    "api.tw.weibo.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601971482641
-    },
-    "api.viafoura.co": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602039952667
-    },
-    "api3847.d41.co": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601942740723
-    },
-    "api4773.d41.co": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602104337602
-    },
-    "apihotels.net": {
-      "heuristicAction": "allow"
+    "api.spreaker.com": {
+      "heuristicAction": "cookieblock"
     },
     "apis.google.com": {
       "heuristicAction": "cookieblock"
     },
-    "apollo.miniclip.com": {
+    "app-digitalgate-prd-ol.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "app-script.monsido.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601909505904
-    },
     "app-us1.com": {
       "heuristicAction": "block"
     },
@@ -1515,17 +1062,10 @@
     },
     "app.link": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602015382068
-    },
-    "app.usercentrics.eu": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602016595116
-    },
-    "apparmor.com": {
-      "heuristicAction": "block"
+      "nextUpdateTime": 1637842228957
     },
     "appconsent.io": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
     "appdynamics.com": {
       "heuristicAction": "block"
@@ -1539,49 +1079,35 @@
     "appmifile.com": {
       "heuristicAction": "allow"
     },
-    "apps.elfsight.com": {
-      "heuristicAction": "allow"
-    },
     "appsflyer.com": {
       "heuristicAction": "block"
     },
-    "apvdr.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1601949486273
+    "apptracker.stream": {
+      "heuristicAction": "allow"
     },
-    "aqyzmedia.yunaq.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602266570665
+    "aprtx.com": {
+      "heuristicAction": "allow"
+    },
+    "apxlv.com": {
+      "heuristicAction": "allow"
     },
     "aralego.com": {
       "heuristicAction": "block"
     },
     "arc.io": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637783017787
     },
-    "architecturaldigest.com": {
-      "heuristicAction": "block"
+    "arcpublishing.com": {
+      "heuristicAction": "cookieblock"
     },
-    "ard.de": {
-      "heuristicAction": "allow"
+    "arkoselabs.com": {
+      "heuristicAction": "cookieblock"
     },
     "arrivalist.com": {
       "heuristicAction": "allow"
     },
-    "arte.tv": {
-      "heuristicAction": "allow"
-    },
-    "artipbox.net": {
-      "heuristicAction": "allow"
-    },
-    "aruba.it": {
-      "heuristicAction": "allow"
-    },
-    "as-sec.casalemedia.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602276547266
-    },
-    "as.com": {
+    "artnews.com": {
       "heuristicAction": "allow"
     },
     "asadcdn.com": {
@@ -1590,65 +1116,25 @@
     "asapp.com": {
       "heuristicAction": "block"
     },
-    "ascap.com": {
-      "heuristicAction": "allow"
-    },
-    "ascendeum-d.openx.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602318370598
-    },
-    "ascpqnj-oam.global.ssl.fastly.net": {
-      "heuristicAction": "allow"
-    },
-    "asia.creativecdn.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601955971649
-    },
-    "asianmedia.com": {
+    "asco.org": {
       "heuristicAction": "allow"
     },
-    "ask.com": {
+    "asdxstatic.com": {
       "heuristicAction": "allow"
     },
-    "askvamygov-ui.azurewebsites.net": {
+    "askvasam-ui.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "aso1.net": {
-      "heuristicAction": "block"
-    },
     "aspencore.com": {
       "heuristicAction": "allow"
     },
-    "assets.bounceexchange.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601882616948
-    },
-    "assets.maerskline.com": {
-      "heuristicAction": "allow"
-    },
-    "assets.pinterest.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601935852342
-    },
-    "assets.revcontent.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602268569676
-    },
     "associates-amazon.com": {
       "heuristicAction": "block"
     },
-    "asteannunci.it": {
+    "astutebot.com": {
       "heuristicAction": "allow"
     },
-    "async-px-eu.dynamicyield.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601883862412
-    },
-    "async-px.dynamicyield.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602203445235
-    },
-    "atdmt.com": {
+    "at-o.net": {
       "heuristicAction": "block"
     },
     "atgsvcs.com": {
@@ -1657,18 +1143,14 @@
     "ati-host.net": {
       "heuristicAction": "block"
     },
-    "atlas.atsptp.com": {
-      "heuristicAction": "allow"
-    },
     "atlassian.net": {
       "heuristicAction": "allow"
     },
-    "atp.io": {
-      "heuristicAction": "block"
+    "atomex.net": {
+      "heuristicAction": "allow"
     },
-    "ats.rlcdn.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602125519491
+    "atp.fox": {
+      "heuristicAction": "allow"
     },
     "atsptp.com": {
       "heuristicAction": "allow"
@@ -1682,29 +1164,17 @@
     "attservicesinc.tt.omtrdc.net": {
       "heuristicAction": "cookieblock"
     },
-    "au.tags.newscgp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602049014872
-    },
-    "au11-tracker.inside-graph.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602184235101
-    },
-    "audex.userreport.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602262150404
-    },
     "audiencerun.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
-    "audioboom.com": {
-      "heuristicAction": "allow"
+    "audioeye.com": {
+      "heuristicAction": "block"
     },
-    "audioburst.com": {
+    "audrte.com": {
       "heuristicAction": "allow"
     },
     "aufp.io": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "auone.jp": {
       "heuristicAction": "allow"
@@ -1718,87 +1188,78 @@
     "authorize.net": {
       "heuristicAction": "allow"
     },
-    "autoimg.cn": {
+    "auto-bild.de": {
       "heuristicAction": "allow"
     },
-    "autonom8.com": {
+    "autoimg.cn": {
       "heuristicAction": "allow"
     },
     "autopilothq.com": {
-      "heuristicAction": "block"
-    },
-    "avangate.com": {
       "heuristicAction": "allow"
     },
+    "avaamo.com": {
+      "heuristicAction": "block"
+    },
     "avantisvideo.com": {
       "heuristicAction": "block"
     },
-    "avd.innity.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602065557805
+    "avax.network": {
+      "heuristicAction": "allow"
+    },
+    "avct.cloud": {
+      "heuristicAction": "block"
     },
     "avmws.com": {
       "heuristicAction": "block"
     },
-    "aweber.com": {
+    "avocet.io": {
+      "heuristicAction": "block"
+    },
+    "avplayer.com": {
+      "heuristicAction": "block"
+    },
+    "awxcdn.com": {
       "heuristicAction": "allow"
     },
-    "axisbank.co.in": {
+    "axate.io": {
       "heuristicAction": "allow"
     },
     "ayads.co": {
       "heuristicAction": "block"
     },
-    "ayc0zsm69431gfebd.xyz": {
-      "heuristicAction": "block"
-    },
-    "ayo.co.id": {
+    "azerforum.com": {
       "heuristicAction": "allow"
     },
     "azet.sk": {
       "heuristicAction": "allow"
     },
+    "azointel.com": {
+      "heuristicAction": "allow"
+    },
+    "azure-api.net": {
+      "heuristicAction": "allow"
+    },
     "azureedge.net": {
       "heuristicAction": "cookieblock"
     },
     "azurefd.net": {
       "heuristicAction": "allow"
     },
-    "b-code.liadm.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602339921290
-    },
-    "b.ws.sessioncam.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602234050802
+    "azvision.az": {
+      "heuristicAction": "allow"
     },
     "b0e8.com": {
       "heuristicAction": "block"
     },
     "b1img.com": {
-      "heuristicAction": "allow"
-    },
-    "b1sync.zemanta.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602158714232
-    },
-    "b2c.insticator.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602187927759
-    },
-    "b92.yahoo.co.jp": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602315244317
-    },
-    "b97.yahoo.co.jp": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602020393717
+      "heuristicAction": "block",
+      "nextUpdateTime": 1638026250416
     },
     "b9i7.net": {
       "heuristicAction": "allow"
     },
     "bablic.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
     "baidu.com": {
       "heuristicAction": "block"
@@ -1812,24 +1273,16 @@
     "baixing.net": {
       "heuristicAction": "allow"
     },
-    "baiying.cn": {
-      "heuristicAction": "allow"
-    },
     "bam-x.com": {
       "heuristicAction": "block"
     },
-    "bam.eu01.nr-data.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601889093359
-    },
-    "bam.nr-data.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602152131553
+    "bambuser.net": {
+      "heuristicAction": "allow"
     },
-    "bancogalicia.com.ar": {
+    "bangkokpost.co.th": {
       "heuristicAction": "allow"
     },
-    "banggood.com": {
+    "bankofamerica.com": {
       "heuristicAction": "allow"
     },
     "barchart.com": {
@@ -1838,33 +1291,52 @@
     "barilliance.net": {
       "heuristicAction": "allow"
     },
+    "barrons.com": {
+      "heuristicAction": "allow"
+    },
     "bashirian.biz": {
+      "heuristicAction": "block"
+    },
+    "basicinc.jp": {
+      "heuristicAction": "allow"
+    },
+    "basis.net": {
       "heuristicAction": "allow"
     },
     "basspro.com": {
       "heuristicAction": "allow"
     },
-    "bat.bing.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602387663629
+    "batterypop.net": {
+      "heuristicAction": "allow"
     },
     "bayan.ir": {
       "heuristicAction": "allow"
     },
+    "baymaxchat.com": {
+      "heuristicAction": "allow"
+    },
     "baynote.net": {
       "heuristicAction": "block"
     },
     "bazaarvoice.com": {
       "heuristicAction": "cookieblock"
     },
+    "bbb.org": {
+      "heuristicAction": "cookieblock"
+    },
     "bbelements.com": {
       "heuristicAction": "allow"
     },
-    "bbg.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602309051055
+    "bbystatic.com": {
+      "heuristicAction": "allow"
+    },
+    "bc0a.com": {
+      "heuristicAction": "allow"
+    },
+    "bca.co.id": {
+      "heuristicAction": "allow"
     },
-    "bcicdn.com": {
+    "bccampus.ca": {
       "heuristicAction": "allow"
     },
     "bcn.cat": {
@@ -1876,88 +1348,100 @@
     "bdash-cloud.com": {
       "heuristicAction": "allow"
     },
-    "bdg-analytics.appspot.com": {
-      "heuristicAction": "cookieblock"
+    "bdg.com": {
+      "heuristicAction": "block"
     },
-    "bdimg.share.baidu.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602145458005
+    "beanfun.com": {
+      "heuristicAction": "allow"
     },
-    "beacon.riskified.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601996068641
+    "beatstars.net": {
+      "heuristicAction": "allow"
     },
     "bebi.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
     "become.co.jp": {
       "heuristicAction": "allow"
     },
+    "becorsolaom.com": {
+      "heuristicAction": "allow"
+    },
+    "beeline.ru": {
+      "heuristicAction": "block"
+    },
+    "behave.com": {
+      "heuristicAction": "block"
+    },
     "beian.gov.cn": {
+      "heuristicAction": "block"
+    },
+    "bellmedia.ca": {
       "heuristicAction": "allow"
     },
     "benchmarkemail.com": {
       "heuristicAction": "allow"
     },
-    "berush.com": {
+    "benoopto.com": {
       "heuristicAction": "allow"
     },
-    "bestyang.cn": {
+    "beritasatumedia.com": {
       "heuristicAction": "allow"
     },
-    "betgorebysson.club": {
-      "heuristicAction": "block"
+    "bescore.com": {
+      "heuristicAction": "allow"
     },
-    "betweendigital.com": {
-      "heuristicAction": "block"
+    "besmeargleor.com": {
+      "heuristicAction": "allow"
     },
-    "bf-tools.net": {
+    "betotodilea.com": {
       "heuristicAction": "allow"
     },
-    "bfmio.com": {
+    "betrad.com": {
+      "heuristicAction": "allow"
+    },
+    "betweendigital.com": {
       "heuristicAction": "block"
     },
-    "bh.contextweb.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602151063649
+    "bfmio.com": {
+      "heuristicAction": "block"
     },
-    "bhphotovideo.com": {
+    "bgn.gg": {
       "heuristicAction": "allow"
     },
-    "bibox360.com": {
+    "bgr.com": {
       "heuristicAction": "allow"
     },
-    "bid.contextweb.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602005816713
-    },
-    "bid.g.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602267094770
-    },
-    "bidder.criteo.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601956754101
-    },
-    "bidgear.com": {
+    "bidence.net": {
       "heuristicAction": "block"
     },
     "bidr.io": {
       "heuristicAction": "block"
     },
     "bidstreamserver.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "bidswitch.net": {
       "heuristicAction": "block"
     },
-    "bidvertiser.com": {
+    "bidtheatre.com": {
+      "heuristicAction": "allow"
+    },
+    "bidvol.com": {
+      "heuristicAction": "allow"
+    },
+    "biff.travel": {
+      "heuristicAction": "allow"
+    },
+    "bigda.com": {
+      "heuristicAction": "allow"
+    },
+    "bigin.io": {
       "heuristicAction": "allow"
     },
     "bigmining.com": {
       "heuristicAction": "block"
     },
-    "bigo.tv": {
+    "bilibili": {
       "heuristicAction": "allow"
     },
     "bing.com": {
@@ -1966,36 +1450,40 @@
     "binstats.com": {
       "heuristicAction": "allow"
     },
-    "bitdefender.demdex.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602165974974
+    "birminghammail.co.uk": {
+      "heuristicAction": "allow"
     },
-    "bitdefender.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601989445163
+    "bisnow.net": {
+      "heuristicAction": "allow"
     },
-    "bithumb.com": {
+    "bit.ly": {
       "heuristicAction": "allow"
     },
-    "bitninja.io": {
-      "heuristicAction": "block"
+    "bitauto.com": {
+      "heuristicAction": "allow"
     },
-    "bitrix.info": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602045878490
+    "bitchute.com": {
+      "heuristicAction": "allow"
     },
-    "bizbuysell.com": {
+    "bitmedia.io": {
       "heuristicAction": "allow"
     },
-    "bizfly.vn": {
+    "bitninja.io": {
       "heuristicAction": "allow"
     },
+    "bitrix.info": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637927325098
+    },
     "bizible.com": {
       "heuristicAction": "block"
     },
     "bizibly.com": {
       "heuristicAction": "block"
     },
+    "bizim.media": {
+      "heuristicAction": "allow"
+    },
     "bizographics.com": {
       "heuristicAction": "block"
     },
@@ -2011,56 +1499,88 @@
     "bjcathay.com": {
       "heuristicAction": "allow"
     },
+    "bksn.se": {
+      "heuristicAction": "allow"
+    },
+    "bleacherreport.com": {
+      "heuristicAction": "allow"
+    },
+    "blink.net": {
+      "heuristicAction": "allow"
+    },
     "blisspointmedia.com": {
       "heuristicAction": "allow"
     },
+    "blockchain.info": {
+      "heuristicAction": "allow"
+    },
+    "blockchair.io": {
+      "heuristicAction": "allow"
+    },
+    "blogger.com": {
+      "heuristicAction": "allow"
+    },
     "blogsky.com": {
       "heuristicAction": "allow"
     },
-    "bluecava.com": {
+    "bloomberg.com": {
+      "heuristicAction": "block"
+    },
+    "bloomreach.cloud": {
       "heuristicAction": "allow"
     },
+    "bloomreach.com": {
+      "heuristicAction": "allow"
+    },
+    "blueadss.com": {
+      "heuristicAction": "allow"
+    },
+    "bluebillywig.com": {
+      "heuristicAction": "allow"
+    },
+    "bluecava.com": {
+      "heuristicAction": "block"
+    },
     "blueconic.net": {
       "heuristicAction": "block"
     },
     "bluekai.com": {
       "heuristicAction": "block"
     },
-    "bm.adentifi.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602184160391
-    },
-    "bmwofnorthamericallc.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601878977610
+    "bmcdn1.com": {
+      "heuristicAction": "block"
     },
     "bn-web.com": {
       "heuristicAction": "allow"
     },
-    "bnidx.com": {
+    "bna.com": {
       "heuristicAction": "allow"
     },
-    "bnpparibas.fr": {
+    "bnbstatic.com": {
       "heuristicAction": "allow"
     },
-    "bob.dmpxs.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602299324826
+    "bnet.163.com": {
+      "heuristicAction": "cookieblock"
     },
-    "bold.adman.gr": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602152587390
+    "bnextmedia.com.tw": {
+      "heuristicAction": "allow"
     },
-    "boldchat.com": {
-      "heuristicAction": "cookieblock"
+    "bnidx.com": {
+      "heuristicAction": "allow"
     },
-    "bonappetit.com": {
+    "bnmla.com": {
       "heuristicAction": "block"
     },
-    "bongacams.com": {
+    "boatid.com": {
+      "heuristicAction": "allow"
+    },
+    "boldapps.net": {
       "heuristicAction": "allow"
     },
-    "bonnier-subscriptions.com": {
+    "boldchat.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "booked.net": {
       "heuristicAction": "allow"
     },
     "booking.com": {
@@ -2069,150 +1589,184 @@
     "books.google.com": {
       "heuristicAction": "cookieblock"
     },
+    "boost-next.co.jp": {
+      "heuristicAction": "allow"
+    },
     "boostingads.com": {
       "heuristicAction": "allow"
     },
-    "boot.pubstack.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602259547561
+    "booya.io": {
+      "heuristicAction": "allow"
+    },
+    "bordertraffic.com": {
+      "heuristicAction": "allow"
+    },
+    "bostonglobemedia.com": {
+      "heuristicAction": "allow"
     },
     "bounceexchange.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602370139470
+      "nextUpdateTime": 1637776035707
     },
-    "bouncex.net": {
+    "bouncepilot.com": {
       "heuristicAction": "allow"
     },
-    "boxx.ai": {
-      "heuristicAction": "allow"
+    "bouncex.net": {
+      "heuristicAction": "block"
+    },
+    "branch.io": {
+      "heuristicAction": "block"
     },
     "brand-display.com": {
       "heuristicAction": "allow"
     },
     "brandcdn.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "brandonsun.com": {
       "heuristicAction": "allow"
     },
-    "brdmin.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602327375504
-    },
     "breaktime.com.tw": {
       "heuristicAction": "allow"
     },
+    "brealtime.com": {
+      "heuristicAction": "block"
+    },
     "brightcove.com": {
       "heuristicAction": "cookieblock"
     },
+    "brightcove.net": {
+      "heuristicAction": "allow"
+    },
     "brightedge.com": {
       "heuristicAction": "allow"
     },
+    "brightspotcdn.com": {
+      "heuristicAction": "allow"
+    },
+    "briskeagle.io": {
+      "heuristicAction": "allow"
+    },
+    "briskpelican.io": {
+      "heuristicAction": "allow"
+    },
+    "britepool.com": {
+      "heuristicAction": "block"
+    },
+    "britiesperior.xyz": {
+      "heuristicAction": "allow"
+    },
     "broadstreetads.com": {
       "heuristicAction": "block"
     },
+    "bronto.com": {
+      "heuristicAction": "allow"
+    },
+    "browserstack.com": {
+      "heuristicAction": "allow"
+    },
     "brsrvr.com": {
       "heuristicAction": "block"
     },
-    "bs.serving-sys.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601965040769
+    "bs-dante.ru": {
+      "heuristicAction": "allow"
     },
-    "btlr.sharethrough.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601945188066
+    "bsmartdata.com": {
+      "heuristicAction": "allow"
+    },
+    "btg360.com.br": {
+      "heuristicAction": "allow"
     },
     "bttrack.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602206723567
+      "nextUpdateTime": 1637649515206
     },
     "btttag.com": {
       "heuristicAction": "block"
     },
     "buckridge.link": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "bugsnag.com": {
       "heuristicAction": "allow"
     },
-    "bullionyield.com": {
+    "buikolered.com": {
       "heuristicAction": "allow"
     },
     "bumlam.com": {
+      "heuristicAction": "block"
+    },
+    "bung.ie": {
       "heuristicAction": "allow"
     },
     "burly.io": {
       "heuristicAction": "allow"
     },
-    "businessclick.com": {
+    "burning-glass.com": {
       "heuristicAction": "allow"
     },
-    "businessinsider.com": {
+    "business-online.ru": {
       "heuristicAction": "allow"
     },
-    "buysellads.net": {
+    "business.com": {
       "heuristicAction": "allow"
     },
-    "buzzfeed.com": {
+    "businessclick.com": {
       "heuristicAction": "allow"
     },
-    "buzzoola.com": {
-      "heuristicAction": "block"
+    "businessinsider.com": {
+      "heuristicAction": "allow"
     },
-    "byteoversea.com": {
+    "buta.ws": {
       "heuristicAction": "allow"
     },
-    "c-ctrip.com": {
+    "buyma.com": {
       "heuristicAction": "allow"
     },
-    "c.aaxads.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602133117190
+    "buysellads.com": {
+      "heuristicAction": "allow"
     },
-    "c.amazon-adsystem.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602116423667
+    "buysellads.net": {
+      "heuristicAction": "allow"
     },
-    "c.cintnetworks.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601985045135
+    "buzzfeed.com": {
+      "heuristicAction": "cookieblock"
     },
-    "c.echoban.ru": {
-      "heuristicAction": "allow"
+    "buzzoola.com": {
+      "heuristicAction": "block"
     },
-    "c.finder.com.au": {
+    "bxblue.com.br": {
       "heuristicAction": "allow"
     },
-    "c.imedia.cz": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602338007739
+    "bycsi.com": {
+      "heuristicAction": "allow"
     },
-    "c.tvpixel.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602281468764
+    "byside.com": {
+      "heuristicAction": "allow"
     },
-    "c0.adalyser.com": {
+    "bytedance.com": {
       "heuristicAction": "block"
     },
-    "c2.taboola.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602199865122
+    "byteoversea.com": {
+      "heuristicAction": "allow"
+    },
+    "c.amazon-adsystem.com": {
+      "heuristicAction": "cookieblock"
     },
     "c212.net": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1601926998289
-    },
-    "c2shb.ssp.yahoo.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602119360923
+      "nextUpdateTime": 1637691380106
     },
     "c3tag.com": {
       "heuristicAction": "block"
     },
-    "c8.net.ua": {
+    "c90752b0b5.com": {
+      "heuristicAction": "allow"
+    },
+    "cabnnr.com": {
       "heuristicAction": "allow"
     },
-    "ca.clcknads.pro": {
+    "caixin.com": {
       "heuristicAction": "allow"
     },
     "calendar.google.com": {
@@ -2221,310 +1775,177 @@
     "calendly.com": {
       "heuristicAction": "allow"
     },
-    "canliskor.com.tr": {
-      "heuristicAction": "allow"
-    },
-    "captcha.qq.com": {
-      "heuristicAction": "cookieblock"
-    },
-    "captcha.su.baidu.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602035118165
-    },
-    "capterra.com": {
+    "californiatimes.com": {
       "heuristicAction": "allow"
     },
-    "capture.ma.knnlab.com": {
+    "callpage.io": {
       "heuristicAction": "allow"
     },
-    "capturehighered.net": {
-      "heuristicAction": "block"
-    },
-    "carfax.com": {
+    "callrail.com": {
       "heuristicAction": "allow"
     },
-    "caroda.io": {
+    "calltouch.ru": {
       "heuristicAction": "allow"
     },
-    "casalemedia.com": {
+    "caltat.com": {
       "heuristicAction": "block"
     },
-    "caspio.com": {
+    "camperid.com": {
       "heuristicAction": "allow"
     },
-    "castbox.fm": {
+    "campusexplorer.com": {
       "heuristicAction": "allow"
     },
-    "castle.io": {
-      "heuristicAction": "block"
-    },
-    "cbjs.baidu.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602318189107
-    },
-    "cbs.com": {
+    "canliskor.com.tr": {
       "heuristicAction": "allow"
     },
-    "cbsi.com": {
+    "canny.io": {
       "heuristicAction": "allow"
     },
-    "cbsi.demdex.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602025130249
-    },
-    "cctv.com": {
+    "canon.com.cn": {
       "heuristicAction": "allow"
     },
-    "cdeledu.com": {
+    "caperedlevi.com": {
       "heuristicAction": "allow"
     },
-    "cdn-9.nikon-cdn.com": {
+    "captcha-delivery.com": {
       "heuristicAction": "allow"
     },
-    "cdn-eu.dynamicyield.com": {
+    "captcha.qq.com": {
       "heuristicAction": "cookieblock"
     },
-    "cdn-gl.imrworldwide.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602360335129
-    },
-    "cdn-net.com": {
+    "capterra.com": {
       "heuristicAction": "allow"
     },
-    "cdn-payscale.com": {
+    "captivate.fm": {
       "heuristicAction": "allow"
     },
-    "cdn.admixer.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601998059247
-    },
-    "cdn.adpushup.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602346792119
-    },
-    "cdn.adrta.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602255264722
-    },
-    "cdn.adswizz.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601877259582
-    },
-    "cdn.adtrue.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601977551091
-    },
-    "cdn.anvato.net": {
-      "heuristicAction": "cookieblock"
-    },
-    "cdn.appdynamics.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602206414606
-    },
-    "cdn.ayc0zsm69431gfebd.xyz": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602022432060
-    },
-    "cdn.b0e8.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602218730077
-    },
-    "cdn.bizible.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602072684408
-    },
-    "cdn.blueconic.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601919649170
-    },
-    "cdn.bttrack.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601902953164
-    },
-    "cdn.c212.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602010562584
-    },
-    "cdn.connectad.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602189715401
-    },
-    "cdn.cquotient.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602143996048
-    },
-    "cdn.cxense.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601930190742
-    },
-    "cdn.districtm.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601878123166
-    },
-    "cdn.dynamicyield.com": {
-      "heuristicAction": "cookieblock"
-    },
-    "cdn.engine.phn.doublepimp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602186508607
-    },
-    "cdn.feathr.co": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601879578239
-    },
-    "cdn.feedify.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601995161512
-    },
-    "cdn.heapanalytics.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602295105858
+    "capturehighered.net": {
+      "heuristicAction": "block"
     },
-    "cdn.id5-sync.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601902679665
+    "cardiwersg.com": {
+      "heuristicAction": "allow"
     },
-    "cdn.intergient.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602102160456
+    "careerwebsite.com": {
+      "heuristicAction": "allow"
     },
-    "cdn.izooto.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602163468708
+    "carfax.com": {
+      "heuristicAction": "allow"
     },
-    "cdn.jsdelivr.net": {
-      "heuristicAction": "cookieblock"
+    "casalemedia.com": {
+      "heuristicAction": "block"
     },
-    "cdn.jwplayer.com": {
-      "heuristicAction": "cookieblock"
+    "caspio.com": {
+      "heuristicAction": "allow"
     },
-    "cdn.keywee.co": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602224814381
+    "castbox.fm": {
+      "heuristicAction": "allow"
     },
-    "cdn.monsido.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602197579155
+    "castle.io": {
+      "heuristicAction": "block"
     },
-    "cdn.onthe.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602222920034
+    "catad5959.com": {
+      "heuristicAction": "allow"
     },
-    "cdn.parsely.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601948971800
+    "cbsi.com": {
+      "heuristicAction": "cookieblock"
     },
-    "cdn.pbbl.co": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602226564814
+    "cbssports.com": {
+      "heuristicAction": "allow"
     },
-    "cdn.pendo.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602386182050
+    "ccgateway.net": {
+      "heuristicAction": "block"
     },
-    "cdn.quantummetric.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602195067300
+    "ccpmtrk.com": {
+      "heuristicAction": "allow"
     },
-    "cdn.scarabresearch.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602071096077
+    "cctv.com": {
+      "heuristicAction": "block"
     },
-    "cdn.segment.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601955658663
+    "cdeledu.com": {
+      "heuristicAction": "allow"
     },
-    "cdn.sift.com": {
+    "cdn-client.medium.com": {
+      "dnt": true,
       "heuristicAction": "",
-      "nextUpdateTime": 1602118383507
+      "nextUpdateTime": 1637835144501
     },
-    "cdn.siftscience.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601898263432
+    "cdn-eu.dynamicyield.com": {
+      "heuristicAction": "cookieblock"
     },
-    "cdn.taboola.com": {
+    "cdn-images-1.medium.com": {
+      "dnt": true,
       "heuristicAction": "",
-      "nextUpdateTime": 1601874073082
+      "nextUpdateTime": 1637897833432
     },
-    "cdn.tradelab.fr": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601905707251
+    "cdn-net.com": {
+      "heuristicAction": "block"
     },
-    "cdn.tsyndicate.com": {
+    "cdn-static-1.medium.com": {
+      "dnt": true,
       "heuristicAction": "",
-      "nextUpdateTime": 1602278154788
+      "nextUpdateTime": 1637806786840
     },
-    "cdn.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602352155956
+    "cdn.cohesionapps.com": {
+      "heuristicAction": "cookieblock"
     },
-    "cdn.userreplay.net": {
-      "heuristicAction": "block"
+    "cdn.dynamicyield.com": {
+      "heuristicAction": "cookieblock"
     },
-    "cdn.yektanet.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601925614365
+    "cdn.embedly.com": {
+      "heuristicAction": "cookieblock"
     },
-    "cdn1.affirm.com": {
+    "cdn.jwplayer.com": {
       "heuristicAction": "cookieblock"
     },
-    "cdn4.buysellads.net": {
-      "heuristicAction": "allow"
+    "cdn.privacy-mgmt.com": {
+      "heuristicAction": "cookieblock"
     },
-    "cdninstagram.com": {
+    "cdnbasket.net": {
       "heuristicAction": "allow"
     },
     "cdnpub.info": {
       "heuristicAction": "allow"
     },
-    "cdns.brsrvr.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602189823139
-    },
-    "cdnssl.clicktale.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602106370607
-    },
-    "cdnvideo.mobi": {
+    "cdnsfree.com": {
       "heuristicAction": "allow"
     },
     "cdnwidget.com": {
       "heuristicAction": "block"
     },
-    "ceet.co": {
-      "heuristicAction": "allow"
+    "cdrvrs.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637869274285
     },
-    "cengage.com": {
+    "celebrations.com": {
       "heuristicAction": "allow"
     },
-    "center.io": {
+    "centrum.cz": {
       "heuristicAction": "allow"
     },
-    "centerdigitaled.com": {
+    "cern.ch": {
       "heuristicAction": "allow"
     },
-    "centrum.cz": {
-      "heuristicAction": "allow"
+    "ceros.com": {
+      "heuristicAction": "cookieblock"
     },
-    "cern.ch": {
+    "cfmediaview.com": {
       "heuristicAction": "allow"
     },
-    "certify-js.alexametrics.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602101327808
+    "championat.com": {
+      "heuristicAction": "allow"
     },
-    "certify.alexametrics.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601882930135
+    "channel.io": {
+      "heuristicAction": "block"
     },
-    "cfzu.net": {
+    "channelexco.com": {
       "heuristicAction": "allow"
     },
     "channelnewsasia.com": {
       "heuristicAction": "allow"
     },
-    "charlotteobserver.com": {
-      "heuristicAction": "allow"
+    "chartbeat.com": {
+      "heuristicAction": "block"
     },
     "chartbeat.net": {
       "heuristicAction": "block"
@@ -2532,34 +1953,48 @@
     "chase.com": {
       "heuristicAction": "allow"
     },
-    "chat.chatra.io": {
+    "chatango.com": {
+      "heuristicAction": "block"
+    },
+    "chatbot.com": {
       "heuristicAction": "allow"
     },
     "chatdealer.jp": {
       "heuristicAction": "allow"
     },
     "chatplus.jp": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "chatra.io": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "chaturbate.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637648771649
     },
     "checkout.google.com": {
       "heuristicAction": "cookieblock"
     },
-    "chegg.com": {
+    "cheddar.com": {
       "heuristicAction": "allow"
     },
+    "chegg.com": {
+      "heuristicAction": "block"
+    },
     "cheqzone.com": {
       "heuristicAction": "block"
     },
-    "cheyisou.com": {
+    "chewy.net": {
       "heuristicAction": "allow"
     },
-    "childsplayclothing.co.uk": {
+    "chimpstatic.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637650256701
+    },
+    "chinavivaki.com": {
+      "heuristicAction": "block"
+    },
+    "chioneflake.com": {
       "heuristicAction": "allow"
     },
     "chipweb.azurewebsites.net": {
@@ -2568,7 +2003,7 @@
     "choozle.com": {
       "heuristicAction": "block"
     },
-    "cian.site": {
+    "chuzushijian.cn": {
       "heuristicAction": "allow"
     },
     "cint.com": {
@@ -2578,49 +2013,73 @@
       "heuristicAction": "block"
     },
     "cisco.com": {
-      "heuristicAction": "block"
-    },
-    "citi.com": {
       "heuristicAction": "allow"
     },
     "citiservi.es": {
       "heuristicAction": "allow"
     },
     "citrix.com": {
+      "heuristicAction": "block"
+    },
+    "citrusad.net": {
       "heuristicAction": "allow"
     },
-    "clarivate.com": {
+    "citydsp.com": {
+      "heuristicAction": "allow"
+    },
+    "civicscience.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "ck-ie.com": {
       "heuristicAction": "allow"
     },
-    "classistatic.com": {
+    "clarin.com": {
       "heuristicAction": "allow"
     },
-    "clcknads.pro": {
+    "clarip.com": {
       "heuristicAction": "allow"
     },
-    "clearbit.com": {
+    "clarity.ms": {
+      "heuristicAction": "block"
+    },
+    "clarivate.com": {
+      "heuristicAction": "allow"
+    },
+    "clasificados.com.do": {
       "heuristicAction": "allow"
     },
-    "clerk.io": {
+    "clearbit.com": {
+      "heuristicAction": "block"
+    },
+    "clearsale.com.br": {
       "heuristicAction": "allow"
     },
     "clevernt.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602225098998
+      "nextUpdateTime": 1637819010849
     },
-    "clickability.com": {
+    "click.ru": {
       "heuristicAction": "allow"
     },
     "clickagy.com": {
       "heuristicAction": "allow"
     },
+    "clickcease.com": {
+      "heuristicAction": "block"
+    },
     "clickcertain.com": {
+      "heuristicAction": "block"
+    },
+    "clickdimensions.com": {
+      "heuristicAction": "allow"
+    },
+    "clickfrog.ru": {
       "heuristicAction": "allow"
     },
     "clickfuse.com": {
       "heuristicAction": "allow"
     },
-    "clickondetroit.com": {
+    "clickgate05.biz": {
       "heuristicAction": "allow"
     },
     "clicktale.net": {
@@ -2639,9 +2098,9 @@
       "heuristicAction": "cookieblock"
     },
     "clinch.co": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
-    "clink.cn": {
+    "clinfo-dot-analyticsbeincrypto.appspot.com": {
       "heuristicAction": "allow"
     },
     "clive.cloud": {
@@ -2650,18 +2109,20 @@
     "clmbtech.com": {
       "heuristicAction": "block"
     },
-    "cloob.com": {
+    "clnmde.com": {
       "heuristicAction": "allow"
     },
     "cloud-iq.com": {
-      "heuristicAction": "allow"
-    },
-    "cloud-us.analytics-egain.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602025793764
+      "heuristicAction": "block"
     },
     "cloudflare.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "cookieblock"
+    },
+    "cloudflareaccess.com": {
+      "heuristicAction": "block"
+    },
+    "cloudinary.com": {
+      "heuristicAction": "cookieblock"
     },
     "clublibertaddigital.com": {
       "heuristicAction": "allow"
@@ -2669,132 +2130,77 @@
     "cluep.com": {
       "heuristicAction": "allow"
     },
-    "cluesnetwork.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602169279411
-    },
-    "cm.g.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602229275079
-    },
-    "cma.ecommerce.highwire.org": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602019896483
-    },
     "cmanager-prometeo.appspot.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "cookieblock"
     },
-    "cmsadmin30.convio.net": {
+    "cmh.com.tw": {
       "heuristicAction": "allow"
     },
-    "cnmo-img.com.cn": {
+    "cnn.com": {
       "heuristicAction": "allow"
     },
     "cnnd.vn": {
       "heuristicAction": "allow"
     },
-    "cnrs.fr": {
+    "cnt.my": {
       "heuristicAction": "allow"
     },
-    "cntraveler.com": {
-      "heuristicAction": "block"
-    },
     "cntv.cn": {
       "heuristicAction": "allow"
     },
-    "cnyes.cool": {
-      "heuristicAction": "allow"
-    },
     "cnzz.com": {
       "heuristicAction": "block"
     },
     "cobaltgroup.com": {
+      "heuristicAction": "block"
+    },
+    "coccoc.com": {
       "heuristicAction": "allow"
     },
-    "coccusadmanlob.com": {
+    "codepen.io": {
       "heuristicAction": "allow"
     },
-    "codon.vn": {
+    "codesour.com": {
       "heuristicAction": "allow"
     },
-    "coherentpath.com": {
+    "cogocast.net": {
       "heuristicAction": "allow"
     },
-    "cohesionapps.com": {
+    "coherentpath.com": {
       "heuristicAction": "block"
     },
-    "coinmama.com": {
-      "heuristicAction": "allow"
-    },
-    "cointiply.com": {
-      "heuristicAction": "allow"
+    "cohesionapps.com": {
+      "heuristicAction": "block"
     },
-    "col1.wiqhit.com": {
+    "coindesk.com": {
       "heuristicAction": "allow"
     },
-    "collect-eu-west-1.tealiumiq.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601922968466
-    },
-    "collect.tealiumiq.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602028785345
+    "cointraffic.io": {
+      "heuristicAction": "block"
     },
     "collectandgather.com": {
       "heuristicAction": "block"
     },
-    "collector-4113.tvsquared.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601956166811
-    },
-    "collector-7762.tvsquared.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602278064501
-    },
-    "collector-8013.tvsquared.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601892538336
-    },
-    "collector-9152.us.tvsquared.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602362051662
-    },
-    "collector_sr.contentexchange.me": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602076112287
-    },
     "collegenet.com": {
-      "heuristicAction": "allow"
-    },
-    "colossusssp.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1601940122536
-    },
-    "comm100.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "comm100.io": {
-      "heuristicAction": "allow"
-    },
-    "commander1.com": {
       "heuristicAction": "block"
     },
-    "commitchange.com": {
+    "commander1.com": {
       "heuristicAction": "block"
     },
     "company-target.com": {
       "heuristicAction": "block"
     },
-    "compass.adop.cc": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602230218761
-    },
     "complex.com": {
       "heuristicAction": "allow"
     },
-    "comptia.informz.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602085621894
+    "computer-bild.de": {
+      "heuristicAction": "allow"
+    },
+    "concert.io": {
+      "heuristicAction": "allow"
     },
     "condenastdigital.com": {
       "heuristicAction": "block"
@@ -2802,10 +2208,6 @@
     "connatix.com": {
       "heuristicAction": "block"
     },
-    "connect.ok.ru": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601990579341
-    },
     "connectad.io": {
       "heuristicAction": "block"
     },
@@ -2813,49 +2215,50 @@
       "heuristicAction": "allow"
     },
     "connexity.net": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "connextra.com": {
       "heuristicAction": "block"
     },
-    "consent-st.trustarc.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601993514944
-    },
     "consent.google.com": {
       "heuristicAction": "cookieblock"
     },
-    "consent.is": {
+    "consentag.eu": {
       "heuristicAction": "allow"
     },
-    "consent.trustarc.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601902285274
+    "consentframework.com": {
+      "heuristicAction": "block"
     },
-    "consentag.eu": {
-      "heuristicAction": "allow"
+    "consentmanager.net": {
+      "heuristicAction": "block"
     },
     "constantcontact.com": {
       "heuristicAction": "allow"
     },
-    "consumer.truefitcorp.com": {
+    "consumersource.com": {
       "heuristicAction": "allow"
     },
-    "consumerreports.org": {
+    "content-ad.net": {
       "heuristicAction": "allow"
     },
-    "contentabc.com": {
+    "contentdsp.com": {
       "heuristicAction": "allow"
     },
     "contentexchange.me": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
     "contentinsights.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "contentive.com": {
       "heuristicAction": "allow"
     },
+    "contently.com": {
+      "heuristicAction": "allow"
+    },
+    "contents-search-windows.com": {
+      "heuristicAction": "allow"
+    },
     "contentsfeed.com": {
       "heuristicAction": "block"
     },
@@ -2865,24 +2268,20 @@
     "contextads.live": {
       "heuristicAction": "block"
     },
-    "contextual.media.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602079811699
-    },
     "contextweb.com": {
       "heuristicAction": "block"
     },
+    "contineljs.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637770811308
+    },
     "contobox.com": {
       "heuristicAction": "allow"
     },
-    "contributor.google.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602152524397
-    },
-    "conversantmedia.com": {
+    "conversionruler.com": {
       "heuristicAction": "allow"
     },
-    "conversionlogic.net": {
+    "convertful.com": {
       "heuristicAction": "allow"
     },
     "convertkit.com": {
@@ -2894,10 +2293,19 @@
     "convio.net": {
       "heuristicAction": "allow"
     },
+    "cookiebot.com": {
+      "heuristicAction": "block"
+    },
+    "cookiepro.com": {
+      "heuristicAction": "allow"
+    },
+    "cooladata.com": {
+      "heuristicAction": "allow"
+    },
     "coremetrics.com": {
       "heuristicAction": "block"
     },
-    "corus.ca": {
+    "corover.mobi": {
       "heuristicAction": "allow"
     },
     "costco.com": {
@@ -2906,11 +2314,13 @@
     "cotsta.ru": {
       "heuristicAction": "allow"
     },
-    "counter.yadro.ru": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602079868998
+    "coub.com": {
+      "heuristicAction": "allow"
     },
-    "coupang.com": {
+    "countable.us": {
+      "heuristicAction": "allow"
+    },
+    "countryflags.io": {
       "heuristicAction": "allow"
     },
     "coupons.net": {
@@ -2919,7 +2329,7 @@
     "coveo.com": {
       "heuristicAction": "allow"
     },
-    "coxbusiness.com": {
+    "cpex.cz": {
       "heuristicAction": "allow"
     },
     "cpmstar.com": {
@@ -2931,74 +2341,57 @@
     "cquotient.com": {
       "heuristicAction": "block"
     },
-    "crain.112.2o7.net": {
-      "heuristicAction": "cookieblock"
+    "crain.com": {
+      "heuristicAction": "block"
     },
-    "craommunications.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602014878244
+    "crazyegg.com": {
+      "heuristicAction": "block"
     },
     "creative-serving.com": {
       "heuristicAction": "allow"
     },
     "creativecdn.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602095708225
+      "nextUpdateTime": 1637734149192
     },
-    "creativelive.com": {
-      "heuristicAction": "allow"
+    "credible.com": {
+      "heuristicAction": "block"
     },
-    "creativemarket.com": {
+    "cresendo.net": {
       "heuristicAction": "allow"
     },
-    "crentgate.com": {
-      "heuristicAction": "allow"
+    "criteo.com": {
+      "heuristicAction": "block"
     },
-    "cretgate.com": {
+    "crjpingate.com": {
       "heuristicAction": "allow"
     },
-    "criteo.com": {
+    "crowdriff.com": {
       "heuristicAction": "block"
     },
-    "crossref.matomo.cloud": {
+    "crowdtwist.com": {
       "heuristicAction": "allow"
     },
     "crsspxl.com": {
       "heuristicAction": "block"
     },
-    "crwdcntrl.net": {
-      "heuristicAction": "block"
-    },
-    "cryptobrowser.site": {
+    "crunch.io": {
       "heuristicAction": "allow"
     },
-    "cs.emxdgt.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602364516530
-    },
-    "cs.nakanohito.jp": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602275724198
-    },
-    "cse.google.com": {
-      "heuristicAction": "cookieblock"
-    },
-    "csp.yahoo.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602239706221
+    "crwdcntrl.net": {
+      "heuristicAction": "block"
     },
-    "csus.regroup.com": {
+    "crypto.com": {
       "heuristicAction": "allow"
     },
-    "csync.smilewanted.com": {
+    "cryptobrowser.site": {
       "heuristicAction": "allow"
     },
-    "cszz.ru": {
+    "cryptoo.me": {
       "heuristicAction": "allow"
     },
-    "ct.pinterest.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601908512461
+    "cse.google.com": {
+      "heuristicAction": "cookieblock"
     },
     "cta-service-cms2.hubspot.com": {
       "heuristicAction": "cookieblock"
@@ -3006,30 +2399,25 @@
     "ctags.cn": {
       "heuristicAction": "allow"
     },
+    "ctflux.com": {
+      "heuristicAction": "allow"
+    },
     "ctnsnet.com": {
       "heuristicAction": "block"
     },
-    "ctrack.trafficjunky.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602211127901
-    },
-    "ctrip.com": {
+    "cultergoy.com": {
       "heuristicAction": "allow"
     },
-    "cts.w55c.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602020353458
-    },
-    "cuberoot.co": {
+    "culturaltracking.ru": {
       "heuristicAction": "allow"
     },
-    "culturaltracking.ru": {
+    "curacao-egaming.com": {
       "heuristicAction": "allow"
     },
     "curalate.com": {
       "heuristicAction": "block"
     },
-    "custhelp.com": {
+    "customads.co": {
       "heuristicAction": "allow"
     },
     "customer.io": {
@@ -3038,80 +2426,103 @@
     "custora.com": {
       "heuristicAction": "block"
     },
-    "cvent.com": {
-      "heuristicAction": "allow"
-    },
     "cvshealth.com": {
       "heuristicAction": "allow"
     },
     "cxense.com": {
       "heuristicAction": "block"
     },
-    "cyol.net": {
+    "cxpublic.com": {
+      "heuristicAction": "block"
+    },
+    "cybersource.com": {
+      "heuristicAction": "allow"
+    },
+    "cybertronads.com": {
+      "heuristicAction": "allow"
+    },
+    "cztvcloud.com": {
       "heuristicAction": "allow"
     },
     "d-bi.fr": {
+      "heuristicAction": "block"
+    },
+    "d10gj7yjsfriaj.cloudfront.net": {
       "heuristicAction": "allow"
     },
-    "d-markets.net": {
+    "d15z7dtgvh220z.cloudfront.net": {
       "heuristicAction": "allow"
     },
-    "d.agkn.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602306895135
+    "d18t35yyry2k49.cloudfront.net": {
+      "heuristicAction": "allow"
     },
-    "d.nativendo.de": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602203469675
+    "d1af033869koo7.cloudfront.net": {
+      "heuristicAction": "allow"
+    },
+    "d1d3jupgwm7m5r.cloudfront.net": {
+      "heuristicAction": "cookieblock"
+    },
+    "d1dns4zpgsd7rz.cloudfront.net": {
+      "heuristicAction": "allow"
+    },
+    "d1epsz32winqbo.cloudfront.net": {
+      "heuristicAction": "allow"
+    },
+    "d2-apps.net": {
+      "heuristicAction": "allow"
     },
-    "d.otaserve.net": {
+    "d21uzv52i0cqie.cloudfront.net": {
       "heuristicAction": "allow"
     },
-    "d.turn.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602273365299
+    "d226aj4ao1t61q.cloudfront.net": {
+      "heuristicAction": "allow"
     },
-    "d.us.criteo.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602110104637
+    "d246big5q963u9.cloudfront.net": {
+      "heuristicAction": "allow"
     },
-    "d1af033869koo7.cloudfront.net": {
-      "heuristicAction": "cookieblock"
+    "d291vdycu0ht11.cloudfront.net": {
+      "heuristicAction": "allow"
     },
-    "d1d3jupgwm7m5r.cloudfront.net": {
+    "d2dpiwfhf3tz0r.cloudfront.net": {
       "heuristicAction": "allow"
     },
-    "d1dns4zpgsd7rz.cloudfront.net": {
+    "d2f4zoo8hyailp.cloudfront.net": {
       "heuristicAction": "allow"
     },
-    "d1epsz32winqbo.cloudfront.net": {
+    "d2gj27cpfrxt9y.cloudfront.net": {
       "heuristicAction": "allow"
     },
-    "d1rv23qj5kas56.cloudfront.net": {
+    "d2ksstuvcdowmk.cloudfront.net": {
       "heuristicAction": "allow"
     },
-    "d226aj4ao1t61q.cloudfront.net": {
+    "d2qrdklrsxowl2.cloudfront.net": {
       "heuristicAction": "allow"
     },
     "d2t77mnxyo7adj.cloudfront.net": {
-      "heuristicAction": "allow"
+      "heuristicAction": "cookieblock"
     },
     "d32blsbofe2158.cloudfront.net": {
       "heuristicAction": "allow"
     },
-    "d32hpx6p5we0tx.cloudfront.net": {
-      "heuristicAction": "allow"
-    },
     "d38xvr37kwwhcm.cloudfront.net": {
-      "heuristicAction": "allow"
+      "heuristicAction": "cookieblock"
     },
     "d395dw5zk780j2.cloudfront.net": {
       "heuristicAction": "cookieblock"
     },
+    "d3kwtionx0p7im.cloudfront.net": {
+      "heuristicAction": "allow"
+    },
+    "d3nocrch4qti4v.cloudfront.net": {
+      "heuristicAction": "allow"
+    },
+    "d3srxf9cr7mh5q.cloudfront.net": {
+      "heuristicAction": "allow"
+    },
     "d41.co": {
       "heuristicAction": "block"
     },
-    "d5nxst8fruw4z.cloudfront.net": {
+    "d881ll0fvb8ad.cloudfront.net": {
       "heuristicAction": "allow"
     },
     "d9jj3mjthpub.cloudfront.net": {
@@ -3120,91 +2531,90 @@
     "dable.io": {
       "heuristicAction": "block"
     },
-    "dadcdigital.com": {
+    "dacmaiss.com": {
       "heuristicAction": "allow"
     },
-    "dadicinema.com": {
+    "daexauto.com": {
       "heuristicAction": "allow"
     },
-    "dailymail.co.uk": {
-      "heuristicAction": "block"
-    },
-    "dailymotion.com": {
+    "dai.google.com": {
       "heuristicAction": "cookieblock"
     },
-    "dam-broadcast.com": {
+    "daib.pl": {
       "heuristicAction": "allow"
     },
-    "danv01ao0kdr2.cloudfront.net": {
+    "dailylearn.in": {
       "heuristicAction": "allow"
     },
-    "dapadobeproxyql.azurewebsites.net": {
-      "heuristicAction": "allow"
+    "dailymotion.com": {
+      "heuristicAction": "cookieblock"
     },
-    "dapadobeproxytest.azurewebsites.net": {
+    "dailystar.co.uk": {
       "heuristicAction": "allow"
     },
-    "data.caroda.io": {
+    "dalecta.com": {
       "heuristicAction": "allow"
     },
-    "datamind.ru": {
-      "heuristicAction": "allow"
+    "danv01ao0kdr2.cloudfront.net": {
+      "heuristicAction": "cookieblock"
     },
-    "dataplusmath.com": {
+    "dashboard-visor.com": {
       "heuristicAction": "allow"
     },
-    "dataprev.gov.br": {
+    "dashboard.co.uk": {
       "heuristicAction": "allow"
     },
-    "datasink.canva.sensorsdatavip.com": {
+    "data-crypt.com": {
       "heuristicAction": "allow"
     },
-    "datasteam.io": {
+    "data-dynamic.net": {
       "heuristicAction": "allow"
     },
-    "datastudio.google.com": {
-      "heuristicAction": "cookieblock"
+    "datadoghq.com": {
+      "heuristicAction": "block"
     },
-    "dataxpand.com": {
+    "datadrivenpromotion.com": {
       "heuristicAction": "block"
     },
-    "daum.net": {
+    "datafront.co": {
+      "heuristicAction": "allow"
+    },
+    "datamind.ru": {
       "heuristicAction": "block"
     },
-    "dc-storm.com": {
+    "datasteam.io": {
       "heuristicAction": "block"
     },
-    "dc-tag.jp": {
+    "datastudio.google.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "datatables.net": {
       "heuristicAction": "allow"
     },
-    "dc.ads.linkedin.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602057970891
+    "datawrkz.com": {
+      "heuristicAction": "allow"
     },
-    "dc.services.visualstudio.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602300861026
+    "dataxpand.com": {
+      "heuristicAction": "allow"
+    },
+    "daum.net": {
+      "heuristicAction": "block"
     },
-    "dcmn.io": {
+    "daumcdn.net": {
       "heuristicAction": "allow"
     },
-    "dditscdn.com": {
+    "dblks.net": {
       "heuristicAction": "allow"
     },
-    "dditservices.com": {
+    "dc-tag.jp": {
+      "heuristicAction": "block"
+    },
+    "dcm9zy.net": {
       "heuristicAction": "allow"
     },
     "ddos-guard.net": {
       "heuristicAction": "allow"
     },
-    "de.ioam.de": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602378579779
-    },
-    "de.tynt.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602052768098
-    },
     "deadline.com": {
       "heuristicAction": "allow"
     },
@@ -3214,25 +2624,49 @@
     "dealerinspire.com": {
       "heuristicAction": "allow"
     },
-    "deema.agency": {
+    "debenhams.co.uk": {
       "heuristicAction": "allow"
     },
-    "deep.bi": {
+    "decode.buzz": {
+      "heuristicAction": "allow"
+    },
+    "deemanetwork.com": {
       "heuristicAction": "allow"
     },
+    "deep.bi": {
+      "heuristicAction": "block"
+    },
     "deepintent.com": {
       "heuristicAction": "block"
     },
+    "defenseone.com": {
+      "heuristicAction": "allow"
+    },
     "dell.com": {
       "heuristicAction": "allow"
     },
+    "demand.supply": {
+      "heuristicAction": "block"
+    },
+    "demandbase.com": {
+      "heuristicAction": "block"
+    },
+    "demandjump.com": {
+      "heuristicAction": "block"
+    },
+    "demandware.net": {
+      "heuristicAction": "allow"
+    },
     "demdex.net": {
       "heuristicAction": "block"
     },
     "denakop.com": {
       "heuristicAction": "allow"
     },
-    "denverpost.com": {
+    "denetsuk.com": {
+      "heuristicAction": "allow"
+    },
+    "dentsu.de": {
       "heuristicAction": "allow"
     },
     "deployads.com": {
@@ -3247,49 +2681,46 @@
     "detik.com": {
       "heuristicAction": "block"
     },
-    "dev.visualwebsiteoptimizer.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602216650289
-    },
     "developers.google.com": {
       "heuristicAction": "cookieblock"
     },
-    "dezeenjobs.com": {
+    "devmate.com": {
       "heuristicAction": "allow"
     },
-    "dfapvmql-q.global.ssl.fastly.net": {
-      "heuristicAction": "cookieblock"
+    "dexguru.net": {
+      "heuristicAction": "allow"
     },
-    "dfcfw.com": {
+    "dezeenjobs.com": {
       "heuristicAction": "allow"
     },
-    "dhgate.com": {
+    "dfcfw.com": {
       "heuristicAction": "allow"
     },
     "di-dtaectolog-us-prod-1.appspot.com": {
       "heuristicAction": "cookieblock"
     },
-    "di.rlcdn.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601957759123
-    },
     "dialogtech.com": {
       "heuristicAction": "block"
     },
-    "diffuser-cdn.app-us1.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602287762831
+    "dianomi.com": {
+      "heuristicAction": "allow"
     },
-    "diginetica.net": {
+    "diarioelpais.com": {
+      "heuristicAction": "allow"
+    },
+    "dibspayment.eu": {
       "heuristicAction": "allow"
     },
-    "digitalaudienz.com": {
+    "digiato.com": {
       "heuristicAction": "allow"
     },
-    "digitalbee.al": {
+    "digicert.com": {
       "heuristicAction": "allow"
     },
-    "digitalbox.ru": {
+    "diginetica.net": {
+      "heuristicAction": "block"
+    },
+    "digitalcamp.co.kr": {
       "heuristicAction": "allow"
     },
     "digitalfirstmedia.com": {
@@ -3298,87 +2729,87 @@
     "digitalkites.com": {
       "heuristicAction": "allow"
     },
-    "digitaloceanspaces.com": {
-      "heuristicAction": "allow"
+    "digitalks.az": {
+      "heuristicAction": "block"
     },
     "digitalriver.com": {
       "heuristicAction": "allow"
     },
-    "digitaltarget.ru": {
-      "heuristicAction": "block"
+    "digitalriverws.com": {
+      "heuristicAction": "allow"
     },
-    "digitru.st": {
+    "digitaltarget.ru": {
       "heuristicAction": "block"
     },
     "diqp43fm0w6zs.cloudfront.net": {
       "heuristicAction": "allow"
     },
     "discord.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block",
+      "nextUpdateTime": 1638044965833
     },
-    "display.popt.in": {
+    "discovery.com": {
       "heuristicAction": "allow"
     },
-    "distribuidoraliverpo.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601944420774
-    },
-    "districtm.ca": {
-      "heuristicAction": "allow"
+    "disqus.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637937505048
     },
     "districtm.io": {
       "heuristicAction": "block"
     },
-    "dj.xesimg.com": {
+    "djc888.cn": {
       "heuristicAction": "allow"
     },
     "djiops.com": {
       "heuristicAction": "allow"
     },
-    "dkb01.webtrekk.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602106992136
-    },
     "dkuim.de": {
       "heuristicAction": "allow"
     },
     "dl1d2m8ri9v3j.cloudfront.net": {
       "heuristicAction": "allow"
     },
-    "dmg.digitaltarget.ru": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601940466077
-    },
-    "dmgmediaprivacy.co.uk": {
-      "heuristicAction": "block"
+    "dlads.cn": {
+      "heuristicAction": "allow"
     },
     "dmm.com": {
       "heuristicAction": "allow"
     },
-    "dmp.adform.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602352172322
-    },
     "dmpxs.com": {
       "heuristicAction": "block"
     },
-    "dmx.districtm.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602339487062
-    },
     "dmxleo.com": {
       "heuristicAction": "block"
     },
-    "docomo.ne.jp": {
+    "dmzjmp.com": {
+      "heuristicAction": "allow"
+    },
+    "dnacdn.net": {
+      "heuristicAction": "block"
+    },
+    "dnb.com": {
+      "heuristicAction": "allow"
+    },
+    "dochase.com": {
       "heuristicAction": "block"
     },
+    "docomo.ne.jp": {
+      "heuristicAction": "allow"
+    },
     "docs.google.com": {
       "heuristicAction": "cookieblock"
     },
+    "documentcloud.adobe.com": {
+      "heuristicAction": "cookieblock"
+    },
     "doga.cm": {
       "heuristicAction": "allow"
     },
-    "donorbox.org": {
+    "doityourself.com": {
+      "heuristicAction": "allow"
+    },
+    "dopansearor.com": {
       "heuristicAction": "allow"
     },
     "dotmetrics.net": {
@@ -3393,31 +2824,36 @@
     "doublepimp.com": {
       "heuristicAction": "block"
     },
+    "doubleverify.com": {
+      "heuristicAction": "block"
+    },
     "douyucdn.cn": {
       "heuristicAction": "allow"
     },
-    "dowjoneson.com": {
-      "heuristicAction": "block"
+    "downza.com": {
+      "heuristicAction": "allow"
     },
-    "dpgmedia.net": {
-      "heuristicAction": "block"
+    "doyouad.com": {
+      "heuristicAction": "allow"
     },
-    "dpm.demdex.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602295925191
+    "dozubatan.com": {
+      "heuristicAction": "allow"
     },
     "dpmsrv.com": {
       "heuristicAction": "block"
     },
-    "dpx.airpr.com": {
+    "dragonforms.com": {
       "heuristicAction": "block"
     },
     "drcareers.ca": {
       "heuristicAction": "allow"
     },
-    "dreamlab.pl": {
+    "dream.co.id": {
       "heuristicAction": "allow"
     },
+    "dreamlab.pl": {
+      "heuristicAction": "block"
+    },
     "drive.google.com": {
       "heuristicAction": "cookieblock"
     },
@@ -3427,25 +2863,27 @@
     "dropboxusercontent.com": {
       "heuristicAction": "allow"
     },
-    "drtvagency.matomo.cloud": {
+    "drtbn.com": {
       "heuristicAction": "allow"
     },
-    "ds.reson8.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602064407139
+    "ds360.co": {
+      "heuristicAction": "allow"
+    },
+    "dsoauthorizationapi-prod.azurewebsites.net": {
+      "heuristicAction": "allow"
     },
-    "dsp.com": {
+    "dspnow.ru": {
       "heuristicAction": "allow"
     },
     "dsspn.com": {
       "heuristicAction": "allow"
     },
+    "dstillery.com": {
+      "heuristicAction": "block"
+    },
     "dsw.tt.omtrdc.net": {
       "heuristicAction": "cookieblock"
     },
-    "dtprofit.com": {
-      "heuristicAction": "allow"
-    },
     "dtscdn.com": {
       "heuristicAction": "allow"
     },
@@ -3459,69 +2897,70 @@
       "heuristicAction": "allow"
     },
     "dugout.com": {
+      "heuristicAction": "block"
+    },
+    "duhnet.tv": {
       "heuristicAction": "allow"
     },
-    "duoyi.com": {
+    "duniagames.co.id": {
       "heuristicAction": "allow"
     },
-    "dw.cbsi.com": {
+    "duns100.co.il": {
       "heuristicAction": "allow"
     },
-    "dx.steelhousemedia.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602027732124
+    "dunsregistered.com": {
+      "heuristicAction": "allow"
     },
-    "dxcdn.com": {
+    "duomai.com": {
       "heuristicAction": "allow"
     },
-    "dynad.net": {
+    "durasite.net": {
       "heuristicAction": "allow"
     },
-    "dynadot.com": {
+    "duzytv.com": {
       "heuristicAction": "allow"
     },
-    "dynamics.com": {
+    "dxcdn.com": {
       "heuristicAction": "allow"
     },
+    "dynamics.com": {
+      "heuristicAction": "cookieblock"
+    },
     "dynamicyield.com": {
       "heuristicAction": "block"
     },
-    "dyntrk.com": {
-      "heuristicAction": "allow"
+    "dynatrace.com": {
+      "heuristicAction": "block"
     },
-    "e-9550.adzerk.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602010620823
+    "dyntrk.com": {
+      "heuristicAction": "block"
     },
     "e-contenta.com": {
       "heuristicAction": "allow"
     },
-    "e-himart.co.kr": {
+    "e-volution.ai": {
       "heuristicAction": "allow"
     },
-    "e-planning.net": {
-      "heuristicAction": "block"
+    "e54b.net": {
+      "heuristicAction": "allow"
     },
-    "e.issuu.com": {
-      "heuristicAction": "cookieblock"
+    "eadv.it": {
+      "heuristicAction": "allow"
     },
-    "e.serverbid.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602043765681
+    "eaglecdn.com": {
+      "heuristicAction": "block"
     },
-    "e1.emxdgt.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602349294120
+    "eagleplatform.com": {
+      "heuristicAction": "block"
     },
     "easemob.com": {
       "heuristicAction": "allow"
     },
-    "eb.com": {
+    "easyliao.com": {
       "heuristicAction": "allow"
     },
-    "eb2.3lift.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601953769138
+    "eb.com": {
+      "heuristicAction": "allow"
     },
     "ebay.com": {
       "heuristicAction": "allow"
@@ -3533,6 +2972,9 @@
       "heuristicAction": "block"
     },
     "ebu.io": {
+      "heuristicAction": "block"
+    },
+    "ec-concier.com": {
       "heuristicAction": "allow"
     },
     "ecbsn.com": {
@@ -3541,101 +2983,128 @@
     "eccmp.com": {
       "heuristicAction": "block"
     },
-    "ecdn.firstimpression.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601895613084
-    },
     "echoban.ru": {
       "heuristicAction": "allow"
     },
-    "ecustomeropinions.com": {
+    "econacademics.org": {
       "heuristicAction": "allow"
     },
     "ecwid.ru": {
       "heuristicAction": "allow"
     },
-    "edge-cdn.net": {
+    "eda.video": {
       "heuristicAction": "allow"
     },
-    "edge.quantserve.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602307465005
+    "edgrmtracking.com": {
+      "heuristicAction": "allow"
+    },
+    "ediemidnightzombies.com": {
+      "heuristicAction": "allow"
     },
     "edigitalsurvey.com": {
       "heuristicAction": "allow"
     },
-    "editor80.com": {
+    "editnews.com": {
       "heuristicAction": "allow"
     },
-    "editorx.com": {
+    "ednplus.com": {
+      "heuristicAction": "block"
+    },
+    "edugrampromo.com": {
+      "heuristicAction": "allow"
+    },
+    "eduvision.edu.pk": {
       "heuristicAction": "allow"
     },
     "eestatic.com": {
       "heuristicAction": "allow"
     },
+    "ef.com": {
+      "heuristicAction": "allow"
+    },
     "effectivemeasure.net": {
       "heuristicAction": "block"
     },
     "egain.cloud": {
       "heuristicAction": "allow"
     },
-    "el-mundo.net": {
-      "heuristicAction": "block"
+    "eggplant.cloud": {
+      "heuristicAction": "allow"
+    },
+    "egou.com": {
+      "heuristicAction": "allow"
+    },
+    "egovsum.com": {
+      "heuristicAction": "allow"
+    },
+    "einnews.com": {
+      "heuristicAction": "allow"
+    },
+    "ekbl.net": {
+      "heuristicAction": "allow"
     },
     "eland-tech.com": {
       "heuristicAction": "allow"
     },
-    "elfsight.com": {
+    "elastic.co": {
       "heuristicAction": "allow"
     },
-    "elmercurio.com": {
+    "electrek.co": {
       "heuristicAction": "allow"
     },
-    "eloqua.com": {
+    "elevaate.io": {
+      "heuristicAction": "allow"
+    },
+    "elfsight.com": {
       "heuristicAction": "block"
     },
-    "elpais.com": {
+    "elmercurio.com": {
       "heuristicAction": "allow"
     },
-    "elsevier.com": {
+    "elmtv.az": {
+      "heuristicAction": "allow"
+    },
+    "eloqua.com": {
       "heuristicAction": "block"
     },
-    "elsevierhealth.com": {
-      "heuristicAction": "allow"
+    "elpais.com": {
+      "heuristicAction": "block"
     },
     "eltiempo.co": {
       "heuristicAction": "allow"
     },
-    "eltiempo.digital": {
+    "emas-poc.com": {
       "heuristicAction": "allow"
     },
-    "embedly.com": {
+    "embed.ly": {
       "heuristicAction": "allow"
     },
-    "emxdgt.com": {
+    "embedly.com": {
       "heuristicAction": "block"
     },
-    "enamad.ir": {
-      "heuristicAction": "block"
+    "emlgrid.com": {
+      "heuristicAction": "allow"
     },
-    "ename.cn": {
+    "emol.cl": {
       "heuristicAction": "allow"
     },
-    "engageclick.com": {
+    "empregoreal.com": {
       "heuristicAction": "allow"
     },
-    "engageya.com": {
+    "emxdgt.com": {
       "heuristicAction": "block"
     },
-    "engine.phn.doublepimp.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602305443129
+    "en25.com": {
+      "heuristicAction": "block"
+    },
+    "engageya.com": {
+      "heuristicAction": "block"
     },
     "ens.fr": {
       "heuristicAction": "allow"
     },
     "ensighten.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "entertainow.com": {
       "heuristicAction": "allow"
@@ -3649,19 +3118,25 @@
     "envoke.com": {
       "heuristicAction": "allow"
     },
-    "epicurious.com": {
-      "heuristicAction": "block"
+    "episerver.com": {
+      "heuristicAction": "allow"
     },
     "episerver.net": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "eqads.com": {
       "heuristicAction": "allow"
     },
-    "equalstyle.com": {
+    "esm1.net": {
       "heuristicAction": "allow"
     },
-    "erepublic.com": {
+    "esmplus.com": {
+      "heuristicAction": "allow"
+    },
+    "espn.com": {
+      "heuristicAction": "block"
+    },
+    "espn.com.ar": {
       "heuristicAction": "allow"
     },
     "essayassist.com": {
@@ -3673,60 +3148,64 @@
     "estadao-bi-ga360.appspot.com": {
       "heuristicAction": "allow"
     },
-    "estat.com": {
+    "etahub.com": {
       "heuristicAction": "block"
     },
-    "etihadairways.demdex.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601940306055
+    "etargetnet.com": {
+      "heuristicAction": "allow"
     },
-    "etihadairways.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602374005443
+    "etherscan.com": {
+      "heuristicAction": "allow"
     },
-    "etracker.de": {
+    "ethicalshop.org": {
       "heuristicAction": "allow"
     },
-    "eu2.cdn.thunderhead.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602312245822
+    "ethousealc.xyz": {
+      "heuristicAction": "allow"
+    },
+    "eulerian.net": {
+      "heuristicAction": "block"
     },
     "eum-appdynamics.com": {
       "heuristicAction": "block"
     },
-    "eus.rubiconproject.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601972290746
+    "eurolandir.com": {
+      "heuristicAction": "block"
+    },
+    "europe-west1-s4a-ga-raw-data-prd.cloudfunctions.net": {
+      "heuristicAction": "allow"
     },
-    "event.insticator.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602130252649
+    "eventbriteapi.com": {
+      "heuristicAction": "allow"
     },
     "everesttech.net": {
       "heuristicAction": "block"
     },
+    "everforo.com": {
+      "heuristicAction": "allow"
+    },
     "evergage.com": {
       "heuristicAction": "block"
     },
     "everyaction.com": {
       "heuristicAction": "cookieblock"
     },
-    "everzones.com": {
-      "heuristicAction": "allow"
+    "evidon.com": {
+      "heuristicAction": "block"
     },
-    "evise.com": {
+    "evolok.net": {
       "heuristicAction": "allow"
     },
-    "evo.company": {
+    "ewdcloud.com": {
       "heuristicAction": "allow"
     },
-    "evolok.net": {
-      "heuristicAction": "block"
+    "ewrvdi.net": {
+      "heuristicAction": "allow"
     },
-    "evsuite.com": {
+    "ex.co": {
       "heuristicAction": "allow"
     },
-    "ewrvdi.net": {
+    "ex2b.com": {
       "heuristicAction": "allow"
     },
     "exactag.com": {
@@ -3735,18 +3214,24 @@
     "exacttarget.com": {
       "heuristicAction": "allow"
     },
-    "excite.co.jp": {
+    "excoino.com": {
       "heuristicAction": "allow"
     },
     "exdynsrv.com": {
       "heuristicAction": "block"
     },
+    "execute-api.us-east-1.amazonaws.com": {
+      "heuristicAction": "allow"
+    },
     "exelator.com": {
       "heuristicAction": "block"
     },
     "exitintel.com": {
       "heuristicAction": "allow"
     },
+    "exnessaffiliates.markets": {
+      "heuristicAction": "allow"
+    },
     "exoclick.com": {
       "heuristicAction": "block"
     },
@@ -3756,65 +3241,44 @@
     "exoticads.com": {
       "heuristicAction": "allow"
     },
-    "expedia.com": {
-      "heuristicAction": "allow"
-    },
     "expediapartnercentral.com": {
       "heuristicAction": "allow"
     },
     "experiancs.com": {
       "heuristicAction": "allow"
     },
-    "expertrec.com": {
+    "expertfile.com": {
       "heuristicAction": "allow"
     },
     "exponea.com": {
       "heuristicAction": "block"
     },
-    "eyeota.net": {
+    "extremereach.io": {
       "heuristicAction": "block"
     },
-    "eyereturn.com": {
+    "eyeota.net": {
       "heuristicAction": "block"
     },
-    "ezoic.net": {
+    "ezoic.com": {
       "heuristicAction": "block"
     },
-    "f.convertkit.com": {
-      "heuristicAction": "allow"
-    },
-    "f1272serve.xyz": {
-      "heuristicAction": "allow"
-    },
     "f5.com": {
       "heuristicAction": "allow"
     },
-    "f5networks.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602305082923
-    },
-    "f5networks.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602114980021
-    },
-    "fabled.com": {
-      "heuristicAction": "allow"
-    },
     "facebook.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1601894588684
+      "nextUpdateTime": 1637552281559
     },
-    "fairfaxregional.com.au": {
-      "heuristicAction": "allow"
+    "facebook.net": {
+      "heuristicAction": "block"
     },
-    "faisys.com": {
+    "fam-8.net": {
       "heuristicAction": "allow"
     },
-    "famousbirthdays-d.openx.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601877671741
+    "fam-ad.com": {
+      "heuristicAction": "allow"
     },
-    "fanduel.pxf.io": {
+    "fanat.az": {
       "heuristicAction": "allow"
     },
     "fang.com": {
@@ -3826,35 +3290,47 @@
     "farfetch.net": {
       "heuristicAction": "allow"
     },
-    "faromen.online": {
-      "heuristicAction": "allow"
-    },
     "fastapi.net": {
       "heuristicAction": "allow"
     },
     "fastcounter.de": {
       "heuristicAction": "allow"
     },
-    "fastlane.rubiconproject.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602217867653
+    "fastfinch.co": {
+      "heuristicAction": "allow"
     },
-    "fbc.wcfbc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602112890625
+    "fatmedia.io": {
+      "heuristicAction": "allow"
+    },
+    "fbot.me": {
+      "heuristicAction": "block"
+    },
+    "fc2.com": {
+      "heuristicAction": "allow"
+    },
+    "fccnn.com": {
+      "heuristicAction": "allow"
     },
     "fcglcdn.com": {
       "heuristicAction": "allow"
     },
+    "fcmrktplace.com": {
+      "heuristicAction": "allow"
+    },
     "feathr.co": {
       "heuristicAction": "block"
     },
+    "feedad.com": {
+      "heuristicAction": "block"
+    },
     "feedburner.google.com": {
       "heuristicAction": "cookieblock"
     },
     "feedify.net": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602289571761
+      "heuristicAction": "allow"
+    },
+    "feedmob.biz": {
+      "heuristicAction": "allow"
     },
     "feedproxy.google.com": {
       "heuristicAction": "cookieblock"
@@ -3862,10 +3338,13 @@
     "feeds.soundcloud.com": {
       "heuristicAction": "cookieblock"
     },
-    "felmat.net": {
+    "feeldmc.com": {
+      "heuristicAction": "allow"
+    },
+    "feelgood.cn": {
       "heuristicAction": "allow"
     },
-    "fengimg.com": {
+    "felmat.net": {
       "heuristicAction": "allow"
     },
     "fengkongcloud.com": {
@@ -3874,31 +3353,71 @@
     "ferret-one.com": {
       "heuristicAction": "allow"
     },
+    "fetnet.net": {
+      "heuristicAction": "allow"
+    },
     "ffmapi.com": {
       "heuristicAction": "allow"
     },
+    "fg8dgt.com": {
+      "heuristicAction": "block"
+    },
     "fieldtest.cc": {
       "heuristicAction": "allow"
     },
-    "filmibeat.com": {
+    "fiftyt.com": {
+      "heuristicAction": "block"
+    },
+    "figpii.com": {
+      "heuristicAction": "allow"
+    },
+    "figstatic.com": {
+      "heuristicAction": "allow"
+    },
+    "file.domains": {
       "heuristicAction": "allow"
     },
-    "finam.ru": {
+    "filepicker.io": {
       "heuristicAction": "allow"
     },
-    "financialjuice.com": {
+    "filmibeat.com": {
       "heuristicAction": "allow"
     },
     "finder.com.au": {
       "heuristicAction": "allow"
     },
+    "fineartamerica.com": {
+      "heuristicAction": "allow"
+    },
+    "finmarketslive.cl": {
+      "heuristicAction": "allow"
+    },
+    "firebase-dot-devsite-v2-prod.appspot.com": {
+      "heuristicAction": "allow"
+    },
     "firebaselogging.googleapis.com": {
       "heuristicAction": "cookieblock"
     },
+    "firewalls.com": {
+      "heuristicAction": "allow"
+    },
+    "fireworkanalytics.com": {
+      "heuristicAction": "block"
+    },
+    "fireworkapi.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637831270316
+    },
+    "firmofthefuture.com": {
+      "heuristicAction": "allow"
+    },
     "firstimpression.io": {
       "heuristicAction": "block"
     },
-    "fiverr.com": {
+    "fitanalytics.com": {
+      "heuristicAction": "allow"
+    },
+    "five9.com": {
       "heuristicAction": "allow"
     },
     "fivetran.com": {
@@ -3910,25 +3429,51 @@
     "flashtalking.com": {
       "heuristicAction": "block"
     },
+    "flattr.com": {
+      "heuristicAction": "allow"
+    },
+    "flickr.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "flipboard.com": {
+      "heuristicAction": "block"
+    },
     "flipp.com": {
       "heuristicAction": "allow"
     },
+    "flocdn.com": {
+      "heuristicAction": "allow"
+    },
     "flocktory.com": {
       "heuristicAction": "block"
     },
-    "flowtype.press": {
+    "flourish.studio": {
       "heuristicAction": "allow"
     },
-    "fls.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602298978063
+    "flow.io": {
+      "heuristicAction": "allow"
+    },
+    "flowics.com": {
+      "heuristicAction": "allow"
+    },
+    "flowtype.press": {
+      "heuristicAction": "block"
+    },
+    "flybuys.com.au": {
+      "heuristicAction": "allow"
     },
-    "flw.li": {
+    "fmlabsonline.com": {
       "heuristicAction": "allow"
     },
     "focas.jp": {
       "heuristicAction": "allow"
     },
+    "focus.cn": {
+      "heuristicAction": "allow"
+    },
+    "focus.de": {
+      "heuristicAction": "allow"
+    },
     "fontplus.jp": {
       "heuristicAction": "allow"
     },
@@ -3938,62 +3483,83 @@
     "fooby.ch": {
       "heuristicAction": "allow"
     },
-    "foodnetwork.com": {
+    "forbes.com": {
       "heuristicAction": "allow"
     },
     "force.com": {
       "heuristicAction": "cookieblock"
     },
-    "foreks.com": {
+    "force24.co.uk": {
       "heuristicAction": "allow"
     },
-    "foresee.com": {
+    "forms.hubspot.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "formsite.com": {
       "heuristicAction": "allow"
     },
-    "forms.hubspot.com": {
+    "formstack.com": {
       "heuristicAction": "cookieblock"
     },
     "formstack.io": {
       "heuristicAction": "allow"
     },
-    "fospha.com": {
+    "fortcdn.com": {
       "heuristicAction": "allow"
     },
-    "foursquare.com": {
+    "forumcomm.com": {
+      "heuristicAction": "allow"
+    },
+    "fossil-group-gtm-parent.uc.r.appspot.com": {
+      "heuristicAction": "allow"
+    },
+    "fotomoto.com": {
       "heuristicAction": "allow"
     },
     "fout.jp": {
       "heuristicAction": "block"
     },
-    "fox.com": {
+    "foxbusiness.com": {
       "heuristicAction": "allow"
     },
+    "foxnews.com": {
+      "heuristicAction": "block"
+    },
     "foxycart.com": {
       "heuristicAction": "allow"
     },
-    "fp-cdn.azureedge.net": {
-      "heuristicAction": "cookieblock"
+    "fpjs.io": {
+      "heuristicAction": "allow"
     },
     "fppressa.ru": {
       "heuristicAction": "allow"
     },
+    "fpt.vn": {
+      "heuristicAction": "allow"
+    },
     "franecki.net": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1601943091186
+      "nextUpdateTime": 1637827021546
     },
     "franeski.net": {
       "heuristicAction": "allow"
     },
+    "freecaster.com": {
+      "heuristicAction": "allow"
+    },
     "freelancer.com": {
       "heuristicAction": "allow"
     },
+    "freent.de": {
+      "heuristicAction": "allow"
+    },
     "freeskreen.com": {
       "heuristicAction": "block"
     },
     "freespee.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
-    "freevisitorcounters.com": {
+    "freewill.com": {
       "heuristicAction": "allow"
     },
     "freshchat.com": {
@@ -4002,116 +3568,128 @@
     "freshdesk.com": {
       "heuristicAction": "allow"
     },
-    "freshrelevance.com": {
+    "freshmarketer.com": {
       "heuristicAction": "allow"
     },
-    "fresnobee.com": {
+    "freshrelevance.com": {
+      "heuristicAction": "block"
+    },
+    "freshworks.com": {
+      "heuristicAction": "block"
+    },
+    "freychang.fun": {
       "heuristicAction": "allow"
     },
     "friendbuy.com": {
       "heuristicAction": "allow"
     },
+    "friendly-community.tk": {
+      "heuristicAction": "allow"
+    },
     "frosmo.com": {
       "heuristicAction": "allow"
     },
     "fstrk.net": {
       "heuristicAction": "allow"
     },
-    "fujitsu-webmart.com": {
+    "ft.com": {
       "heuristicAction": "allow"
     },
+    "ftd.agency": {
+      "heuristicAction": "allow"
+    },
+    "fuckandcdn.com": {
+      "heuristicAction": "allow"
+    },
+    "fullstory.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637678503090
+    },
     "fundingchoicesmessages.google.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601995078989
+      "heuristicAction": "cookieblock"
     },
-    "fundraiseup.com": {
+    "fupa.net": {
       "heuristicAction": "allow"
     },
+    "fuseplatform.net": {
+      "heuristicAction": "block"
+    },
     "fusiontables.google.com": {
       "heuristicAction": "cookieblock"
     },
     "fwmrm.net": {
-      "heuristicAction": "block"
+      "heuristicAction": "cookieblock"
     },
-    "fx678img.com": {
+    "fx678.com": {
       "heuristicAction": "allow"
     },
-    "fxgate.baidu.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602267253256
+    "g2.com": {
+      "heuristicAction": "block"
+    },
+    "g2crowd.com": {
+      "heuristicAction": "block"
     },
-    "fyi-marketing.com": {
+    "gabia.com": {
       "heuristicAction": "allow"
     },
-    "fyrsbckgi-c.global.ssl.fastly.net": {
-      "heuristicAction": "cookieblock"
+    "gacraft.jp": {
+      "heuristicAction": "block"
     },
-    "g.3gl.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602335264413
+    "gameanalytics.dev": {
+      "heuristicAction": "allow"
     },
-    "g.cn.miaozhen.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602062702205
+    "gamesfromheaven.com": {
+      "heuristicAction": "allow"
     },
-    "g.ezoic.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601926536970
+    "gaming-curacao.com": {
+      "heuristicAction": "allow"
     },
-    "g2.gumgum.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602082400987
+    "gammaplatform.com": {
+      "heuristicAction": "block"
     },
-    "gadasource.storage.googleapis.com": {
-      "heuristicAction": "cookieblock"
+    "gartner.com": {
+      "heuristicAction": "allow"
     },
-    "gamania.com": {
+    "gator.io": {
       "heuristicAction": "allow"
     },
-    "gameanalytics.dev": {
+    "gatorapi.com": {
       "heuristicAction": "allow"
     },
-    "gammaplatform.com": {
+    "gaug.es": {
       "heuristicAction": "block"
     },
-    "gannett-d.openx.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602095868386
+    "gazeta.pl": {
+      "heuristicAction": "allow"
     },
-    "garanti.com.tr": {
+    "gazetkapromocyjna.pl": {
       "heuristicAction": "allow"
     },
-    "gars.hit.gemius.pl": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602151845116
+    "gbqofs.io": {
+      "heuristicAction": "block"
     },
-    "gator.io": {
+    "gcprivacy.com": {
       "heuristicAction": "allow"
     },
-    "gatr.hit.gemius.pl": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602181888460
-    },
-    "gaua.hit.gemius.pl": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602237830028
+    "gcweb-cdn.azurewebsites.net": {
+      "heuristicAction": "allow"
     },
-    "gaug.es": {
+    "gd.gov.cn": {
       "heuristicAction": "allow"
     },
-    "gazeta.pl": {
+    "gdeslon.ru": {
       "heuristicAction": "allow"
     },
-    "gcimetrics.com": {
+    "gdz.work": {
       "heuristicAction": "allow"
     },
-    "gd.gov.cn": {
+    "geapps.io": {
       "heuristicAction": "allow"
     },
-    "gdz.work": {
+    "geckochat.io": {
       "heuristicAction": "allow"
     },
-    "geekbuying.com": {
+    "geekdo.com": {
       "heuristicAction": "allow"
     },
     "geetest.com": {
@@ -4123,49 +3701,45 @@
     "geistm.com": {
       "heuristicAction": "block"
     },
-    "gelbmann.info": {
-      "heuristicAction": "allow"
-    },
-    "geminimedia-eg.com": {
-      "heuristicAction": "allow"
-    },
     "gemius.pl": {
       "heuristicAction": "block"
     },
+    "generalmills.com": {
+      "heuristicAction": "allow"
+    },
     "generaltracking.de": {
       "heuristicAction": "allow"
     },
-    "genieesspv.jp": {
+    "genius.com": {
       "heuristicAction": "allow"
     },
     "geniusmonkey.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
-    "geofli.com": {
+    "genndi.com": {
       "heuristicAction": "allow"
     },
-    "geoip.insticator.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602061367261
-    },
-    "geotrust.com": {
+    "geonames.org": {
       "heuristicAction": "allow"
     },
-    "get4click.ru": {
+    "geotrust.com": {
       "heuristicAction": "allow"
     },
-    "getadmiral.com": {
+    "get-scatter.com": {
       "heuristicAction": "allow"
     },
-    "getapp.com": {
+    "getambassador.com": {
       "heuristicAction": "allow"
     },
     "getblue.io": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "getblueshift.com": {
       "heuristicAction": "block"
     },
+    "getbread.com": {
+      "heuristicAction": "allow"
+    },
     "getclicky.com": {
       "heuristicAction": "block"
     },
@@ -4178,129 +3752,182 @@
     "getletterpress.com": {
       "heuristicAction": "block"
     },
-    "getnshow.com": {
+    "getpocket.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "getpublica.com": {
+      "heuristicAction": "block"
+    },
+    "getresponse.com": {
       "heuristicAction": "allow"
     },
     "getrockerbox.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1601911242469
+      "nextUpdateTime": 1637793680581
+    },
+    "getshogun.com": {
+      "heuristicAction": "allow"
+    },
+    "getsitecontrol.com": {
+      "heuristicAction": "allow"
     },
     "getsmartcontent.com": {
+      "heuristicAction": "block"
+    },
+    "gettyimages.com": {
       "heuristicAction": "allow"
     },
-    "getway.biz": {
+    "gez.io": {
       "heuristicAction": "allow"
     },
-    "gg.faromen.online": {
+    "gfl85trk.com": {
       "heuristicAction": "allow"
     },
     "gh-base.com": {
       "heuristicAction": "allow"
     },
-    "ghb.adtelligent.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601993374434
-    },
-    "ghmtr.hit.gemius.pl": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601977732129
+    "ghac.cn": {
+      "heuristicAction": "allow"
     },
-    "gigazine.asia": {
+    "gigazine.be": {
       "heuristicAction": "allow"
     },
     "gigya.com": {
       "heuristicAction": "cookieblock"
     },
-    "gimp.org": {
+    "giosg.com": {
       "heuristicAction": "allow"
     },
+    "giosgusercontent.com": {
+      "heuristicAction": "allow"
+    },
+    "giphy.com": {
+      "heuristicAction": "cookieblock"
+    },
     "giraff.io": {
       "heuristicAction": "block"
     },
+    "gismeteo.ru": {
+      "heuristicAction": "allow"
+    },
     "gitee.com": {
       "heuristicAction": "allow"
     },
     "github.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "cookieblock"
     },
-    "gixioanalytics.com": {
+    "githubapp.com": {
       "heuristicAction": "allow"
     },
     "gjirafa.com": {
       "heuristicAction": "allow"
     },
-    "glamour.com": {
-      "heuristicAction": "block"
+    "glanacion.com": {
+      "heuristicAction": "allow"
     },
     "glassboxdigital.io": {
       "heuristicAction": "block"
     },
-    "glassdoor.com": {
+    "gleam.io": {
       "heuristicAction": "allow"
     },
-    "gleam.io": {
-      "heuristicAction": "block"
+    "gliacloud.com": {
+      "heuristicAction": "allow"
     },
     "global-e.com": {
+      "heuristicAction": "block"
+    },
+    "globalsign.com": {
+      "heuristicAction": "allow"
+    },
+    "globalsiteanalytics.com": {
       "heuristicAction": "allow"
     },
     "globalwebindex.net": {
       "heuristicAction": "block"
     },
+    "globenewswire.com": {
+      "heuristicAction": "block"
+    },
     "globo.com": {
       "heuristicAction": "allow"
     },
+    "glyph.medium.com": {
+      "dnt": true,
+      "heuristicAction": "block",
+      "nextUpdateTime": 1638016601290
+    },
+    "gm-cdn.com": {
+      "heuristicAction": "allow"
+    },
+    "gm.com": {
+      "heuristicAction": "allow"
+    },
+    "gmo.media": {
+      "heuristicAction": "allow"
+    },
     "gmossp-sp.jp": {
       "heuristicAction": "block"
     },
-    "go.activecalendar.com": {
+    "gnetwork.me": {
       "heuristicAction": "allow"
     },
-    "go.bebi.com": {
+    "gnezdo.ru": {
       "heuristicAction": "block"
     },
     "go.com": {
       "heuristicAction": "block"
     },
-    "go.ezoic.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602149490039
+    "goadopt.io": {
+      "heuristicAction": "block"
     },
     "godaddy.com": {
       "heuristicAction": "block"
     },
+    "godotengine.org": {
+      "heuristicAction": "allow"
+    },
+    "godsave.lgbt": {
+      "heuristicAction": "block"
+    },
     "goepson.com": {
       "heuristicAction": "allow"
     },
-    "gogocdn.net": {
+    "gogel.al": {
       "heuristicAction": "allow"
     },
-    "goinflow.com": {
+    "gogo-load.com": {
       "heuristicAction": "allow"
     },
     "goo.ne.jp": {
       "heuristicAction": "allow"
     },
+    "goodgamesmanship.com": {
+      "heuristicAction": "allow"
+    },
     "google-analytics.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602152953782
+      "nextUpdateTime": 1637956790930
+    },
+    "google.be": {
+      "heuristicAction": "allow"
+    },
+    "google.co.jp": {
+      "heuristicAction": "allow"
     },
     "google.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602051816434
+      "nextUpdateTime": 1637794938777
     },
-    "google.com.pk": {
+    "google.com.bd": {
       "heuristicAction": "allow"
     },
-    "googleads.g.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601934731697
-    },
     "googleadservices.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
-    "goop.com": {
-      "heuristicAction": "allow"
+    "googlesyndication.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637808254161
     },
     "gosuslugi.ru": {
       "heuristicAction": "allow"
@@ -4308,20 +3935,16 @@
     "gotprofits.com": {
       "heuristicAction": "allow"
     },
-    "goutee.top": {
+    "govexec.com": {
       "heuristicAction": "allow"
     },
-    "governing.com": {
+    "grammarly.com": {
       "heuristicAction": "allow"
     },
-    "gq.com": {
-      "heuristicAction": "block"
-    },
-    "grahammedia-d.openx.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602383448244
+    "grandforksherald.com": {
+      "heuristicAction": "allow"
     },
-    "graizoah.com": {
+    "granicus.com": {
       "heuristicAction": "allow"
     },
     "gravito.net": {
@@ -4333,16 +3956,27 @@
     "green-red.com": {
       "heuristicAction": "allow"
     },
-    "grid.bidswitch.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601990443489
+    "greenhouse.io": {
+      "heuristicAction": "allow"
+    },
+    "grid.id": {
+      "heuristicAction": "allow"
     },
     "gridsumdissector.com": {
       "heuristicAction": "block"
     },
+    "grizzlyapps.com": {
+      "heuristicAction": "allow"
+    },
+    "groovehq.com": {
+      "heuristicAction": "allow"
+    },
     "groovinads.com": {
       "heuristicAction": "block"
     },
+    "group-ib.com": {
+      "heuristicAction": "allow"
+    },
     "group-ib.ru": {
       "heuristicAction": "allow"
     },
@@ -4355,7 +3989,16 @@
     "growingio.com": {
       "heuristicAction": "block"
     },
-    "grumft.com": {
+    "growsurf.com": {
+      "heuristicAction": "allow"
+    },
+    "growth-attribution.s3.amazonaws.com": {
+      "heuristicAction": "allow"
+    },
+    "growthbuddy.app": {
+      "heuristicAction": "allow"
+    },
+    "grubhub.com": {
       "heuristicAction": "allow"
     },
     "grupaonet.pl": {
@@ -4367,7 +4010,10 @@
     "grupoelcorteingles.es": {
       "heuristicAction": "allow"
     },
-    "gsoi.fr": {
+    "gruporeforma.com": {
+      "heuristicAction": "allow"
+    },
+    "gsmaintelligence.com": {
       "heuristicAction": "allow"
     },
     "gsspat.jp": {
@@ -4376,118 +4022,119 @@
     "gssprt.jp": {
       "heuristicAction": "block"
     },
+    "gstatic.com": {
+      "heuristicAction": "cookieblock"
+    },
     "gtags.net": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
-    "guess.mediav.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601919942237
+    "gtm-5bj3nql-ytzhz.uc.r.appspot.com": {
+      "heuristicAction": "allow"
     },
-    "gum.criteo.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602237556932
+    "gtm-mnpmjpp-n2mxo.uc.r.appspot.com": {
+      "heuristicAction": "allow"
+    },
+    "gtm-ppqt7nx-nmviz.uc.r.appspot.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "gtm-twsfn5p-nwizz.uc.r.appspot.com": {
+      "heuristicAction": "allow"
+    },
+    "guarantee-cdn.com": {
+      "heuristicAction": "allow"
+    },
+    "guidestar.org": {
+      "heuristicAction": "allow"
     },
     "gumgum.com": {
       "heuristicAction": "block"
     },
+    "gumroad.com": {
+      "heuristicAction": "allow"
+    },
+    "gunosy.com": {
+      "heuristicAction": "allow"
+    },
     "guoshipartners.com": {
       "heuristicAction": "allow"
     },
-    "gwdg.de": {
+    "h12-media.com": {
       "heuristicAction": "allow"
     },
-    "gwmtracking.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602203373944
+    "haberler.com": {
+      "heuristicAction": "allow"
     },
-    "h.online-metrix.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601979507397
+    "haberturk.com": {
+      "heuristicAction": "allow"
     },
-    "haaretz.co.il": {
+    "hachidori.io": {
       "heuristicAction": "allow"
     },
     "hactar.is": {
       "heuristicAction": "allow"
     },
-    "hainanfp.com": {
+    "hanalytics.eu": {
       "heuristicAction": "allow"
     },
-    "halfclub.com": {
+    "hankookilbo.com": {
       "heuristicAction": "allow"
     },
     "hanmaker.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
-    "hao123.com": {
+    "haoyundm.com": {
       "heuristicAction": "allow"
     },
-    "hao123img.com": {
+    "haplat.net": {
       "heuristicAction": "allow"
     },
-    "harrisinteractive.eu": {
+    "harvard.edu": {
       "heuristicAction": "allow"
     },
     "hasbroapps.com": {
       "heuristicAction": "allow"
     },
     "hatena.ne.jp": {
-      "heuristicAction": "allow"
-    },
-    "hb-api.omnitagjs.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602354917196
-    },
-    "hb.adscale.de": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602056789456
+      "heuristicAction": "block"
     },
-    "hb.districtm.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602034880855
+    "hbabit.com": {
+      "heuristicAction": "allow"
     },
-    "hb.emxdgt.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602321299708
+    "hbpl.co.uk": {
+      "heuristicAction": "allow"
     },
-    "hb.hb.selectmedia.asia": {
+    "hbrsd.com": {
       "heuristicAction": "allow"
     },
-    "hb.undertone.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602205722690
+    "hcaptcha.com": {
+      "heuristicAction": "cookieblock"
     },
-    "hbabit.com": {
+    "hdnux.com": {
       "heuristicAction": "allow"
     },
-    "hbc.com": {
+    "hdsex.org": {
       "heuristicAction": "allow"
     },
-    "hbopenbid.pubmatic.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602166340014
-    },
-    "hbx.media.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601933742853
+    "hdzog.com": {
+      "heuristicAction": "allow"
     },
-    "hcaptcha.com": {
+    "he2d.com": {
       "heuristicAction": "allow"
     },
-    "headbidder.net": {
+    "health.gov.il": {
       "heuristicAction": "allow"
     },
-    "healthunlocked.com": {
+    "healthline.com": {
       "heuristicAction": "allow"
     },
     "heapanalytics.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602078647969
+      "nextUpdateTime": 1637799402664
     },
-    "hellorf.com": {
+    "heatmap.it": {
       "heuristicAction": "allow"
     },
-    "helpdaohang1.ksmobile.com": {
+    "helixbi.io": {
       "heuristicAction": "allow"
     },
     "heraldm.com": {
@@ -4495,48 +4142,45 @@
     },
     "hexagon-analytics.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1601839741096
+      "nextUpdateTime": 1637479174535
     },
-    "hgbn.network": {
+    "hgmsites.net": {
       "heuristicAction": "allow"
     },
-    "hgtv.com": {
-      "heuristicAction": "block"
-    },
     "hhcdn.ru": {
       "heuristicAction": "allow"
     },
-    "highlow.net": {
+    "hi-george.com": {
       "heuristicAction": "allow"
     },
-    "highwire.org": {
-      "heuristicAction": "block"
+    "hideousplay.com": {
+      "heuristicAction": "allow"
     },
-    "hihainan.info": {
+    "highwebmedia.com": {
       "heuristicAction": "allow"
     },
-    "hiido.com": {
+    "highwire.org": {
       "heuristicAction": "block"
     },
-    "hilton.com": {
-      "heuristicAction": "allow"
-    },
     "hindustantimes.com": {
       "heuristicAction": "block"
     },
     "hinet.net": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "hiphotos.baidu.com": {
       "heuristicAction": "cookieblock"
     },
-    "histats.com": {
-      "heuristicAction": "block"
+    "history.com": {
+      "heuristicAction": "allow"
+    },
+    "hit.az": {
+      "heuristicAction": "allow"
     },
     "hitslink.com": {
       "heuristicAction": "allow"
     },
-    "hive.co": {
+    "hj2i.net": {
       "heuristicAction": "allow"
     },
     "hket.com": {
@@ -4548,23 +4192,19 @@
     "hlserve.com": {
       "heuristicAction": "allow"
     },
-    "hm.baidu.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601900616410
-    },
-    "hmhost.co.uk": {
-      "heuristicAction": "allow"
-    },
     "holder.com.ua": {
       "heuristicAction": "block"
     },
     "holmesmind.com": {
+      "heuristicAction": "block"
+    },
+    "homecare.co.uk": {
       "heuristicAction": "allow"
     },
     "homeway.com.cn": {
       "heuristicAction": "allow"
     },
-    "hosted-inin.com": {
+    "hosting.money": {
       "heuristicAction": "allow"
     },
     "hot-mob.com": {
@@ -4573,27 +4213,37 @@
     "hotelscombined.com": {
       "heuristicAction": "allow"
     },
-    "hotwire.com": {
+    "hotjar.com": {
+      "heuristicAction": "block"
+    },
+    "hoursetituently.xyz": {
+      "heuristicAction": "allow"
+    },
+    "hp.com": {
       "heuristicAction": "allow"
     },
     "hq3x.com": {
       "heuristicAction": "allow"
     },
-    "hr.hit.gemius.pl": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602129775791
+    "hqchip.com": {
+      "heuristicAction": "allow"
     },
-    "hsbc.com.hk": {
+    "hrpassport.com": {
+      "heuristicAction": "allow"
+    },
+    "hrzn-nxt.com": {
+      "heuristicAction": "block"
+    },
+    "hs-sites.com": {
       "heuristicAction": "allow"
     },
-    "htcvive.com": {
+    "hsbc.com.hk": {
       "heuristicAction": "allow"
     },
-    "htlb.casalemedia.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602024321704
+    "hsmedia.ru": {
+      "heuristicAction": "allow"
     },
-    "hton.com.cn": {
+    "https": {
       "heuristicAction": "allow"
     },
     "hubpd.com": {
@@ -4602,7 +4252,16 @@
     "hubspot.com": {
       "heuristicAction": "block"
     },
-    "hujiang.com": {
+    "huemenar.com": {
+      "heuristicAction": "allow"
+    },
+    "hugetraffic.com": {
+      "heuristicAction": "allow"
+    },
+    "huiju.cool": {
+      "heuristicAction": "allow"
+    },
+    "hullapp.io": {
       "heuristicAction": "allow"
     },
     "hulu.com": {
@@ -4611,6 +4270,12 @@
     "huluqa.com": {
       "heuristicAction": "allow"
     },
+    "hum.works": {
+      "heuristicAction": "allow"
+    },
+    "humanoid.fr": {
+      "heuristicAction": "allow"
+    },
     "humcommerce.com": {
       "heuristicAction": "allow"
     },
@@ -4620,22 +4285,29 @@
     "hushly.com": {
       "heuristicAction": "block"
     },
+    "hwcdn.net": {
+      "heuristicAction": "allow"
+    },
     "hybrid.ai": {
       "heuristicAction": "block"
     },
+    "hydrax.xyz": {
+      "heuristicAction": "allow"
+    },
+    "hyperise.io": {
+      "heuristicAction": "allow"
+    },
+    "hypers.com.cn": {
+      "heuristicAction": "allow"
+    },
     "hyros.com": {
       "heuristicAction": "allow"
     },
-    "i-mobile.co.jp": {
+    "hyvor.com": {
       "heuristicAction": "block"
     },
-    "i.connectad.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601950923438
-    },
-    "i.prcdn.co": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602142939005
+    "i-mobile.co.jp": {
+      "heuristicAction": "block"
     },
     "i.ua": {
       "heuristicAction": "allow"
@@ -4649,93 +4321,85 @@
     "iadvize.com": {
       "heuristicAction": "block"
     },
-    "iasds01.com": {
+    "iae.one": {
       "heuristicAction": "allow"
     },
     "ib-ibi.com": {
-      "heuristicAction": "allow"
-    },
-    "ib.adnxs.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602058704649
+      "heuristicAction": "block"
     },
     "ibclick.stream": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602067793428
+      "nextUpdateTime": 1637697566837
     },
-    "ibillboard.com": {
+    "ibcstack.com": {
       "heuristicAction": "allow"
     },
-    "ibt.com": {
+    "ibeat-analytics.com": {
       "heuristicAction": "allow"
     },
-    "ice.360yield.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602257154062
-    },
-    "icon.cnzz.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602060496911
-    },
-    "iconmedia.containers.piwik.pro": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602136201860
+    "ibm.com": {
+      "heuristicAction": "allow"
     },
     "iconnode.com": {
       "heuristicAction": "allow"
     },
+    "ictr.cn": {
+      "heuristicAction": "allow"
+    },
     "id5-sync.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1601847755643
+      "nextUpdateTime": 1637896023106
     },
     "idealmedia.io": {
-      "heuristicAction": "allow"
-    },
-    "ideaplus.mk": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "idio.co": {
       "heuristicAction": "block"
     },
-    "idsync.rlcdn.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601893974937
-    },
-    "idx.liadm.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602207345216
+    "idx.lat": {
+      "heuristicAction": "block"
     },
     "iesnare.com": {
       "heuristicAction": "block"
     },
+    "ietp-web-app-global-assets.azurewebsites.net": {
+      "heuristicAction": "allow"
+    },
+    "iftheycall.com": {
+      "heuristicAction": "allow"
+    },
+    "igaw.io": {
+      "heuristicAction": "block"
+    },
     "ign.com": {
       "heuristicAction": "allow"
     },
     "igodigital.com": {
       "heuristicAction": "block"
     },
-    "iheart.com": {
+    "igstatic.com": {
       "heuristicAction": "allow"
     },
-    "iherb.com": {
+    "iheart.com": {
       "heuristicAction": "allow"
     },
     "ijento.com": {
       "heuristicAction": "allow"
     },
+    "ilgcdn.com": {
+      "heuristicAction": "allow"
+    },
     "iljmp.com": {
       "heuristicAction": "allow"
     },
+    "ilyf4amifh.com": {
+      "heuristicAction": "allow"
+    },
     "im-apps.net": {
       "heuristicAction": "block"
     },
-    "image2.pubmatic.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602002545841
-    },
-    "image8.pubmatic.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601943701706
+    "image.rakuten.co.jp": {
+      "heuristicAction": "cookieblock"
     },
     "imagesrv.adition.com": {
       "heuristicAction": "cookieblock"
@@ -4744,28 +4408,17 @@
       "heuristicAction": "allow"
     },
     "imedia.cz": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
     "img-fotki.yandex.ru": {
       "heuristicAction": "cookieblock"
     },
-    "img.ak.impact-ad.jp": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601914355849
-    },
-    "img.youtube.com": {
+    "imgsa.baidu.com": {
       "heuristicAction": "cookieblock"
     },
-    "img1.qq.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602277301385
-    },
-    "imgm5.cnmo-img.com.cn": {
+    "imgsmail.ru": {
       "heuristicAction": "allow"
     },
-    "imgsa.baidu.com": {
-      "heuristicAction": "cookieblock"
-    },
     "imgsrc.baidu.com": {
       "heuristicAction": "cookieblock"
     },
@@ -4781,35 +4434,40 @@
     "impact.com": {
       "heuristicAction": "allow"
     },
-    "implishing.club": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602190394831
+    "impactserving.com": {
+      "heuristicAction": "allow"
     },
     "impression.link": {
       "heuristicAction": "allow"
     },
+    "impressionmonster.com": {
+      "heuristicAction": "allow"
+    },
     "imrworldwide.com": {
       "heuristicAction": "block"
     },
     "imspublishergroup.com": {
       "heuristicAction": "allow"
     },
-    "in-page-push.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602158534716
+    "imtwjwoasak.com": {
+      "heuristicAction": "block"
     },
-    "in.wzrkt.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601988518138
+    "imv.az": {
+      "heuristicAction": "allow"
     },
-    "in.xspadvertising.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602193965892
+    "in-appadvertising.com": {
+      "heuristicAction": "allow"
+    },
+    "in-page-push.com": {
+      "heuristicAction": "allow"
+    },
+    "in.gov.br": {
+      "heuristicAction": "allow"
     },
     "inbenta.com": {
       "heuristicAction": "allow"
     },
-    "indacolive.com": {
+    "inbenta.io": {
       "heuristicAction": "allow"
     },
     "indapass.hu": {
@@ -4818,37 +4476,77 @@
     "indeed.com": {
       "heuristicAction": "allow"
     },
+    "independent.co.uk": {
+      "heuristicAction": "allow"
+    },
+    "independent.ie": {
+      "heuristicAction": "allow"
+    },
     "india.com": {
       "heuristicAction": "allow"
     },
     "indianexpress.com": {
       "heuristicAction": "allow"
     },
+    "indianrailways.gov.in": {
+      "heuristicAction": "allow"
+    },
+    "indiatimes.com": {
+      "heuristicAction": "allow"
+    },
     "indoleads.com": {
       "heuristicAction": "allow"
     },
+    "industrybrains.com": {
+      "heuristicAction": "allow"
+    },
+    "inews.co.id": {
+      "heuristicAction": "allow"
+    },
+    "inews.id": {
+      "heuristicAction": "allow"
+    },
     "infeed.id": {
       "heuristicAction": "block"
     },
+    "infinario.com": {
+      "heuristicAction": "allow"
+    },
     "infinigrow.com": {
       "heuristicAction": "allow"
     },
-    "infinity-tracking.net": {
+    "influ2.com": {
       "heuristicAction": "block"
     },
+    "infoedgeindia.com": {
+      "heuristicAction": "allow"
+    },
+    "infogram.com": {
+      "heuristicAction": "allow"
+    },
+    "infojobs.com": {
+      "heuristicAction": "allow"
+    },
     "infolinks.com": {
+      "heuristicAction": "block"
+    },
+    "infomo.net": {
+      "heuristicAction": "block"
+    },
+    "informa.com": {
       "heuristicAction": "allow"
     },
-    "informer.yandex.ru": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602205708201
+    "informizely.com": {
+      "heuristicAction": "allow"
     },
     "informz.net": {
       "heuristicAction": "block"
     },
-    "infosys.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601970262601
+    "inforum.com": {
+      "heuristicAction": "allow"
+    },
+    "infox.sg": {
+      "heuristicAction": "allow"
     },
     "infusionsoft.app": {
       "heuristicAction": "allow"
@@ -4856,19 +4554,18 @@
     "infusionsoft.com": {
       "heuristicAction": "allow"
     },
-    "ingage.tech": {
+    "injapan.com": {
       "heuristicAction": "allow"
     },
-    "ingrammicro.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602072736093
-    },
-    "injapan.com": {
+    "inlcorp.com": {
       "heuristicAction": "allow"
     },
     "inmobi.net": {
       "heuristicAction": "allow"
     },
+    "inmobiapis.com": {
+      "heuristicAction": "allow"
+    },
     "inmoment.com": {
       "heuristicAction": "allow"
     },
@@ -4881,67 +4578,71 @@
     "innogamescdn.com": {
       "heuristicAction": "allow"
     },
-    "innologica.com": {
-      "heuristicAction": "allow"
-    },
     "innovid.com": {
       "heuristicAction": "block"
     },
     "inpagepush.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602274122689
+      "heuristicAction": "allow"
     },
     "inpwrd.net": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "inq.com": {
       "heuristicAction": "cookieblock"
     },
-    "insent.ai": {
+    "inrixmedia.com": {
       "heuristicAction": "allow"
     },
+    "insent.ai": {
+      "heuristicAction": "block"
+    },
     "inside-graph.com": {
       "heuristicAction": "block"
     },
     "insider.com": {
       "heuristicAction": "allow"
     },
-    "insight.adsrvr.org": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602017675765
-    },
     "insightexpressai.com": {
       "heuristicAction": "block"
     },
-    "instabot.io": {
-      "heuristicAction": "allow"
+    "inspectlet.com": {
+      "heuristicAction": "block"
     },
     "instagram.com": {
       "heuristicAction": "cookieblock"
     },
+    "instana.io": {
+      "heuristicAction": "block"
+    },
     "insticator.com": {
       "heuristicAction": "block"
     },
-    "insurads.com": {
+    "instiengage.com": {
+      "heuristicAction": "block"
+    },
+    "instreamatic.com": {
+      "heuristicAction": "block"
+    },
+    "insurads.com": {
+      "heuristicAction": "block"
+    },
+    "intellimizeio.com": {
       "heuristicAction": "block"
     },
     "intellitxt.com": {
-      "heuristicAction": "allow"
-    },
-    "intent-apps.com": {
-      "heuristicAction": "allow"
-    },
-    "intent.ai": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "intentiq.com": {
       "heuristicAction": "block"
     },
-    "intentmedia.net": {
+    "intentsify.io": {
       "heuristicAction": "block"
     },
-    "intentsify.io": {
-      "heuristicAction": "allow"
+    "intercomcdn.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "intergi.com": {
+      "heuristicAction": "block"
     },
     "intergient.com": {
       "heuristicAction": "block"
@@ -4949,23 +4650,34 @@
     "internetbrands.com": {
       "heuristicAction": "block"
     },
-    "intljs.rmtag.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602006223363
+    "interworksmedia.co.kr": {
+      "heuristicAction": "block"
+    },
+    "intrado.com": {
+      "heuristicAction": "allow"
+    },
+    "intsig.net": {
+      "heuristicAction": "allow"
+    },
+    "investing.com": {
+      "heuristicAction": "allow"
     },
     "investingchannel.com": {
       "heuristicAction": "cookieblock"
     },
     "investis.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
+    },
+    "investisdigital.com": {
+      "heuristicAction": "allow"
     },
-    "investorwords.com": {
+    "investorq.com": {
       "heuristicAction": "allow"
     },
-    "invl.co": {
+    "invmrkt.com": {
       "heuristicAction": "allow"
     },
-    "invttjs.com.br": {
+    "inzynk.io": {
       "heuristicAction": "allow"
     },
     "ioam.de": {
@@ -4974,14 +4686,19 @@
     "iocnt.net": {
       "heuristicAction": "block"
     },
-    "ip-label.net": {
+    "iol.it": {
       "heuristicAction": "allow"
     },
-    "ipac.ctnsnet.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602051374101
+    "iono.fm": {
+      "heuristicAction": "allow"
+    },
+    "iovation.com": {
+      "heuristicAction": "allow"
+    },
+    "ip-label.net": {
+      "heuristicAction": "allow"
     },
-    "ipchaxun.com": {
+    "ip2c.net": {
       "heuristicAction": "allow"
     },
     "iperceptions.com": {
@@ -4990,35 +4707,51 @@
     "ipgeolocation.io": {
       "heuristicAction": "allow"
     },
-    "ipify.org": {
+    "ipinfo.io": {
       "heuristicAction": "allow"
     },
     "ipinyou.com": {
+      "heuristicAction": "block"
+    },
+    "iplsc.com": {
+      "heuristicAction": "allow"
+    },
+    "iponweb.net": {
       "heuristicAction": "allow"
     },
+    "ipp-meredith.com": {
+      "dnt": true,
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637877753341
+    },
     "ipredictive.com": {
       "heuristicAction": "block"
     },
-    "ipvanish.com": {
+    "ipregistry.co": {
       "heuristicAction": "allow"
     },
-    "iqair-international.myshopify.com": {
+    "ipresso.pl": {
+      "heuristicAction": "allow"
+    },
+    "iqm.com": {
       "heuristicAction": "allow"
     },
     "iqoption.com": {
       "heuristicAction": "allow"
     },
-    "irs.tools.investis.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602185835514
+    "iqtrading.asia": {
+      "heuristicAction": "allow"
     },
     "irs03.com": {
       "heuristicAction": "block"
     },
+    "is.cc": {
+      "heuristicAction": "allow"
+    },
     "isanook.com": {
       "heuristicAction": "allow"
     },
-    "islamist-movements.com": {
+    "iscrv.com": {
       "heuristicAction": "allow"
     },
     "ispot.tv": {
@@ -5030,105 +4763,192 @@
     "istruzione.it": {
       "heuristicAction": "allow"
     },
-    "iteratehq.com": {
+    "italia.it": {
       "heuristicAction": "block"
     },
-    "itmedia.co.jp": {
-      "heuristicAction": "allow"
+    "iteratehq.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1636781018002
     },
-    "itmedia.jp": {
+    "iterwebcms.com": {
       "heuristicAction": "allow"
     },
+    "itskiddoan.club": {
+      "heuristicAction": "block"
+    },
+    "iubenda.com": {
+      "heuristicAction": "cookieblock"
+    },
     "ivcbrasil.org.br": {
       "heuristicAction": "block"
     },
+    "ivi.ru": {
+      "heuristicAction": "allow"
+    },
     "ivideosmart.com": {
       "heuristicAction": "block"
     },
+    "ivstracker.net": {
+      "heuristicAction": "allow"
+    },
     "ivx.cn": {
       "heuristicAction": "allow"
     },
     "ixiaa.com": {
       "heuristicAction": "allow"
     },
+    "ixigua.com": {
+      "heuristicAction": "allow"
+    },
     "izooto.com": {
       "heuristicAction": "block"
     },
-    "j.6sc.co": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602031048697
+    "jabeh.com": {
+      "heuristicAction": "allow"
     },
     "jabmo.app": {
       "heuristicAction": "allow"
     },
-    "jads.co": {
+    "jabra.br.com": {
       "heuristicAction": "allow"
     },
-    "jadserve.postrelease.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602376568598
+    "jabra.ca": {
+      "heuristicAction": "allow"
+    },
+    "jabra.cn": {
+      "heuristicAction": "allow"
+    },
+    "jabra.co.kr": {
+      "heuristicAction": "allow"
+    },
+    "jabra.co.nz": {
+      "heuristicAction": "allow"
+    },
+    "jabra.co.uk": {
+      "heuristicAction": "allow"
+    },
+    "jabra.com.au": {
+      "heuristicAction": "allow"
+    },
+    "jabra.com.de": {
+      "heuristicAction": "allow"
+    },
+    "jabra.com.tr": {
+      "heuristicAction": "allow"
+    },
+    "jabra.cz": {
+      "heuristicAction": "allow"
+    },
+    "jabra.dk": {
+      "heuristicAction": "allow"
+    },
+    "jabra.es": {
+      "heuristicAction": "allow"
+    },
+    "jabra.fi": {
+      "heuristicAction": "allow"
+    },
+    "jabra.fr": {
+      "heuristicAction": "allow"
+    },
+    "jabra.hk": {
+      "heuristicAction": "allow"
+    },
+    "jabra.in": {
+      "heuristicAction": "allow"
+    },
+    "jabra.jp": {
+      "heuristicAction": "allow"
+    },
+    "jabra.lat": {
+      "heuristicAction": "allow"
+    },
+    "jabra.nl": {
+      "heuristicAction": "allow"
+    },
+    "jabra.no": {
+      "heuristicAction": "allow"
+    },
+    "jabra.pl": {
+      "heuristicAction": "allow"
+    },
+    "jabra.ru": {
+      "heuristicAction": "allow"
+    },
+    "jabra.se": {
+      "heuristicAction": "allow"
+    },
+    "jabra.sg": {
+      "heuristicAction": "allow"
+    },
+    "jabraheadsets.ch": {
+      "heuristicAction": "allow"
+    },
+    "jads.co": {
+      "heuristicAction": "allow"
     },
     "janrainsso.com": {
       "heuristicAction": "block"
     },
-    "jassfederal.ch": {
+    "jazz.co": {
+      "heuristicAction": "allow"
+    },
+    "jbs.org": {
       "heuristicAction": "allow"
     },
     "jd.com": {
       "heuristicAction": "allow"
     },
-    "jhu.edu": {
+    "jebbit.com": {
       "heuristicAction": "allow"
     },
-    "jilt.com": {
+    "jetbluevacations.com": {
+      "heuristicAction": "allow"
+    },
+    "jhmt.cz": {
+      "heuristicAction": "allow"
+    },
+    "jifo.co": {
       "heuristicAction": "allow"
     },
+    "jilt.com": {
+      "heuristicAction": "block"
+    },
     "jiosaavn.com": {
       "heuristicAction": "allow"
     },
-    "jivosite.com": {
+    "jisc.ac.uk": {
       "heuristicAction": "allow"
     },
+    "jivox.com": {
+      "heuristicAction": "block"
+    },
     "jixie.io": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "jnqsge.net": {
       "heuristicAction": "allow"
     },
-    "jobat.be": {
+    "joins.com": {
       "heuristicAction": "allow"
     },
-    "jobs.thejobnetwork.com": {
+    "jokerly.com": {
       "heuristicAction": "allow"
     },
-    "journalmedia.ie": {
+    "jotform.com": {
       "heuristicAction": "allow"
     },
-    "jrs5.com": {
+    "journalmedia.ie": {
       "heuristicAction": "allow"
     },
-    "js.adscale.de": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602013246334
-    },
-    "js.adsrvr.org": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602367042150
-    },
-    "js.agkn.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601879971284
-    },
-    "js.center.io": {
+    "journity.com": {
       "heuristicAction": "allow"
     },
-    "js.gleam.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601961463103
+    "jpush.cn": {
+      "heuristicAction": "allow"
     },
-    "js.gumgum.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602245489700
+    "jq22.com": {
+      "heuristicAction": "allow"
     },
     "js.hubspot.com": {
       "heuristicAction": "cookieblock"
@@ -5136,37 +4956,24 @@
     "js.matheranalytics.com": {
       "dnt": true,
       "heuristicAction": "",
-      "nextUpdateTime": 1602130658236
+      "nextUpdateTime": 1637747653884
     },
-    "js.rating-widget.com": {
+    "jscache.com": {
       "heuristicAction": "allow"
     },
-    "js.rfp.fout.jp": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602064806470
-    },
-    "jsc.adskeeper.co.uk": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601936670745
-    },
-    "jsc.lentainform.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601942393057
-    },
-    "jsc.mgid.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601984865895
-    },
-    "jschina.com.cn": {
+    "jsdatabox.com": {
       "heuristicAction": "allow"
     },
     "jsdelivr.net": {
       "heuristicAction": "cookieblock"
     },
-    "jsn.24smi.net": {
+    "jsrdn.com": {
+      "heuristicAction": "block"
+    },
+    "jubnaadserve.com": {
       "heuristicAction": "allow"
     },
-    "jsrdn.com": {
+    "juicer.io": {
       "heuristicAction": "block"
     },
     "juicyads.com": {
@@ -5181,30 +4988,26 @@
     "jwpltx.com": {
       "heuristicAction": "cookieblock"
     },
-    "jxtrackers.azurewebsites.net": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602237469796
+    "jxzwfww.gov.cn": {
+      "heuristicAction": "allow"
     },
     "kaipuyun.cn": {
       "heuristicAction": "block"
     },
-    "kaixin001.com.cn": {
-      "heuristicAction": "allow"
-    },
     "kakao.com": {
-      "heuristicAction": "allow"
-    },
-    "kameleoon.eu": {
       "heuristicAction": "block"
     },
     "kampyle.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "cookieblock"
     },
     "kanade-ad.net": {
       "heuristicAction": "allow"
     },
-    "kaprila.com": {
-      "heuristicAction": "block"
+    "kancloud.cn": {
+      "heuristicAction": "allow"
+    },
+    "kantartns.lt": {
+      "heuristicAction": "allow"
     },
     "kaptcha.com": {
       "heuristicAction": "block"
@@ -5212,7 +5015,7 @@
     "kargo.com": {
       "heuristicAction": "block"
     },
-    "karpishe.com": {
+    "karousell.com": {
       "heuristicAction": "allow"
     },
     "kartra.com": {
@@ -5221,39 +5024,36 @@
     "kaspersky-labs.com": {
       "heuristicAction": "allow"
     },
-    "kaxsdc.com": {
-      "heuristicAction": "allow"
-    },
     "kayak.com": {
       "heuristicAction": "allow"
     },
-    "kcsfile.com": {
+    "kbb.com": {
       "heuristicAction": "allow"
     },
-    "kexin001.com": {
+    "kcc0.com": {
       "heuristicAction": "allow"
     },
-    "keybank.demdex.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601920825832
+    "keeper.io": {
+      "heuristicAction": "allow"
     },
-    "keybank.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601946937119
+    "keepmylocaltv.com": {
+      "heuristicAction": "block"
     },
-    "keybankassociation.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602080701126
+    "kexin001.com": {
+      "heuristicAction": "allow"
     },
     "keywee.co": {
       "heuristicAction": "block"
     },
-    "kf5.com": {
+    "kezhaozhao.com": {
       "heuristicAction": "allow"
     },
     "kh.google.com": {
       "heuristicAction": "cookieblock"
     },
+    "kh4ffx.net": {
+      "heuristicAction": "allow"
+    },
     "khms0.google.com": {
       "heuristicAction": "cookieblock"
     },
@@ -5269,25 +5069,13 @@
     "khms4.google.com": {
       "heuristicAction": "cookieblock"
     },
-    "kinsta.com": {
-      "heuristicAction": "allow"
-    },
-    "kivpro.com": {
-      "heuristicAction": "allow"
-    },
     "kl-youniverse.com": {
       "heuristicAction": "block"
     },
     "klangoo.com": {
-      "heuristicAction": "allow"
-    },
-    "klarnaservices.com": {
-      "heuristicAction": "allow"
-    },
-    "klarnauserservices.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
-    "kleecks.com": {
+    "klaviyo.com": {
       "heuristicAction": "allow"
     },
     "klick2contact.com": {
@@ -5296,25 +5084,37 @@
     "knet.cn": {
       "heuristicAction": "block"
     },
+    "knightlab.com": {
+      "heuristicAction": "allow"
+    },
     "knnlab.com": {
       "heuristicAction": "allow"
     },
     "knotch.it": {
+      "heuristicAction": "block"
+    },
+    "know-where.com": {
       "heuristicAction": "allow"
     },
     "koddi.com": {
+      "heuristicAction": "block"
+    },
+    "kolkwi4tzicraamabilis.com": {
+      "heuristicAction": "allow"
+    },
+    "kommunicate.io": {
       "heuristicAction": "allow"
     },
     "kompas.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
-    "kooora.ws": {
+    "kompasads.com": {
       "heuristicAction": "allow"
     },
-    "kpcdn.net": {
+    "koscom.co.kr": {
       "heuristicAction": "allow"
     },
-    "kraken.com": {
+    "kp.house": {
       "heuristicAction": "allow"
     },
     "krxd.net": {
@@ -5323,10 +5123,26 @@
     "ksmobile.com": {
       "heuristicAction": "allow"
     },
-    "kwanzoo.com": {
+    "kthwaalso.xyz": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637826048663
+    },
+    "ktxlytics.io": {
+      "heuristicAction": "block"
+    },
+    "kubserver.icu": {
+      "heuristicAction": "allow"
+    },
+    "kulichki.com": {
+      "heuristicAction": "allow"
+    },
+    "kustomerapp.com": {
+      "heuristicAction": "block"
+    },
+    "kwikmotion.com": {
       "heuristicAction": "allow"
     },
-    "labocleo.org": {
+    "kworks.ru": {
       "heuristicAction": "allow"
     },
     "labs.google.com": {
@@ -5338,31 +5154,45 @@
     "ladsp.com": {
       "heuristicAction": "block"
     },
-    "lan.com": {
+    "ladsp.jp": {
+      "heuristicAction": "allow"
+    },
+    "lalibre.be": {
       "heuristicAction": "allow"
     },
     "landc.co.uk": {
       "heuristicAction": "allow"
     },
-    "landsend.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602240776449
+    "languagetoolplus.com": {
+      "heuristicAction": "allow"
     },
-    "lasteventf-tm.everesttech.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601970932797
+    "lasexta.com": {
+      "heuristicAction": "allow"
     },
-    "latinongroup.com": {
+    "lavanetwork.net": {
       "heuristicAction": "allow"
     },
-    "leadexpert.pl": {
+    "layer0.co": {
       "heuristicAction": "allow"
     },
-    "leadlab.click": {
+    "lazada.com": {
       "heuristicAction": "allow"
     },
-    "leadlander.com": {
-      "heuristicAction": "block"
+    "le.com": {
+      "heuristicAction": "allow"
+    },
+    "leadid.com": {
+      "heuristicAction": "allow"
+    },
+    "leadin.com": {
+      "heuristicAction": "allow"
+    },
+    "leadintel.io": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637911058488
+    },
+    "leadportal.com": {
+      "heuristicAction": "allow"
     },
     "leadquizzes.com": {
       "heuristicAction": "allow"
@@ -5371,7 +5201,7 @@
       "heuristicAction": "allow"
     },
     "leadsrx.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "leady.com": {
       "heuristicAction": "allow"
@@ -5379,17 +5209,26 @@
     "leafly.ca": {
       "heuristicAction": "allow"
     },
-    "ledger.com": {
+    "leankun.com": {
+      "heuristicAction": "allow"
+    },
+    "ledauphine-presse.fr": {
+      "heuristicAction": "allow"
+    },
+    "leetemplates.com": {
       "heuristicAction": "allow"
     },
     "leju.com": {
+      "heuristicAction": "block"
+    },
+    "lemmatechnologies.com": {
       "heuristicAction": "allow"
     },
     "lemnisk.co": {
       "heuristicAction": "allow"
     },
-    "lennyletter.com": {
-      "heuristicAction": "block"
+    "lendingtree.com": {
+      "heuristicAction": "allow"
     },
     "lenovo.com": {
       "heuristicAction": "allow"
@@ -5397,54 +5236,74 @@
     "lentainform.com": {
       "heuristicAction": "block"
     },
-    "letv.com": {
+    "leojmp.com": {
       "heuristicAction": "allow"
     },
-    "lexmark.d2.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601950960219
+    "leprogres-presse.fr": {
+      "heuristicAction": "allow"
     },
-    "lexmark.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602009697216
+    "letslinc.com": {
+      "heuristicAction": "allow"
+    },
+    "letv.com": {
+      "heuristicAction": "allow"
     },
     "lfeeder.com": {
       "heuristicAction": "allow"
     },
+    "lfstmedia.com": {
+      "heuristicAction": "allow"
+    },
     "liadm.com": {
       "heuristicAction": "block"
     },
-    "libs.coremetrics.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602121256610
+    "libanswers.com": {
+      "heuristicAction": "allow"
     },
-    "liebao.cn": {
+    "libertymutual-cdn.com": {
       "heuristicAction": "allow"
     },
     "lietou-static.com": {
       "heuristicAction": "allow"
     },
+    "lifeserver.net": {
+      "heuristicAction": "allow"
+    },
     "lightboxcdn.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "cookieblock"
     },
-    "lightinthebox.com": {
+    "lightonironmentcompetitemarxisting.xyz": {
       "heuristicAction": "allow"
     },
     "lijit.com": {
       "heuristicAction": "block"
     },
+    "like-video.com": {
+      "heuristicAction": "allow"
+    },
     "likeevideo.com": {
       "heuristicAction": "allow"
     },
     "likr.com.tw": {
       "heuristicAction": "block"
     },
+    "limabrasiltools.azurewebsites.net": {
+      "heuristicAction": "allow"
+    },
+    "limbik.com": {
+      "heuristicAction": "allow"
+    },
+    "line-apps.com": {
+      "heuristicAction": "allow"
+    },
     "line.me": {
       "heuristicAction": "block"
     },
-    "linkback.contentsfeed.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601961218192
+    "linkadx.com": {
+      "heuristicAction": "allow"
+    },
+    "linkaraby.com": {
+      "heuristicAction": "allow"
     },
     "linkconnector.com": {
       "heuristicAction": "block"
@@ -5455,25 +5314,22 @@
     "linker.hr": {
       "heuristicAction": "allow"
     },
-    "linkonlineworld.com": {
-      "heuristicAction": "allow"
-    },
     "linkprice.com": {
       "heuristicAction": "allow"
     },
     "linksynergy.com": {
       "heuristicAction": "block"
     },
+    "liputan6.id": {
+      "heuristicAction": "block"
+    },
     "list-manage.com": {
       "heuristicAction": "cookieblock"
     },
     "listrakbi.com": {
       "heuristicAction": "block"
     },
-    "literatumonline.com": {
-      "heuristicAction": "allow"
-    },
-    "liuzhuni.com": {
+    "litv.tv": {
       "heuristicAction": "allow"
     },
     "live2support.com": {
@@ -5482,15 +5338,29 @@
     "livechatinc.com": {
       "heuristicAction": "cookieblock"
     },
+    "livehelpnow.net": {
+      "heuristicAction": "allow"
+    },
     "livejasmin.com": {
+      "heuristicAction": "block"
+    },
+    "livemarketshoppers.com": {
+      "heuristicAction": "allow"
+    },
+    "livemint.com": {
+      "heuristicAction": "allow"
+    },
+    "liveperson.com": {
       "heuristicAction": "allow"
     },
     "liveperson.net": {
       "heuristicAction": "cookieblock"
     },
-    "liverpool.demdex.net.demdex.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602381421777
+    "livere.com": {
+      "heuristicAction": "allow"
+    },
+    "livere.me": {
+      "heuristicAction": "block"
     },
     "livetex.me": {
       "heuristicAction": "allow"
@@ -5498,80 +5368,87 @@
     "livetex.ru": {
       "heuristicAction": "allow"
     },
-    "lkqd.net": {
-      "heuristicAction": "block"
+    "llbean.net": {
+      "heuristicAction": "allow"
+    },
+    "lmaxdigital.io": {
+      "heuristicAction": "allow"
+    },
+    "lmcdn.ru": {
+      "heuristicAction": "allow"
     },
     "lmiutil.com": {
+      "heuristicAction": "block"
+    },
+    "ln.is": {
       "heuristicAction": "allow"
     },
     "lndata.com": {
       "heuristicAction": "allow"
     },
-    "load.sumo.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602042602464
-    },
     "loadercdn.net": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602225591817
+      "nextUpdateTime": 1637939037771
     },
-    "loadus.exelator.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602226276007
-    },
-    "loc.gov": {
+    "localizer.co": {
       "heuristicAction": "allow"
     },
+    "localnewslab.io": {
+      "heuristicAction": "block"
+    },
     "localytics.com": {
       "heuristicAction": "allow"
     },
-    "lockerdome.com": {
+    "locker2.com": {
       "heuristicAction": "allow"
     },
-    "log.pinterest.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602213847671
+    "lockerdome.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637786196947
     },
     "logger.co.kr": {
       "heuristicAction": "allow"
     },
-    "login.dotomi.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602037890996
+    "loggly.com": {
+      "heuristicAction": "cookieblock"
     },
-    "loginfra.com": {
+    "logicanalytics.io": {
       "heuristicAction": "allow"
     },
-    "loginhood.io": {
-      "heuristicAction": "block"
-    },
-    "loginside.co.kr": {
+    "loginfra.com": {
       "heuristicAction": "allow"
     },
-    "logitech.com": {
+    "loginside.co.kr": {
       "heuristicAction": "allow"
     },
     "logly.co.jp": {
       "heuristicAction": "block"
     },
-    "logo.samandehi.ir": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602201489957
-    },
     "logsss.com": {
       "heuristicAction": "allow"
     },
-    "logws1312.ati-host.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602250297502
-    },
     "loop11.com": {
+      "heuristicAction": "block"
+    },
+    "loopanalytics.com": {
       "heuristicAction": "allow"
     },
     "loopassets.net": {
       "heuristicAction": "allow"
     },
     "loopgift.com": {
+      "heuristicAction": "allow"
+    },
+    "loopme.com": {
+      "heuristicAction": "allow"
+    },
+    "loopme.me": {
+      "heuristicAction": "block"
+    },
+    "lordofthequietbadgers.com": {
+      "heuristicAction": "allow"
+    },
+    "lotlinx.com": {
       "heuristicAction": "block"
     },
     "lp4.io": {
@@ -5580,23 +5457,47 @@
     "lpage.co": {
       "heuristicAction": "allow"
     },
-    "lpoint.com": {
-      "heuristicAction": "allow"
-    },
     "lps.lpages.co": {
       "heuristicAction": "allow"
     },
     "lsurl.cn": {
       "heuristicAction": "allow"
     },
+    "ltmse.com": {
+      "heuristicAction": "allow"
+    },
     "ltwebstatic.com": {
       "heuristicAction": "allow"
     },
+    "lucid.app": {
+      "heuristicAction": "allow"
+    },
+    "lucidchart.com": {
+      "heuristicAction": "allow"
+    },
+    "lumen.com": {
+      "heuristicAction": "allow"
+    },
+    "lumentech.com": {
+      "heuristicAction": "allow"
+    },
+    "lundegaard.cloud": {
+      "heuristicAction": "allow"
+    },
+    "lura.live": {
+      "heuristicAction": "block"
+    },
+    "luxnet.ua": {
+      "heuristicAction": "allow"
+    },
     "lwcal.com": {
       "heuristicAction": "allow"
     },
     "lww.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
+    },
+    "lynn-latam-production-br-ch-reg-t2188.azurewebsites.net": {
+      "heuristicAction": "allow"
     },
     "lytics.io": {
       "heuristicAction": "block"
@@ -5604,22 +5505,23 @@
     "lz-pub-ads.com": {
       "heuristicAction": "allow"
     },
-    "m.giraff.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602063382046
-    },
     "m.stripe.network": {
       "heuristicAction": "cookieblock"
     },
-    "m6r.eu": {
+    "m0mentum.net": {
       "heuristicAction": "allow"
     },
-    "maases.com": {
+    "m1905.cn": {
       "heuristicAction": "allow"
     },
-    "mabping.chartbeat.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602230398929
+    "m2.ai": {
+      "heuristicAction": "block"
+    },
+    "m6r.eu": {
+      "heuristicAction": "allow"
+    },
+    "machinessp.xyz": {
+      "heuristicAction": "allow"
     },
     "macromill.com": {
       "heuristicAction": "block"
@@ -5627,30 +5529,57 @@
     "mad-docs.azurewebsites.net": {
       "heuristicAction": "allow"
     },
+    "madrid.org": {
+      "heuristicAction": "allow"
+    },
     "maerskline.com": {
       "heuristicAction": "allow"
     },
+    "maggieeatstheangel.com": {
+      "heuristicAction": "allow"
+    },
     "magnetmail.net": {
       "heuristicAction": "block"
     },
+    "magnum-dev.com": {
+      "heuristicAction": "allow"
+    },
     "mail.ru": {
       "heuristicAction": "cookieblock"
     },
-    "mailfire.io": {
-      "heuristicAction": "block"
+    "mailchimp.com": {
+      "heuristicAction": "cookieblock"
     },
-    "mailmunch.co": {
+    "mailerlite.com": {
       "heuristicAction": "allow"
     },
     "mainetodaymedia.com": {
       "heuristicAction": "allow"
     },
+    "mainroll.com": {
+      "heuristicAction": "block"
+    },
+    "make.cohesionapps.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "malcolm.app": {
+      "heuristicAction": "allow"
+    },
+    "mangools.com": {
+      "heuristicAction": "allow"
+    },
     "mantisadnetwork.com": {
       "heuristicAction": "block"
     },
+    "mapbox.com": {
+      "heuristicAction": "allow"
+    },
     "mapixl.com": {
       "heuristicAction": "allow"
     },
+    "mapmyindia.in": {
+      "heuristicAction": "allow"
+    },
     "mapquestapi.com": {
       "heuristicAction": "allow"
     },
@@ -5673,7 +5602,7 @@
       "heuristicAction": "allow"
     },
     "marketingautomation.services": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "marketlinc.com": {
       "heuristicAction": "block"
@@ -5684,33 +5613,29 @@
     "marketperf.com": {
       "heuristicAction": "allow"
     },
-    "marktplaats.net": {
+    "markitondemand.com": {
       "heuristicAction": "allow"
     },
-    "massrelevance.com": {
+    "marktplaats.net": {
       "heuristicAction": "allow"
     },
-    "mat1.qq.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601929422756
+    "marsflag.com": {
+      "heuristicAction": "allow"
     },
-    "match.adsrvr.org": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602215627100
+    "marvellousmachine.net": {
+      "heuristicAction": "allow"
     },
-    "match.prod.bidr.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601922249940
+    "massrel.io": {
+      "heuristicAction": "allow"
     },
-    "matchid.adfox.yandex.ru": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602280223811
+    "massrelevance.com": {
+      "heuristicAction": "allow"
     },
-    "matchtv.ru": {
+    "mastercard.com": {
       "heuristicAction": "allow"
     },
     "mateti.net": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "matheranalytics.com": {
       "heuristicAction": "block"
@@ -5718,64 +5643,51 @@
     "mathtag.com": {
       "heuristicAction": "block"
     },
-    "matomo.cloud": {
+    "matoakie.com": {
+      "heuristicAction": "allow"
+    },
+    "mautic.net": {
       "heuristicAction": "allow"
     },
     "maven.io": {
       "heuristicAction": "block"
     },
+    "mavenaudiences.com": {
+      "heuristicAction": "allow"
+    },
     "mavencoalition.io": {
       "heuristicAction": "block"
     },
     "maxmind.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "mci.gov.sa": {
       "heuristicAction": "allow"
     },
-    "maxymiser.net": {
-      "heuristicAction": "block"
+    "mdgms.com": {
+      "heuristicAction": "allow"
     },
-    "mc.admetrica.ru": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602220261900
+    "mdpi-res.com": {
+      "heuristicAction": "allow"
     },
-    "mc.webvisor.org": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602340801801
+    "mdstrm.com": {
+      "heuristicAction": "allow"
     },
-    "mc.yandex.ru": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602191356302
+    "mea.gov.in": {
+      "heuristicAction": "allow"
     },
-    "mcclatchy.com": {
+    "meba.kr": {
       "heuristicAction": "block"
     },
-    "mcclatchy.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602266371270
-    },
-    "mcclatchy.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602232665786
-    },
-    "mcp-media5.anvato.net": {
-      "heuristicAction": "cookieblock"
-    },
-    "mdgms.com": {
-      "heuristicAction": "allow"
+    "medallia.com": {
+      "heuristicAction": "block"
     },
-    "mea.gov.in": {
+    "medallia.eu": {
       "heuristicAction": "allow"
     },
-    "media.mcclatchy.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602346736506
-    },
     "media.net": {
       "heuristicAction": "block"
     },
-    "media.richrelevance.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602255030467
-    },
     "media6degrees.com": {
       "heuristicAction": "block"
     },
@@ -5783,114 +5695,149 @@
       "heuristicAction": "block"
     },
     "mediacategory.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "mediacdn.vn": {
       "heuristicAction": "allow"
     },
     "mediacorp.sg": {
+      "heuristicAction": "block"
+    },
+    "mediafuse.com": {
+      "heuristicAction": "block"
+    },
+    "mediago.io": {
       "heuristicAction": "allow"
     },
-    "mediaforge.com": {
+    "mediaindex.co.kr": {
       "heuristicAction": "allow"
     },
-    "mediafuse.com": {
+    "medialand.ru": {
+      "heuristicAction": "allow"
+    },
+    "mediarithmics.com": {
       "heuristicAction": "block"
     },
-    "mediaset.net": {
+    "mediasquare.fr": {
+      "heuristicAction": "allow"
+    },
+    "mediatoday.ru": {
       "heuristicAction": "allow"
     },
     "mediav.com": {
       "heuristicAction": "block"
     },
     "mediavine.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "mediawallahscript.com": {
       "heuristicAction": "block"
     },
-    "mediawayss.com": {
+    "mediaweaver.jp": {
       "heuristicAction": "allow"
     },
-    "mediaweaver.jp": {
+    "medicalnewstoday.com": {
       "heuristicAction": "allow"
     },
     "medium.al": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
     "medium.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "medtargetsystem.com": {
       "heuristicAction": "block"
     },
+    "meetami.ai": {
+      "heuristicAction": "allow"
+    },
     "meetings.hubspot.com": {
       "heuristicAction": "cookieblock"
     },
+    "mega.nz": {
+      "heuristicAction": "allow"
+    },
+    "megaphone.fm": {
+      "heuristicAction": "cookieblock"
+    },
+    "megatime.com.tw": {
+      "heuristicAction": "allow"
+    },
     "meiqia.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
+    },
+    "meistertask.com": {
+      "heuristicAction": "allow"
+    },
+    "meituan.net": {
+      "heuristicAction": "allow"
     },
     "meizu.cn": {
       "heuristicAction": "allow"
     },
-    "mellowads.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602211905379
+    "meizu.com": {
+      "heuristicAction": "allow"
     },
-    "mer.stdout.cz": {
+    "meltwaternews.com": {
+      "heuristicAction": "allow"
+    },
+    "mendeley.com": {
       "heuristicAction": "allow"
     },
     "mercadopago.cl": {
       "heuristicAction": "allow"
     },
+    "mercadopago.com.pe": {
+      "heuristicAction": "allow"
+    },
+    "mercadopago.com.uy": {
+      "heuristicAction": "allow"
+    },
     "meredithcorp.io": {
       "heuristicAction": "allow"
     },
-    "metagaua.hit.gemius.pl": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602118504782
+    "meritpages.com": {
+      "heuristicAction": "allow"
+    },
+    "mesearch.ai": {
+      "heuristicAction": "allow"
+    },
+    "messagebird.com": {
+      "heuristicAction": "allow"
+    },
+    "metadata.io": {
+      "heuristicAction": "allow"
     },
     "metricool.com": {
       "heuristicAction": "allow"
     },
-    "metrics.brightcove.com": {
-      "heuristicAction": "cookieblock"
+    "metrics-ga.an.r.appspot.com": {
+      "heuristicAction": "allow"
     },
-    "metrics.timewarnercable.com": {
+    "metrixa.com": {
       "heuristicAction": "allow"
     },
     "metroscubicos.com": {
       "heuristicAction": "allow"
     },
+    "metv.com": {
+      "heuristicAction": "allow"
+    },
     "mfadsrvr.com": {
       "heuristicAction": "block"
     },
     "mgid.com": {
       "heuristicAction": "block"
     },
-    "mgzqlnev.micpn.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602374553528
-    },
-    "mhtr.be": {
-      "heuristicAction": "allow"
-    },
     "mia-chat.com": {
       "heuristicAction": "allow"
     },
-    "miamiherald.com": {
-      "heuristicAction": "allow"
-    },
     "miaozhen.com": {
       "heuristicAction": "block"
     },
     "mib.gov.in": {
       "heuristicAction": "allow"
     },
-    "michelintravelpartner.d3.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602030194383
-    },
     "micpn.com": {
       "heuristicAction": "block"
     },
@@ -5900,89 +5847,88 @@
     "microadinc.com": {
       "heuristicAction": "block"
     },
-    "microcontenidos.com": {
-      "heuristicAction": "allow"
-    },
-    "microntechnology.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602269322046
-    },
     "microsoft.com": {
       "heuristicAction": "cookieblock"
     },
-    "microsofttranslator.com": {
-      "heuristicAction": "allow"
-    },
-    "mid.rkdms.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602229355570
-    },
-    "midas-network.com": {
-      "heuristicAction": "allow"
-    },
-    "mimilcnf.pro": {
+    "micstatic.com": {
       "heuristicAction": "allow"
     },
-    "mindbox.cloud": {
+    "midtrans.com": {
       "heuristicAction": "allow"
     },
     "mindbox.ru": {
       "heuristicAction": "block"
     },
-    "minibc.com": {
-      "heuristicAction": "allow"
-    },
-    "miniclip.com": {
-      "heuristicAction": "allow"
-    },
-    "miniclippt.com": {
-      "heuristicAction": "allow"
-    },
-    "miniinthebox.com": {
-      "heuristicAction": "allow"
+    "miro.medium.com": {
+      "dnt": true,
+      "heuristicAction": "",
+      "nextUpdateTime": 1637613026153
     },
     "mirror.co.uk": {
       "heuristicAction": "block"
     },
-    "mituo.cn": {
+    "missouristate.info": {
       "heuristicAction": "allow"
     },
-    "mixcloud.com": {
+    "mitself.net": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637666369867
+    },
+    "mixadvert.com": {
       "heuristicAction": "allow"
     },
+    "mixandfun.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637545313244
+    },
     "mixi.media": {
       "heuristicAction": "block"
     },
+    "mixpanel.com": {
+      "heuristicAction": "block"
+    },
     "mktoresp.com": {
       "heuristicAction": "block"
     },
     "ml314.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602137982531
+      "nextUpdateTime": 1637901135146
     },
-    "mlsys.xyz": {
+    "mlbstatic.com": {
       "heuristicAction": "allow"
     },
+    "mmctsvc.com": {
+      "heuristicAction": "block"
+    },
     "mmonline.io": {
       "heuristicAction": "allow"
     },
+    "mmpww.com": {
+      "heuristicAction": "allow"
+    },
     "mmstat.com": {
       "heuristicAction": "block"
     },
-    "mmtro.com": {
+    "mnsuseumco.xyz": {
       "heuristicAction": "allow"
     },
     "moatads.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602075366073
+      "nextUpdateTime": 1637846380346
     },
     "mobizone.mobi": {
       "heuristicAction": "allow"
     },
-    "mobvista.com": {
+    "mobon.net": {
+      "heuristicAction": "block"
+    },
+    "mobvista.com": {
+      "heuristicAction": "allow"
+    },
+    "modern.az": {
       "heuristicAction": "allow"
     },
-    "modlily.com": {
+    "modoro360.com": {
       "heuristicAction": "allow"
     },
     "moe.video": {
@@ -5991,15 +5937,22 @@
     "moevideo.biz": {
       "heuristicAction": "allow"
     },
+    "moex.com": {
+      "heuristicAction": "allow"
+    },
     "monetate.net": {
       "heuristicAction": "block"
     },
-    "monohost.com": {
-      "heuristicAction": "block"
+    "money-link.com.tw": {
+      "heuristicAction": "allow"
     },
     "monsido.com": {
       "heuristicAction": "block"
     },
+    "monu.delivery": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1638071643312
+    },
     "mookie1.com": {
       "heuristicAction": "block"
     },
@@ -6007,55 +5960,74 @@
       "heuristicAction": "allow"
     },
     "mopinion.com": {
+      "heuristicAction": "block"
+    },
+    "more-data.ru": {
+      "heuristicAction": "block"
+    },
+    "moshimo.com": {
       "heuristicAction": "allow"
     },
-    "motorsport.com": {
+    "motorcycleid.com": {
       "heuristicAction": "allow"
     },
-    "mox.tv": {
+    "motorsport.com": {
       "heuristicAction": "allow"
     },
-    "moxielinks.com": {
+    "mountain.com": {
+      "heuristicAction": "block"
+    },
+    "mouseflow.com": {
+      "heuristicAction": "block"
+    },
+    "mowuzoji.xyz": {
       "heuristicAction": "allow"
     },
-    "mozzart.ideaplus.mk": {
+    "mox.tv": {
+      "heuristicAction": "block"
+    },
+    "moxielinks.com": {
       "heuristicAction": "allow"
     },
-    "mp.4dex.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602098830165
+    "mparticle.com": {
+      "heuristicAction": "block"
     },
     "mpeasylink.com": {
       "heuristicAction": "block"
     },
     "mpianalytics.com": {
-      "heuristicAction": "block"
-    },
-    "mpio.io": {
       "heuristicAction": "allow"
     },
-    "mpp.vindicosuite.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601938263068
-    },
-    "mpshark.com": {
+    "mpio.io": {
       "heuristicAction": "allow"
     },
     "mpsnare.iesnare.com": {
       "heuristicAction": "cookieblock"
     },
+    "mql5.com": {
+      "heuristicAction": "allow"
+    },
     "mrelko.com": {
       "heuristicAction": "allow"
     },
-    "mrpfd.com": {
+    "mrpdata.net": {
       "heuristicAction": "allow"
     },
+    "mrpfd.com": {
+      "heuristicAction": "block"
+    },
     "mrtnsvr.com": {
       "heuristicAction": "allow"
     },
+    "msftauth.net": {
+      "heuristicAction": "allow"
+    },
     "msgapp.com": {
       "heuristicAction": "allow"
     },
+    "mshago.com": {
+      "heuristicAction": "allow"
+    },
     "msn.com": {
       "heuristicAction": "allow"
     },
@@ -6065,12 +6037,21 @@
     "mt1.google.com": {
       "heuristicAction": "cookieblock"
     },
-    "mtgroup.kr": {
+    "mt2.google.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "mt3.google.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "mtcaptcha.com": {
       "heuristicAction": "allow"
     },
-    "mtmo.cc": {
+    "mtgroup.kr": {
       "heuristicAction": "allow"
     },
+    "mtrackd.com": {
+      "heuristicAction": "block"
+    },
     "mts.ru": {
       "heuristicAction": "block"
     },
@@ -6080,21 +6061,14 @@
     "mts1.google.com": {
       "heuristicAction": "cookieblock"
     },
-    "mtvnetworks.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602165322464
-    },
     "mtvnservices.com": {
       "heuristicAction": "cookieblock"
     },
-    "muji.net": {
-      "heuristicAction": "allow"
-    },
     "mulesoft.com": {
       "heuristicAction": "allow"
     },
-    "musthird.com": {
-      "heuristicAction": "block"
+    "murdoch-website-001.azurewebsites.net": {
+      "heuristicAction": "allow"
     },
     "mw1.google.com": {
       "heuristicAction": "cookieblock"
@@ -6102,42 +6076,50 @@
     "mw2.google.com": {
       "heuristicAction": "cookieblock"
     },
-    "mxapis.com": {
+    "mxcdn.net": {
+      "heuristicAction": "block"
+    },
+    "mxfwdredir.com": {
       "heuristicAction": "allow"
     },
-    "mxplay.com": {
+    "mxptint.net": {
+      "heuristicAction": "block"
+    },
+    "mxradon.com": {
       "heuristicAction": "allow"
     },
-    "mydoterra.queue-it.net": {
-      "heuristicAction": "cookieblock"
+    "myaudience.de": {
+      "heuristicAction": "allow"
     },
     "myfinance.com": {
+      "heuristicAction": "block"
+    },
+    "mygovv4-webchat.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "mykhel.com": {
+    "myjscript.com": {
       "heuristicAction": "allow"
     },
-    "myopenads.com": {
+    "mymyads.net": {
       "heuristicAction": "allow"
     },
-    "myshopify.com": {
+    "mynetreklam.com": {
+      "heuristicAction": "allow"
+    },
+    "myopenads.com": {
       "heuristicAction": "allow"
     },
     "myvisualiq.net": {
       "heuristicAction": "block"
     },
-    "myvoicenation.com": {
+    "n2.hk": {
       "heuristicAction": "allow"
     },
-    "n.gemini.yahoo.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602129777154
-    },
-    "n1272serv.xyz": {
+    "nadavi.net": {
       "heuristicAction": "allow"
     },
-    "n2.hk": {
-      "heuristicAction": "allow"
+    "najva.com": {
+      "heuristicAction": "block"
     },
     "nakamasweb.com": {
       "heuristicAction": "allow"
@@ -6145,33 +6127,41 @@
     "nakanohito.jp": {
       "heuristicAction": "block"
     },
+    "nalog.ru": {
+      "heuristicAction": "allow"
+    },
     "namebrightstatic.com": {
       "heuristicAction": "allow"
     },
     "nanda.vn": {
       "heuristicAction": "block"
     },
-    "nanigans.com": {
-      "heuristicAction": "allow"
-    },
     "nanorep.co": {
       "heuristicAction": "cookieblock"
     },
+    "nanorep.com": {
+      "heuristicAction": "block"
+    },
     "nanosemantics.ru": {
       "heuristicAction": "allow"
     },
+    "narrativ.com": {
+      "heuristicAction": "block"
+    },
     "narrative.io": {
       "heuristicAction": "block"
     },
-    "native.sharethrough.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602018288094
+    "nate.com": {
+      "heuristicAction": "block"
     },
     "nativendo.de": {
       "heuristicAction": "block"
     },
     "nativeroll.tv": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
+    },
+    "nativery.com": {
+      "heuristicAction": "allow"
     },
     "navdmp.com": {
       "heuristicAction": "block"
@@ -6182,88 +6172,133 @@
     "nbc.com": {
       "heuristicAction": "allow"
     },
-    "nbcume.hb.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602005003033
+    "nbcnews.com": {
+      "heuristicAction": "allow"
+    },
+    "nbcnewyork.com": {
+      "heuristicAction": "allow"
+    },
+    "nbcsports.com": {
+      "heuristicAction": "allow"
+    },
+    "nbcuas.com": {
+      "heuristicAction": "block"
     },
     "nbcuni.com": {
       "heuristicAction": "cookieblock"
     },
     "nc0.co": {
+      "heuristicAction": "block"
+    },
+    "ncclick.co.kr": {
       "heuristicAction": "allow"
     },
     "nch.com.au": {
       "heuristicAction": "allow"
     },
+    "neimanmarcus.com": {
+      "heuristicAction": "allow"
+    },
     "neodatagroup.com": {
       "heuristicAction": "allow"
     },
-    "neppa-dsp-ad.com": {
+    "nessainy.net": {
       "heuristicAction": "allow"
     },
     "netdna-ssl.com": {
       "heuristicAction": "allow"
     },
-    "netmng.com": {
+    "netigate.se": {
+      "heuristicAction": "allow"
+    },
+    "netizen.co": {
       "heuristicAction": "block"
     },
-    "netrk.net": {
+    "netlify.com": {
       "heuristicAction": "allow"
     },
-    "network.bazaarvoice.com": {
-      "heuristicAction": "cookieblock"
+    "netmng.com": {
+      "heuristicAction": "block"
     },
     "networkad.net": {
       "heuristicAction": "allow"
     },
-    "networkn-d.openx.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602351211629
+    "networksolutions.com": {
+      "heuristicAction": "allow"
     },
-    "newaircloud.com": {
+    "neulion.com": {
       "heuristicAction": "allow"
     },
-    "newmedia.az": {
-      "heuristicAction": "block"
+    "new-programmatic.com": {
+      "heuristicAction": "allow"
     },
-    "newrelic.com": {
+    "newaircloud.com": {
       "heuristicAction": "allow"
     },
+    "newrelic.com": {
+      "heuristicAction": "block"
+    },
     "news-network.ru": {
       "heuristicAction": "allow"
     },
     "news.cn": {
       "heuristicAction": "allow"
     },
-    "news.google.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601973685701
+    "news.com.au": {
+      "heuristicAction": "allow"
+    },
+    "newsbreak.com": {
+      "heuristicAction": "allow"
+    },
+    "newsbreakapp.com": {
+      "heuristicAction": "allow"
     },
     "newscgp.com": {
       "heuristicAction": "block"
     },
-    "newshub.id": {
+    "newscorpaustralia.com": {
       "heuristicAction": "allow"
     },
     "newsmaxwidget.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "newsmemory.com": {
       "heuristicAction": "allow"
     },
-    "newsobserver.com": {
+    "newsnow.io": {
+      "heuristicAction": "allow"
+    },
+    "newsochub.com": {
+      "heuristicAction": "allow"
+    },
+    "newsquestdigital.co.uk": {
       "heuristicAction": "allow"
     },
-    "newyorker.com": {
+    "newsroom.bi": {
       "heuristicAction": "block"
     },
+    "newswatch.co.jp": {
+      "heuristicAction": "allow"
+    },
+    "newsweek.com": {
+      "heuristicAction": "allow"
+    },
+    "newtalk.tw": {
+      "heuristicAction": "allow"
+    },
     "newzit.com": {
       "heuristicAction": "allow"
     },
     "nextclick.pl": {
       "heuristicAction": "allow"
     },
-    "nextelection.app": {
+    "nextgov.com": {
+      "heuristicAction": "allow"
+    },
+    "nextmillmedia.com": {
+      "heuristicAction": "allow"
+    },
+    "nfcube.com": {
       "heuristicAction": "allow"
     },
     "ngpvan.com": {
@@ -6272,17 +6307,18 @@
     "ngs.ru": {
       "heuristicAction": "allow"
     },
-    "nicequest.com": {
+    "nice-incontact.com": {
       "heuristicAction": "allow"
     },
-    "nikon-cdn.com": {
+    "nikecloud.com": {
       "heuristicAction": "allow"
     },
-    "nikonsso.com": {
+    "nikon-cdn.com": {
       "heuristicAction": "allow"
     },
     "nimbleswan.io": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637854766510
     },
     "ninahale.net": {
       "heuristicAction": "allow"
@@ -6290,24 +6326,25 @@
     "nine.com.au": {
       "heuristicAction": "block"
     },
-    "nissanheliosna.d3.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602119730377
-    },
-    "nissanheliosna.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602272496857
-    },
-    "njih.net": {
+    "ning.com": {
       "heuristicAction": "allow"
     },
     "no-cache.hubspot.com": {
       "heuristicAction": "cookieblock"
     },
-    "norstatsurveys.com": {
+    "noclef.com": {
+      "heuristicAction": "allow"
+    },
+    "nofraud.com": {
+      "heuristicAction": "allow"
+    },
+    "nordot.jp": {
+      "heuristicAction": "allow"
+    },
+    "nordvpn.com": {
       "heuristicAction": "allow"
     },
-    "norton.com": {
+    "norstatsurveys.com": {
       "heuristicAction": "allow"
     },
     "nosto.com": {
@@ -6322,73 +6359,83 @@
     "nperf.com": {
       "heuristicAction": "allow"
     },
-    "npo.nl": {
-      "heuristicAction": "allow"
-    },
-    "npohosting.nl": {
+    "npr.org": {
       "heuristicAction": "allow"
     },
     "nr-data.net": {
       "heuristicAction": "block"
     },
-    "nsaudience.pl": {
+    "nrich.ai": {
+      "heuristicAction": "block"
+    },
+    "ns8ds.com": {
+      "heuristicAction": "allow"
+    },
+    "nsm-corp.com": {
+      "heuristicAction": "allow"
+    },
+    "nsp.gov.in": {
       "heuristicAction": "allow"
     },
     "ntnu.edu": {
       "heuristicAction": "allow"
     },
-    "ntvk1.ru": {
+    "nuance.com": {
+      "heuristicAction": "block"
+    },
+    "nudatasecurity.com": {
       "heuristicAction": "allow"
     },
     "nuggad.net": {
       "heuristicAction": "allow"
     },
-    "nxtck.com": {
-      "heuristicAction": "allow"
+    "nui.media": {
+      "heuristicAction": "block"
     },
-    "o-s.io": {
+    "nwmgroups.hu": {
       "heuristicAction": "allow"
     },
-    "o333o.com": {
+    "nyc3.cdn.digitaloceanspaces.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "nypost.com": {
       "heuristicAction": "allow"
     },
-    "oa-mssp.data.aliyun.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602232879017
+    "nytrng.com": {
+      "heuristicAction": "allow"
     },
-    "oa-ssp.data.aliyun.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602273544731
+    "o-s.io": {
+      "heuristicAction": "allow"
     },
-    "oadz.com": {
+    "o2u.jp": {
       "heuristicAction": "allow"
     },
-    "obs.cheqzone.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602347445747
+    "o3ae.net": {
+      "heuristicAction": "allow"
     },
-    "ocdn.eu": {
+    "o9trf8.net": {
       "heuristicAction": "allow"
     },
-    "octclck.xyz": {
+    "oackoubs.com": {
       "heuristicAction": "allow"
     },
-    "octivid.com": {
+    "ocdn.eu": {
+      "heuristicAction": "cookieblock"
+    },
+    "octobird.com": {
       "heuristicAction": "allow"
     },
-    "oddcast.com": {
+    "octogonehb.com": {
       "heuristicAction": "allow"
     },
     "odoocdn.com": {
       "heuristicAction": "allow"
     },
-    "officeworks.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602105908337
+    "official-coupons.com": {
+      "heuristicAction": "block"
     },
-    "officeworks.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602358562632
+    "official-deals.co.uk": {
+      "heuristicAction": "block"
     },
     "offlinx.com": {
       "heuristicAction": "allow"
@@ -6398,17 +6445,14 @@
     },
     "ok.ru": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1601973576526
-    },
-    "okccdn.com": {
-      "heuristicAction": "allow"
+      "nextUpdateTime": 1637748472191
     },
     "okezone.com": {
       "heuristicAction": "allow"
     },
     "okt.to": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1601981510026
+      "nextUpdateTime": 1637591141184
     },
     "okta.com": {
       "heuristicAction": "cookieblock"
@@ -6416,19 +6460,13 @@
     "olark.com": {
       "heuristicAction": "cookieblock"
     },
-    "olnl.net": {
-      "heuristicAction": "allow"
-    },
-    "olx-st.com": {
-      "heuristicAction": "block"
-    },
-    "omchanseyr.com": {
+    "olmfaberyp.xyz": {
       "heuristicAction": "allow"
     },
-    "omgpm.com": {
+    "omguk.com": {
       "heuristicAction": "allow"
     },
-    "omguk.com": {
+    "omnidesk.ru": {
       "heuristicAction": "allow"
     },
     "omniscientai.com": {
@@ -6444,6 +6482,9 @@
       "heuristicAction": "block"
     },
     "onaudience.com": {
+      "heuristicAction": "block"
+    },
+    "oncehub.com": {
       "heuristicAction": "allow"
     },
     "oncueapp.appspot.com": {
@@ -6452,9 +6493,6 @@
     "one.gov.hk": {
       "heuristicAction": "allow"
     },
-    "onecms.io": {
-      "heuristicAction": "allow"
-    },
     "onecount.net": {
       "heuristicAction": "allow"
     },
@@ -6462,17 +6500,27 @@
       "heuristicAction": "allow"
     },
     "onelink.me": {
+      "heuristicAction": "block"
+    },
+    "oneplus.net": {
       "heuristicAction": "allow"
     },
-    "onesignal.com": {
+    "onesdata.com": {
       "heuristicAction": "allow"
     },
-    "onet.hit.gemius.pl": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602319350963
+    "onesignal.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637648451318
     },
     "onet.pl": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
+    },
+    "onetag-sys.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637663293882
+    },
+    "onetrust.com": {
+      "heuristicAction": "cookieblock"
     },
     "onevision.com.tw": {
       "heuristicAction": "block"
@@ -6480,7 +6528,7 @@
     "online-metrix.net": {
       "heuristicAction": "block"
     },
-    "onlyred.net": {
+    "onnetwork.tv": {
       "heuristicAction": "allow"
     },
     "onrcx.com": {
@@ -6492,25 +6540,30 @@
     "onthe.io": {
       "heuristicAction": "block"
     },
+    "ontraport.net": {
+      "heuristicAction": "allow"
+    },
     "ooyala.com": {
       "heuristicAction": "allow"
     },
-    "opecloud.com": {
-      "heuristicAction": "block"
+    "opascp.com": {
+      "heuristicAction": "allow"
     },
-    "open.com.cn": {
+    "opcmarkets.com": {
       "heuristicAction": "allow"
     },
-    "openbid.pubmatic.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602050638764
+    "opecloud.com": {
+      "heuristicAction": "block"
     },
-    "openstat.net": {
+    "openshiftapps.com": {
       "heuristicAction": "allow"
     },
     "openx.net": {
       "heuristicAction": "block"
     },
+    "opera.com": {
+      "heuristicAction": "block"
+    },
     "opinionstage.com": {
       "heuristicAction": "allow"
     },
@@ -6529,45 +6582,66 @@
     "optimove.events": {
       "heuristicAction": "allow"
     },
-    "oracle.com": {
-      "heuristicAction": "block"
+    "optnx.com": {
+      "heuristicAction": "allow"
     },
-    "oraclecloud.com": {
+    "optyruntchan.com": {
+      "heuristicAction": "allow"
+    },
+    "oracle.com": {
       "heuristicAction": "allow"
     },
-    "oracleimg.com": {
+    "oraclecloud.com": {
       "heuristicAction": "block"
     },
+    "oracleinfinity.io": {
+      "heuristicAction": "allow"
+    },
     "orange-business.com": {
       "heuristicAction": "allow"
     },
-    "orangeads.fr": {
+    "orange.fr": {
       "heuristicAction": "allow"
     },
     "orbita.cloud": {
       "heuristicAction": "allow"
     },
+    "orcid.org": {
+      "heuristicAction": "allow"
+    },
+    "ordu.az": {
+      "heuristicAction": "allow"
+    },
     "oreillystatic.com": {
       "heuristicAction": "allow"
     },
-    "osano.com": {
+    "oribi.io": {
       "heuristicAction": "block"
     },
-    "otaserve.net": {
+    "origo.hu": {
       "heuristicAction": "allow"
     },
-    "otm-r.com": {
+    "os.uk": {
+      "heuristicAction": "allow"
+    },
+    "osano.com": {
       "heuristicAction": "block"
     },
-    "outbrain.com": {
+    "ostrichesica.com": {
+      "heuristicAction": "allow"
+    },
+    "otm-r.com": {
       "heuristicAction": "block"
     },
-    "outlookhindi.com": {
+    "otto.de": {
       "heuristicAction": "allow"
     },
-    "outstream.today": {
+    "oup.com": {
       "heuristicAction": "allow"
     },
+    "outbrain.com": {
+      "heuristicAction": "block"
+    },
     "ow5a.net": {
       "heuristicAction": "allow"
     },
@@ -6577,34 +6651,14 @@
     "ownpage.fr": {
       "heuristicAction": "allow"
     },
-    "p.alocdn.com": {
-      "heuristicAction": "block"
-    },
-    "p.cpx.to": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602258148192
-    },
-    "p.teads.tv": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602311638230
-    },
-    "p.tvpixel.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602188727534
-    },
-    "p.typekit.net": {
-      "heuristicAction": "cookieblock"
-    },
-    "p1.zemanta.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601966397031
+    "oxiapps.com": {
+      "heuristicAction": "allow"
     },
-    "p242.mimilcnf.pro": {
+    "oxybupav.xyz": {
       "heuristicAction": "allow"
     },
-    "pacificgasandelectricco.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602138803143
+    "p2r14.com": {
+      "heuristicAction": "block"
     },
     "paddle.com": {
       "heuristicAction": "allow"
@@ -6613,7 +6667,7 @@
       "heuristicAction": "allow"
     },
     "pages02.net": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "pages03.net": {
       "heuristicAction": "block"
@@ -6621,6 +6675,9 @@
     "pages04.net": {
       "heuristicAction": "allow"
     },
+    "pages05.net": {
+      "heuristicAction": "block"
+    },
     "pages06.net": {
       "heuristicAction": "allow"
     },
@@ -6630,19 +6687,15 @@
     "pages08.net": {
       "heuristicAction": "allow"
     },
-    "panel.adtodate.net": {
-      "heuristicAction": "allow"
+    "pagesense.io": {
+      "heuristicAction": "block"
     },
-    "panet.eu": {
+    "painaltube.com": {
       "heuristicAction": "allow"
     },
-    "pangu.kcsfile.com": {
+    "papercups.io": {
       "heuristicAction": "allow"
     },
-    "papi.look.360.cn": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602367932182
-    },
     "pardot.com": {
       "heuristicAction": "block"
     },
@@ -6652,87 +6705,91 @@
     "parsons.edu": {
       "heuristicAction": "allow"
     },
-    "particularaudience.com": {
+    "partnersrc.com": {
       "heuristicAction": "allow"
     },
-    "patreon.com": {
+    "pastelink.net": {
       "heuristicAction": "allow"
     },
-    "paxful.com": {
+    "pathfactory.com": {
+      "heuristicAction": "block"
+    },
+    "patreon.com": {
       "heuristicAction": "allow"
     },
     "pay.google.com": {
       "heuristicAction": "cookieblock"
     },
-    "paycom.com": {
-      "heuristicAction": "allow"
-    },
     "paypal.com": {
       "heuristicAction": "cookieblock"
     },
-    "pb.ua": {
+    "paypalobjects.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "paystack.com": {
       "heuristicAction": "allow"
     },
-    "pba.aws.lijit.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601939611868
+    "pb.ua": {
+      "heuristicAction": "allow"
     },
     "pbbl.co": {
       "heuristicAction": "block"
     },
-    "pbstck.com": {
+    "pbcdn.in": {
       "heuristicAction": "allow"
     },
-    "pc.com.cn": {
+    "pbs.org": {
       "heuristicAction": "allow"
     },
-    "pcmag.com": {
-      "heuristicAction": "block"
-    },
-    "pconline.com.cn": {
-      "heuristicAction": "block"
+    "pbskids.org": {
+      "heuristicAction": "allow"
     },
-    "pd.sharethis.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602153809133
+    "pbstck.com": {
+      "heuristicAction": "allow"
     },
-    "pdvacde.com": {
+    "pcone.com.tw": {
       "heuristicAction": "allow"
     },
-    "pelcro.com": {
+    "pdnegocios.cl": {
       "heuristicAction": "allow"
     },
-    "pelmorex.com": {
+    "pdst.fm": {
       "heuristicAction": "allow"
     },
-    "pendo.io": {
+    "pdvacde.com": {
       "heuristicAction": "block"
     },
-    "people.com.cn": {
+    "pdy5.net": {
       "heuristicAction": "allow"
     },
-    "percycle.com": {
-      "heuristicAction": "allow"
+    "pendo.io": {
+      "heuristicAction": "block"
     },
-    "performancefirst.jp": {
+    "penguin.com": {
       "heuristicAction": "allow"
     },
     "performi.com": {
       "heuristicAction": "allow"
     },
-    "permutive.app": {
+    "perimeterx.net": {
+      "heuristicAction": "allow"
+    },
+    "permutive.com": {
       "heuristicAction": "block"
     },
+    "persosa.com": {
+      "heuristicAction": "allow"
+    },
     "petametrics.com": {
       "heuristicAction": "block"
     },
-    "pgtb.me": {
+    "pfizer.com": {
       "heuristicAction": "allow"
     },
-    "philips.co.uk": {
+    "pgtb.me": {
       "heuristicAction": "allow"
     },
-    "philips.com": {
+    "phaserep.com": {
       "heuristicAction": "allow"
     },
     "photo.store.qq.com": {
@@ -6741,95 +6798,68 @@
     "photorank.me": {
       "heuristicAction": "block"
     },
-    "pi.pardot.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602088740721
+    "phywi.org": {
+      "heuristicAction": "allow"
     },
-    "piano.io": {
+    "pi-rate.com.au": {
       "heuristicAction": "allow"
     },
+    "piano.io": {
+      "heuristicAction": "block"
+    },
     "picasaweb.google.com": {
       "heuristicAction": "cookieblock"
     },
-    "pinduoduo.com": {
-      "heuristicAction": "allow"
+    "pico.tools": {
+      "heuristicAction": "block"
     },
-    "ping.chartbeat.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602278560774
+    "pimg.tw": {
+      "heuristicAction": "allow"
     },
-    "pingan.com": {
+    "pinduoduo.com": {
       "heuristicAction": "allow"
     },
-    "pingback.issuu.com": {
+    "pingan.com.cn": {
       "heuristicAction": "allow"
     },
     "pinterest.com": {
       "heuristicAction": "block"
     },
+    "piojm.tech": {
+      "heuristicAction": "allow"
+    },
+    "pipedrive.com": {
+      "heuristicAction": "allow"
+    },
     "pipes.yahoo.com": {
       "heuristicAction": "cookieblock"
     },
-    "piri.net": {
+    "pitchfork.com": {
       "heuristicAction": "allow"
     },
-    "pitchfork.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1601846670134
+    "pivotal.io": {
+      "heuristicAction": "allow"
     },
     "piwik.pro": {
       "heuristicAction": "block"
     },
-    "pixel.advertising.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601995995645
-    },
-    "pixel.cdnwidget.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602319269087
-    },
-    "pixel.mathtag.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602083998093
-    },
-    "pixel.pointmediatracker.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602345582748
-    },
-    "pixel.quantserve.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601976314353
-    },
-    "pixel.rubiconproject.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602020795935
-    },
-    "pixel.servebom.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602349576142
-    },
-    "pixel.sitescout.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601880779902
+    "piwikpro.com": {
+      "heuristicAction": "allow"
     },
-    "pixel.sojern.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601891472357
+    "pix.pub": {
+      "heuristicAction": "allow"
     },
-    "pixel.tapad.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602296209272
+    "pixelmarcado-2l44sujizq-ew.a.run.app": {
+      "heuristicAction": "allow"
     },
-    "pixel2.cheqzone.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601964731632
+    "pixfs.net": {
+      "heuristicAction": "allow"
     },
-    "pixelg.adswizz.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602290080722
+    "pixfuture.com": {
+      "heuristicAction": "allow"
     },
     "pixlee.co": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "pixlee.com": {
       "heuristicAction": "block"
@@ -6837,47 +6867,38 @@
     "pixnet.cc": {
       "heuristicAction": "allow"
     },
-    "pk.labocleo.org": {
-      "heuristicAction": "allow"
-    },
     "placed.com": {
       "heuristicAction": "allow"
     },
     "planalto.gov.br": {
       "heuristicAction": "allow"
     },
-    "platform-api.sharethis.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602223994935
-    },
-    "platform.bidgear.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602133549361
+    "platform.twitter.com": {
+      "heuristicAction": "cookieblock"
     },
-    "platform.iteratehq.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602038115638
+    "platformrijksoverheid.nl": {
+      "heuristicAction": "allow"
     },
-    "platform.linkedin.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602145546636
+    "plausible.io": {
+      "heuristicAction": "allow"
     },
-    "platform.twitter.com": {
-      "heuristicAction": "cookieblock"
+    "plavxml.com": {
+      "heuristicAction": "allow"
     },
     "play.google.com": {
       "heuristicAction": "cookieblock"
     },
-    "play.vidyard.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602282917182
-    },
     "playbuzz.com": {
       "heuristicAction": "allow"
     },
-    "player.aniview.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601892578750
+    "playfamily.ru": {
+      "heuristicAction": "allow"
+    },
+    "playground.xyz": {
+      "heuristicAction": "block"
+    },
+    "playmakerservices.com": {
+      "heuristicAction": "allow"
     },
     "playreplay.me": {
       "heuristicAction": "allow"
@@ -6885,21 +6906,31 @@
     "playreplay.net": {
       "heuristicAction": "allow"
     },
+    "plerdy.com": {
+      "heuristicAction": "allow"
+    },
     "plezi.co": {
       "heuristicAction": "allow"
     },
     "plista.com": {
       "heuristicAction": "block"
     },
-    "plus.google.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602215355828
+    "plu.mx": {
+      "heuristicAction": "block"
     },
-    "plus.sabavision.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601905204908
+    "plus500.com": {
+      "heuristicAction": "allow"
+    },
+    "pluto.tv": {
+      "heuristicAction": "allow"
+    },
+    "pnperf.com": {
+      "heuristicAction": "allow"
+    },
+    "pnstat.com": {
+      "heuristicAction": "allow"
     },
-    "poemsdeucewee.com": {
+    "podbean.com": {
       "heuristicAction": "allow"
     },
     "pointmediatracker.com": {
@@ -6908,19 +6939,31 @@
     "polarbyte.com": {
       "heuristicAction": "allow"
     },
-    "poll-maker.com": {
+    "politico.com": {
       "heuristicAction": "allow"
     },
     "poll.fm": {
       "heuristicAction": "allow"
     },
-    "poool.fr": {
+    "pollinator.me": {
+      "heuristicAction": "allow"
+    },
+    "popads.net": {
       "heuristicAction": "allow"
     },
     "popin.cc": {
       "heuristicAction": "block"
     },
+    "popkit.club": {
+      "heuristicAction": "allow"
+    },
+    "popmechanic.ru": {
+      "heuristicAction": "block"
+    },
     "popt.in": {
+      "heuristicAction": "block"
+    },
+    "popupmaker.com": {
       "heuristicAction": "allow"
     },
     "port.hu": {
@@ -6929,25 +6972,32 @@
     "portalinmobiliario.com": {
       "heuristicAction": "allow"
     },
-    "pos.baidu.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601915381141
+    "portoutsid.xyz": {
+      "heuristicAction": "allow"
     },
     "postaffiliatepro.com": {
+      "heuristicAction": "block"
+    },
+    "postimees.ee": {
+      "heuristicAction": "allow"
+    },
+    "postquare.com": {
       "heuristicAction": "allow"
     },
     "postrelease.com": {
       "heuristicAction": "block"
     },
-    "powerlinks.com": {
-      "heuristicAction": "block"
+    "powerad.ai": {
+      "heuristicAction": "allow"
     },
     "powerreviews.com": {
       "heuristicAction": "allow"
     },
-    "pp.lp4.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601906355280
+    "powersportsid.com": {
+      "heuristicAction": "allow"
+    },
+    "powr.io": {
+      "heuristicAction": "allow"
     },
     "pplive.com": {
       "heuristicAction": "allow"
@@ -6955,29 +7005,25 @@
     "prcdn.co": {
       "heuristicAction": "block"
     },
-    "prebid-eu.creativecdn.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602250362504
+    "prdredir.com": {
+      "heuristicAction": "allow"
     },
-    "prebid.a-mo.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602128690166
+    "preezie-analytics-hub.azurewebsites.net": {
+      "heuristicAction": "allow"
     },
-    "prebid.technoratimedia.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601937523227
+    "premier.one": {
+      "heuristicAction": "allow"
     },
     "prensaiberica.es": {
       "heuristicAction": "allow"
     },
-    "prfct.co": {
+    "pressekompass.net": {
       "heuristicAction": "block"
     },
-    "prg.smartadserver.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601918796093
+    "prfct.co": {
+      "heuristicAction": "block"
     },
-    "priceline.com": {
+    "pricelib.ru": {
       "heuristicAction": "allow"
     },
     "primead.jp": {
@@ -6986,35 +7032,32 @@
     "primecaster.net": {
       "heuristicAction": "allow"
     },
-    "printful.com": {
-      "heuristicAction": "allow"
+    "primis.tech": {
+      "heuristicAction": "block"
     },
     "prisasd.com": {
       "heuristicAction": "allow"
     },
-    "prismamedia.com": {
+    "prismaconnect.fr": {
       "heuristicAction": "allow"
     },
-    "privacy.trustcommander.net": {
-      "heuristicAction": "allow"
+    "privacy-mgmt.com": {
+      "heuristicAction": "block"
     },
     "privacymanager.io": {
+      "heuristicAction": "cookieblock"
+    },
+    "privally.global": {
       "heuristicAction": "allow"
     },
-    "privally.io": {
+    "privatehomeclips.com": {
       "heuristicAction": "allow"
     },
     "privymktg.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602264700400
-    },
-    "prixa.net": {
-      "heuristicAction": "allow"
-    },
-    "prixacdn.net": {
-      "heuristicAction": "allow"
+      "nextUpdateTime": 1637897464175
     },
-    "prlog.org": {
+    "prnewswire.com": {
       "heuristicAction": "allow"
     },
     "pro-market.net": {
@@ -7026,88 +7069,96 @@
     "prod-anchorage-proxy-connext.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "prod-api-funimationnow.dadcdigital.com": {
+    "prod-api-coreapi.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "prod-cosprings-proxy-connext.azurewebsites.net": {
+    "prod-cedarrapids-proxy-connext.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "prod-dfm-proxy-connext.azurewebsites.net": {
+    "prod-columbian-proxy-connext.azurewebsites.net": {
+      "heuristicAction": "allow"
+    },
+    "prod-cosprings-proxy-connext.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "prod-mng-proxy-connext.azurewebsites.net": {
+    "prod-dfm-proxy-connext.azurewebsites.net": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602184427468
+      "nextUpdateTime": 1637668696630
     },
-    "prod-newsday-proxy-connext.azurewebsites.net": {
+    "prod-itex-proxy-connext.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "prod-review-journal-proxy-connext.azurewebsites.net": {
+    "prod-newsday-proxy-connext.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "prod-smi-proxy-connext.azurewebsites.net": {
+    "prod-nola-proxy-connext.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "prod-spokesman-proxy-connext.azurewebsites.net": {
+    "prod-review-journal-proxy-connext.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "prod-tampabay-proxy-connext.azurewebsites.net": {
+    "prod-saltwire-proxy-connext.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "prod01.kaxsdc.com": {
+    "prod-smi-proxy-connext.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "producebreed.com": {
+    "prod-tampabay-proxy-connext.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "profiles.tagger.opecloud.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602204757561
-    },
-    "programattik.com": {
+    "prodmp.ru": {
       "heuristicAction": "block"
     },
-    "project1service.com": {
+    "profiledata.co.za": {
       "heuristicAction": "allow"
     },
-    "prometeo-media-service.com": {
+    "project1service.com": {
       "heuristicAction": "allow"
     },
-    "promos.rtm.com": {
+    "prolitteris.ch": {
       "heuristicAction": "allow"
     },
+    "prometeo-media-service.com": {
+      "heuristicAction": "block"
+    },
     "proofpoint.com": {
       "heuristicAction": "block"
     },
-    "propermedia-d.openx.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602016597448
+    "propellerclick.com": {
+      "heuristicAction": "allow"
+    },
+    "proper.io": {
+      "heuristicAction": "block"
     },
-    "prosumsit.com": {
+    "propertyguru.com": {
       "heuristicAction": "allow"
     },
-    "provenexpert.com": {
+    "protecmedia.com": {
       "heuristicAction": "allow"
     },
     "provenpixel.com": {
+      "heuristicAction": "block"
+    },
+    "provesrc.com": {
       "heuristicAction": "allow"
     },
-    "proxad.net": {
+    "providesupport.com": {
       "heuristicAction": "allow"
     },
-    "ps.eyeota.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602203277374
+    "proxad.net": {
+      "heuristicAction": "allow"
     },
     "psakdin.co.il": {
       "heuristicAction": "allow"
     },
+    "psimg.com": {
+      "heuristicAction": "allow"
+    },
     "pswec.com": {
       "heuristicAction": "allow"
     },
-    "pt.ispot.tv": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601970044880
+    "pterhearthink.xyz": {
+      "heuristicAction": "allow"
     },
     "ptgncdn.com": {
       "heuristicAction": "allow"
@@ -7115,121 +7166,100 @@
     "pub.network": {
       "heuristicAction": "block"
     },
-    "pubads.g.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602248461999
+    "pubgalaxy.com": {
+      "heuristicAction": "block"
     },
-    "pubble.io": {
-      "heuristicAction": "allow"
+    "public.tableau.com": {
+      "heuristicAction": "cookieblock"
     },
-    "public.servenobid.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602008959913
+    "publicoid.com": {
+      "heuristicAction": "allow"
     },
-    "publicradio.org": {
+    "publift.com": {
       "heuristicAction": "allow"
     },
     "publir.com": {
       "heuristicAction": "allow"
     },
+    "publisherdesk.com": {
+      "heuristicAction": "allow"
+    },
     "publishme.se": {
       "heuristicAction": "allow"
     },
     "pubmatic.com": {
       "heuristicAction": "block"
     },
-    "pubstack.io": {
-      "heuristicAction": "block"
-    },
     "pulsembed.eu": {
       "heuristicAction": "allow"
     },
-    "purch-match.dotomi.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602362186520
-    },
-    "purch-sync.go.sonobi.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602026135730
-    },
-    "purechat.com": {
-      "heuristicAction": "allow"
-    },
-    "push.world": {
+    "pulsemediatv.com": {
       "heuristicAction": "allow"
     },
-    "push.zhanzhang.baidu.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601921035080
-    },
-    "pushbird.com": {
+    "punctuations.in": {
       "heuristicAction": "allow"
     },
-    "pushe.co": {
+    "puntodecompras.com.co": {
       "heuristicAction": "allow"
     },
-    "pushnami.com": {
+    "purechat.com": {
       "heuristicAction": "block"
     },
-    "pvsite.zol.com.cn": {
+    "purplepatch.online": {
       "heuristicAction": "allow"
     },
-    "pvxt.net": {
-      "heuristicAction": "allow"
+    "push.world": {
+      "heuristicAction": "block"
     },
-    "px-cloud.net": {
+    "pushengage.com": {
       "heuristicAction": "allow"
     },
-    "px.ads.linkedin.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602329864419
+    "pusher.com": {
+      "heuristicAction": "block"
     },
-    "px.airpr.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602027593662
+    "pushnami.com": {
+      "heuristicAction": "block"
     },
-    "px.marchex.io": {
+    "pushwoosh.com": {
       "heuristicAction": "allow"
     },
-    "px.moatads.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602038362789
-    },
-    "px.owneriq.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602141008971
+    "pvd.to": {
+      "heuristicAction": "allow"
     },
-    "px.powerlinks.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602344340277
+    "pvxt.net": {
+      "heuristicAction": "allow"
     },
     "pxf.io": {
+      "heuristicAction": "block"
+    },
+    "pymnts.com": {
       "heuristicAction": "allow"
     },
     "pymx5.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602165770487
+      "nextUpdateTime": 1637822508873
     },
-    "q.quora.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602370761974
+    "qbrick.com": {
+      "heuristicAction": "allow"
     },
     "qchannel03.cn": {
       "heuristicAction": "allow"
     },
-    "qds0l.publishers.tremorhub.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602242008241
-    },
     "qhupdate.com": {
       "heuristicAction": "allow"
     },
-    "qiyukf.com": {
+    "qichacha.com": {
       "heuristicAction": "allow"
     },
-    "qlitics.com": {
+    "qiota.com": {
       "heuristicAction": "allow"
     },
+    "qiyukf.com": {
+      "heuristicAction": "block"
+    },
+    "qlitics.com": {
+      "heuristicAction": "block"
+    },
     "qoo10.in": {
       "heuristicAction": "allow"
     },
@@ -7242,59 +7272,73 @@
     "qs.com": {
       "heuristicAction": "allow"
     },
-    "qsstats.com": {
+    "qualaroo.com": {
       "heuristicAction": "allow"
     },
     "qualtrics.com": {
       "heuristicAction": "cookieblock"
     },
-    "quantad.io": {
-      "heuristicAction": "allow"
-    },
     "quantserve.com": {
       "heuristicAction": "block"
     },
     "quantumdex.io": {
       "heuristicAction": "block"
     },
+    "quantumgraph.com": {
+      "heuristicAction": "allow"
+    },
     "quantummetric.com": {
       "heuristicAction": "block"
     },
-    "queryly.com": {
-      "heuristicAction": "allow"
-    },
-    "questionpro.com": {
+    "queryly.com": {
       "heuristicAction": "allow"
     },
     "queue-it.net": {
       "heuristicAction": "cookieblock"
     },
-    "quickkoala.io": {
+    "quicca.com": {
+      "heuristicAction": "allow"
+    },
+    "quickbooksconnect.com": {
       "heuristicAction": "allow"
     },
-    "quiq-api.com": {
+    "quickkoala.io": {
       "heuristicAction": "allow"
     },
+    "quiq-cdn.com": {
+      "heuristicAction": "block"
+    },
     "quitzon.net": {
+      "heuristicAction": "block"
+    },
+    "qumg.net": {
+      "heuristicAction": "allow"
+    },
+    "qumucloud.com": {
       "heuristicAction": "allow"
     },
     "quora.com": {
       "heuristicAction": "block"
     },
+    "quotemedia.com": {
+      "heuristicAction": "allow"
+    },
+    "qvig.net": {
+      "heuristicAction": "allow"
+    },
     "qy.net": {
       "heuristicAction": "allow"
     },
     "r-ad.ne.jp": {
       "heuristicAction": "block"
     },
-    "r.adrta.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602169293990
+    "r.bing.com": {
+      "heuristicAction": "cookieblock"
     },
-    "radissonhotels.com": {
+    "r2b2.cz": {
       "heuristicAction": "allow"
     },
-    "rainbowred.com": {
+    "radiokp.ru": {
       "heuristicAction": "allow"
     },
     "rakuten.co.jp": {
@@ -7303,39 +7347,37 @@
     "rakuten.com": {
       "heuristicAction": "block"
     },
+    "ramblechat.com": {
+      "heuristicAction": "block"
+    },
     "rambler.ru": {
       "heuristicAction": "cookieblock"
     },
-    "randomhouse.com": {
+    "rapidzebra.io": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1638065708680
+    },
+    "rave-ecwid.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "rating-widget.com": {
+    "rawstory.com": {
       "heuristicAction": "allow"
     },
     "raxcdn.com": {
       "heuristicAction": "allow"
     },
-    "raycommedia.com": {
+    "razorpay.com": {
       "heuristicAction": "allow"
     },
-    "razorpay.com": {
+    "rbb-online.de": {
       "heuristicAction": "allow"
     },
-    "rc.rlcdn.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602042069460
+    "rbnt.org": {
+      "heuristicAction": "allow"
     },
     "rcapiuseridexchange.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "rcci.demdex.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602054619490
-    },
-    "rcci.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601927398916
-    },
     "rcom-eu.dynamicyield.com": {
       "heuristicAction": "cookieblock"
     },
@@ -7348,26 +7390,35 @@
     "rcs.it": {
       "heuristicAction": "allow"
     },
-    "rcsmetrics.it": {
-      "heuristicAction": "allow"
-    },
     "rctiplus.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
+    },
+    "rcvlink.com": {
+      "heuristicAction": "block"
+    },
+    "rd.services": {
+      "heuristicAction": "block"
     },
     "rdcdn.com": {
       "heuristicAction": "allow"
     },
+    "rdstation.com.br": {
+      "heuristicAction": "block"
+    },
     "reachmax.cn": {
       "heuristicAction": "block"
     },
     "reactful.com": {
+      "heuristicAction": "block"
+    },
+    "readserver.net": {
       "heuristicAction": "allow"
     },
     "realclick.co.kr": {
       "heuristicAction": "allow"
     },
-    "realite.id": {
-      "heuristicAction": "block"
+    "realmagnet.land": {
+      "heuristicAction": "allow"
     },
     "realsrv.com": {
       "heuristicAction": "block"
@@ -7375,33 +7426,31 @@
     "realtime.email": {
       "heuristicAction": "allow"
     },
-    "rec-engine.com": {
+    "reamedia.com.au": {
+      "heuristicAction": "allow"
+    },
+    "recaptcha.net": {
+      "heuristicAction": "cookieblock"
+    },
+    "reciteme.com": {
       "heuristicAction": "allow"
     },
-    "recobell.io": {
+    "recognified.net": {
       "heuristicAction": "allow"
     },
     "recommendationengine.googleapis.com": {
       "heuristicAction": "cookieblock"
     },
-    "recreativ.ru": {
+    "recotap.com": {
       "heuristicAction": "allow"
     },
-    "recruitics.com": {
+    "recreationid.com": {
       "heuristicAction": "allow"
     },
-    "recv-bak-wd.gridsumdissector.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602272913471
-    },
-    "recv-wd.gridsumdissector.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602380448892
-    },
-    "redbubble.com": {
+    "recruiterbox.com": {
       "heuristicAction": "allow"
     },
-    "redcross.org": {
+    "recruitics.com": {
       "heuristicAction": "allow"
     },
     "reddit.com": {
@@ -7413,59 +7462,55 @@
     "redintelligence.net": {
       "heuristicAction": "allow"
     },
-    "redlink.com": {
+    "ref-r.com": {
       "heuristicAction": "allow"
     },
-    "refocus.ru": {
+    "referralrock.com": {
       "heuristicAction": "allow"
     },
-    "registercom.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601942960569
+    "refersion.com": {
+      "heuristicAction": "allow"
     },
-    "registercom.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601974777657
+    "reflow.tv": {
+      "heuristicAction": "allow"
     },
     "regroup.com": {
       "heuristicAction": "allow"
     },
     "reichelcormier.bid": {
-      "heuristicAction": "block"
-    },
-    "relap.io": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602091447839
+      "nextUpdateTime": 1637813779526
     },
-    "relateddigital.com": {
+    "reignn.com": {
       "heuristicAction": "allow"
     },
-    "remarqable.com": {
+    "rejoiner.com": {
       "heuristicAction": "allow"
     },
-    "renotifier.miniclippt.com": {
+    "relaido.jp": {
       "heuristicAction": "allow"
     },
-    "rentracks.jp": {
-      "heuristicAction": "block"
+    "relap.info": {
+      "heuristicAction": "allow"
     },
-    "report.huatuo.qq.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602298085654
+    "relap.io": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637592609663
     },
-    "report.syzs.qq.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602234325378
+    "relationer.xyz": {
+      "heuristicAction": "allow"
     },
-    "republer.com": {
+    "relish.com": {
+      "heuristicAction": "allow"
+    },
+    "remixd.com": {
       "heuristicAction": "block"
     },
-    "res.qhupdate.com": {
-      "heuristicAction": "allow"
+    "rentracks.jp": {
+      "heuristicAction": "block"
     },
-    "res.wx.qq.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602342749669
+    "republer.com": {
+      "heuristicAction": "block"
     },
     "research-int.se": {
       "heuristicAction": "block"
@@ -7476,15 +7521,23 @@
     "researchnow.com": {
       "heuristicAction": "block"
     },
-    "resniks.pro": {
+    "resellerratings.com": {
+      "heuristicAction": "allow"
+    },
+    "resetdigital.co": {
+      "heuristicAction": "block"
+    },
+    "resetsrv.com": {
       "heuristicAction": "allow"
     },
     "reson8.com": {
       "heuristicAction": "block"
     },
-    "resources.xg4ken.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602006584530
+    "resonate.com": {
+      "heuristicAction": "allow"
+    },
+    "responsetap.com": {
+      "heuristicAction": "allow"
     },
     "retailrocket.net": {
       "heuristicAction": "block"
@@ -7492,16 +7545,19 @@
     "retargetly.com": {
       "heuristicAction": "block"
     },
-    "retentioneering.com": {
+    "reuters.com": {
+      "heuristicAction": "allow"
+    },
+    "rev-stripe.com": {
       "heuristicAction": "allow"
     },
-    "rev.uar.hubpd.com": {
+    "revain.org": {
       "heuristicAction": "allow"
     },
     "revcontent.com": {
       "heuristicAction": "block"
     },
-    "reverb-assets.com": {
+    "revenuehits.com": {
       "heuristicAction": "allow"
     },
     "revive-adserver.net": {
@@ -7510,21 +7566,24 @@
     "revjet.com": {
       "heuristicAction": "block"
     },
+    "revoffers.com": {
+      "heuristicAction": "allow"
+    },
     "rezync.com": {
       "heuristicAction": "block"
     },
-    "rferl.org": {
-      "heuristicAction": "allow"
-    },
     "rfihub.com": {
       "heuristicAction": "block"
     },
     "rfksrv.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "cookieblock"
     },
     "rfvk.net": {
       "heuristicAction": "allow"
     },
+    "rgreatedins.xyz": {
+      "heuristicAction": "allow"
+    },
     "ria.ru": {
       "heuristicAction": "block"
     },
@@ -7534,16 +7593,19 @@
     "richrelevance.com": {
       "heuristicAction": "block"
     },
+    "ricoh.co.jp": {
+      "heuristicAction": "allow"
+    },
     "rightinthebox.com": {
       "heuristicAction": "allow"
     },
     "rightmessage.com": {
       "heuristicAction": "allow"
     },
-    "rightnowtech.com": {
+    "rijksoverheid.nl": {
       "heuristicAction": "allow"
     },
-    "rijksoverheid.nl": {
+    "ringpublishing.com": {
       "heuristicAction": "allow"
     },
     "riotgames.com": {
@@ -7552,240 +7614,176 @@
     "riskified.com": {
       "heuristicAction": "block"
     },
+    "ritzau.dk": {
+      "heuristicAction": "allow"
+    },
     "riverhit.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
     "rkdms.com": {
       "heuristicAction": "block"
     },
-    "rktch.com": {
+    "rkiapps.com": {
       "heuristicAction": "allow"
     },
     "rlcdn.com": {
       "heuristicAction": "block"
     },
-    "rmtag.com": {
+    "rlets.com": {
       "heuristicAction": "block"
     },
-    "rmulus.com": {
+    "rmtag.com": {
       "heuristicAction": "allow"
     },
+    "rndskittytor.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637869130769
+    },
     "rnengage.com": {
       "heuristicAction": "block"
     },
-    "rockcontent.com": {
+    "rnp.br": {
       "heuristicAction": "allow"
     },
-    "roku.com": {
+    "rocketmortgage.com": {
       "heuristicAction": "allow"
     },
-    "rollingstone.com": {
+    "roeye.com": {
       "heuristicAction": "allow"
     },
-    "rosewe.com": {
+    "rokt.com": {
       "heuristicAction": "allow"
     },
-    "rotita.com": {
+    "roku.com": {
       "heuristicAction": "allow"
     },
-    "router.infolinks.com": {
+    "rollingstone.com": {
       "heuristicAction": "allow"
     },
-    "rstbtmd.com": {
+    "roularta.be": {
       "heuristicAction": "allow"
     },
-    "rsz.sk": {
-      "heuristicAction": "allow"
+    "route-fifty.com": {
+      "heuristicAction": "block"
     },
-    "rt.ru": {
+    "roymorgan.com": {
       "heuristicAction": "allow"
     },
-    "rtbsuperhub.com": {
+    "roytheticc.xyz": {
       "heuristicAction": "allow"
     },
-    "rtd-tm.everesttech.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602180206329
+    "rqtrk.eu": {
+      "heuristicAction": "allow"
     },
-    "rtk.io": {
-      "heuristicAction": "block"
+    "rsz.sk": {
+      "heuristicAction": "allow"
     },
-    "rtm.com": {
+    "rtactivate.com": {
       "heuristicAction": "allow"
     },
+    "rtb.com.ru": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637419057691
+    },
     "rtmark.net": {
       "heuristicAction": "block"
     },
     "rtr-vesti.ru": {
       "heuristicAction": "allow"
     },
+    "rtrcdn.com": {
+      "heuristicAction": "allow"
+    },
+    "rtxapps.com": {
+      "heuristicAction": "allow"
+    },
     "rubiconproject.com": {
       "heuristicAction": "block"
     },
-    "rum.uptime.com": {
-      "heuristicAction": "block"
+    "rudo.video": {
+      "heuristicAction": "allow"
     },
-    "rumble.com": {
+    "rue20.club": {
       "heuristicAction": "allow"
     },
+    "rumble.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637707223508
+    },
     "rumiview.com": {
       "heuristicAction": "block"
     },
     "run-syndicate.com": {
       "heuristicAction": "allow"
     },
+    "runative-syndicate.com": {
+      "heuristicAction": "allow"
+    },
+    "runhosting.com": {
+      "heuristicAction": "allow"
+    },
+    "rusobr.ru": {
+      "heuristicAction": "allow"
+    },
     "russia.tv": {
       "heuristicAction": "allow"
     },
     "rutarget.ru": {
       "heuristicAction": "block"
     },
+    "rvrpushserv.com": {
+      "heuristicAction": "allow"
+    },
     "ryvx.net": {
       "heuristicAction": "allow"
     },
     "rzk-m.com": {
       "heuristicAction": "allow"
     },
+    "s-i-r.de": {
+      "heuristicAction": "allow"
+    },
     "s-static.ak.facebook.com": {
       "heuristicAction": "cookieblock"
     },
-    "s.360.cn": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602190929287
-    },
-    "s.adroll.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602097010606
-    },
-    "s.amazon-adsystem.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602205985632
-    },
-    "s.dpmsrv.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601890500773
-    },
-    "s.salecycle.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602222020792
-    },
-    "s.shld.net": {
+    "s3-us-west-2.amazonaws.com": {
       "heuristicAction": "allow"
     },
-    "s.skimresources.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602298897231
-    },
-    "s.thebrighttag.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602347555959
-    },
-    "s.tribalfusion.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602178613054
-    },
-    "s1.mediaad.org": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602195611237
-    },
-    "s10.histats.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602067951576
-    },
-    "s1061282284.t.eloqua.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602282129841
-    },
-    "s1411.t.eloqua.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602141596214
-    },
-    "s1583749854.t.eloqua.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601926283321
-    },
-    "s19.cnzz.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602161831981
-    },
-    "s2044559064.t.eloqua.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601939229437
-    },
-    "s21.cnzz.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602307970326
-    },
-    "s23.cnzz.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602087873223
-    },
-    "s3.cheqzone.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602375598844
-    },
-    "s301091484.t.eloqua.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601929872971
-    },
-    "s457207082.t.eloqua.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602171063890
+    "s3.amazonaws.com": {
+      "heuristicAction": "cookieblock"
     },
-    "s5.cnzz.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602111953853
+    "s3xified.com": {
+      "heuristicAction": "allow"
     },
     "s5o.ru": {
       "heuristicAction": "allow"
     },
-    "s6.cnzz.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602026083580
-    },
-    "s68275882.t.eloqua.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602172314157
-    },
-    "s7.addthis.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602098120848
-    },
-    "s700.t.eloqua.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602361002131
-    },
-    "s9.cnzz.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601889638469
-    },
-    "s95.cnzz.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602055165910
-    },
-    "saas-bbw.userreplay.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602009150007
-    },
     "sabavision.com": {
       "heuristicAction": "block"
     },
-    "sabay.com": {
+    "sabrecdn.com": {
       "heuristicAction": "allow"
     },
-    "sacbee.com": {
-      "heuristicAction": "block"
+    "safarme.ir": {
+      "heuristicAction": "allow"
+    },
+    "sageportal.com": {
+      "heuristicAction": "allow"
     },
     "sagetalk.io": {
       "heuristicAction": "allow"
     },
+    "sailplay.net": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637761760168
+    },
     "sajari.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "salecycle.com": {
       "heuristicAction": "block"
     },
-    "salemwebnetwork.com": {
+    "salemove.com": {
       "heuristicAction": "allow"
     },
     "salesforce.com": {
@@ -7794,22 +7792,34 @@
     "salesforceliveagent.com": {
       "heuristicAction": "cookieblock"
     },
-    "salesiq.zoho.com": {
-      "heuristicAction": "allow"
-    },
     "salesloft.com": {
       "heuristicAction": "block"
     },
+    "salesmanago.pl": {
+      "heuristicAction": "block"
+    },
+    "salsalabs.org": {
+      "heuristicAction": "cookieblock"
+    },
     "samandehi.ir": {
       "heuristicAction": "block"
     },
     "samba.tv": {
       "heuristicAction": "block"
     },
+    "samplicio.us": {
+      "heuristicAction": "block"
+    },
+    "samv4prod-webchat.azurewebsites.net": {
+      "heuristicAction": "allow"
+    },
+    "sandisk.com": {
+      "heuristicAction": "allow"
+    },
     "sanjagh.com": {
       "heuristicAction": "block"
     },
-    "sanoma.fi": {
+    "santander.com.br": {
       "heuristicAction": "allow"
     },
     "sape.ru": {
@@ -7818,99 +7828,99 @@
     "sapi.map.baidu.com": {
       "heuristicAction": "cookieblock"
     },
-    "sas.com": {
+    "sardine.ai": {
       "heuristicAction": "allow"
     },
-    "sb.scorecardresearch.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601877050404
+    "sas.com": {
+      "heuristicAction": "allow"
     },
-    "sbmwmotor.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601900845827
+    "sasinsetuid.com": {
+      "heuristicAction": "allow"
     },
-    "sc-static.net": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602052112351
+    "satr.jp": {
+      "heuristicAction": "allow"
     },
-    "scarabresearch.com": {
-      "heuristicAction": "block"
+    "sayweee.net": {
+      "heuristicAction": "allow"
     },
-    "scatec.io": {
+    "sber.ru": {
       "heuristicAction": "allow"
     },
-    "scdn.cxense.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602301965255
+    "sbermarketing.ru": {
+      "heuristicAction": "allow"
     },
-    "scene7.com": {
+    "sbicard.org": {
       "heuristicAction": "allow"
     },
-    "scenepass.com": {
+    "sbnation.com": {
       "heuristicAction": "allow"
     },
-    "sched.activehosted.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602247108443
+    "sc-static.net": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637912189827
+    },
+    "scarabresearch.com": {
+      "heuristicAction": "block"
+    },
+    "scatec.io": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637910425828
     },
     "schibsted.com": {
       "heuristicAction": "cookieblock"
     },
+    "schibsted.io": {
+      "heuristicAction": "cookieblock"
+    },
     "scholarlyiq.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "sciencedirect.com": {
-      "heuristicAction": "allow"
-    },
-    "sciencemag.org": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "sciencex.com": {
-      "heuristicAction": "allow"
-    },
-    "scmp.com": {
-      "heuristicAction": "allow"
-    },
-    "scoop.it": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637912305067
     },
     "scorecardresearch.com": {
       "heuristicAction": "block"
     },
-    "scout-cdn.salesloft.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602096978415
+    "scorestream.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637847353433
     },
     "scribblelive.com": {
       "heuristicAction": "allow"
     },
-    "script.4dex.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602251014741
+    "scribd.com": {
+      "heuristicAction": "cookieblock"
     },
-    "script.dotmetrics.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602278727107
+    "scrippsdigital.com": {
+      "heuristicAction": "block"
     },
     "script.ioam.de": {
       "heuristicAction": "cookieblock"
     },
+    "scriptspeak.com": {
+      "heuristicAction": "allow"
+    },
+    "scsstatic.ch": {
+      "heuristicAction": "allow"
+    },
     "scupio.com": {
       "heuristicAction": "block"
     },
-    "sddan.com": {
+    "sdlcdn.com": {
       "heuristicAction": "allow"
     },
-    "sdlcdn.com": {
+    "sdqoi2d.com": {
       "heuristicAction": "allow"
     },
-    "se.monetate.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602132174138
+    "seadform.net": {
+      "heuristicAction": "allow"
     },
-    "search.spotxchange.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602220572317
+    "seamlessaccess.org": {
+      "heuristicAction": "block"
     },
     "search.yahoo.com": {
       "heuristicAction": "cookieblock"
@@ -7919,76 +7929,19 @@
       "heuristicAction": "allow"
     },
     "searchiq.co": {
-      "heuristicAction": "allow"
-    },
-    "sears.demdex.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601898524030
-    },
-    "searsholdings.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602011616601
-    },
-    "seccdn-gl.imrworldwide.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602061719559
+      "heuristicAction": "block"
     },
-    "secrank.cn": {
+    "sears.com": {
       "heuristicAction": "allow"
     },
-    "section.io": {
+    "searshc.com": {
       "heuristicAction": "allow"
     },
-    "secure-assets.rubiconproject.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602059253054
-    },
-    "secure-au.imrworldwide.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602008173018
-    },
-    "secure-dcr.imrworldwide.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602126109095
-    },
-    "secure-ds.serving-sys.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601979038058
-    },
-    "secure-gl.imrworldwide.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602257269255
-    },
-    "secure-nz.imrworldwide.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602238398801
-    },
-    "secure-us.imrworldwide.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601881444709
-    },
-    "secure-web.cisco.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602378055496
-    },
-    "secure.adnxs.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601978353332
-    },
-    "secure.leadback.advertising.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602182833149
-    },
-    "secure.nikonsso.com": {
+    "secondstreetapp.com": {
       "heuristicAction": "allow"
     },
-    "secure.quantserve.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602371959433
-    },
-    "secure.statcounter.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601965857326
+    "section.io": {
+      "heuristicAction": "allow"
     },
     "secureaddisplay.com": {
       "heuristicAction": "allow"
@@ -7998,17 +7951,19 @@
     },
     "securedvisit.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602376785866
+      "nextUpdateTime": 1638072894641
     },
-    "securepubads.g.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601888542855
+    "secureprivacy.ai": {
+      "heuristicAction": "allow"
     },
     "secureserver.net": {
       "heuristicAction": "block"
     },
-    "securetve.com": {
-      "heuristicAction": "allow"
+    "securiti.ai": {
+      "heuristicAction": "block"
+    },
+    "securitymetrics.com": {
+      "heuristicAction": "cookieblock"
     },
     "seedr.com": {
       "heuristicAction": "block"
@@ -8016,19 +7971,17 @@
     "seedtag.com": {
       "heuristicAction": "block"
     },
+    "seekingalpha.com": {
+      "heuristicAction": "allow"
+    },
     "segment.com": {
       "heuristicAction": "block"
     },
-    "segment.prod.bidr.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601987753587
-    },
-    "segs.jp": {
+    "segmentstream.com": {
       "heuristicAction": "allow"
     },
-    "sejs.moatads.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602290278082
+    "segs.jp": {
+      "heuristicAction": "block"
     },
     "sekindo.com": {
       "heuristicAction": "block"
@@ -8036,93 +7989,93 @@
     "selectmedia.asia": {
       "heuristicAction": "allow"
     },
-    "self.com": {
-      "heuristicAction": "block"
+    "sellcodes.com": {
+      "heuristicAction": "allow"
     },
-    "sellpoints.com": {
+    "sellwild.com": {
       "heuristicAction": "allow"
     },
+    "semantiqo.com": {
+      "heuristicAction": "block"
+    },
     "semasio.net": {
       "heuristicAction": "block"
     },
     "sembox.it": {
       "heuristicAction": "allow"
     },
-    "semrush.com": {
-      "heuristicAction": "allow"
+    "sendpulse.com": {
+      "heuristicAction": "block"
     },
     "senseforth.com": {
       "heuristicAction": "allow"
     },
     "sensic.net": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "sensorsdata.cn": {
       "heuristicAction": "block"
     },
-    "sensorsdatavip.com": {
-      "heuristicAction": "allow"
-    },
-    "sep.gob.mx": {
+    "sensorsdata.com": {
       "heuristicAction": "allow"
     },
-    "serasaexperian.demdex.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601881469141
+    "sentry.io": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637436345205
     },
-    "serve2.cheqzone.com": {
-      "heuristicAction": "block"
+    "sephora.fr": {
+      "heuristicAction": "allow"
     },
     "servebom.com": {
       "heuristicAction": "block"
     },
-    "servedby.flashtalking.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601986753963
-    },
     "servedbyadbutler.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637765577505
     },
     "servenobid.com": {
       "heuristicAction": "block"
     },
+    "server-side-tagging-305814.ue.r.appspot.com": {
+      "heuristicAction": "allow"
+    },
     "serverbid.com": {
       "heuristicAction": "block"
     },
     "serving-sys.com": {
       "heuristicAction": "block"
     },
+    "sesameworkshop.org": {
+      "heuristicAction": "allow"
+    },
     "sessioncam.com": {
       "heuristicAction": "block"
     },
-    "seznam.cz": {
+    "sexad.net": {
       "heuristicAction": "allow"
     },
-    "sf14g.com": {
+    "seznam.cz": {
       "heuristicAction": "block"
     },
-    "sfegypt.com": {
-      "heuristicAction": "allow"
-    },
-    "sfn.org": {
+    "sf311.org": {
       "heuristicAction": "allow"
     },
-    "sgkrehberi.com": {
+    "sfdc.sh": {
       "heuristicAction": "allow"
     },
-    "sgsme.sg": {
+    "sfn.org": {
       "heuristicAction": "allow"
     },
-    "shanghai.gov.cn": {
+    "sh.gov.cn": {
       "heuristicAction": "allow"
     },
-    "shaqm.com": {
+    "shahrekhabar.com": {
       "heuristicAction": "allow"
     },
-    "shareaholic.com": {
-      "heuristicAction": "allow"
+    "sharedid.org": {
+      "heuristicAction": "block"
     },
-    "sharecare.com": {
+    "sharemedia.rs": {
       "heuristicAction": "allow"
     },
     "sharethis.com": {
@@ -8131,9 +8084,12 @@
     "sharethrough.com": {
       "heuristicAction": "block"
     },
-    "shbdn.com": {
+    "sherpadm.com": {
       "heuristicAction": "allow"
     },
+    "shield.sitelock.com": {
+      "heuristicAction": "cookieblock"
+    },
     "shinobi.jp": {
       "heuristicAction": "allow"
     },
@@ -8143,50 +8099,38 @@
     "shld.net": {
       "heuristicAction": "allow"
     },
-    "shoagnie.com": {
+    "sholke.com": {
       "heuristicAction": "allow"
     },
     "shop.app": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637632986095
     },
     "shop.pe": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602216733235
+      "nextUpdateTime": 1637958109022
     },
-    "shopbop.com": {
-      "heuristicAction": "allow"
+    "shopify.com": {
+      "heuristicAction": "cookieblock"
     },
-    "shopclues-log.qoo10.in": {
+    "shoppable.com": {
       "heuristicAction": "allow"
     },
-    "shopclues.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602340697713
-    },
-    "shopnetic.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1601874192083
+    "shopperapproved.com": {
+      "heuristicAction": "allow"
     },
     "shoprunner.com": {
       "heuristicAction": "allow"
     },
-    "shopsocially.com": {
+    "shukriya90.com": {
       "heuristicAction": "allow"
     },
-    "show-3.mediav.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602326996244
-    },
-    "show-g.mediav.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602320655946
-    },
-    "shuidi.cn": {
+    "shutterstock.com": {
       "heuristicAction": "allow"
     },
     "sibautomation.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602063149104
+      "nextUpdateTime": 1637769572765
     },
     "sift.com": {
       "heuristicAction": "block"
@@ -8194,19 +8138,22 @@
     "siftscience.com": {
       "heuristicAction": "block"
     },
-    "signify.com": {
-      "heuristicAction": "allow"
-    },
     "signifyd.com": {
       "heuristicAction": "block"
     },
-    "simility.com": {
+    "simplecast.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "simplex.tv": {
       "heuristicAction": "allow"
     },
     "simpli.fi": {
       "heuristicAction": "block"
     },
     "sina.com.cn": {
+      "heuristicAction": "block"
+    },
+    "sinch.com": {
       "heuristicAction": "allow"
     },
     "sindonews.com": {
@@ -8215,7 +8162,7 @@
     "sinoptik.ua": {
       "heuristicAction": "allow"
     },
-    "site-api.project1service.com": {
+    "site.com": {
       "heuristicAction": "allow"
     },
     "site24x7rum.com": {
@@ -8230,59 +8177,98 @@
     "siteimproveanalytics.io": {
       "heuristicAction": "block"
     },
-    "sitelock.com": {
+    "sitejabber.com": {
       "heuristicAction": "allow"
     },
+    "sitelock.com": {
+      "heuristicAction": "block"
+    },
     "sites.google.com": {
       "heuristicAction": "cookieblock"
     },
     "sitescout.com": {
       "heuristicAction": "block"
     },
-    "sjs.bizographics.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602138015634
+    "sitewit.com": {
+      "heuristicAction": "allow"
+    },
+    "sjsmartcontent.org": {
+      "heuristicAction": "allow"
+    },
+    "sjv.io": {
+      "heuristicAction": "block"
     },
     "skimresources.com": {
       "heuristicAction": "block"
     },
     "skplanet.com": {
+      "heuristicAction": "block"
+    },
+    "skyassets.com": {
       "heuristicAction": "allow"
     },
-    "sky.com": {
+    "skyword.com": {
+      "heuristicAction": "block"
+    },
+    "slashdot.org": {
       "heuristicAction": "allow"
     },
-    "sky.it": {
+    "sleeknote.com": {
+      "heuristicAction": "block"
+    },
+    "slgnt.eu": {
+      "heuristicAction": "block"
+    },
+    "slgnt.us": {
+      "heuristicAction": "block"
+    },
+    "sli.do": {
       "heuristicAction": "allow"
     },
-    "slashdotmedia.com": {
+    "slideshare.net": {
       "heuristicAction": "allow"
     },
     "smaato.net": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "smadex.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
+    },
+    "smart-bdash.com": {
+      "heuristicAction": "allow"
+    },
+    "smart-digital-solutions.de": {
+      "heuristicAction": "allow"
     },
     "smartadserver.com": {
       "heuristicAction": "block"
     },
-    "smartclick.net": {
+    "smartasset.com": {
+      "heuristicAction": "allow"
+    },
+    "smartclip.net": {
       "heuristicAction": "allow"
     },
+    "smarterhq.io": {
+      "heuristicAction": "block"
+    },
     "smartlock.google.com": {
       "heuristicAction": "cookieblock"
     },
+    "smartlook.com": {
+      "heuristicAction": "allow"
+    },
     "smartnews-ads.com": {
       "heuristicAction": "block"
     },
     "smartocto.com": {
       "heuristicAction": "allow"
     },
-    "smartsurvey.co.uk": {
-      "heuristicAction": "allow"
-    },
     "smct.co": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637731288036
+    },
+    "smct.io": {
       "heuristicAction": "allow"
     },
     "smi2.net": {
@@ -8290,23 +8276,37 @@
     },
     "smi2.ru": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1601993218631
+      "nextUpdateTime": 1637773993529
     },
     "smilewanted.com": {
+      "heuristicAction": "block"
+    },
+    "smljmp.com": {
+      "heuristicAction": "allow"
+    },
+    "smotrim.ru": {
       "heuristicAction": "allow"
     },
-    "smithsonian.museum": {
+    "smrtb.com": {
       "heuristicAction": "allow"
     },
     "snapchat.com": {
       "heuristicAction": "block"
     },
-    "snapdeal.biz": {
+    "snapwidget.com": {
+      "heuristicAction": "allow"
+    },
+    "snatchbot.me": {
       "heuristicAction": "allow"
     },
-    "snapwidget.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602008543867
+    "snigelweb.com": {
+      "heuristicAction": "block"
+    },
+    "snitcher.com": {
+      "heuristicAction": "allow"
+    },
+    "snodlycaccias.com": {
+      "heuristicAction": "allow"
     },
     "snplow.net": {
       "heuristicAction": "allow"
@@ -8317,23 +8317,28 @@
     "snssdk.com": {
       "heuristicAction": "block"
     },
+    "snva.jp": {
+      "heuristicAction": "allow"
+    },
     "so.com": {
+      "heuristicAction": "block"
+    },
+    "soalonie.com": {
+      "heuristicAction": "allow"
+    },
+    "soapps.net": {
       "heuristicAction": "allow"
     },
     "sobot.com": {
       "heuristicAction": "block"
     },
     "socdm.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
-    "socialintents.com": {
+    "sociabble.com": {
       "heuristicAction": "allow"
     },
-    "soflopxl.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602194257939
-    },
-    "softspace.mobi": {
+    "socsi.in": {
       "heuristicAction": "allow"
     },
     "sogei.it": {
@@ -8343,6 +8348,9 @@
       "heuristicAction": "allow"
     },
     "sohu.com": {
+      "heuristicAction": "block"
+    },
+    "soicos.com": {
       "heuristicAction": "allow"
     },
     "sojern.com": {
@@ -8354,31 +8362,20 @@
     "solarwinds.com": {
       "heuristicAction": "allow"
     },
-    "solarwinds.demdex.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602166679164
-    },
-    "solarwinds.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602113549041
-    },
-    "solarwindscom.postaffiliatepro.com": {
-      "heuristicAction": "allow"
-    },
     "solosegment.com": {
       "heuristicAction": "block"
     },
     "solvemedia.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
-    "somoydigital.com": {
+    "somespider.com": {
       "heuristicAction": "allow"
     },
     "sonobi.com": {
       "heuristicAction": "block"
     },
-    "sonygs.112.2o7.net": {
-      "heuristicAction": "cookieblock"
+    "sophi.io": {
+      "heuristicAction": "block"
     },
     "soundcloud.com": {
       "heuristicAction": "block"
@@ -8386,56 +8383,68 @@
     "soundestlink.com": {
       "heuristicAction": "allow"
     },
+    "southcn.com": {
+      "heuristicAction": "allow"
+    },
+    "southwatts.com": {
+      "heuristicAction": "allow"
+    },
     "sp-prod.net": {
       "heuristicAction": "cookieblock"
     },
     "sp-trk.com": {
       "heuristicAction": "allow"
     },
-    "sp.analytics.yahoo.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601888585928
+    "spankbang.com": {
+      "heuristicAction": "allow"
     },
-    "sp0.baidu.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602012667372
+    "spclotto4.it": {
+      "heuristicAction": "allow"
     },
     "speakol.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "spectate.com": {
+      "heuristicAction": "allow"
+    },
+    "speedcurve.com": {
       "heuristicAction": "block"
     },
     "speee-ad.jp": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "sphereup.com": {
       "heuristicAction": "block"
     },
-    "sphlabs.com": {
-      "heuristicAction": "allow"
-    },
     "spiceworks.com": {
       "heuristicAction": "block"
     },
-    "spider.af": {
+    "spiedigitallibrary.org": {
       "heuristicAction": "allow"
     },
-    "spir.hit.gemius.pl": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602356071152
-    },
-    "spl.zeotap.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602230859226
+    "spingo.com": {
+      "heuristicAction": "allow"
     },
     "spokenlayer.com": {
       "heuristicAction": "block"
     },
-    "sportradarserving.com": {
+    "spokenlayer.net": {
+      "heuristicAction": "block"
+    },
+    "spolecznosci.net": {
+      "heuristicAction": "allow"
+    },
+    "sporitaapi.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "sportrecs.com": {
+    "sportradar.com": {
+      "heuristicAction": "allow"
+    },
+    "sportradarserving.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637823122831
+    },
+    "sportscentral.io": {
       "heuristicAction": "allow"
     },
     "spot.im": {
@@ -8448,39 +8457,40 @@
       "heuristicAction": "block"
     },
     "spotim.market": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "spotxchange.com": {
       "heuristicAction": "block"
     },
+    "spox.com": {
+      "heuristicAction": "allow"
+    },
     "spreadsheets.google.com": {
       "heuristicAction": "cookieblock"
     },
-    "spreadshirt.net": {
-      "heuristicAction": "allow"
-    },
     "spreaker.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "springserve.com": {
       "heuristicAction": "block"
     },
+    "sprint.com": {
+      "heuristicAction": "allow"
+    },
     "sputnik.ru": {
       "heuristicAction": "block"
     },
     "square-enix.com": {
       "heuristicAction": "allow"
     },
-    "squren.com": {
-      "heuristicAction": "allow"
+    "squarespace.com": {
+      "heuristicAction": "cookieblock"
     },
-    "srv-2020-10-04-06.pixel.parsely.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602239681633
+    "squareup.com": {
+      "heuristicAction": "allow"
     },
-    "srv.stackadapt.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601966386714
+    "srv272b.com": {
+      "heuristicAction": "block"
     },
     "srvtrck.com": {
       "heuristicAction": "allow"
@@ -8488,47 +8498,12 @@
     "srx.com.sg": {
       "heuristicAction": "allow"
     },
-    "ssc-cms.33across.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601968622566
-    },
-    "ssc.33across.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602321438876
-    },
-    "ssense.com": {
-      "heuristicAction": "allow"
-    },
-    "ssg.com": {
-      "heuristicAction": "allow"
-    },
-    "ssl.cdne.cpmstar.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602114651275
-    },
-    "ssl.google-analytics.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602191047157
-    },
     "ssl.kaptcha.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602011610707
-    },
-    "ssl.widgets.webengage.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602089786764
-    },
-    "sslwidget.criteo.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602331309444
+      "heuristicAction": "cookieblock"
     },
     "sspinc.io": {
       "heuristicAction": "allow"
     },
-    "ssum-sec.casalemedia.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602269984446
-    },
     "st-eu.dynamicyield.com": {
       "heuristicAction": "cookieblock"
     },
@@ -8536,12 +8511,9 @@
       "heuristicAction": "cookieblock"
     },
     "st.top100.ru": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601954453930
-    },
-    "st1.dialogtech.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601931908696
+      "dnt": true,
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637590297422
     },
     "st8fm.com": {
       "heuristicAction": "allow"
@@ -8553,64 +8525,48 @@
       "heuristicAction": "block"
     },
     "stackoverflow.com": {
-      "heuristicAction": "cookieblock"
+      "heuristicAction": "allow"
     },
     "stackpathcdn.com": {
       "heuristicAction": "allow"
     },
-    "stags.bluekai.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602198869250
-    },
-    "stat-rock.com": {
+    "stackpathdns.com": {
       "heuristicAction": "allow"
     },
-    "stat.58che.com": {
+    "stacksocial.com": {
+      "heuristicAction": "block"
+    },
+    "stagingjobshq.com": {
       "heuristicAction": "allow"
     },
     "stat.media": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602131719057
+      "nextUpdateTime": 1637668417377
     },
-    "stat.sputnik.ru": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602117670479
+    "stat.pet": {
+      "heuristicAction": "block"
     },
     "statad.ru": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602117681549
+      "nextUpdateTime": 1637926685238
     },
     "statcounter.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1601910681132
+      "nextUpdateTime": 1637766126947
     },
     "state.nj.us": {
       "heuristicAction": "allow"
     },
-    "static.adman.gr": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602370657040
-    },
-    "static.adzerk.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602027101651
-    },
-    "static.anquan.org": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602192886104
+    "static-af.com": {
+      "heuristicAction": "allow"
     },
-    "static.atgsvcs.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601965606799
+    "static-src.com": {
+      "heuristicAction": "allow"
     },
     "static.criteo.com": {
       "dnt": true,
       "heuristicAction": "",
-      "nextUpdateTime": 1602329585428
-    },
-    "static.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602248519672
+      "nextUpdateTime": 1637741173915
     },
     "static.dynamicyield.com": {
       "heuristicAction": "cookieblock"
@@ -8618,87 +8574,52 @@
     "static.hubspot.com": {
       "heuristicAction": "cookieblock"
     },
-    "static.mediav.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602007569080
-    },
-    "static.mixi.media": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602399010417
-    },
-    "static.pushe.co": {
+    "staticbg.com": {
       "heuristicAction": "allow"
     },
-    "static.queue-it.net": {
-      "heuristicAction": "cookieblock"
-    },
-    "static.site24x7rum.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602328359757
-    },
-    "static.smi2.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602103616945
-    },
-    "static6.smi2.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602072012352
-    },
-    "static8.smi2.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602142620511
-    },
     "staticcache.org": {
       "heuristicAction": "allow"
     },
-    "staticw2.yotpo.com": {
-      "heuristicAction": "cookieblock"
-    },
-    "staticworld.net": {
+    "staticflickr.com": {
       "heuristicAction": "allow"
     },
-    "staticxx.facebook.com": {
-      "heuristicAction": "cookieblock"
-    },
-    "statistiek.rijksoverheid.nl": {
+    "staticiv.com": {
       "heuristicAction": "allow"
     },
-    "stats.g.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601923572193
-    },
-    "stats.monohost.com": {
-      "heuristicAction": "block"
-    },
-    "stats1.wpmudev.com": {
+    "staticroot.com": {
       "heuristicAction": "allow"
     },
-    "statse.webtrendslive.com": {
+    "staticxx.facebook.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "statsperformdev.com": {
       "heuristicAction": "allow"
     },
     "statsy.net": {
       "heuristicAction": "allow"
     },
     "statuspage.io": {
-      "heuristicAction": "allow"
+      "heuristicAction": "cookieblock"
     },
     "stdout.cz": {
       "heuristicAction": "allow"
     },
-    "steelcentral.net": {
-      "heuristicAction": "allow"
-    },
     "steelhousemedia.com": {
       "heuristicAction": "block"
     },
-    "stepstone.d3.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602104373051
+    "stepstone.be": {
+      "heuristicAction": "allow"
+    },
+    "stepstone.de": {
+      "heuristicAction": "allow"
     },
     "stickyadstv.com": {
       "heuristicAction": "block"
     },
-    "stockdio.com": {
+    "stocktwits.com": {
+      "heuristicAction": "allow"
+    },
+    "stonly.com": {
       "heuristicAction": "allow"
     },
     "storage.googleapis.com": {
@@ -8708,18 +8629,21 @@
       "heuristicAction": "allow"
     },
     "storygize.net": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "stream.ne.jp": {
       "heuristicAction": "allow"
     },
+    "streamable.com": {
+      "heuristicAction": "allow"
+    },
     "streamingddigital.com": {
       "heuristicAction": "allow"
     },
     "streamtheworld.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "cookieblock"
     },
-    "stripchat.com": {
+    "streem.com.au": {
       "heuristicAction": "allow"
     },
     "stripe.com": {
@@ -8728,30 +8652,30 @@
     "stripe.network": {
       "heuristicAction": "block"
     },
-    "stripst.com": {
+    "stripecdn.com": {
       "heuristicAction": "allow"
     },
     "striveme.com": {
       "heuristicAction": "allow"
     },
-    "stucki.io": {
-      "heuristicAction": "allow"
-    },
-    "studybreakmedia.com": {
+    "stroeermediabrands.de": {
       "heuristicAction": "allow"
     },
     "stylight.net": {
+      "heuristicAction": "block"
+    },
+    "styria.hr": {
       "heuristicAction": "allow"
     },
-    "subservis.com": {
-      "heuristicAction": "block"
+    "substack.com": {
+      "heuristicAction": "allow"
     },
     "summerhamster.com": {
       "heuristicAction": "block"
     },
     "sumo.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602058427021
+      "nextUpdateTime": 1637562675837
     },
     "sumologic.com": {
       "heuristicAction": "allow"
@@ -8765,86 +8689,51 @@
     "suning.com": {
       "heuristicAction": "allow"
     },
-    "sunrtb.com": {
+    "suntimes.com": {
+      "heuristicAction": "allow"
+    },
+    "superpointlesshamsters.com": {
       "heuristicAction": "allow"
     },
     "supplyframe.com": {
       "heuristicAction": "block"
     },
     "surfcountor.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637565235024
     },
-    "survata.com": {
+    "surgerymcqs.com": {
       "heuristicAction": "allow"
     },
-    "survey.g.doubleclick.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602253622049
-    },
-    "svd.se": {
+    "survata.com": {
       "heuristicAction": "allow"
     },
-    "svtrd.com": {
+    "surveygizmo.com": {
       "heuristicAction": "allow"
     },
-    "swiftype.com": {
-      "heuristicAction": "cookieblock"
-    },
-    "swisscom.ch": {
+    "survicate.com": {
       "heuristicAction": "allow"
     },
-    "swisspass.ch": {
+    "suth.digital": {
       "heuristicAction": "allow"
     },
-    "sy.guanjia.qq.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602035908444
-    },
-    "symantec.com": {
+    "sutherlandglobal.com": {
       "heuristicAction": "allow"
     },
-    "sync.adkernel.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602147540313
-    },
-    "sync.adtelligent.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602344399831
-    },
-    "sync.bfmio.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601957569574
-    },
-    "sync.go.sonobi.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602165653499
-    },
-    "sync.search.spotxchange.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602297085040
-    },
-    "sync.serverbid.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602263991929
-    },
-    "sync.smartadserver.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601920071914
+    "svk-native.ru": {
+      "heuristicAction": "block"
     },
-    "sync.teads.tv": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602089032828
+    "svtrd.com": {
+      "heuristicAction": "block"
     },
-    "synchrobox.adswizz.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602249689678
+    "swiftype.com": {
+      "heuristicAction": "cookieblock"
     },
-    "synchronycredit.com": {
+    "swisscom.com": {
       "heuristicAction": "allow"
     },
-    "syndication.realsrv.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601877720294
+    "symantec.com": {
+      "heuristicAction": "block"
     },
     "syndication.twitter.com": {
       "heuristicAction": "cookieblock"
@@ -8852,199 +8741,125 @@
     "syndigo.cloud": {
       "heuristicAction": "allow"
     },
-    "synopsys.demdex.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601946573109
-    },
-    "synopsysinc.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601918215528
-    },
     "syr.edu": {
       "heuristicAction": "allow"
     },
     "syuh.net": {
       "heuristicAction": "allow"
     },
-    "szzbmy.com": {
-      "heuristicAction": "allow"
-    },
     "t-mobilemoney.com": {
       "heuristicAction": "allow"
     },
     "t-x.io": {
       "heuristicAction": "allow"
     },
-    "t.castle.io": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602064467886
-    },
     "t.co": {
-      "heuristicAction": "allow"
-    },
-    "t.contentsquare.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602381942912
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637701665396
     },
-    "t.leady.com": {
+    "t.me": {
       "heuristicAction": "allow"
     },
-    "t.riverhit.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602098817755
-    },
-    "t.teads.tv": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602161626412
+    "tableau.com": {
+      "heuristicAction": "block"
     },
     "taboola.com": {
       "heuristicAction": "block"
     },
-    "tacdn.com": {
-      "heuristicAction": "allow"
-    },
-    "tag.bounceexchange.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602181163845
-    },
-    "tag.contextweb.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601898720765
-    },
-    "tag.crsspxl.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602288014371
-    },
-    "tag.getdrip.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602154134775
-    },
-    "tag.mtrcs.samba.tv": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602228110240
-    },
-    "tag.researchnow.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602170632966
-    },
-    "tag.simpli.fi": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602029023410
-    },
-    "tag.yieldoptimizer.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602184388193
-    },
-    "tag4arm.com": {
-      "heuristicAction": "allow"
-    },
     "tagboard.com": {
       "heuristicAction": "block"
     },
+    "tagcachestaticx.com": {
+      "heuristicAction": "allow"
+    },
     "tagcommander.com": {
       "heuristicAction": "allow"
     },
+    "tagdelivery.com": {
+      "heuristicAction": "block"
+    },
     "tagger.opecloud.com": {
       "dnt": true,
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602091653338
-    },
-    "tags.bluekai.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602323631748
-    },
-    "tags.crwdcntrl.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602155643109
-    },
-    "tags.growingio.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602063727145
-    },
-    "tags.srv.stackadapt.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602017121231
-    },
-    "tags.w55c.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601879168059
+      "heuristicAction": "allow",
+      "nextUpdateTime": 1637630536035
     },
     "tagtic.cn": {
       "heuristicAction": "allow"
     },
+    "tagtoo.co": {
+      "heuristicAction": "allow"
+    },
     "tailtarget.com": {
       "heuristicAction": "block"
     },
-    "taj1.ebis.ne.jp": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602143174257
-    },
-    "taj2.ebis.ne.jp": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602379219814
-    },
-    "tajs.qq.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602311333065
+    "taiwanmedia.org": {
+      "heuristicAction": "allow"
     },
     "talkable.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "talkgadget.google.com": {
       "heuristicAction": "cookieblock"
     },
-    "tam.by": {
-      "heuristicAction": "allow"
-    },
     "tamedia.com.tw": {
       "heuristicAction": "allow"
     },
     "tamgrt.com": {
       "heuristicAction": "block"
     },
-    "tanx.com": {
+    "tankeai.com": {
       "heuristicAction": "allow"
     },
-    "taobao.com": {
+    "tanx.com": {
       "heuristicAction": "allow"
     },
-    "tap-cdn.rubiconproject.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602248889731
+    "taobao.com": {
+      "heuristicAction": "block"
     },
     "tapad.com": {
       "heuristicAction": "block"
     },
-    "taplytics.com": {
+    "tapestry-gtm-n45nl7n.uk.r.appspot.com": {
       "heuristicAction": "allow"
     },
+    "taplytics.com": {
+      "heuristicAction": "block"
+    },
     "tapnative.com": {
       "heuristicAction": "allow"
     },
-    "target.mixi.media": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602180846089
+    "targethaus.net": {
+      "heuristicAction": "allow"
     },
-    "targetspot.com": {
-      "heuristicAction": "block"
+    "tarteaucitron.io": {
+      "heuristicAction": "cookieblock"
+    },
+    "tatadigital.com": {
+      "heuristicAction": "allow"
     },
     "tavoos.net": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1601918424570
+      "nextUpdateTime": 1637136603400
     },
     "tawk.to": {
       "heuristicAction": "cookieblock"
     },
-    "taylorandfrancis.com": {
+    "taxel.jp": {
       "heuristicAction": "allow"
     },
-    "tazabek.kg": {
+    "tbs.com": {
       "heuristicAction": "allow"
     },
     "tchibo.de": {
+      "heuristicAction": "block"
+    },
+    "tcs-asp.net": {
       "heuristicAction": "allow"
     },
     "tctm.co": {
+      "heuristicAction": "block"
+    },
+    "tdbtrk.com": {
       "heuristicAction": "allow"
     },
     "tdefender.net": {
@@ -9056,68 +8871,88 @@
     "tealiumiq.com": {
       "heuristicAction": "block"
     },
+    "teamblue.services": {
+      "heuristicAction": "allow"
+    },
+    "techfordemocracy.dk": {
+      "heuristicAction": "allow"
+    },
+    "techhub.co.kr": {
+      "heuristicAction": "block"
+    },
     "techlab-cdn.com": {
       "heuristicAction": "block"
     },
     "technical-service.net": {
       "heuristicAction": "block"
     },
-    "technologyadvice.com": {
+    "technolutions.net": {
       "heuristicAction": "allow"
     },
     "technoratimedia.com": {
       "heuristicAction": "block"
     },
-    "techonline.com": {
-      "heuristicAction": "allow"
-    },
     "techtarget.com": {
       "heuristicAction": "block"
     },
-    "techweb.com": {
-      "heuristicAction": "block"
-    },
-    "teenvogue.com": {
-      "heuristicAction": "block"
-    },
-    "telekom.de": {
+    "teespring.com": {
       "heuristicAction": "allow"
     },
-    "telem.highlow.net": {
+    "telegram.org": {
       "heuristicAction": "allow"
     },
     "teleport.media": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
-    "televebion.net": {
+    "teletarget.ru": {
       "heuristicAction": "allow"
     },
     "tend-table.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "tenmax.io": {
       "heuristicAction": "allow"
     },
+    "tensorflow-dot-devsite-v2-prod-3p.appspot.com": {
+      "heuristicAction": "allow"
+    },
+    "terminus.ninja": {
+      "heuristicAction": "allow"
+    },
     "terminus.services": {
       "heuristicAction": "block"
     },
-    "tessabititalia01.wt-eu02.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601940644127
+    "tesseradigital.com": {
+      "heuristicAction": "allow"
+    },
+    "tfaforms.com": {
+      "heuristicAction": "cookieblock"
     },
     "tfaforms.net": {
+      "heuristicAction": "cookieblock"
+    },
+    "tgdd.vn": {
+      "heuristicAction": "allow"
+    },
+    "thaudray.com": {
+      "heuristicAction": "allow"
+    },
+    "the-ozone-project.com": {
       "heuristicAction": "block"
     },
     "theadex.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
     "thebrighttag.com": {
       "heuristicAction": "block"
     },
+    "thedmn.com": {
+      "heuristicAction": "allow"
+    },
     "theglobeandmail.ca": {
       "heuristicAction": "allow"
     },
-    "thehindu.com": {
+    "theglobeandmail.com": {
       "heuristicAction": "allow"
     },
     "theice.com": {
@@ -9126,13 +8961,22 @@
     "thejobnetwork.com": {
       "heuristicAction": "allow"
     },
-    "them.us": {
-      "heuristicAction": "block"
+    "themedianw.com": {
+      "heuristicAction": "allow"
+    },
+    "thenews.com.pk": {
+      "heuristicAction": "allow"
+    },
+    "theoplayer.com": {
+      "heuristicAction": "allow"
+    },
+    "theplatform.com": {
+      "heuristicAction": "cookieblock"
     },
-    "themarker.com": {
+    "thepointyspritesclub.com": {
       "heuristicAction": "allow"
     },
-    "thenewstribune.com": {
+    "thequestionsnetwork.org": {
       "heuristicAction": "allow"
     },
     "theregister.co.uk": {
@@ -9141,13 +8985,28 @@
     "thesame.tv": {
       "heuristicAction": "allow"
     },
+    "thesmilingelbows.com": {
+      "heuristicAction": "allow"
+    },
     "thesun.co.uk": {
       "heuristicAction": "allow"
     },
+    "theweathernetwork.com": {
+      "heuristicAction": "allow"
+    },
+    "thinglink.me": {
+      "heuristicAction": "allow"
+    },
     "thinkpad.com": {
       "heuristicAction": "allow"
     },
-    "threewave.jp": {
+    "thisisdax.com": {
+      "heuristicAction": "block"
+    },
+    "thomann.de": {
+      "heuristicAction": "allow"
+    },
+    "thrillist.com": {
       "heuristicAction": "allow"
     },
     "thron.com": {
@@ -9155,7 +9014,7 @@
     },
     "thrtle.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1601817960909
+      "nextUpdateTime": 1637844985974
     },
     "thunderhead.com": {
       "heuristicAction": "block"
@@ -9163,56 +9022,57 @@
     "ti.com.cn": {
       "heuristicAction": "allow"
     },
+    "tianqi.com": {
+      "heuristicAction": "allow"
+    },
     "tidaltv.com": {
       "heuristicAction": "block"
     },
-    "tie.247-inc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602274672225
-    },
     "tij.co.jp": {
       "heuristicAction": "allow"
     },
-    "timecommerce.net": {
-      "heuristicAction": "block"
-    },
-    "timewarnercable.com": {
+    "tijdschrift.nl": {
       "heuristicAction": "allow"
     },
-    "tinkoffinsurance.ru": {
+    "tiktok.com": {
+      "heuristicAction": "block"
+    },
+    "tiktokcdn.com": {
       "heuristicAction": "allow"
     },
-    "tinypass.com": {
-      "heuristicAction": "cookieblock"
+    "tildacdn.com": {
+      "heuristicAction": "block"
     },
-    "tiqcdn.com": {
-      "heuristicAction": "cookieblock"
+    "timeinc.com": {
+      "heuristicAction": "allow"
     },
-    "titoaktop.com": {
+    "tinkoffinsurance.ru": {
       "heuristicAction": "allow"
     },
-    "tkx-acc.apis.anvato.net": {
-      "heuristicAction": "cookieblock"
+    "tinymce.com": {
+      "heuristicAction": "allow"
     },
-    "tkx.apis.anvato.net": {
+    "tinypass.com": {
       "heuristicAction": "cookieblock"
     },
-    "tkx2-prod.anvato.net": {
+    "tiqcdn.com": {
       "heuristicAction": "cookieblock"
     },
-    "tlx.3lift.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602097377602
+    "tk0x1.com": {
+      "heuristicAction": "allow"
     },
     "tmall.ru": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
+    },
+    "tmid.es": {
+      "heuristicAction": "block"
     },
     "tmobile.com": {
       "heuristicAction": "allow"
     },
     "tns-counter.ru": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602103569233
+      "nextUpdateTime": 1637645845827
     },
     "tns-cs.net": {
       "heuristicAction": "allow"
@@ -9220,20 +9080,35 @@
     "tns-ua.com": {
       "heuristicAction": "block"
     },
+    "tntdrama.com": {
+      "heuristicAction": "allow"
+    },
+    "tnu8.net": {
+      "heuristicAction": "allow"
+    },
     "toast.com": {
       "heuristicAction": "block"
     },
+    "toglooman.com": {
+      "heuristicAction": "allow"
+    },
+    "toidas.net": {
+      "heuristicAction": "allow"
+    },
     "tombot.ai": {
       "heuristicAction": "allow"
     },
-    "tomtop.com": {
+    "tomi.ai": {
+      "heuristicAction": "block"
+    },
+    "tonemedia.com": {
       "heuristicAction": "allow"
     },
-    "tongdun.cn": {
+    "toolsid.com": {
       "heuristicAction": "allow"
     },
-    "top-fwz1.mail.ru": {
-      "heuristicAction": "cookieblock"
+    "top.ge": {
+      "heuristicAction": "allow"
     },
     "top100.ru": {
       "heuristicAction": "block"
@@ -9242,126 +9117,104 @@
       "heuristicAction": "allow"
     },
     "toplist.cz": {
-      "heuristicAction": "allow"
-    },
-    "tourismnz.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601991925973
+      "heuristicAction": "block"
     },
-    "toutapp.com": {
+    "topthink.com": {
       "heuristicAction": "allow"
     },
-    "tpcf.feedify.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602183085925
-    },
-    "tpx.virtuoussoftware.com": {
+    "touchev.com": {
       "heuristicAction": "allow"
     },
-    "tq.cn": {
+    "toutapp.com": {
       "heuristicAction": "allow"
     },
-    "tr.hit.gemius.pl": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601903270252
-    },
-    "tr.line.me": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601963397704
-    },
-    "tr.outbrain.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602088464253
-    },
-    "track.adform.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601895353471
+    "tp88trk.com": {
+      "heuristicAction": "block"
     },
-    "track.hubspot.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602059908134
+    "tpmn.co.kr": {
+      "heuristicAction": "block"
     },
-    "track.in.omgpm.com": {
+    "tr8ngames.com": {
       "heuristicAction": "allow"
     },
     "trackad.cz": {
       "heuristicAction": "allow"
     },
-    "trackalyzer.com": {
-      "heuristicAction": "allow"
-    },
-    "tracker.metricool.com": {
+    "trackcb.com": {
       "heuristicAction": "allow"
     },
-    "tracking.imspublishergroup.com": {
+    "trackclicks.info": {
       "heuristicAction": "allow"
     },
-    "tracking.magnetmail.net": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602356020492
-    },
-    "tradablebits.com": {
+    "tradbypass.com": {
       "heuristicAction": "allow"
     },
     "tradedoubler.com": {
       "heuristicAction": "block"
     },
+    "tradeinn.com": {
+      "heuristicAction": "allow"
+    },
     "tradelab.fr": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
+    },
+    "tradingview-widget.com": {
+      "heuristicAction": "allow"
     },
     "tradingview.com": {
       "heuristicAction": "cookieblock"
     },
-    "traffic-media.co.uk": {
+    "traffer.net": {
       "heuristicAction": "allow"
     },
     "trafficbass.com": {
       "heuristicAction": "block"
     },
-    "trafficdok.com": {
+    "trafficforce.com": {
       "heuristicAction": "allow"
     },
     "trafficgate.net": {
       "heuristicAction": "allow"
     },
-    "trafficgateway.research-int.se": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602117570192
-    },
     "trafficguard.ai": {
       "heuristicAction": "block"
     },
-    "trafficjunky.net": {
-      "heuristicAction": "block"
-    },
-    "trafficlide.com": {
+    "traffichaus.com": {
       "heuristicAction": "allow"
     },
-    "trafficsan.com": {
-      "heuristicAction": "allow"
+    "trafficjunky.com": {
+      "heuristicAction": "block"
     },
-    "trafmag.com": {
+    "trafficjunky.net": {
       "heuristicAction": "block"
     },
-    "transferwise.com": {
+    "trafmag.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637667016745
+    },
+    "trailblazer.me": {
       "heuristicAction": "allow"
     },
+    "translate-pa.googleapis.com": {
+      "heuristicAction": "cookieblock"
+    },
     "translate.google.com": {
       "heuristicAction": "cookieblock"
     },
     "travelaudience.com": {
       "heuristicAction": "allow"
     },
-    "trbna.com": {
+    "travelspike.azurewebsites.net": {
       "heuristicAction": "allow"
     },
-    "trc.taboola.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602226893177
+    "travelzoo.com": {
+      "heuristicAction": "allow"
     },
-    "trck.bebi.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601887189692
+    "traversedlp.com": {
+      "heuristicAction": "allow"
+    },
+    "trbo.com": {
+      "heuristicAction": "allow"
     },
     "treasuredata.com": {
       "heuristicAction": "block"
@@ -9373,12 +9226,12 @@
       "heuristicAction": "block"
     },
     "trendmd.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "trends.google.com": {
       "heuristicAction": "cookieblock"
     },
-    "trends.so.com": {
+    "trgwl.com": {
       "heuristicAction": "allow"
     },
     "tribalfusion.com": {
@@ -9386,81 +9239,116 @@
     },
     "tribl.io": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602093085208
+      "nextUpdateTime": 1637893982537
     },
-    "trinitymedia.ai": {
+    "triblive.com": {
       "heuristicAction": "allow"
     },
-    "trip.com": {
-      "heuristicAction": "allow"
+    "trinitymedia.ai": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637725516410
     },
     "tripadvisor.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "tripcdn.com": {
       "heuristicAction": "allow"
     },
-    "tritondigitalcom.mpeasylink.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602394073297
+    "triptease.io": {
+      "heuristicAction": "allow"
     },
-    "trk.techtarget.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602354783188
+    "trkd-asia.com": {
+      "heuristicAction": "allow"
     },
     "trkn.us": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1601938841368
+      "nextUpdateTime": 1637703704827
+    },
+    "trlocationmanager.azurewebsites.net": {
+      "heuristicAction": "allow"
+    },
+    "trrsf.com": {
+      "heuristicAction": "allow"
     },
     "trs.cn": {
+      "heuristicAction": "block"
+    },
+    "truckid.com": {
       "heuristicAction": "allow"
     },
-    "truefitcorp.com": {
+    "truconversion.com": {
       "heuristicAction": "allow"
     },
+    "truefitcorp.com": {
+      "heuristicAction": "block"
+    },
     "truehits.in.th": {
       "heuristicAction": "block"
     },
+    "trueleadid.com": {
+      "heuristicAction": "allow"
+    },
     "truepush.com": {
       "heuristicAction": "block"
     },
+    "trugaze.io": {
+      "heuristicAction": "allow"
+    },
     "trumba.com": {
       "heuristicAction": "cookieblock"
     },
     "truoptik.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "trustarc.com": {
-      "heuristicAction": "block"
+      "heuristicAction": "cookieblock"
     },
-    "trustcommander.net": {
+    "truste-svc.net": {
       "heuristicAction": "allow"
     },
     "trustedsite.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "trustivity.es": {
       "heuristicAction": "allow"
     },
-    "trustseal.enamad.ir": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601994455536
+    "trustpilot.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "trustradius.com": {
+      "heuristicAction": "allow"
     },
     "trustspot.io": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637650947193
+    },
+    "trutv.com": {
+      "heuristicAction": "allow"
+    },
+    "truvid.com": {
       "heuristicAction": "allow"
     },
     "trvl-px.com": {
       "heuristicAction": "allow"
     },
     "trwl1.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
-    "trysera.com": {
+    "tsheets.com": {
       "heuristicAction": "allow"
     },
     "tsyndicate.com": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1601933193114
+      "nextUpdateTime": 1637756136868
+    },
+    "ttarget.ru": {
+      "heuristicAction": "allow"
+    },
+    "ttrace.ru": {
+      "heuristicAction": "allow"
+    },
+    "tubecorp.com": {
+      "heuristicAction": "block"
     },
     "tucarro.com.co": {
       "heuristicAction": "allow"
@@ -9471,24 +9359,24 @@
     "tuinmueble.com.ve": {
       "heuristicAction": "allow"
     },
+    "tumblr.com": {
+      "heuristicAction": "cookieblock"
+    },
     "tumoto.com.co": {
       "heuristicAction": "allow"
     },
     "tumoto.com.ve": {
       "heuristicAction": "allow"
     },
+    "tunefindforfans.com": {
+      "heuristicAction": "allow"
+    },
     "turn.com": {
       "heuristicAction": "block"
     },
     "tutu.travel": {
       "heuristicAction": "allow"
     },
-    "tvinsider.com": {
-      "heuristicAction": "allow"
-    },
-    "tvopen.gr": {
-      "heuristicAction": "allow"
-    },
     "tvpage.com": {
       "heuristicAction": "allow"
     },
@@ -9498,61 +9386,36 @@
     "tvsquared.com": {
       "heuristicAction": "block"
     },
-    "tw.cx": {
-      "heuristicAction": "allow"
-    },
-    "twcroadrunner.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601893173850
-    },
     "twimg.com": {
       "heuristicAction": "cookieblock"
     },
+    "twinrdsrv.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637778360786
+    },
     "twitch.tv": {
       "heuristicAction": "cookieblock"
     },
     "twitter.com": {
       "heuristicAction": "cookieblock"
     },
-    "twnmm.com": {
-      "heuristicAction": "allow"
-    },
     "tynt.com": {
       "heuristicAction": "block"
     },
-    "typekit.net": {
-      "heuristicAction": "cookieblock"
-    },
-    "u.myopenads.com": {
-      "heuristicAction": "allow"
-    },
-    "u.openx.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602322494313
-    },
-    "u7u9.com": {
-      "heuristicAction": "allow"
-    },
-    "ua.tutu.travel": {
+    "typeform.com": {
       "heuristicAction": "allow"
     },
-    "ua.yektanet.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602163743001
+    "typekit.net": {
+      "heuristicAction": "cookieblock"
     },
-    "uadexchange.com": {
-      "heuristicAction": "allow"
+    "typography.com": {
+      "heuristicAction": "cookieblock"
     },
-    "ubic.tech": {
+    "ub-analytics.com": {
       "heuristicAction": "allow"
     },
-    "ubm.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602017368947
-    },
-    "ubmtech.d3.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602299287152
+    "ubembed.com": {
+      "heuristicAction": "block"
     },
     "uc.se": {
       "heuristicAction": "allow"
@@ -9560,15 +9423,9 @@
     "ucfly.com": {
       "heuristicAction": "allow"
     },
-    "ucgstatic.eu": {
-      "heuristicAction": "allow"
-    },
     "uciservice.com": {
       "heuristicAction": "allow"
     },
-    "udemy.com": {
-      "heuristicAction": "allow"
-    },
     "udesk.cn": {
       "heuristicAction": "block"
     },
@@ -9577,158 +9434,151 @@
     },
     "udmserve.net": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602090024562
+      "nextUpdateTime": 1637752369762
     },
-    "ufpcdn.com": {
+    "udnfunlife.com": {
       "heuristicAction": "allow"
     },
-    "ughr.contentexchange.me": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602067823662
-    },
-    "uicdn.net": {
-      "heuristicAction": "block"
-    },
-    "uikc.net": {
+    "ufpcdn.com": {
       "heuristicAction": "allow"
     },
-    "uimserv.net": {
+    "uikc.net": {
       "heuristicAction": "allow"
     },
     "ukr.net": {
       "heuristicAction": "allow"
     },
-    "ukw.jp": {
-      "heuristicAction": "allow"
-    },
-    "ulb.ac.be": {
-      "heuristicAction": "allow"
-    },
-    "ulclick.ru": {
-      "heuristicAction": "allow"
-    },
     "ulogin.ru": {
       "heuristicAction": "allow"
     },
     "ultainc.com": {
       "heuristicAction": "allow"
     },
-    "ultimate-guitar-d.openx.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602167774661
-    },
     "ultimedia.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "cookieblock"
     },
-    "unbxdapi.com": {
+    "uma.media": {
       "heuristicAction": "allow"
     },
-    "uncn.jp": {
-      "heuristicAction": "allow"
+    "unbounce.com": {
+      "heuristicAction": "block"
+    },
+    "unbxdapi.com": {
+      "heuristicAction": "block"
     },
-    "uncrate.supply": {
+    "undefined": {
       "heuristicAction": "allow"
     },
     "undertone.com": {
       "heuristicAction": "block"
     },
-    "uni-frankfurt.de": {
-      "heuristicAction": "allow"
-    },
     "unicc.org": {
       "heuristicAction": "allow"
     },
     "unidata.ai": {
       "heuristicAction": "allow"
     },
-    "unileverna.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602291220552
-    },
-    "unileverna.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602254186366
-    },
     "unisender.com": {
       "heuristicAction": "allow"
     },
     "unite.com": {
       "heuristicAction": "allow"
     },
+    "universalparks.com": {
+      "heuristicAction": "allow"
+    },
+    "unrulymedia.com": {
+      "heuristicAction": "block"
+    },
+    "unrulyvideo.com": {
+      "heuristicAction": "allow"
+    },
     "unsplash.com": {
       "heuristicAction": "cookieblock"
     },
-    "uol.com.br": {
-      "heuristicAction": "allow"
+    "untimburra.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637666402177
     },
     "uplift-platform.com": {
+      "heuristicAction": "block"
+    },
+    "upload.cc": {
       "heuristicAction": "allow"
     },
     "upravel.com": {
       "heuristicAction": "block"
     },
-    "ups.analytics.yahoo.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602116844291
+    "uprivaladserver.net": {
+      "heuristicAction": "allow"
     },
-    "upsellit.com": {
+    "uptolike.com": {
       "heuristicAction": "allow"
     },
-    "uptime.com": {
-      "heuristicAction": "block"
+    "uptrendsdata.com": {
+      "heuristicAction": "allow"
     },
     "uq.net.au": {
       "heuristicAction": "allow"
     },
-    "uqhv.net": {
+    "uralweb.ru": {
       "heuristicAction": "allow"
     },
-    "urbandictionary.store": {
+    "urlbi.com": {
       "heuristicAction": "allow"
     },
-    "urldefense.proofpoint.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602051293160
-    },
     "us-central1-ah-acemarketingteam.cloudfunctions.net": {
       "heuristicAction": "allow"
     },
-    "us-central1-zendesk-functions.cloudfunctions.net": {
-      "heuristicAction": "allow"
+    "us-central1-kube-ownlocal.cloudfunctions.net": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637725944209
     },
-    "us-u.openx.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601919909061
+    "usaa360.com": {
+      "heuristicAction": "allow"
     },
-    "us.commitchange.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602236744801
+    "usabilla.com": {
+      "heuristicAction": "block"
     },
-    "us.creativecdn.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602342025706
+    "usanetwork.com": {
+      "heuristicAction": "allow"
     },
-    "usaa360.com": {
+    "usechorus.com": {
       "heuristicAction": "allow"
     },
     "useinsider.com": {
       "heuristicAction": "block"
     },
-    "user-red.com": {
+    "usemaxserver.de": {
       "heuristicAction": "allow"
     },
-    "usercentrics.eu": {
+    "useproof.com": {
+      "heuristicAction": "allow"
+    },
+    "user-red.com": {
       "heuristicAction": "block"
     },
-    "usergram.info": {
+    "user.com": {
       "heuristicAction": "block"
     },
-    "userreplay.net": {
+    "userback.io": {
+      "heuristicAction": "allow"
+    },
+    "usercentrics.eu": {
+      "heuristicAction": "cookieblock"
+    },
+    "userdatatrust.com": {
+      "heuristicAction": "allow"
+    },
+    "usergram.info": {
       "heuristicAction": "block"
     },
     "userreport.com": {
       "heuristicAction": "block"
     },
+    "usertracks.live": {
+      "heuristicAction": "allow"
+    },
     "uservoice.com": {
       "heuristicAction": "block"
     },
@@ -9739,7 +9589,7 @@
       "heuristicAction": "allow"
     },
     "usonar.jp": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "uspech.sk": {
       "heuristicAction": "allow"
@@ -9748,90 +9598,107 @@
       "heuristicAction": "allow"
     },
     "uuidksinc.net": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
-    "uxfeedback.ru": {
+    "uxtweak.com": {
       "heuristicAction": "block"
     },
-    "v1.cnzz.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602306542384
+    "vads.net.vn": {
+      "heuristicAction": "allow"
     },
-    "v2.ferret-one.com": {
+    "valuecommerce.com": {
+      "heuristicAction": "block"
+    },
+    "variety.com": {
       "heuristicAction": "allow"
     },
-    "vads.net.vn": {
+    "veinteractive.com": {
       "heuristicAction": "allow"
     },
-    "valkirum.com": {
+    "vendemore.com": {
       "heuristicAction": "allow"
     },
-    "valuecommerce.com": {
-      "heuristicAction": "block"
+    "venraas.tw": {
+      "heuristicAction": "allow"
     },
-    "valuecommerce.ne.jp": {
+    "venusrevival.com": {
       "heuristicAction": "allow"
     },
-    "vanityfair.com": {
-      "heuristicAction": "block"
+    "vergic.com": {
+      "heuristicAction": "allow"
     },
-    "veinteractive.com": {
+    "verizonmedia.com": {
       "heuristicAction": "allow"
     },
-    "velaro.com": {
+    "verizonsmallbusinessessentials.com": {
       "heuristicAction": "allow"
     },
-    "vendemore.com": {
+    "vesta.io": {
       "heuristicAction": "allow"
     },
-    "vergic.com": {
+    "vesti.ru": {
       "heuristicAction": "allow"
     },
-    "vertebrae-axis.com": {
+    "vettnews.com": {
       "heuristicAction": "allow"
     },
-    "verticalhealth.net": {
+    "vfgte.com": {
       "heuristicAction": "allow"
     },
     "vgtrk.com": {
       "heuristicAction": "allow"
     },
-    "vgwort.de": {
+    "vgwort.de": {
+      "heuristicAction": "block"
+    },
+    "viacomcbs.digital": {
+      "heuristicAction": "allow"
+    },
+    "viadata.store": {
       "heuristicAction": "allow"
     },
     "viafoura.co": {
       "heuristicAction": "block"
     },
-    "viatorinc.com": {
+    "viaplays.com": {
       "heuristicAction": "allow"
     },
-    "vid.springserve.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601943046815
-    },
-    "vidads.gr": {
+    "viatorinc.com": {
       "heuristicAction": "allow"
     },
-    "vidassets.terminus.services": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602089418705
+    "vic-m.co": {
+      "heuristicAction": "block"
     },
-    "vidazoo.com": {
+    "vice.com": {
       "heuristicAction": "allow"
     },
-    "video-ads.rubiconproject.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602185582359
-    },
     "video-cdn.net": {
       "heuristicAction": "allow"
     },
     "video.google.com": {
       "heuristicAction": "cookieblock"
     },
+    "videobyte.com": {
+      "heuristicAction": "allow"
+    },
+    "videodatacenter.com": {
+      "heuristicAction": "allow"
+    },
+    "videodelivery.net": {
+      "heuristicAction": "allow"
+    },
     "videohub.tv": {
       "heuristicAction": "block"
     },
+    "videonow.ru": {
+      "heuristicAction": "allow"
+    },
+    "videostep.com": {
+      "heuristicAction": "allow"
+    },
+    "videoyoum7.com": {
+      "heuristicAction": "allow"
+    },
     "vidgrid.com": {
       "heuristicAction": "allow"
     },
@@ -9839,22 +9706,34 @@
       "heuristicAction": "cookieblock"
     },
     "vidio.com": {
+      "heuristicAction": "block"
+    },
+    "vidoomy.com": {
       "heuristicAction": "allow"
     },
-    "vidyard.com": {
+    "vidy.com": {
       "heuristicAction": "block"
     },
-    "vietid.net": {
+    "vidyard.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "vietnamnetad.vn": {
       "heuristicAction": "allow"
     },
     "vietnamnettv.vn": {
       "heuristicAction": "allow"
     },
+    "viewdeos.com": {
+      "heuristicAction": "allow"
+    },
     "viglink.com": {
       "heuristicAction": "block"
     },
+    "vigo.one": {
+      "heuristicAction": "allow"
+    },
     "vihub.ru": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
     "viki.io": {
       "heuristicAction": "allow"
@@ -9865,110 +9744,121 @@
     "viostream.com": {
       "heuristicAction": "allow"
     },
-    "vip.com": {
-      "heuristicAction": "allow"
-    },
     "vipstatic.com": {
       "heuristicAction": "allow"
     },
     "viqeo.tv": {
       "heuristicAction": "allow"
     },
-    "viralize.tv": {
+    "viralsweep.com": {
       "heuristicAction": "allow"
     },
     "virgul.com": {
       "heuristicAction": "allow"
     },
-    "virtuoussoftware.com": {
+    "virtonnews.com": {
       "heuristicAction": "allow"
     },
     "visa.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "cookieblock"
     },
     "visilabs.net": {
       "heuristicAction": "allow"
     },
-    "visitor-service.tealiumiq.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601938774970
+    "visionip.tv": {
+      "heuristicAction": "allow"
     },
-    "visitor-track.com": {
+    "visitor-analytics.io": {
       "heuristicAction": "allow"
     },
+    "visitor-track.com": {
+      "heuristicAction": "block"
+    },
     "visualstudio.com": {
       "heuristicAction": "block"
     },
     "visualwebsiteoptimizer.com": {
       "heuristicAction": "block"
     },
-    "vivino.com": {
+    "vizury.com": {
       "heuristicAction": "allow"
     },
-    "vivocha.com": {
+    "vk-portal.net": {
       "heuristicAction": "allow"
     },
-    "vizergy.com": {
+    "vk.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637550300984
+    },
+    "vkuser.net": {
       "heuristicAction": "allow"
     },
-    "vizury.com": {
+    "vm5apis.com": {
       "heuristicAction": "allow"
     },
-    "vk.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1601925889427
+    "vmware.com": {
+      "heuristicAction": "allow"
+    },
+    "vo-media.ru": {
+      "heuristicAction": "allow"
     },
-    "vnecdn.net": {
+    "vod.pl": {
       "heuristicAction": "allow"
     },
     "vodgc.net": {
       "heuristicAction": "allow"
     },
-    "vogue.com": {
-      "heuristicAction": "block"
+    "vodus-api-serverless.azurewebsites.net": {
+      "heuristicAction": "allow"
+    },
+    "vodus.com": {
+      "heuristicAction": "allow"
     },
     "voidboost.net": {
       "heuristicAction": "allow"
     },
+    "volcast.com": {
+      "heuristicAction": "allow"
+    },
+    "voltaxservices.io": {
+      "heuristicAction": "block"
+    },
     "volvelle.tech": {
       "heuristicAction": "allow"
     },
+    "votepca.com": {
+      "heuristicAction": "allow"
+    },
     "voxmedia.com": {
       "heuristicAction": "cookieblock"
     },
-    "vporn.com": {
+    "vs3.com": {
       "heuristicAction": "allow"
     },
-    "vroom.be": {
+    "vtb24.ru": {
       "heuristicAction": "allow"
     },
-    "vrtzads.com": {
+    "vtex.com": {
       "heuristicAction": "allow"
     },
-    "vstocklab.com": {
+    "vuit.com": {
       "heuristicAction": "allow"
     },
-    "vt.myvisualiq.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601973714294
+    "vuukle.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1636891659247
     },
-    "vupulse.com": {
+    "vz.ru": {
       "heuristicAction": "allow"
     },
-    "vzew.net": {
+    "vzck.net": {
       "heuristicAction": "allow"
     },
-    "w.cnzz.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602001681617
-    },
-    "w.estat.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602280601366
+    "vzew.net": {
+      "heuristicAction": "allow"
     },
-    "w.soundcloud.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602240076207
+    "w3counter.com": {
+      "heuristicAction": "allow"
     },
     "w55c.net": {
       "heuristicAction": "block"
@@ -9976,21 +9866,29 @@
     "w8.com.cn": {
       "heuristicAction": "allow"
     },
-    "walkme.com": {
+    "wal.co": {
+      "heuristicAction": "allow"
+    },
+    "wallit.io": {
       "heuristicAction": "allow"
     },
     "wallkit.net": {
       "heuristicAction": "allow"
     },
-    "wan.liebao.cn": {
+    "walls.io": {
       "heuristicAction": "allow"
     },
-    "watertu.com": {
+    "walmart.ca": {
       "heuristicAction": "allow"
     },
-    "waytogrow-d.openx.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602264248553
+    "walmart.com": {
+      "heuristicAction": "allow"
+    },
+    "warriorplus.com": {
+      "heuristicAction": "allow"
+    },
+    "watertu.com": {
+      "heuristicAction": "allow"
     },
     "wbtrk.net": {
       "heuristicAction": "block"
@@ -9998,53 +9896,50 @@
     "wcfbc.net": {
       "heuristicAction": "block"
     },
-    "wcs.naver.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601931986654
+    "wctrib.com": {
+      "heuristicAction": "allow"
     },
     "wdsvc.net": {
       "heuristicAction": "block"
     },
-    "web.hb.ad.cpe.dotomi.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602260342262
+    "weareplannedparenthood.org": {
+      "heuristicAction": "allow"
     },
-    "webankieta.pl": {
+    "weatherol.com": {
       "heuristicAction": "allow"
     },
     "webantenna.info": {
       "heuristicAction": "block"
     },
+    "webengage.co": {
+      "heuristicAction": "block"
+    },
     "webengage.com": {
       "heuristicAction": "block"
     },
     "webeyez.com": {
       "heuristicAction": "allow"
     },
-    "webforms-here.com": {
-      "heuristicAction": "allow"
+    "webflow.com": {
+      "heuristicAction": "cookieblock"
     },
-    "webmd.com": {
+    "webforms-here.com": {
       "heuristicAction": "allow"
     },
-    "webnode.com": {
+    "webim.ru": {
       "heuristicAction": "allow"
     },
     "weborama.fr": {
       "heuristicAction": "block"
     },
-    "webpubcontent.raycommedia.com": {
-      "heuristicAction": "allow"
-    },
     "webpush.jp": {
       "heuristicAction": "block"
     },
-    "webs.com": {
+    "webpuzzleapp.com": {
       "heuristicAction": "allow"
     },
-    "websdk.appsflyer.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602309768472
+    "webroot.com": {
+      "heuristicAction": "allow"
     },
     "webspectator.com": {
       "heuristicAction": "block"
@@ -10053,22 +9948,20 @@
       "heuristicAction": "block"
     },
     "webtracker.jp": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "webtrafficsource.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637785843260
+    },
+    "webtrekk-us.net": {
       "heuristicAction": "allow"
     },
     "webtrekk.net": {
       "heuristicAction": "block"
     },
     "webtrendslive.com": {
-      "heuristicAction": "allow"
-    },
-    "webturn.ru": {
-      "heuristicAction": "allow"
-    },
-    "webullfintech.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "webvisor.org": {
       "heuristicAction": "block"
@@ -10082,275 +9975,169 @@
     "wellsmedia.com": {
       "heuristicAction": "allow"
     },
-    "wemfbox.ch": {
-      "heuristicAction": "block"
-    },
-    "wemorefun.com": {
+    "welt.de": {
       "heuristicAction": "allow"
     },
-    "west.cn": {
+    "wenku365.com": {
       "heuristicAction": "allow"
     },
-    "westernsydneyuni.tt.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602391504256
-    },
-    "wgu.demdex.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602230387749
-    },
-    "whistleout.com": {
+    "westernunion.ru": {
       "heuristicAction": "allow"
     },
-    "wi-fi.ru": {
-      "heuristicAction": "block"
-    },
-    "widengle.com": {
+    "westlaw.com": {
       "heuristicAction": "allow"
     },
-    "widget-mediator.zopim.com": {
+    "wetvinfo.com": {
       "heuristicAction": "allow"
     },
-    "widgets.tvinsider.com": {
+    "wezhan.cn": {
       "heuristicAction": "allow"
     },
-    "wikia-services.com": {
+    "wfla.com": {
       "heuristicAction": "allow"
     },
-    "wikipedia.org": {
+    "wheelwheel.space": {
       "heuristicAction": "allow"
     },
-    "wintechnologies.demdex.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602355945198
+    "whiteboxdigital.ru": {
+      "heuristicAction": "allow"
     },
-    "wiqhit.com": {
+    "whitesaas.com": {
       "heuristicAction": "allow"
     },
-    "wired.com": {
+    "wi-fi.ru": {
       "heuristicAction": "block"
     },
-    "wishabi.com": {
-      "heuristicAction": "cookieblock"
-    },
-    "wisokykulas.bid": {
+    "widengle.com": {
       "heuristicAction": "allow"
     },
-    "wistia.com": {
-      "heuristicAction": "allow"
+    "widerplanet.com": {
+      "heuristicAction": "block"
     },
-    "wistia.net": {
+    "widget.spreaker.com": {
       "heuristicAction": "cookieblock"
     },
-    "wix.com": {
-      "heuristicAction": "allow"
-    },
-    "wkxppshj-qx.global.ssl.fastly.net": {
+    "wikimedia.org": {
       "heuristicAction": "cookieblock"
     },
-    "wnyc.org": {
-      "heuristicAction": "allow"
-    },
-    "wo-cloud.com": {
-      "heuristicAction": "allow"
-    },
-    "wondershare.com": {
-      "heuristicAction": "allow"
-    },
-    "workplace.tools": {
+    "williams-sonoma.com": {
       "heuristicAction": "allow"
     },
-    "worldbankgroup.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602384920990
-    },
-    "wp.com": {
-      "heuristicAction": "cookieblock"
-    },
-    "wpa.b.qq.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602206222609
-    },
-    "wpa.qq.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602217904450
-    },
-    "wpmudev.com": {
+    "wiqhit.com": {
       "heuristicAction": "allow"
     },
-    "ws.sharethis.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602347496165
-    },
-    "wsod.com": {
-      "heuristicAction": "block"
-    },
-    "wsu.demdex.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601903384315
-    },
-    "wsu.sc.omtrdc.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602190813278
-    },
-    "wt-eu02.net": {
-      "heuristicAction": "block"
-    },
-    "wt.soundestlink.com": {
+    "wisenut.co.kr": {
       "heuristicAction": "allow"
     },
-    "wufoo.com": {
+    "wishabi.com": {
       "heuristicAction": "allow"
     },
-    "ww1097.smartadserver.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601885701147
-    },
-    "www.aftonbladet.se": {
+    "wishpond.com": {
       "heuristicAction": "allow"
     },
-    "www.alsa.org": {
+    "wishpond.net": {
       "heuristicAction": "allow"
     },
-    "www.barilliance.net": {
-      "heuristicAction": "allow"
+    "wisokykulas.bid": {
+      "heuristicAction": "block"
     },
-    "www.bing.com": {
+    "wistia.com": {
       "heuristicAction": "cookieblock"
     },
-    "www.bizographics.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602336555860
+    "wistia.net": {
+      "heuristicAction": "cookieblock"
     },
-    "www.blogsky.com": {
+    "wix.com": {
       "heuristicAction": "allow"
     },
-    "www.clublibertaddigital.com": {
+    "wizards.com": {
       "heuristicAction": "allow"
     },
-    "www.dataplusmath.com": {
+    "wmtransfer.com": {
       "heuristicAction": "allow"
     },
-    "www.drcareers.ca": {
+    "wooly.com": {
       "heuristicAction": "allow"
     },
-    "www.dropbox.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602396705479
-    },
-    "www.duba.com": {
+    "wooza.com.br": {
       "heuristicAction": "allow"
     },
-    "www.facebook.com": {
+    "wordpress.com": {
       "heuristicAction": "cookieblock"
     },
-    "www.fastcounter.de": {
+    "workplace.tools": {
       "heuristicAction": "allow"
     },
-    "www.fresnobee.com": {
+    "worldgravity.com": {
       "heuristicAction": "allow"
     },
-    "www.gimp.org": {
+    "worldline-solutions.com": {
       "heuristicAction": "allow"
     },
-    "www.glassdoor.com": {
+    "woxo.tech": {
       "heuristicAction": "allow"
     },
-    "www.google-analytics.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602158166176
-    },
-    "www.google.com": {
+    "wp.com": {
       "heuristicAction": "cookieblock"
     },
-    "www.i.matheranalytics.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601907374810
-    },
-    "www.lightboxcdn.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602084731122
-    },
-    "www.medtargetsystem.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602161711148
-    },
-    "www.mulesoft.com": {
+    "wp.pl": {
       "heuristicAction": "allow"
     },
-    "www.patreon.com": {
+    "wpadmngr.com": {
       "heuristicAction": "allow"
     },
-    "www.prlog.org": {
+    "wpdigital.net": {
       "heuristicAction": "allow"
     },
-    "www.rumiview.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602063993962
-    },
-    "www.sacbee.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602137148935
+    "wpengine.com": {
+      "heuristicAction": "cookieblock"
     },
-    "www.sobot.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602091972046
+    "wpmudev.com": {
+      "heuristicAction": "block"
     },
-    "www.socialintents.com": {
+    "wsj.com": {
       "heuristicAction": "allow"
     },
-    "www.statcounter.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602158471844
+    "wsod.com": {
+      "heuristicAction": "block"
     },
-    "www.summerhamster.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601997652028
+    "wt-eu02.net": {
+      "heuristicAction": "block"
     },
-    "www.thenewstribune.com": {
+    "wufoo.com": {
       "heuristicAction": "allow"
     },
-    "www.tns-counter.ru": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602150975062
-    },
-    "www.ultimedia.com": {
-      "heuristicAction": "allow"
+    "wusa9.com": {
+      "heuristicAction": "block"
     },
-    "www.webnode.com": {
+    "wustl.edu": {
       "heuristicAction": "allow"
     },
-    "www.whistleout.com": {
-      "heuristicAction": "allow"
+    "www.bing.com": {
+      "heuristicAction": "cookieblock"
     },
-    "www.wikipedia.org": {
-      "heuristicAction": "allow"
+    "www.facebook.com": {
+      "heuristicAction": "cookieblock"
     },
-    "www.youtube.com": {
+    "www.google.com": {
       "heuristicAction": "cookieblock"
     },
-    "www.youvisit.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602012142114
+    "www.gov.cn": {
+      "heuristicAction": "allow"
     },
     "wwwimages.adobe.com": {
       "heuristicAction": "cookieblock"
     },
-    "wzrkt.com": {
-      "heuristicAction": "block",
-      "nextUpdateTime": 1602264066531
-    },
-    "x.bidswitch.net": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602218329857
-    },
-    "xesimg.com": {
-      "heuristicAction": "allow"
+    "wysistat.com": {
+      "heuristicAction": "block"
     },
     "xg4ken.com": {
       "heuristicAction": "block"
     },
-    "xhr.invl.co": {
+    "xgen.dev": {
+      "heuristicAction": "allow"
+    },
+    "xhamster.com": {
       "heuristicAction": "allow"
     },
     "xhuc.net": {
@@ -10374,19 +10161,13 @@
     "xsdownload.adobe.com": {
       "heuristicAction": "cookieblock"
     },
-    "xspadvertising.com": {
-      "heuristicAction": "block"
-    },
     "xtremepush.com": {
       "heuristicAction": "block"
     },
-    "xuannaer.datasink.sensorsdata.cn": {
+    "xxxjmp.com": {
       "heuristicAction": "block"
     },
-    "xunlei.com": {
-      "heuristicAction": "allow"
-    },
-    "xxxlutz.de": {
+    "y-track.com": {
       "heuristicAction": "allow"
     },
     "y3.analytics.yahoo.com": {
@@ -10398,10 +10179,6 @@
     "yadro.ru": {
       "heuristicAction": "block"
     },
-    "yads.yahoo.co.jp": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601984011639
-    },
     "yahoo.co.jp": {
       "heuristicAction": "block"
     },
@@ -10411,33 +10188,42 @@
     "yahoo.net": {
       "heuristicAction": "allow"
     },
+    "yahoosandbox.com": {
+      "heuristicAction": "allow"
+    },
+    "yandex.com": {
+      "heuristicAction": "allow"
+    },
+    "yandex.net": {
+      "heuristicAction": "allow"
+    },
     "yandex.ru": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1601896175459
+      "nextUpdateTime": 1637857030448
     },
     "yapfiles.ru": {
       "heuristicAction": "allow"
     },
+    "yastatic.net": {
+      "heuristicAction": "allow"
+    },
     "yccdn.com": {
       "heuristicAction": "allow"
     },
     "yektanet.com": {
       "heuristicAction": "block"
     },
-    "yellowblue.io": {
-      "heuristicAction": "allow"
-    },
-    "yiche.com": {
-      "heuristicAction": "allow"
-    },
-    "yieldify.com": {
+    "yeps.io": {
       "heuristicAction": "allow"
     },
     "yieldlab.net": {
       "heuristicAction": "block"
     },
+    "yieldlift.com": {
+      "heuristicAction": "block"
+    },
     "yieldmanager.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "yieldmo.com": {
       "heuristicAction": "block"
@@ -10445,9 +10231,8 @@
     "yieldoptimizer.com": {
       "heuristicAction": "block"
     },
-    "yjtag.yahoo.co.jp": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601886321420
+    "yimg.com": {
+      "heuristicAction": "cookieblock"
     },
     "yodasoft.in": {
       "heuristicAction": "allow"
@@ -10459,18 +10244,30 @@
       "heuristicAction": "allow"
     },
     "yoox.it": {
-      "heuristicAction": "block"
+      "heuristicAction": "allow"
     },
     "yotpo.com": {
       "heuristicAction": "cookieblock"
     },
-    "youdemai.com": {
+    "yottaa.net": {
+      "heuristicAction": "allow"
+    },
+    "youdemai.com": {
+      "heuristicAction": "allow"
+    },
+    "youjizz.com": {
       "heuristicAction": "allow"
     },
     "youku.com": {
       "heuristicAction": "allow"
     },
     "youplay.se": {
+      "heuristicAction": "block"
+    },
+    "yourtubetvs.site": {
+      "heuristicAction": "allow"
+    },
+    "youth.gov.hk": {
       "heuristicAction": "allow"
     },
     "youtube-nocookie.com": {
@@ -10482,30 +10279,37 @@
     "youvisit.com": {
       "heuristicAction": "block"
     },
+    "yprocedent.co": {
+      "heuristicAction": "allow"
+    },
+    "ytube2dl.com": {
+      "heuristicAction": "allow"
+    },
+    "yuanben.io": {
+      "heuristicAction": "allow"
+    },
+    "yuca.tv": {
+      "heuristicAction": "allow"
+    },
+    "yuguo.com": {
+      "heuristicAction": "allow"
+    },
     "yumpu.com": {
       "heuristicAction": "allow"
     },
     "yunaq.com": {
       "heuristicAction": "block"
     },
-    "yystatic.com": {
+    "yungao.mobi": {
       "heuristicAction": "allow"
     },
-    "z-analytics.net": {
+    "ywxq.net": {
       "heuristicAction": "allow"
     },
-    "z-na.amazon-adsystem.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602112943968
-    },
-    "z.moatads.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1601951726373
-    },
-    "z6rjha.net": {
+    "yystatic.com": {
       "heuristicAction": "allow"
     },
-    "zadn.vn": {
+    "z6rjha.net": {
       "heuristicAction": "allow"
     },
     "zaius.com": {
@@ -10514,38 +10318,28 @@
     "zalo.me": {
       "heuristicAction": "block"
     },
-    "zaloapp.com": {
+    "zap.buzz": {
       "heuristicAction": "allow"
     },
-    "zara.net": {
+    "zarabotkipro.ru": {
       "heuristicAction": "allow"
     },
-    "zarabotkipro.ru": {
+    "zarahome.net": {
       "heuristicAction": "allow"
     },
     "zdbb.net": {
       "heuristicAction": "block",
-      "nextUpdateTime": 1602269598152
+      "nextUpdateTime": 1637501901624
     },
     "zdmimg.com": {
       "heuristicAction": "allow"
     },
-    "zdw.w8.com.cn": {
-      "heuristicAction": "allow"
-    },
-    "zdwidget3-bs.sphereup.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602289914755
-    },
-    "zebestof.com": {
-      "heuristicAction": "allow"
-    },
-    "zedo.com": {
-      "heuristicAction": "block"
-    },
     "zemanta.com": {
       "heuristicAction": "block"
     },
+    "zenaps.com": {
+      "heuristicAction": "allow"
+    },
     "zendesk.com": {
       "heuristicAction": "cookieblock"
     },
@@ -10555,17 +10349,24 @@
     "zeotap.com": {
       "heuristicAction": "block"
     },
-    "zergnet.com": {
+    "zephr.com": {
       "heuristicAction": "block"
     },
+    "zergnet.com": {
+      "heuristicAction": "block",
+      "nextUpdateTime": 1637999438537
+    },
     "zero.kz": {
       "heuristicAction": "allow"
     },
+    "zerohedge.com": {
+      "heuristicAction": "allow"
+    },
     "zeronaught.com": {
       "heuristicAction": "allow"
     },
     "zg-api.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "zhugeapi.net": {
       "heuristicAction": "allow"
@@ -10576,7 +10377,7 @@
     "ziffdavis.com": {
       "heuristicAction": "allow"
     },
-    "ziftsolutions.com": {
+    "zikroarg.com": {
       "heuristicAction": "allow"
     },
     "zimmo.be": {
@@ -10588,24 +10389,19 @@
     "zippyfrog.co": {
       "heuristicAction": "allow"
     },
-    "zipwiresw.com": {
+    "zmags.com": {
       "heuristicAction": "allow"
     },
-    "znsps-bl6wf.ads.tremorhub.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602031702130
-    },
-    "znsv.baidu.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602132718722
-    },
-    "zoho.com": {
+    "znds.com": {
       "heuristicAction": "allow"
     },
-    "zoho.in": {
+    "zo.la": {
       "heuristicAction": "allow"
     },
-    "zol.com.cn": {
+    "zoho.com": {
+      "heuristicAction": "cookieblock"
+    },
+    "zoho.eu": {
       "heuristicAction": "allow"
     },
     "zonebourse.com": {
@@ -10614,6 +10410,9 @@
     "zoomanalytics.co": {
       "heuristicAction": "allow"
     },
+    "zoomd.com": {
+      "heuristicAction": "allow"
+    },
     "zoominfo.com": {
       "heuristicAction": "block"
     },
@@ -10621,41 +10420,50 @@
       "heuristicAction": "allow"
     },
     "zopim.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "cookieblock"
     },
     "zprk.io": {
       "heuristicAction": "block"
     },
-    "zs4.cnzz.com": {
-      "heuristicAction": "",
-      "nextUpdateTime": 1602055606931
-    },
     "ztsrv.com": {
-      "heuristicAction": "allow"
+      "heuristicAction": "block"
     },
     "zucks.net": {
+      "heuristicAction": "block"
+    },
+    "zum.com": {
+      "heuristicAction": "allow"
+    },
+    "zvezdaweekly.ru": {
+      "heuristicAction": "allow"
+    },
+    "zybrdr.com": {
       "heuristicAction": "allow"
     }
   },
   "snitch_map": {
-    "01net.com": [
-      "liberation.fr"
-    ],
     "0914.global.ssl.fastly.net": [
-      "etonline.com",
-      "wwe.com"
+      "insideedition.com",
+      "startrek.com",
+      "etonline.com"
+    ],
+    "0cf.io": [
+      "saltwire.com"
     ],
     "100widgets.com": [
-      "informationweek.com"
+      "dutchycorp.space"
     ],
-    "10hui.es": [
-      "ifvod.tv"
+    "10jqka.com.cn": [
+      "caijing.com.cn"
+    ],
+    "110.242.68.3": [
+      "baidu.com"
     ],
     "110.93.143.144": [
       "koreaherald.com"
     ],
-    "11183.com.cn": [
-      "ems.com.cn"
+    "11h11m.net": [
+      "class101.net"
     ],
     "120askimages.com": [
       "120ask.com"
@@ -10663,106 +10471,148 @@
     "123apps.com": [
       "online-audio-converter.com"
     ],
+    "123formbuilder.com": [
+      "multivu.com"
+    ],
     "126.net": [
-      "lawtime.cn"
+      "zhihu.com",
+      "360doc.com",
+      "aofex.com"
     ],
     "163.com": [
-      "lawtime.cn",
-      "lofter.com"
+      "zhihu.com",
+      "360doc.com",
+      "aofex.com"
+    ],
+    "180.210.206.226": [
+      "agenpoker88.asia"
+    ],
+    "18f-cloud.com": [
+      "1800flowers.com"
+    ],
+    "1bis.com": [
+      "banquepopulaire.fr"
+    ],
+    "1casino.media": [
+      "filmix.ac"
     ],
     "1dmp.io": [
-      "rambler.ru",
-      "hh.ru",
-      "ivi.tv"
+      "parasut.com",
+      "eldorado.ru",
+      "radikal.ru"
+    ],
+    "1internet.tv": [
+      "1tv.ru"
+    ],
+    "1plus1.ua": [
+      "unian.net"
+    ],
+    "1plus1.video": [
+      "unian.net"
+    ],
+    "1rx.io": [
+      "president.jp",
+      "abcactionnews.com",
+      "ole.com.ar"
+    ],
+    "1worldonline.com": [
+      "jamaica-gleaner.com",
+      "jagran.com"
+    ],
+    "2020mustang.com": [
+      "youjizz.com",
+      "avgle.com",
+      "spankbang.com"
+    ],
+    "2345.com": [
+      "6789.com",
+      "mydrivers.com"
     ],
     "247-inc.net": [
       "marriott.com",
-      "bestbuy.com",
-      "siriusxm.com"
-    ],
-    "24smi.net": [
-      "inosmi.ru",
-      "ng.ru"
+      "columbia.com"
     ],
-    "2checkout.com": [
-      "hola.org",
-      "wps.com"
+    "24hstatic.com": [
+      "24h.com.vn"
     ],
     "2o7.net": [
-      "flickr.com",
-      "usnews.com",
-      "prnewswire.com",
-      "crainsnewyork.com",
-      "sony.co.jp"
+      "cartoonnetwork.com",
+      "consumentenbond.nl",
+      "cbc.ca"
     ],
     "2t23.net": [
       "homedepot.ca"
     ],
+    "2xclick.ru": [
+      "mk.ru",
+      "doramy.club"
+    ],
     "33across.com": [
-      "w3schools.com",
-      "ask.com",
-      "op.gg"
+      "sportsengine.com",
+      "livescience.com",
+      "yahoo.com"
     ],
     "360.cn": [
-      "so.com",
-      "jc35.com",
-      "koolearn.com"
+      "wkzuche.com",
+      "mokahr.com",
+      "so.com"
     ],
     "360yield.com": [
-      "okezone.com",
-      "dailymotion.com",
-      "youm7.com"
-    ],
-    "3conline.com": [
-      "pcbaby.com.cn",
-      "pchouse.com.cn",
-      "pcauto.com.cn"
+      "abcactionnews.com",
+      "parasut.com",
+      "spin.com"
     ],
-    "3ds.com": [
-      "solidworks.com"
+    "37.com": [
+      "woskj2.com"
     ],
     "3gl.net": [
-      "investopedia.com",
-      "thoughtco.com",
-      "bhphotovideo.com"
+      "digg.com",
+      "st.com",
+      "transunion.com"
     ],
     "3lift.com": [
-      "msn.com",
-      "okezone.com",
-      "sourceforge.net"
+      "isbank.com.tr",
+      "abcactionnews.com",
+      "nra.org"
     ],
-    "40nuggets.com": [
-      "jewishvirtuallibrary.org"
+    "451.io": [
+      "njit.edu"
     ],
     "4dex.io": [
-      "lepoint.fr",
-      "wiocha.pl",
-      "pressherald.com"
+      "chess.com",
+      "techopedia.com",
+      "curseforge.com"
     ],
-    "4paradigm.com": [
-      "2345.com",
-      "duba.com"
+    "4dsply.com": [
+      "realclearpolitics.com",
+      "newser.com"
     ],
-    "4pda.to": [
-      "4pda.ru"
+    "4gtv.tv": [
+      "hinet.net"
     ],
     "4strokemedia.com": [
-      "tiscali.it",
+      "adnkronos.com",
       "ilmeteo.it"
     ],
     "50bang.org": [
-      "2345.com",
+      "6789.com",
       "mydrivers.com",
-      "6789.com"
+      "2345.com"
+    ],
+    "50bangzh.com": [
+      "2345.com"
     ],
     "51.la": [
-      "haoyer.com",
-      "312168.com",
-      "foodmate.net"
+      "jdzj.com",
+      "foodmate.net",
+      "diandongwajueji.com"
     ],
     "53kf.com": [
-      "300.cn",
-      "liuxue86.com"
+      "liuxue86.com",
+      "300.cn"
+    ],
+    "55haitao.com": [
+      "linkhaitao.com"
     ],
     "58.com": [
       "anjuke.com"
@@ -10773,55 +10623,79 @@
     "58cdn.com.cn": [
       "anjuke.com"
     ],
-    "58che.com": [
-      "cnmo.com"
+    "6q33.net": [
+      "adsoftheworld.com"
     ],
-    "6noy.net": [
-      "goop.com"
+    "6rooms.com": [
+      "6.cn"
     ],
     "6sc.co": [
-      "opendns.com",
-      "criteo.com",
-      "hootsuite.com"
+      "piano.io",
+      "trendmicro.com",
+      "mindbodyonline.com"
     ],
     "71360.com": [
       "sina.com.cn"
     ],
     "7eer.net": [
-      "shutterstock.com",
-      "networksolutions.com",
-      "linksys.com"
+      "nypost.com",
+      "all-free-download.com",
+      "networksolutions.com"
     ],
     "7gra.us": [
-      "todamateria.com.br"
+      "dicio.com.br",
+      "todamateria.com.br",
+      "sinonimos.com.br"
     ],
-    "7xbid.com": [
-      "jawapos.com"
+    "7news.az": [
+      "qafqazinfo.az"
+    ],
+    "7ymy.net": [
+      "1800flowers.com"
+    ],
+    "8b4b041006.com": [
+      "pornone.com"
+    ],
+    "8bx6ag.net": [
+      "telestream.net"
+    ],
+    "8digits.com": [
+      "parasut.com"
+    ],
+    "8u86.net": [
+      "funimation.com"
     ],
     "8v4lqg.net": [
       "avid.com"
     ],
     "a-mo.net": [
-      "9to5mac.com",
-      "electrek.co",
-      "9to5google.com"
+      "9to5google.com",
+      "jamaica-gleaner.com",
+      "fastcompany.com"
+    ],
+    "a-sports.tv": [
+      "arynews.tv"
+    ],
+    "a2f41194651173ebf.awsglobalaccelerator.com": [
+      "whitney.org"
+    ],
+    "a2hosting.com": [
+      "portotheme.com"
+    ],
+    "aaas.org": [
+      "science.org"
     ],
     "aafp.net": [
       "aafp.org"
     ],
     "aamsitecertifier.com": [
-      "bizjournals.com",
+      "staradvertiser.com",
       "reviewjournal.com",
-      "postandcourier.com"
+      "onecount.net"
     ],
     "aan.com": [
       "neurology.org"
     ],
-    "aasaam.com": [
-      "borna.news",
-      "rokna.net",
-      "shomanews.com"
-    ],
     "aau-search-web-prod.azurewebsites.net": [
       "aau.dk"
     ],
@@ -10829,108 +10703,150 @@
       "aau.dk"
     ],
     "aaxads.com": [
-      "reddit.com",
-      "forbes.com",
-      "mashable.com"
+      "bicycling.com",
+      "wavy.com",
+      "wfla.com"
+    ],
+    "abc.es": [
+      "vocento.com"
+    ],
+    "abc7.com": [
+      "ebaumsworld.com"
+    ],
+    "abmr.net": [
+      "potterybarnkids.com"
     ],
     "about.co.kr": [
       "gmarket.co.kr",
-      "auction.co.kr"
+      "auction.co.kr",
+      "ytn.co.kr"
     ],
     "abtasty.com": [
-      "christianitytoday.com"
+      "plannedparenthood.org",
+      "avid.com",
+      "cartier.com"
     ],
-    "abtshield.com": [
-      "gazeta.pl"
+    "abtesting.ai": [
+      "lottiefiles.com"
     ],
-    "acast.cloud": [
-      "acast.com"
+    "ac-ricoh.jp": [
+      "ricoh.com"
     ],
     "acast.com": [
-      "newstatesman.com",
-      "bloody-disgusting.com"
+      "cato.org",
+      "khn.org",
+      "cleveland.com"
+    ],
+    "accdab.net": [
+      "overstock.com"
     ],
     "accesstrade.net": [
-      "moppy.jp"
+      "ecnavi.jp",
+      "hapitas.jp"
     ],
-    "accorhotels.com": [
-      "accor.com",
+    "accor.com": [
       "fairmont.com"
     ],
     "accorhotels.ws": [
       "accor.com"
     ],
-    "accu-web-raine.azurewebsites.net": [
-      "accuweather.com"
+    "accunix.net": [
+      "thenewslens.com"
+    ],
+    "accutrackjs-test.azurewebsites.net": [
+      "thenewslens.com"
+    ],
+    "accuweather.com": [
+      "wkrn.com",
+      "manoramaonline.com",
+      "seattleweekly.com"
+    ],
+    "acecounter.com": [
+      "kita.net"
     ],
     "acint.net": [
-      "aif.ru"
+      "radikal.ru",
+      "rin.ru",
+      "beginnersmind.info"
     ],
-    "acpm.fr": [
-      "lefigaro.fr",
-      "lequipe.fr",
-      "lexpress.fr"
+    "acq.io": [
+      "hmhco.com",
+      "web.com"
     ],
-    "acquia.com": [
-      "panasonic.com",
-      "iop.org",
-      "ama-assn.org"
+    "acquire.io": [
+      "christies.com"
+    ],
+    "acquireinsight.net": [
+      "phillyvoice.com",
+      "whyy.org"
+    ],
+    "acrosspf.com": [
+      "domeggook.com",
+      "jobkorea.co.kr",
+      "khan.co.kr"
     ],
     "acstat.com": [
-      "alfabank.ru",
-      "eldorado.ru"
+      "eldorado.ru",
+      "nic.ru",
+      "alfabank.ru"
+    ],
+    "actionbutton.co": [
+      "upworthy.com",
+      "good.is",
+      "fortune.com"
     ],
     "actionnetwork.org": [
       "dailykos.com"
     ],
-    "activecalendar.com": [
-      "villanova.edu"
-    ],
-    "activehosted.com": [
-      "makezine.com",
-      "adsoftheworld.com",
-      "admedo.com"
+    "activekids.com": [
+      "active.com"
     ],
     "activetrail.com": [
       "mako.co.il"
     ],
-    "acuityplatform.com": [
-      "fool.com",
-      "medscape.com",
-      "spreaker.com"
+    "activision.com": [
+      "callofduty.com"
+    ],
+    "actonsoftware.com": [
+      "commondreams.org",
+      "splashtop.com",
+      "astm.org"
     ],
-    "acyzh.com": [
-      "fx678.com"
+    "acuityplatform.com": [
+      "president.jp",
+      "baltimoresun.com",
+      "orlandosentinel.com"
     ],
     "ad-lancers.jp": [
       "lancers.jp"
     ],
-    "ad-plus.cn": [
-      "sohu.com"
+    "ad-m.asia": [
+      "teratail.com",
+      "infoseek.co.jp",
+      "autoblog.com"
     ],
     "ad-score.com": [
-      "ettoday.net",
+      "thegatewaypundit.com",
       "mentalfloss.com",
-      "metacafe.com"
-    ],
-    "ad-srv.net": [
-      "swarovski.com"
+      "investing.com"
     ],
     "ad-stir.com": [
+      "doda.jp",
       "lolipop.jp",
-      "suumo.jp",
-      "syosetu.com"
+      "moppy.jp"
     ],
     "ad-survey.com": [
-      "huanqiu.com"
+      "huanqiu.com",
+      "zol.com.cn"
     ],
     "ad-track.jp": [
-      "moppy.jp"
+      "moppy.jp",
+      "hapitas.jp"
     ],
     "ad.gt": [
-      "dailymotion.com",
-      "fandom.com",
-      "wired.com"
+      "spin.com",
+      "staradvertiser.com",
+      "mediaite.com"
     ],
     "ad.org.vn": [
       "thethao247.vn"
@@ -10938,915 +10854,1186 @@
     "ad1x.com": [
       "saksfifthavenue.com"
     ],
-    "adalliance.io": [
-      "n-tv.de",
-      "stern.de",
-      "rtl.de"
+    "ad2iction.com": [
+      "thenewslens.com"
+    ],
+    "ad6media.fr": [
+      "centerblog.net",
+      "dhgate.com"
+    ],
+    "ada.support": [
+      "ada.cx"
     ],
     "adalyser.com": [
-      "duolingo.com",
-      "etoro.com",
-      "totaljobs.com"
+      "samaritans.org",
+      "mind.org.uk",
+      "etoro.com"
     ],
-    "adaptiveads.com": [
-      "fark.com"
+    "adap.tv": [
+      "telemundo.com"
     ],
     "adaraanalytics.com": [
-      "australia.com"
+      "japan-guide.com",
+      "australia.com",
+      "rmg.co.uk"
+    ],
+    "adasiaholdings.com": [
+      "wartaekonomi.co.id",
+      "tempo.co",
+      "pptvhd36.com"
     ],
     "adbinead.com": [
-      "koreatimes.co.kr"
+      "hani.co.kr"
+    ],
+    "adblade.com": [
+      "lancasteronline.com",
+      "triblive.com",
+      "firefaucet.win"
+    ],
+    "adblockanalytics.com": [
+      "intel.com",
+      "ok.ru"
     ],
     "adbox.lv": [
       "inbox.lv"
     ],
-    "adcampo.com": [
-      "flvto.biz",
-      "2conv.com"
+    "adbrix.io": [
+      "lotteon.com",
+      "wavve.com"
+    ],
+    "adcell.com": [
+      "yumpu.com"
+    ],
+    "adcontroll.com": [
+      "shopclues.com"
     ],
     "adda247.in": [
       "adda247.com"
     ],
     "addevent.com": [
-      "clickfunnels.com"
+      "mountvernon.org",
+      "clickfunnels.com",
+      "etix.com"
+    ],
+    "addroplet.com": [
+      "americanthinker.com"
     ],
     "addthis.com": [
-      "who.int",
-      "worldometers.info",
-      "columbia.edu"
+      "business-standard.com",
+      "ucsusa.org",
+      "iit.edu"
+    ],
+    "adensemble.com": [
+      "banggood.com",
+      "dhgate.com"
     ],
     "adentifi.com": [
-      "cancer.org",
-      "lastpass.com",
-      "metmuseum.org"
+      "hopkinsmedicine.org",
+      "baltimoresun.com",
+      "sun-sentinel.com"
+    ],
+    "adflex.com.tr": [
+      "adtarget.com.tr"
     ],
     "adform.net": [
-      "yahoo.com",
-      "amazon.com",
-      "msn.com"
+      "president.jp",
+      "parasut.com",
+      "giga.de"
     ],
     "adfox.ru": [
-      "livejournal.com",
-      "rambler.ru",
-      "gismeteo.ru"
+      "tjournal.ru",
+      "smotrim.ru",
+      "rg.ru"
+    ],
+    "adgebra.co.in": [
+      "goodreturns.in",
+      "oneindia.com",
+      "aawsat.com"
     ],
     "adgeek.net": [
-      "shutterstock.com",
-      "msi.com"
+      "ctee.com.tw",
+      "newtalk.tw"
+    ],
+    "adhash.org": [
+      "typosthes.gr",
+      "marinetraffic.com"
     ],
     "adhaven.com": [
-      "youm7.com",
-      "nerdwallet.com"
+      "autoblog.com"
     ],
     "adhigh.net": [
-      "lenta.ru",
-      "ozon.ru",
-      "kp.ru"
+      "eldorado.ru",
+      "tass.ru",
+      "radikal.ru"
+    ],
+    "adidas.com": [
+      "reebok.com"
+    ],
+    "adiktivebanners.com": [
+      "youporn.com"
+    ],
+    "adilligo.com": [
+      "metropoles.com"
     ],
     "adinc.kr": [
+      "chosun.com",
       "donga.com"
     ],
-    "adingo.jp": [
-      "suumo.jp",
-      "sony.jp"
+    "adinsight.co.kr": [
+      "domeggook.com",
+      "ohou.se",
+      "interpark.com"
+    ],
+    "adinsight.net": [
+      "okaz.com.sa",
+      "saudigazette.com.sa"
     ],
     "adition.com": [
-      "okezone.com",
-      "imgur.com",
-      "t-online.de"
+      "parasut.com",
+      "giga.de",
+      "yahoo.com"
     ],
     "adjetter.com": [
       "adda247.com"
     ],
+    "adjust.com": [
+      "hotpads.com",
+      "babycenter.com"
+    ],
+    "adjust.net.in": [
+      "aajtak.in"
+    ],
+    "adjw.co.kr": [
+      "edaily.co.kr"
+    ],
     "adkernel.com": [
-      "techradar.com",
-      "livescience.com",
-      "howtogeek.com"
+      "scoopwhoop.com",
+      "sakshi.com",
+      "lamag.com"
+    ],
+    "adlightning.com": [
+      "beeradvocate.com",
+      "theonion.com",
+      "tulsaworld.com"
     ],
     "adlmerge.com": [
-      "aif.ru"
+      "radikal.ru",
+      "hkprice.info"
     ],
-    "adman.gr": [
-      "newsit.gr",
-      "gazzetta.gr",
-      "liberal.gr"
+    "admanmedia.com": [
+      "staradvertiser.com",
+      "youm7.com",
+      "washingtontimes.com"
     ],
     "admaster.com.cn": [
-      "lianjia.com"
+      "jinshuju.net"
     ],
     "admatic.com.tr": [
-      "memurlar.net"
+      "haberler.com",
+      "milligazete.com.tr",
+      "sondakika.com"
+    ],
+    "admaticcrm.com": [
+      "admatic.com.tr"
     ],
     "admatrix.jp": [
-      "appier.com",
-      "shop-pro.jp"
+      "4gamer.net",
+      "citrix.com",
+      "cloud.com"
+    ],
+    "admaxium.com": [
+      "banggood.com",
+      "dhgate.com"
     ],
     "admedia.com": [
       "dx.com"
     ],
     "admedo.com": [
-      "theregister.com",
-      "topuniversities.com",
-      "bristol.ac.uk"
-    ],
-    "admetrica.ru": [
-      "yandex.ru",
-      "yandex.com",
-      "yandex.by"
+      "arts.ac.uk",
+      "ducati.com",
+      "topuniversities.com"
     ],
     "admicro.vn": [
-      "laodong.vn",
-      "vtv.vn",
-      "kenh14.vn"
+      "tuoitre.vn",
+      "soha.vn",
+      "thanhnien.vn"
     ],
     "admission.net": [
+      "lexus.com",
       "chevrolet.com"
     ],
     "admithub.com": [
-      "uwyo.edu"
+      "uwyo.edu",
+      "palomar.edu",
+      "utm.edu"
+    ],
+    "admixer.co.kr": [
+      "lotteon.com",
+      "interpark.com",
+      "jobkorea.co.kr"
     ],
     "admixer.net": [
-      "khaberni.com",
-      "alwakeelnews.com",
-      "i.ua"
+      "technopat.net",
+      "obozrevatel.com",
+      "trafmag.com"
     ],
     "admost.com": [
-      "ensonhaber.com",
       "yeniakit.com.tr",
-      "haberler.com"
+      "t24.com.tr",
+      "mackolik.com"
     ],
     "adnuntius.com": [
-      "milliyet.com.tr",
-      "alwakeelnews.com",
-      "ahlmasrnews.com"
+      "ahram.org.eg",
+      "sanook.com"
+    ],
+    "adnuntius.delivery": [
+      "tv2.no"
     ],
     "adnxs.com": [
-      "microsoft.com",
-      "yahoo.com",
-      "amazon.com"
+      "president.jp",
+      "bicycling.com",
+      "ucsusa.org"
     ],
     "adnz.co": [
-      "nzz.ch"
+      "nzz.ch",
+      "archdaily.com"
     ],
     "adobe.com": [
-      "espn.com",
-      "marriott.com",
-      "history.com"
+      "cartoonnetwork.com",
+      "trutv.com",
+      "espn.com"
     ],
     "adobecqms.net": [
       "grainger.com"
     ],
+    "adobedc.net": [
+      "ksta.de",
+      "ncr.com",
+      "globalnews.ca"
+    ],
+    "adobemsbasic.com": [
+      "bigfishgames.com"
+    ],
     "adocean.pl": [
-      "gemius.pl",
       "tvp.pl",
-      "blic.rs"
+      "tvp.info"
+    ],
+    "adomik.com": [
+      "dailystar.com.lb"
     ],
     "adop.cc": [
       "ruliweb.com",
-      "pojoksatu.id",
-      "kyobobook.co.kr"
+      "mk.co.kr",
+      "indosport.com"
     ],
     "adotmob.com": [
-      "okezone.com",
-      "imgur.com",
-      "liberation.fr"
+      "haaretz.com",
+      "cartier.com",
+      "lepoint.fr"
+    ],
+    "adpartner.pro": [
+      "obozrevatel.com",
+      "unian.net",
+      "ngs.ru"
+    ],
+    "adpies.com": [
+      "lotteon.com",
+      "jobkorea.co.kr",
+      "ssg.com"
+    ],
+    "adplex.co.kr": [
+      "khan.co.kr"
+    ],
+    "adpmbtj.com": [
+      "youporn.com",
+      "pornhub.com"
     ],
     "adpnut.com": [
-      "koreaherald.com"
+      "chosun.com",
+      "koreaherald.com",
+      "asiae.co.kr"
     ],
-    "adpushup.com": [
-      "geeksforgeeks.org",
-      "india.com",
-      "bollywoodshaadis.com"
+    "adpool.bet": [
+      "filmix.ac",
+      "sinoptik.ua"
     ],
-    "adpxl.co": [
-      "instabug.com"
+    "adpushup.com": [
+      "spin.com",
+      "thelocal.se",
+      "eksisozluk.com"
     ],
     "adrecover.com": [
-      "geeksforgeeks.org",
-      "india.com"
+      "gestion.pe",
+      "winfuture.de",
+      "oneindia.com"
+    ],
+    "adriamediacontent.com": [
+      "kurir.rs"
     ],
     "adriver.ru": [
-      "aliexpress.ru",
-      "banggood.com",
-      "kp.ru"
+      "eldorado.ru",
+      "axar.az",
+      "radikal.ru"
     ],
     "adroll.com": [
-      "sourceforge.net",
-      "cloudflare.com",
-      "rakuten.co.jp"
+      "nra.org",
+      "helpshift.com",
+      "hudl.com"
     ],
-    "adrta.com": [
-      "redstate.com",
-      "ktvu.com",
-      "hotair.com"
+    "ads1-adnow.com": [
+      "storeboard.com"
     ],
     "adsafeprotected.com": [
-      "allabout.co.jp"
+      "ltn.com.tw"
     ],
     "adscale.de": [
-      "statista.com",
-      "memurlar.net",
-      "idnes.cz"
+      "parasut.com",
+      "giga.de",
+      "worldpopulationreview.com"
     ],
     "adschoom.com": [
-      "abril.com.br",
-      "newchic.com"
-    ],
-    "adscience.nl": [
-      "rijksmuseum.nl"
+      "correiobraziliense.com.br",
+      "banggood.com",
+      "abril.com.br"
     ],
     "adsco.re": [
-      "hoodsite.com",
+      "wplocker.com",
+      "1stream.top",
       "thepiratebay10.org"
     ],
-    "adserver.mk": [
-      "time.mk"
+    "adsdata.ru": [
+      "tinkoff.ru"
+    ],
+    "adserve.work": [
+      "jable.tv"
     ],
     "adsfactor.net": [
+      "on.cc",
+      "price.com.hk",
       "aastocks.com"
     ],
     "adskeeper.co.uk": [
-      "txxx.com",
-      "y2mate.guru",
-      "dramacool.movie"
+      "webcric.com",
+      "fastpic.org",
+      "gogoanime.cm"
     ],
     "adskeeper.com": [
-      "fastpic.ru"
+      "fastpic.org",
+      "gogoanime.cm",
+      "hesgoal.com"
     ],
     "adsniper.ru": [
-      "aif.ru"
+      "radikal.ru",
+      "alfabank.ru",
+      "qafqazinfo.az"
     ],
-    "adspsp.com": [
-      "yourdictionary.com"
+    "adsolut.in": [
+      "sakshi.com"
     ],
-    "adsrv.io": [
-      "thethao247.vn"
+    "adsparc.net": [
+      "khaleejtimes.com",
+      "dailystar.com.lb"
+    ],
+    "adspeed.net": [
+      "sciencenews.org",
+      "aoa.org"
+    ],
+    "adspsp.com": [
+      "greatist.com",
+      "politifact.com",
+      "medicalnewstoday.com"
     ],
     "adsrvr.org": [
-      "amazon.com",
-      "msn.com",
-      "godaddy.com"
+      "president.jp",
+      "bicycling.com",
+      "abcactionnews.com"
     ],
     "adswizz.com": [
-      "iheart.com",
-      "tunein.com",
-      "eltiempo.com"
+      "baltimoresun.com",
+      "sun-sentinel.com",
+      "orlandosentinel.com"
     ],
     "adsymptotic.com": [
-      "adobe.com",
-      "amazon.com",
-      "msn.com"
+      "yumpu.com",
+      "theworlds50best.com",
+      "iit.edu"
     ],
     "adtarget.com.tr": [
-      "memurlar.net",
-      "khaberni.com",
-      "alwakeelnews.com"
+      "haberler.com",
+      "worldpopulationreview.com",
+      "dotesports.com"
     ],
-    "adtdp.com": [
-      "suumo.jp",
-      "mixi.jp",
-      "sony.jp"
+    "adtarget.me": [
+      "filmix.ac"
     ],
-    "adtelli.com": [
-      "ukr.net"
+    "adtdp.com": [
+      "doda.jp",
+      "rocketnews24.com",
+      "rakuten.co.jp"
     ],
     "adtelligent.com": [
-      "aol.com",
-      "ukr.net",
-      "vanguardngr.com"
+      "nv.ua",
+      "youm7.com",
+      "dogemate.com"
     ],
     "adtimaserver.vn": [
-      "zingnews.vn",
       "baomoi.com",
-      "zingmp3.vn"
+      "zingnews.vn"
     ],
     "adtlgc.com": [
-      "olx.ro",
-      "delfi.lt"
+      "adevarul.ro",
+      "hotnews.ro",
+      "dhnet.be"
     ],
     "adtng.com": [
-      "pornhub.com",
-      "sxyprn.com",
-      "animeflv.net"
+      "daftsex.com",
+      "pornhat.com",
+      "spankbang.com"
     ],
-    "adtodate.net": [
-      "hamshahrionline.ir"
+    "adtriba.com": [
+      "t-online.de"
     ],
     "adtrue.com": [
-      "manganelo.com",
-      "subscene.com",
-      "headlines.pw"
+      "premiumtimesng.com"
+    ],
+    "adultswim.com": [
+      "yahoo.com",
+      "att.com"
     ],
     "adup-tech.com": [
-      "businessinsider.de"
+      "sport1.de"
     ],
     "advanced-web-analytics.com": [
-      "pnc.com",
-      "allstate.com"
+      "allstate.com",
+      "bankofamerica.com",
+      "pnc.com"
     ],
     "advangelists.com": [
-      "tv9telugu.com",
-      "thewire.in",
-      "tv9kannada.com"
+      "wallpaperaccess.com",
+      "chartink.com"
+    ],
+    "advarkads.com": [
+      "radikal.ru",
+      "qafqazinfo.az",
+      "hkprice.info"
     ],
     "advertising.com": [
-      "yahoo.com",
-      "amazon.com",
-      "msn.com"
+      "president.jp",
+      "isbank.com.tr",
+      "abcactionnews.com"
+    ],
+    "advertnative.com": [
+      "jawapos.com"
     ],
     "advertserve.com": [
       "yumpu.com",
-      "blackhatworld.com"
+      "practicalecommerce.com",
+      "customerthink.com"
+    ],
+    "advfn.com": [
+      "valuewalk.com"
     ],
     "advg.jp": [
-      "alc.co.jp",
-      "tsite.jp",
       "4gamer.net"
     ],
+    "adviad.com": [
+      "axar.az",
+      "apa.az",
+      "big.az"
+    ],
     "advividnetwork.com": [
-      "chinatimes.com",
-      "newtalk.tw",
-      "businesstoday.com.tw"
+      "edh.tw",
+      "thanhnien.vn",
+      "nownews.com"
     ],
-    "advsnx.net": [
-      "globes.co.il"
+    "advmusic.com": [
+      "promodj.com"
     ],
     "adweb.co.kr": [
       "danawa.com"
     ],
-    "adwstats.com": [
-      "journaldunet.com"
+    "adx.com.ru": [
+      "radikal.ru",
+      "regnum.ru",
+      "hkprice.info"
     ],
     "adxadserv.com": [
       "avgle.com"
     ],
+    "adxpremium.services": [
+      "wykop.pl"
+    ],
+    "adxserve.com": [
+      "gayboystube.com"
+    ],
     "adxvip.com": [
       "ifeng.com"
     ],
     "adyen.com": [
-      "abril.com.br",
-      "picsart.com"
+      "turbosquid.com",
+      "specialized.com",
+      "drmartens.com"
     ],
     "adzerk.net": [
-      "unsplash.com",
-      "united.com",
-      "lwn.net"
-    ],
-    "aetn.com": [
-      "history.com",
-      "biography.com"
+      "wetransfer.com",
+      "bizpacreview.com",
+      "iis.net"
     ],
     "aetnd.com": [
-      "history.com"
+      "history.com",
+      "aetv.com"
     ],
     "af-110.com": [
-      "moppy.jp"
+      "ecnavi.jp",
+      "hapitas.jp"
     ],
     "af-web-cms-0-prod.azurewebsites.net": [
       "arthritis.org"
     ],
     "affec.tv": [
-      "rmit.edu.au"
+      "twilio.com",
+      "gehealthcare.com",
+      "audubon.org"
+    ],
+    "affex.org": [
+      "home.pl"
+    ],
+    "affinity.com": [
+      "businessworld.in"
     ],
     "affirm.com": [
-      "stockx.com",
-      "nest.com",
       "oakley.com",
-      "comptia.org"
+      "dyson.com",
+      "inventables.com"
     ],
     "afftrack.pro": [
-      "newchic.com"
+      "dhgate.com"
     ],
-    "aftonbladet.se": [
-      "svd.se"
+    "afp.ai": [
+      "kino-teatr.ru",
+      "mirtesen.ru"
+    ],
+    "agechecked.com": [
+      "gambling.com"
     ],
     "agenziaentrate.it": [
       "agenziaentrate.gov.it"
     ],
-    "agilemeasure.com": [
-      "hpe.com"
+    "aggle.net": [
+      "digitaltrends.com"
+    ],
+    "aggregage.com": [
+      "apptentive.com"
+    ],
+    "agilesrv.com": [
+      "eleconomista.com.mx",
+      "forbes.com.mx"
     ],
     "agilone.com": [
-      "tommy.com",
-      "microcenter.com"
+      "microcenter.com",
+      "madewell.com",
+      "jcrew.com"
     ],
     "agkn.com": [
-      "amazon.com",
-      "msn.com",
-      "godaddy.com"
+      "president.jp",
+      "ucsusa.org",
+      "abcactionnews.com"
     ],
     "agoda.net": [
       "agoda.com"
     ],
     "agora.pl": [
+      "wyborcza.pl",
       "gazeta.pl",
-      "wyborcza.pl"
+      "blox.pl"
     ],
-    "ahighapi.com": [
-      "bitz.ai"
+    "aguanatural.com": [
+      "foroagua.com"
     ],
     "aidata.io": [
-      "ozon.ru",
-      "kp.ru",
-      "khaberni.com"
-    ],
-    "aihelp.net": [
-      "cs30.net"
+      "eldorado.ru",
+      "radikal.ru",
+      "rt.ru"
     ],
     "aimediagroup.com": [
-      "panasonic.com",
       "nova.edu",
+      "panasonic.com",
       "hardrock.com"
     ],
+    "ainedameri.one": [
+      "pelisplushd.net",
+      "cuevana3.io"
+    ],
     "aio.media": [
       "3dnews.ru"
     ],
+    "aip24.pl": [
+      "naszemiasto.pl"
+    ],
+    "aipam.ru": [
+      "garant.ru"
+    ],
     "aiproxies.com": [
-      "panasonic.com",
       "nova.edu",
+      "panasonic.com",
       "hardrock.com"
     ],
-    "airpr.com": [
-      "equifax.com",
-      "savethechildren.org",
-      "solarwinds.com"
+    "airfind.com": [
+      "nearbyme.io"
+    ],
+    "airtable.com": [
+      "hackmd.io"
+    ],
+    "airtrfx.com": [
+      "spirit.com"
+    ],
+    "ais.co.th": [
+      "thairath.co.th",
+      "pptvhd36.com",
+      "sanook.com"
+    ],
+    "ais.th": [
+      "thairath.co.th",
+      "sanook.com",
+      "pptvhd36.com"
     ],
     "aismo.ru": [
       "mosreg.ru"
     ],
-    "aj1015.online": [
-      "bbb.org"
+    "aj1047.online": [
+      "thethao247.vn"
+    ],
+    "aj1090.online": [
+      "4shared.com"
     ],
     "aj1431.online": [
       "gazetaexpress.com"
     ],
+    "aj1559.online": [
+      "thethao247.vn"
+    ],
+    "aj1907.online": [
+      "kinokong.org",
+      "kinogo-net.org",
+      "kinogo.biz"
+    ],
     "aj2031.online": [
-      "ap7am.com"
+      "gulte.com",
+      "greatandhra.com"
     ],
-    "aj2208.online": [
-      "filmix.co"
+    "aj2178.online": [
+      "kinokong.org",
+      "kinogo-net.org",
+      "kinogo.biz"
     ],
-    "ajax.googleapis.com": [
-      "mercurynews.com",
-      "denverpost.com",
-      "ocregister.com"
+    "aj2373.online": [
+      "hdfilmcehennemi2.pro",
+      "720pizle.net"
+    ],
+    "akamai-access.com": [
+      "fox9.com",
+      "fox10phoenix.com",
+      "fox2detroit.com"
     ],
     "akamaihd.net": [
-      "gizmodo.com",
-      "lifehacker.com",
-      "foxbusiness.com"
+      "fivethirtyeight.com",
+      "celine.com",
+      "scientificamerican.com"
     ],
     "akamaized.net": [
-      "typeform.com",
-      "ucdavis.edu",
-      "rutgers.edu"
+      "iit.edu",
+      "trustwave.com",
+      "umbc.edu"
+    ],
+    "akimilo.com": [
+      "dhgate.com"
     ],
     "akstat.io": [
-      "hotwire.com"
+      "armani.com",
+      "norton.com",
+      "farfetch.com"
     ],
     "albacross.com": [
-      "anydesk.com",
-      "bidtheatre.com",
-      "widespace.com"
+      "syncfusion.com",
+      "datadome.co",
+      "bidtheatre.com"
     ],
     "alcmpn.com": [
-      "consequenceofsound.net",
-      "art.com",
-      "oakley.com"
+      "zulily.com"
     ],
     "alexametrics.com": [
-      "okezone.com",
-      "bongacams.com",
-      "tianya.cn"
-    ],
-    "alfasense.com": [
-      "tass.ru",
-      "iz.ru",
-      "yaplakal.com"
+      "prothomalo.com",
+      "yumpu.com",
+      "motherless.com"
     ],
     "aliapp.org": [
       "ih5.cn",
-      "ywart.com"
+      "thepaper.cn",
+      "elecfans.com"
     ],
     "alibaba.com": [
-      "informationweek.com",
-      "daraz.pk",
-      "ywart.com"
+      "dianxiaomi.com",
+      "thepaper.cn"
     ],
     "alicdn.com": [
-      "ih5.cn",
-      "informationweek.com",
-      "daraz.pk"
+      "dianxiaomi.com",
+      "mining.online",
+      "ih5.cn"
     ],
     "aliexpress.com": [
-      "informationweek.com"
+      "mining.online",
+      "garant.ru",
+      "revopush.com"
     ],
-    "alifafdlnjeruif.com": [
-      "porntrex.com"
+    "aliexpress.ru": [
+      "garant.ru"
     ],
     "alipay.com": [
-      "daraz.pk"
+      "yuque.com"
     ],
     "aliyun.com": [
-      "gmw.cn",
-      "mojifen.com",
-      "122.gov.cn"
+      "ih5.cn",
+      "tianyancha.com"
     ],
     "aliyuncs.com": [
-      "66law.cn"
+      "58pic.com",
+      "699pic.com"
     ],
-    "all-cod.com": [
-      "kinokrad.co"
+    "alkhwarizmi.io": [
+      "moh.gov.sa"
+    ],
+    "alli.ai": [
+      "tradekorea.com"
+    ],
+    "allowme.com.br": [
+      "olx.com.br"
     ],
-    "allure.com": [
-      "wired.com",
-      "newyorker.com",
-      "vanityfair.com"
+    "allyable.com": [
+      "technion.ac.il"
     ],
     "almamedia.fi": [
       "iltalehti.fi"
     ],
     "alocdn.com": [
-      "realclearpolitics.com",
-      "euroluxhome.com",
-      "valuewalk.com"
-    ],
-    "alphonso.tv": [
-      "dashlane.com"
+      "valuewalk.com",
+      "slickdeals.net",
+      "hollywoodreporter.com"
     ],
     "alsa.org": [
       "als.org"
     ],
-    "alwasela.com": [
-      "copts-united.com"
+    "altmetric.com": [
+      "researchsquare.com"
+    ],
+    "altopd.com": [
+      "dhgate.com"
+    ],
+    "alxbgo.com": [
+      "avgle.com"
     ],
     "am15.net": [
-      "fastpic.ru"
+      "fastpic.org"
+    ],
+    "am3t9s.net": [
+      "dsw.com"
+    ],
+    "ama-assn.org": [
+      "jamanetwork.com"
     ],
     "amap.com": [
-      "zhaopin.com",
-      "kdslife.com",
-      "tom.com"
+      "zhaopin.com"
     ],
     "amazon-adsystem.com": [
-      "amazon.com",
-      "reddit.com",
-      "msn.com"
+      "president.jp",
+      "bicycling.com",
+      "togetter.com"
+    ],
+    "amazon.co.jp": [
+      "clickpost.jp"
     ],
     "amazon.com": [
-      "gucci.com",
       "reason.com",
-      "boxofficemojo.com"
+      "clickpost.jp",
+      "gucci.com"
     ],
-    "amazonaws.com": [
-      "abplive.com"
+    "amazon.es": [
+      "queralto.com"
     ],
     "amcdn.vn": [
-      "laodong.vn",
-      "vtv.vn",
-      "kenh14.vn"
+      "tuoitre.vn",
+      "soha.vn",
+      "thanhnien.vn"
+    ],
+    "amcn.com": [
+      "bbcamerica.com",
+      "amc.com"
     ],
     "ameba.jp": [
       "ameblo.jp",
       "amebaownd.com"
     ],
+    "amgs5.com": [
+      "ltn.com.tw"
+    ],
+    "amna01mstra8s42prod.azurewebsites.net": [
+      "nursingworld.org"
+    ],
     "amnet.tw": [
-      "thenewslens.com"
+      "feebee.com.tw",
+      "mobile01.com",
+      "rakuten.com.tw"
     ],
-    "amunx.de": [
-      "computerbase.de"
+    "amplitude.com": [
+      "masterclass.com",
+      "webex.com",
+      "trustpilot.com"
+    ],
+    "analdin.com": [
+      "mixandfun.com",
+      "realsrv.com"
+    ],
+    "analitits.com": [
+      "avgle.com"
     ],
     "analytics-egain.com": [
-      "hpe.com",
-      "jcpenney.com",
-      "td.com"
+      "norton.com",
+      "td.com",
+      "jcpenney.com"
     ],
     "analytics-sm.com": [
-      "gotomeeting.com",
+      "trutv.com",
       "monster.com",
-      "hbomax.com"
+      "petco.com"
     ],
-    "anandabazar.com": [
-      "telegraphindia.com"
-    ],
-    "and.co.uk": [
-      "dailymail.co.uk",
-      "thisismoney.co.uk"
+    "andata.ru": [
+      "kwork.ru"
     ],
-    "andertoons.com": [
-      "washingtonsharedparenting.com"
+    "anews.az": [
+      "qafqazinfo.az"
     ],
     "aniview.com": [
-      "rediff.com",
-      "mydramalist.com",
-      "mobafire.com"
+      "euronews.com",
+      "timesunion.com",
+      "nypost.com"
     ],
     "anm.co.uk": [
-      "dailymail.co.uk"
+      "metro.co.uk",
+      "dailymail.co.uk",
+      "thisismoney.co.uk"
     ],
-    "anquan.org": [
-      "afzhan.com",
-      "400.cn",
-      "9r.cn"
+    "annocdn.com": [
+      "ign.com"
     ],
-    "ansira.com": [
-      "petfinder.com"
+    "anquan.org": [
+      "instrument.com.cn"
     ],
     "answerscloud.com": [
-      "barclays.co.uk",
       "oakley.com"
     ],
+    "antena3.com": [
+      "lasexta.com"
+    ],
+    "anuntul.ro": [
+      "hotnews.ro"
+    ],
     "anura.io": [
       "techtimes.com"
     ],
-    "anvato.net": [
-      "chinatimes.com",
-      "kxan.com",
-      "ktvu.com"
-    ],
     "anyclip.com": [
-      "venturebeat.com",
+      "metasrc.com",
+      "inquirer.net",
       "wowhead.com"
     ],
     "anz.com": [
       "anz.com.au"
     ],
+    "ap.org": [
+      "dailykos.com",
+      "post-gazette.com"
+    ],
     "aparat.com": [
-      "agah.com",
       "tasnimnews.com",
-      "ponisha.ir"
+      "ponisha.ir",
+      "agah.com"
     ],
-    "apeartalb.site": [
-      "1377x.to"
-    ],
-    "apester.com": [
-      "deadline.com",
-      "indiewire.com",
-      "firstpost.com"
+    "apeagle.io": [
+      "paytm.com"
     ],
-    "apihotels.net": [
-      "hotels.com"
+    "app-digitalgate-prd-ol.azurewebsites.net": [
+      "avianca.com"
     ],
     "app-us1.com": [
-      "seekingalpha.com",
-      "jpost.com",
-      "lse.ac.uk"
+      "computer.org",
+      "techopedia.com",
+      "theme.co"
     ],
     "app.link": [
-      "twitch.tv",
-      "medium.com",
-      "marriott.com"
-    ],
-    "apparmor.com": [
-      "fiu.edu",
-      "dal.ca",
-      "ryerson.ca"
+      "zola.com",
+      "causes.com",
+      "eventbrite.es"
     ],
     "appconsent.io": [
-      "lefigaro.fr",
-      "commentcamarche.net",
+      "milanworld.net",
       "journaldunet.com"
     ],
     "appdynamics.com": [
-      "cisco.com",
-      "jstor.org",
-      "thomsonreuters.com"
+      "libertymutual.com",
+      "siriusxm.com",
+      "t-mobile.com"
     ],
     "appier.net": [
-      "kompas.com",
-      "ettoday.net",
-      "grid.id"
+      "interpark.com",
+      "st.com",
+      "yahoo.com"
     ],
     "apple.com": [
-      "apple.news",
-      "wyndhamhotels.com",
-      "minds.com"
+      "rabbitroom.com",
+      "balkanweb.com",
+      "dailyhunt.in"
     ],
     "appmifile.com": [
       "mi.com"
     ],
     "appsflyer.com": [
-      "farfetch.com",
-      "eonline.com",
-      "kitco.com"
+      "calm.com",
+      "zipcar.com",
+      "monster.com"
     ],
-    "apvdr.com": [
-      "sportingnews.com",
-      "soccerway.com",
-      "clicrbs.com.br"
+    "apptracker.stream": [
+      "dhgate.com"
+    ],
+    "aprtx.com": [
+      "dhgate.com"
+    ],
+    "apxlv.com": [
+      "stltoday.com"
     ],
     "aralego.com": [
-      "youm7.com",
-      "mydramalist.com",
-      "discuss.com.hk"
+      "thegatewaypundit.com",
+      "staradvertiser.com",
+      "scoopwhoop.com"
     ],
     "arc.io": [
-      "animeflv.net",
-      "cuevana3.io"
+      "trxking.xyz",
+      "icrypto.media",
+      "cryptowin.xyz"
     ],
-    "architecturaldigest.com": [
-      "wired.com",
-      "newyorker.com",
-      "vanityfair.com"
+    "arcpublishing.com": [
+      "ksat.com",
+      "bostonglobe.com",
+      "news4jax.com"
     ],
-    "ard.de": [
-      "ardmediathek.de"
+    "arkoselabs.com": [
+      "expedia.ca",
+      "orbitz.com",
+      "expedia.com"
     ],
     "arrivalist.com": [
-      "artic.edu"
-    ],
-    "arte.tv": [
-      "politico.eu"
-    ],
-    "artipbox.net": [
-      "globes.co.il"
-    ],
-    "aruba.it": [
-      "pec.it"
+      "nycgo.com",
+      "washingtontimes.com"
     ],
-    "as.com": [
-      "eluniverso.com"
+    "artnews.com": [
+      "wwd.com"
     ],
     "asadcdn.com": [
-      "businessinsider.de",
       "bild.de",
-      "welt.de"
+      "autobild.de",
+      "transfermarkt.de"
     ],
     "asapp.com": [
       "spectrum.net",
-      "rcn.com",
-      "verizon.com"
-    ],
-    "ascap.com": [
-      "elgenero.com"
-    ],
-    "ascpqnj-oam.global.ssl.fastly.net": [
-      "harborfreight.com"
-    ],
-    "asianmedia.com": [
-      "ltn.com.tw"
+      "jetblue.com",
+      "rcn.com"
     ],
-    "ask.com": [
-      "excite.com"
+    "asco.org": [
+      "cancer.net",
+      "ascopubs.org"
     ],
-    "askvamygov-ui.azurewebsites.net": [
-      "my.gov.au"
+    "asdxstatic.com": [
+      "ascendex.com"
     ],
-    "aso1.net": [
-      "cima4u.io",
-      "gayboystube.com",
-      "akwam.co"
+    "askvasam-ui.azurewebsites.net": [
+      "servicesaustralia.gov.au"
     ],
     "aspencore.com": [
       "eetimes.com"
     ],
     "associates-amazon.com": [
-      "amazon.com",
-      "usatoday.com",
-      "wired.com"
+      "amazon.com.au",
+      "houstonchronicle.com",
+      "amazon.com"
     ],
-    "asteannunci.it": [
-      "gazzettadelsud.it"
+    "astutebot.com": [
+      "astutesolutions.com"
     ],
-    "atdmt.com": [
-      "facebook.com",
-      "netflix.com",
-      "slack.com"
+    "at-o.net": [
+      "nos.nl",
+      "caradisiac.com",
+      "bbc.com"
     ],
     "atgsvcs.com": [
-      "mysql.com",
       "oracle.com",
-      "lenovo.com"
+      "mysql.com",
+      "netsuite.com"
     ],
     "ati-host.net": [
-      "huawei.com",
       "rte.ie",
-      "ovhcloud.com"
+      "huawei.com",
+      "leboncoin.fr"
     ],
     "atlassian.net": [
-      "blackboard.com"
+      "blackboard.com",
+      "aap.org"
     ],
-    "atp.io": [
-      "udemy.com",
-      "upwork.com",
-      "aarp.org"
+    "atomex.net": [
+      "shopclues.com",
+      "ajio.com"
+    ],
+    "atp.fox": [
+      "foxnews.com"
     ],
     "atsptp.com": [
-      "nutaku.net",
-      "brazzers.com"
+      "f95zone.to"
     ],
     "att.com": [
+      "xandr.com",
       "yahoo.com"
     ],
     "attentivemobile.com": [
-      "artstation.com",
-      "uniqlo.com",
-      "zazzle.com"
+      "loccitane.com",
+      "zazzle.com",
+      "dillards.com"
     ],
     "audiencerun.com": [
+      "prensalibre.com",
+      "centerblog.net",
       "unblog.fr"
     ],
-    "audioboom.com": [
-      "thisismoney.co.uk"
+    "audioeye.com": [
+      "hottopic.com",
+      "dealer.com",
+      "muscleandfitness.com"
     ],
-    "audioburst.com": [
-      "sportzbonanza.com"
+    "audrte.com": [
+      "dstillery.com"
     ],
     "aufp.io": [
-      "dailymotion.com"
+      "spin.com",
+      "nofilmschool.com",
+      "discogs.com"
     ],
     "auone.jp": [
       "au.com"
     ],
     "auth0.com": [
-      "mercurynews.com",
-      "denverpost.com",
-      "makezine.com"
+      "speedtestcustom.com",
+      "linuxfoundation.org",
+      "ey.com"
     ],
     "authorize.net": [
       "reason.com"
     ],
+    "auto-bild.de": [
+      "autobild.de"
+    ],
     "autoimg.cn": [
       "autohome.com.cn"
     ],
-    "autonom8.com": [
-      "sandiegozoo.org"
-    ],
     "autopilothq.com": [
-      "viglink.com",
-      "doodlekit.com",
-      "skimlinks.com"
+      "skimlinks.com",
+      "doodlekit.com"
     ],
-    "avangate.com": [
-      "hola.org",
-      "wps.com"
+    "avaamo.com": [
+      "licindia.in",
+      "scot.nhs.uk",
+      "waldenu.edu"
     ],
     "avantisvideo.com": [
+      "me.me",
       "stripes.com",
-      "miaminewtimes.com",
       "washingtonian.com"
     ],
+    "avax.network": [
+      "traderjoexyz.com",
+      "wonderland.money"
+    ],
+    "avct.cloud": [
+      "udemy.com",
+      "build.com",
+      "mailchimp.com"
+    ],
     "avmws.com": [
-      "wondershare.com",
+      "casio.com",
       "rei.com",
       "patagonia.com"
     ],
-    "aweber.com": [
-      "informationweek.com"
+    "avocet.io": [
+      "udemy.com",
+      "build.com",
+      "mailchimp.com"
     ],
-    "axisbank.co.in": [
-      "axisbank.com"
+    "avplayer.com": [
+      "suntimes.com",
+      "fark.com",
+      "perezhilton.com"
     ],
-    "ayads.co": [
-      "newscientist.com",
-      "lequipe.fr",
-      "cronica.com.ar"
+    "awxcdn.com": [
+      "accuweather.com"
     ],
-    "ayc0zsm69431gfebd.xyz": [
-      "statesman.com",
-      "oklahoman.com",
-      "pressdemocrat.com"
+    "axate.io": [
+      "yorkshirepost.co.uk"
     ],
-    "ayo.co.id": [
-      "bola.com"
+    "ayads.co": [
+      "huffingtonpost.es",
+      "ccm.net",
+      "soccerway.com"
+    ],
+    "azerforum.com": [
+      "qafqazinfo.az"
     ],
     "azet.sk": [
       "aktuality.sk"
     ],
+    "azointel.com": [
+      "news-medical.net"
+    ],
+    "azure-api.net": [
+      "doingbusiness.org"
+    ],
     "azureedge.net": [
-      "secureworks.com",
-      "ajc.com",
-      "tampabay.com",
-      "gazette.com"
+      "thegazette.com",
+      "bentley.com",
+      "denverpost.com"
     ],
     "azurefd.net": [
-      "toyota.com"
+      "mbusa.com"
+    ],
+    "azvision.az": [
+      "modern.az"
     ],
     "b0e8.com": [
-      "zend.com",
-      "vmware.com",
-      "udel.edu"
+      "trendmicro.com",
+      "arcticwolf.com",
+      "brightedge.com"
     ],
     "b1img.com": [
       "threadless.com",
-      "saatchiart.com"
+      "saatchiart.com",
+      "penguinrandomhouse.com"
     ],
     "b9i7.net": [
       "caesars.com"
     ],
     "bablic.com": [
-      "nationalgeographic.org",
-      "powtoon.com",
-      "camp-fire.jp"
+      "powtoon.com"
     ],
     "baidu.com": [
-      "sohu.com",
-      "sina.com.cn",
-      "csdn.net"
+      "wkzuche.com",
+      "southcn.com",
+      "china.cn"
     ],
     "baidustatic.com": [
-      "sina.com.cn"
+      "39.net"
     ],
     "baikalize.com": [
       "gmarket.co.kr",
@@ -11855,19 +12042,19 @@
     "baixing.net": [
       "baixing.com"
     ],
-    "baiying.cn": [
-      "lenovo.com.cn"
-    ],
     "bam-x.com": [
-      "macys.com",
-      "iherb.com",
-      "yoox.com"
+      "ulta.com",
+      "polygon.com",
+      "realself.com"
     ],
-    "bancogalicia.com.ar": [
-      "bancogalicia.com"
+    "bambuser.net": [
+      "macys.com"
     ],
-    "banggood.com": [
-      "newchic.com"
+    "bangkokpost.co.th": [
+      "bangkokpost.com"
+    ],
+    "bankofamerica.com": [
+      "ml.com"
     ],
     "barchart.com": [
       "kitco.com"
@@ -11875,166 +12062,249 @@
     "barilliance.net": [
       "euromonitor.com"
     ],
+    "barrons.com": [
+      "airtm.com"
+    ],
     "bashirian.biz": [
-      "filmix.co"
+      "baskino.me",
+      "filmix.ac",
+      "rezka.ag"
+    ],
+    "basicinc.jp": [
+      "ferret-plus.com"
+    ],
+    "basis.net": [
+      "cars.com"
     ],
     "basspro.com": [
       "cabelas.com"
     ],
+    "batterypop.net": [
+      "funbrain.com"
+    ],
     "bayan.ir": [
       "blog.ir"
     ],
+    "baymaxchat.com": [
+      "huobi.com"
+    ],
     "baynote.net": [
+      "palgrave.com",
       "springer.com",
-      "jcrew.com",
-      "theoutnet.com"
+      "worldmarket.com"
     ],
     "bazaarvoice.com": [
-      "lg.com",
-      "lww.com",
-      "discover.com",
-      "bathandbodyworks.com"
+      "canadiantire.ca",
+      "westerndigital.com",
+      "motorola.com"
+    ],
+    "bbb.org": [
+      "askmen.com",
+      "afternic.com",
+      "cargurus.com"
     ],
     "bbelements.com": [
       "ceskatelevize.cz"
     ],
-    "bcicdn.com": [
-      "bongacams.com"
+    "bbystatic.com": [
+      "bestbuy.com"
+    ],
+    "bc0a.com": [
+      "trendmicro.com"
+    ],
+    "bca.co.id": [
+      "klikbca.com"
+    ],
+    "bccampus.ca": [
+      "opentextbc.ca"
     ],
     "bcn.cat": [
       "barcelona.cat"
     ],
     "bd4travel.com": [
-      "emirates.com"
+      "etihad.com"
     ],
     "bdash-cloud.com": [
       "onamae.com"
     ],
-    "bdg-analytics.appspot.com": [
-      "bustle.com",
+    "bdg.com": [
       "elitedaily.com",
-      "inverse.com"
+      "mic.com",
+      "wmagazine.com"
+    ],
+    "beanfun.com": [
+      "nownews.com"
+    ],
+    "beatstars.net": [
+      "beatstars.com"
     ],
     "bebi.com": [
-      "animeflv.net",
-      "gogoanime.so",
-      "igg-games.com"
+      "gogoanime.cm"
     ],
     "become.co.jp": [
       "tok2.com"
     ],
+    "becorsolaom.com": [
+      "multicanais.tv"
+    ],
+    "beeline.ru": [
+      "livejournal.com",
+      "afisha.ru",
+      "gazeta.ru"
+    ],
+    "behave.com": [
+      "baltimoresun.com",
+      "chicagotribune.com",
+      "ign.com"
+    ],
     "beian.gov.cn": [
       "gusuwang.com",
-      "chem17.com"
+      "cio360.net",
+      "cnfol.com"
+    ],
+    "bellmedia.ca": [
+      "noovomoi.ca"
     ],
     "benchmarkemail.com": [
-      "helpguide.org"
+      "mediatek.com",
+      "storm.mg"
     ],
-    "berush.com": [
-      "semrush.com"
+    "benoopto.com": [
+      "cimalight.onl"
     ],
-    "bestyang.cn": [
-      "9lkandianying.com"
+    "beritasatumedia.com": [
+      "beritasatu.com"
     ],
-    "betgorebysson.club": [
-      "4anime.to",
-      "opensubtitles.org",
-      "fakaza.com"
+    "bescore.com": [
+      "sportzwiki.com"
     ],
-    "betweendigital.com": [
-      "aliexpress.ru",
-      "rambler.ru",
-      "gismeteo.ru"
+    "besmeargleor.com": [
+      "ytmp3.cc"
     ],
-    "bf-tools.net": [
-      "focus.de"
+    "betotodilea.com": [
+      "4shared.com"
+    ],
+    "betrad.com": [
+      "president.jp"
+    ],
+    "betweendigital.com": [
+      "eldorado.ru",
+      "scoopwhoop.com",
+      "nic.ru"
     ],
     "bfmio.com": [
-      "techradar.com",
-      "livescience.com",
-      "matterport.com"
+      "abcactionnews.com",
+      "crisistextline.org",
+      "wsoctv.com"
     ],
-    "bhphotovideo.com": [
-      "informationweek.com"
+    "bgn.gg": [
+      "bluestacks.com"
     ],
-    "bibox360.com": [
-      "bibox.com"
+    "bgr.com": [
+      "deadline.com"
     ],
-    "bidgear.com": [
-      "manganelo.com",
-      "dramacool.movie",
-      "kickassanime.rs"
+    "bidence.net": [
+      "lotteon.com",
+      "jobkorea.co.kr",
+      "ssg.com"
     ],
     "bidr.io": [
-      "adobe.com",
-      "okezone.com",
-      "digicert.com"
+      "president.jp",
+      "huffingtonpost.es",
+      "wavy.com"
     ],
     "bidstreamserver.com": [
-      "spin.com"
+      "spin.com",
+      "insideevs.com",
+      "motor1.com"
     ],
     "bidswitch.net": [
-      "amazon.com",
-      "msn.com",
-      "okezone.com"
+      "president.jp",
+      "bicycling.com",
+      "ucsusa.org"
+    ],
+    "bidtheatre.com": [
+      "yahoo.com",
+      "autoblog.com"
+    ],
+    "bidvol.com": [
+      "tvzvezda.ru"
+    ],
+    "biff.travel": [
+      "lastminute.com"
     ],
-    "bidvertiser.com": [
-      "washingtonsharedparenting.com"
+    "bigda.com": [
+      "yy.com"
+    ],
+    "bigin.io": [
+      "imweb.me"
     ],
     "bigmining.com": [
-      "kakaku.com",
-      "tabelog.com",
-      "sony.jp"
+      "syosetu.com",
+      "eiga.com",
+      "kakaku.com"
     ],
-    "bigo.tv": [
-      "bigolive.tv"
+    "bilibili": [
+      "bilibili.com"
     ],
     "bing.com": [
-      "adobe.com",
-      "godaddy.com",
-      "weebly.com"
+      "yumpu.com",
+      "nra.org",
+      "ncsu.edu"
     ],
     "binstats.com": [
-      "id-binomo.com"
+      "binomo-web.com"
+    ],
+    "birminghammail.co.uk": [
+      "manchestereveningnews.co.uk"
+    ],
+    "bisnow.net": [
+      "bisnow.com"
+    ],
+    "bit.ly": [
+      "isaca.org"
     ],
-    "bithumb.com": [
-      "mk.co.kr"
+    "bitauto.com": [
+      "yiche.com"
+    ],
+    "bitchute.com": [
+      "beforeitsnews.com",
+      "lewrockwell.com"
+    ],
+    "bitmedia.io": [
+      "newsbtc.com"
     ],
     "bitninja.io": [
-      "wendyssubway.com",
-      "lumenlearning.com",
-      "corpscorp.online"
+      "atoallinks.com"
     ],
     "bitrix.info": [
-      "timeweb.com",
       "msu.ru",
+      "tsu.ru",
       "bitrix24.ru"
     ],
-    "bizbuysell.com": [
-      "allbusiness.com"
-    ],
-    "bizfly.vn": [
-      "admicro.vn"
-    ],
     "bizible.com": [
-      "dropbox.com",
-      "cloudflare.com",
-      "nginx.com"
+      "flexera.com",
+      "paloaltonetworks.com",
+      "demandbase.com"
     ],
     "bizibly.com": [
-      "dropbox.com",
-      "cloudflare.com",
-      "nginx.com"
+      "flexera.com",
+      "paloaltonetworks.com",
+      "demandbase.com"
+    ],
+    "bizim.media": [
+      "qafqazinfo.az",
+      "qaynarinfo.az"
     ],
     "bizographics.com": [
-      "opendns.com",
-      "huawei.com",
-      "ox.ac.uk"
+      "msn.com",
+      "eetimes.com",
+      "softwareadvice.com"
     ],
     "bizrate.com": [
-      "people.com",
-      "allrecipes.com",
-      "ew.com"
+      "instyle.com",
+      "realsimple.com",
+      "travelandleisure.com"
     ],
     "bizspring.co.kr": [
       "dothome.co.kr"
@@ -12045,256 +12315,457 @@
     "bjcathay.com": [
       "cctv.com"
     ],
+    "bksn.se": [
+      "afar.com"
+    ],
+    "bleacherreport.com": [
+      "yahoo.com",
+      "att.com"
+    ],
+    "blink.net": [
+      "newrepublic.com"
+    ],
     "blisspointmedia.com": [
       "joinhoney.com"
     ],
+    "blockchain.info": [
+      "blockchain.com"
+    ],
+    "blockchair.io": [
+      "blockchair.com"
+    ],
+    "blogger.com": [
+      "shelldownload.org"
+    ],
     "blogsky.com": [
       "picofile.com"
     ],
+    "bloomberg.com": [
+      "airtm.com",
+      "bloomberg.co.jp",
+      "stlouisfed.org"
+    ],
+    "bloomreach.cloud": [
+      "anwb.nl"
+    ],
+    "bloomreach.com": [
+      "puma.com"
+    ],
+    "blueadss.com": [
+      "thethao247.vn"
+    ],
+    "bluebillywig.com": [
+      "belfasttelegraph.co.uk"
+    ],
     "bluecava.com": [
-      "rosettastone.com"
+      "verywellhealth.com",
+      "thoughtco.com",
+      "brides.com"
     ],
     "blueconic.net": [
-      "nationalgeographic.com",
-      "britannica.com",
-      "merriam-webster.com"
+      "wavy.com",
+      "wfla.com",
+      "wsu.edu"
     ],
     "bluekai.com": [
-      "marketwatch.com",
+      "si.com",
       "nypost.com",
-      "thesun.co.uk"
+      "biblegateway.com"
+    ],
+    "bmcdn1.com": [
+      "faucetdash.com",
+      "bitswall.net",
+      "icrypto.media"
     ],
     "bn-web.com": [
       "barnesandnoble.com"
     ],
+    "bna.com": [
+      "bloomberglaw.com"
+    ],
+    "bnbstatic.com": [
+      "binance.me"
+    ],
+    "bnextmedia.com.tw": [
+      "bnext.com.tw"
+    ],
     "bnidx.com": [
       "bravenet.com",
       "jigsy.com"
     ],
-    "bnpparibas.fr": [
-      "mabanque.bnpparibas"
+    "bnmla.com": [
+      "president.jp",
+      "lamag.com",
+      "washingtontimes.com"
     ],
-    "boldchat.com": [
-      "gotomeeting.com",
-      "globalsign.com",
-      "cancer.org"
+    "boatid.com": [
+      "carid.com"
     ],
-    "bonappetit.com": [
-      "wired.com",
-      "newyorker.com",
-      "vanityfair.com"
+    "boldapps.net": [
+      "omgjapan.com"
     ],
-    "bongacams.com": [
-      "informationweek.com"
+    "boldchat.com": [
+      "rogers.com",
+      "livingsocial.com",
+      "euromonitor.com"
     ],
-    "bonnier-subscriptions.com": [
-      "popsci.com"
+    "booked.net": [
+      "gulf-times.com"
     ],
     "booking.com": [
-      "southwest.com"
+      "southwest.com",
+      "roughguides.com"
+    ],
+    "boost-next.co.jp": [
+      "eroterest.net"
     ],
     "boostingads.com": [
       "radikal.ru"
     ],
+    "booya.io": [
+      "buysellads.com"
+    ],
+    "bordertraffic.com": [
+      "nbcsandiego.com"
+    ],
+    "bostonglobemedia.com": [
+      "statnews.com",
+      "boston.com"
+    ],
     "bounceexchange.com": [
-      "cnn.com",
-      "cnbc.com",
-      "wired.com"
+      "zola.com",
+      "baltimoresun.com",
+      "denverpost.com"
+    ],
+    "bouncepilot.com": [
+      "digitaltrends.com"
     ],
     "bouncex.net": [
-      "cnn.com",
-      "cnbc.com"
+      "xfinity.com",
+      "parents.com",
+      "shape.com"
     ],
-    "boxx.ai": [
-      "thestar.com.my",
-      "100kpj.com"
+    "branch.io": [
+      "spotify.com",
+      "dickssportinggoods.com",
+      "pressreader.com"
     ],
     "brand-display.com": [
       "wyndhamhotels.com",
-      "2banh.vn"
+      "nation.africa"
     ],
     "brandcdn.com": [
-      "appstate.edu",
-      "papajohns.com"
+      "wavy.com",
+      "fox4kc.com",
+      "wku.edu"
     ],
     "brandonsun.com": [
       "winnipegfreepress.com"
     ],
-    "brdmin.com": [
-      "kinogo.by",
-      "1plus1tv.ru",
-      "kinogo.zone"
-    ],
     "breaktime.com.tw": [
-      "newtalk.tw",
       "businesstoday.com.tw"
     ],
+    "brealtime.com": [
+      "mail.ru",
+      "techadvisor.com",
+      "militarytimes.com"
+    ],
     "brightcove.com": [
-      "webex.com",
-      "nike.com",
-      "digitaltrends.com",
-      "rsa.com"
+      "sportsnet.ca",
+      "bentley.com",
+      "hsbc.com"
+    ],
+    "brightcove.net": [
+      "aljazeera.net"
     ],
     "brightedge.com": [
+      "spring.io",
       "vmware.com"
     ],
+    "brightspotcdn.com": [
+      "laist.com"
+    ],
+    "briskeagle.io": [
+      "breezy.hr"
+    ],
+    "briskpelican.io": [
+      "movoto.com"
+    ],
+    "britepool.com": [
+      "worldhistory.org",
+      "evite.com",
+      "gizmodo.com"
+    ],
+    "britiesperior.xyz": [
+      "shorturl.at"
+    ],
     "broadstreetads.com": [
-      "arthritis.org",
-      "prospect.org",
-      "mondaq.com"
+      "truthdig.com",
+      "mondaq.com",
+      "arthritis.org"
+    ],
+    "bronto.com": [
+      "drmartens.com"
+    ],
+    "browserstack.com": [
+      "caniuse.com"
     ],
     "brsrvr.com": [
-      "barnesandnoble.com",
-      "shutterfly.com",
-      "farfetch.com"
+      "canadiantire.ca",
+      "fossil.com",
+      "tractorsupply.com"
+    ],
+    "bs-dante.ru": [
+      "drom.ru"
+    ],
+    "bsmartdata.com": [
+      "abbyy.com"
+    ],
+    "btg360.com.br": [
+      "magazineluiza.com.br"
     ],
     "bttrack.com": [
-      "msn.com",
-      "forbes.com",
-      "surveymonkey.com"
+      "abcactionnews.com",
+      "boston.com",
+      "tenable.com"
     ],
     "btttag.com": [
-      "marriott.com",
-      "homedepot.com",
-      "patch.com"
+      "canadiantire.ca",
+      "boohooman.com",
+      "anthropologie.com"
     ],
     "buckridge.link": [
-      "filmix.co"
+      "baskino.me",
+      "filmix.ac",
+      "rezka.ag"
     ],
     "bugsnag.com": [
       "indigo.ca"
     ],
-    "bullionyield.com": [
-      "porntrex.com"
+    "buikolered.com": [
+      "myflixer.to",
+      "fmovies.ps"
     ],
     "bumlam.com": [
-      "aif.ru",
-      "alfabank.ru"
+      "rt.ru",
+      "alfabank.ru",
+      "sbermegamarket.ru"
+    ],
+    "bung.ie": [
+      "bungie.net"
     ],
     "burly.io": [
       "braze.com"
     ],
+    "burning-glass.com": [
+      "k12.com"
+    ],
+    "business-online.ru": [
+      "business-gazeta.ru"
+    ],
+    "business.com": [
+      "businessnewsdaily.com"
+    ],
     "businessclick.com": [
       "money.pl"
     ],
     "businessinsider.com": [
       "insider.com"
     ],
+    "buta.ws": [
+      "axar.az"
+    ],
+    "buyma.com": [
+      "stylehaus.jp"
+    ],
+    "buysellads.com": [
+      "histats.com",
+      "design-milk.com"
+    ],
     "buysellads.net": [
       "dynamicdrive.com"
     ],
     "buzzfeed.com": [
-      "buzzfeednews.com"
+      "huffingtonpost.es",
+      "huffingtonpost.co.uk",
+      "huffingtonpost.fr"
     ],
     "buzzoola.com": [
-      "rambler.ru",
-      "lenta.ru",
-      "gazeta.ru"
+      "afisha.ru",
+      "gazeta.ru",
+      "regnum.ru"
     ],
-    "byteoversea.com": [
-      "tiktok.com"
+    "bxblue.com.br": [
+      "correiobraziliense.com.br"
+    ],
+    "bycsi.com": [
+      "bybit.com"
+    ],
+    "byside.com": [
+      "flytap.com"
     ],
-    "c-ctrip.com": [
-      "qunar.com",
-      "idianfa.com"
+    "bytedance.com": [
+      "toutiao.com",
+      "ixigua.com",
+      "douyin.com"
+    ],
+    "byteoversea.com": [
+      "bytedance.com",
+      "imrworldwide.com"
     ],
     "c212.net": [
-      "prnewswire.com",
-      "prweb.com",
-      "sas.com"
+      "edf.org",
+      "farmers.com",
+      "lls.org"
     ],
     "c3tag.com": [
-      "shutterstock.com",
-      "panasonic.com",
-      "usbank.com"
+      "w3layouts.com",
+      "bigstockphoto.com",
+      "shutterstock.com"
+    ],
+    "c90752b0b5.com": [
+      "pornone.com"
+    ],
+    "cabnnr.com": [
+      "pornone.com"
     ],
-    "c8.net.ua": [
-      "yotpo.com"
+    "caixin.com": [
+      "caixinglobal.com"
     ],
     "calendly.com": [
-      "n.rich"
+      "leadsrx.com",
+      "clickup.com"
+    ],
+    "californiatimes.com": [
+      "latimes.com"
+    ],
+    "callpage.io": [
+      "web.com"
+    ],
+    "callrail.com": [
+      "hopkinsmedicine.org",
+      "brocku.ca"
+    ],
+    "calltouch.ru": [
+      "webinar.ru"
+    ],
+    "caltat.com": [
+      "garant.ru",
+      "revopush.com",
+      "mining.online"
+    ],
+    "camperid.com": [
+      "carid.com"
+    ],
+    "campusexplorer.com": [
+      "jobs.net"
     ],
     "canliskor.com.tr": [
       "fanatik.com.tr"
     ],
+    "canny.io": [
+      "huntress.io"
+    ],
+    "canon.com.cn": [
+      "photofans.cn"
+    ],
+    "caperedlevi.com": [
+      "cimalight.onl"
+    ],
+    "captcha-delivery.com": [
+      "leboncoin.fr"
+    ],
     "capterra.com": [
-      "softwareadvice.com"
+      "softwareadvice.com",
+      "scoop.it"
+    ],
+    "captivate.fm": [
+      "thegazette.com"
     ],
     "capturehighered.net": [
-      "sc.edu",
-      "sjsu.edu",
-      "msstate.edu"
+      "clarku.edu",
+      "vcu.edu",
+      "memphis.edu"
+    ],
+    "cardiwersg.com": [
+      "sxyprn.com"
+    ],
+    "careerwebsite.com": [
+      "asme.org"
     ],
     "carfax.com": [
       "kia.com"
     ],
-    "caroda.io": [
-      "csfd.cz",
-      "aktualne.cz"
-    ],
     "casalemedia.com": [
-      "yahoo.com",
-      "amazon.com",
-      "okezone.com"
+      "president.jp",
+      "bicycling.com",
+      "ucsusa.org"
     ],
     "caspio.com": [
-      "wfaa.com",
-      "11alive.com"
+      "sacbee.com"
     ],
     "castbox.fm": [
-      "rosbalt.ru"
+      "singularityhub.com",
+      "justjared.com"
     ],
     "castle.io": [
-      "trello.com",
       "farfetch.com",
-      "reverb.com"
+      "harrods.com",
+      "bitstamp.net"
     ],
-    "cbs.com": [
-      "informationweek.com"
+    "catad5959.com": [
+      "asiae.co.kr"
     ],
     "cbsi.com": [
-      "maxpreps.com"
+      "comicbook.com",
+      "maxpreps.com",
+      "247sports.com"
+    ],
+    "cbssports.com": [
+      "comicbook.com"
+    ],
+    "ccgateway.net": [
+      "si.com",
+      "deadspin.com",
+      "fashionista.com"
+    ],
+    "ccpmtrk.com": [
+      "thepetitionsite.com"
     ],
     "cctv.com": [
-      "hupu.com",
-      "npc.gov.cn"
+      "cnr.cn",
+      "cri.cn",
+      "hupu.com"
     ],
     "cdeledu.com": [
       "chinaacc.com"
     ],
     "cdn-net.com": [
-      "grubhub.com",
+      "seamless.com",
+      "stitcher.com",
       "qvc.com"
     ],
-    "cdn-payscale.com": [
-      "payscale.com"
-    ],
-    "cdninstagram.com": [
-      "sony.com"
+    "cdnbasket.net": [
+      "wunderkind.co"
     ],
     "cdnpub.info": [
       "iqoption.com"
     ],
-    "cdnvideo.mobi": [
-      "sexu.com"
+    "cdnsfree.com": [
+      "1x001.com"
     ],
     "cdnwidget.com": [
-      "mercari.com",
-      "eset.com",
-      "activecampaign.com"
-    ],
-    "ceet.co": [
-      "eltiempo.com"
-    ],
-    "cengage.com": [
-      "gale.com"
+      "baltimoresun.com",
+      "denverpost.com",
+      "getambassador.com"
     ],
-    "center.io": [
-      "leadpages.com",
-      "goodmenproject.com"
+    "cdrvrs.com": [
+      "movies2watch.tv",
+      "futemax.gratis",
+      "cima-club.cc"
     ],
-    "centerdigitaled.com": [
-      "govtech.com"
+    "celebrations.com": [
+      "1800flowers.com"
     ],
     "centrum.cz": [
       "aktualne.cz"
@@ -12303,365 +12774,502 @@
       "home.cern",
       "zenodo.org"
     ],
-    "cfzu.net": [
-      "logitech.com",
-      "logitechg.com"
+    "ceros.com": [
+      "theplayerstribune.com",
+      "digiday.com",
+      "kornferry.com"
+    ],
+    "cfmediaview.com": [
+      "renewableenergyworld.com"
+    ],
+    "championat.com": [
+      "gazeta.ru",
+      "lenta.ru"
+    ],
+    "channel.io": [
+      "musinsa.com",
+      "class101.net",
+      "i-boss.co.kr"
+    ],
+    "channelexco.com": [
+      "nasdaq.com",
+      "perezhilton.com"
     ],
     "channelnewsasia.com": [
       "todayonline.com"
     ],
-    "charlotteobserver.com": [
-      "newsobserver.com",
-      "mcclatchydc.com"
+    "chartbeat.com": [
+      "is.fi",
+      "asiasociety.org",
+      "nbcnewyork.com"
     ],
     "chartbeat.net": [
-      "nytimes.com",
-      "cnn.com",
-      "forbes.com"
+      "fivethirtyeight.com",
+      "perthnow.com.au",
+      "redstate.com"
     ],
     "chase.com": [
       "ecwid.com"
     ],
+    "chatango.com": [
+      "hesgoal.com",
+      "lectortmo.com",
+      "freestreams-live1.com"
+    ],
+    "chatbot.com": [
+      "homeworklib.com",
+      "mql5.com"
+    ],
     "chatdealer.jp": [
-      "sakura.ne.jp"
+      "sakura.ad.jp"
     ],
     "chatplus.jp": [
-      "lolipop.jp",
-      "kingtime.jp"
+      "linestep.jp",
+      "kingoftime.jp",
+      "lolipop.jp"
     ],
     "chatra.io": [
-      "ko-fi.com",
-      "yourbrideglobal.com"
+      "yourbrideglobal.com",
+      "ispsystem.com",
+      "dreamfiancee.com"
     ],
     "chaturbate.com": [
-      "informationweek.com"
+      "motherless.com",
+      "efukt.com",
+      "painaltube.com"
+    ],
+    "cheddar.com": [
+      "news12.com"
     ],
     "chegg.com": [
-      "citationmachine.net",
-      "easybib.com"
+      "easybib.com",
+      "mathway.com",
+      "citationmachine.net"
     ],
     "cheqzone.com": [
-      "woolworths.com.au",
-      "newcastle.edu.au",
-      "getyourguide.com"
+      "abcactionnews.com",
+      "etoro.com",
+      "pluralsight.com"
+    ],
+    "chewy.net": [
+      "chewy.com"
     ],
-    "cheyisou.com": [
-      "bitauto.com"
+    "chimpstatic.com": [
+      "reference.com",
+      "thenewsminute.com",
+      "ecowatch.com"
+    ],
+    "chinavivaki.com": [
+      "chinanews.com.cn",
+      "bshare.cn",
+      "365jia.cn"
     ],
-    "childsplayclothing.co.uk": [
-      "next.co.uk"
+    "chioneflake.com": [
+      "tktube.com"
     ],
     "chipweb.azurewebsites.net": [
       "lacity.org"
     ],
     "choozle.com": [
-      "addthis.com",
       "denverpost.com",
-      "amnh.org"
+      "addthis.com",
+      "mountvernon.org"
     ],
-    "cian.site": [
-      "cian.ru"
+    "chuzushijian.cn": [
+      "subhd.tv"
     ],
     "cint.com": [
       "mainichi.jp"
     ],
     "cintnetworks.com": [
-      "disney.com",
+      "starwars.com",
       "cint.com",
-      "starwars.com"
+      "wkrn.com"
     ],
     "cisco.com": [
-      "webex.com",
-      "duo.com",
-      "netacad.com"
-    ],
-    "citi.com": [
-      "paho.org",
-      "citigroup.com"
+      "appdynamics.com"
     ],
     "citiservi.es": [
-      "eleconomista.es"
+      "eleconomista.es",
+      "heraldo.es"
     ],
     "citrix.com": [
-      "sharefile.com"
+      "cloud.com",
+      "sharefile.com",
+      "cedexis.com"
     ],
-    "clarivate.com": [
-      "webofknowledge.com"
+    "citrusad.net": [
+      "booktopia.com.au"
+    ],
+    "citydsp.com": [
+      "correiobraziliense.com.br"
+    ],
+    "civicscience.com": [
+      "ancestry.com",
+      "wfmz.com",
+      "triblive.com"
     ],
-    "classistatic.com": [
-      "gumtree.co.za"
+    "ck-ie.com": [
+      "dx.com"
+    ],
+    "clarin.com": [
+      "ole.com.ar"
+    ],
+    "clarip.com": [
+      "virtualave.net",
+      "hypermart.net"
+    ],
+    "clarity.ms": [
+      "ncsu.edu",
+      "almanac.com",
+      "trilltrill.jp"
+    ],
+    "clarivate.com": [
+      "researcherid.com",
+      "publons.com"
     ],
-    "clcknads.pro": [
-      "tubesafari.com"
+    "clasificados.com.do": [
+      "listindiario.com"
     ],
     "clearbit.com": [
-      "intercom.com",
-      "elastic.co"
+      "ivanti.com",
+      "heap.io",
+      "mixmax.com"
     ],
-    "clerk.io": [
-      "grifo210.com",
-      "alducadaosta.com"
+    "clearsale.com.br": [
+      "ssense.com"
     ],
     "clevernt.com": [
-      "makeleio.gr",
-      "sportzwiki.com",
-      "themoscowtimes.com"
+      "cricketaddictor.com",
+      "thenetnaija.com",
+      "typosthes.gr"
     ],
-    "clickability.com": [
-      "govtech.com",
-      "governing.com"
+    "click.ru": [
+      "garant.ru"
     ],
     "clickagy.com": [
-      "desktopnexus.com"
+      "desktopnexus.com",
+      "zoominfo.com"
+    ],
+    "clickcease.com": [
+      "playwire.com",
+      "ckeditor.com",
+      "instapage.com"
     ],
     "clickcertain.com": [
-      "shapeways.com"
+      "digitaltrends.com",
+      "shapeways.com",
+      "joomla.org"
+    ],
+    "clickdimensions.com": [
+      "massey.ac.nz"
+    ],
+    "clickfrog.ru": [
+      "pdffiller.com"
     ],
     "clickfuse.com": [
-      "azlyrics.com"
+      "filmdaily.co"
     ],
-    "clickondetroit.com": [
-      "clickorlando.com"
+    "clickgate05.biz": [
+      "kinogo-net.org"
     ],
     "clicktale.net": [
-      "microsoft.com",
-      "intel.com",
-      "gotomeeting.com"
+      "fossil.com",
+      "t-mobile.com",
+      "farmers.com"
     ],
     "clicktripz.com": [
-      "tripadvisor.com",
-      "nypost.com",
-      "tripadvisor.co.uk"
+      "tripadvisor.es",
+      "tripadvisor.ru",
+      "kiwi.com"
     ],
     "clientgear.com": [
       "dx.com"
     ],
     "clinch.co": [
-      "chewy.com",
-      "nespresso.com"
+      "upwork.com",
+      "salliemae.com",
+      "lumen.com"
     ],
-    "clink.cn": [
-      "feishu.cn"
+    "clinfo-dot-analyticsbeincrypto.appspot.com": [
+      "beincrypto.com"
     ],
     "clive.cloud": [
       "ualberta.ca",
-      "nmsu.edu",
-      "umt.edu"
+      "umt.edu",
+      "uncw.edu"
     ],
     "clmbtech.com": [
-      "wattpad.com",
-      "hindnow.com",
-      "businessinsider.in"
+      "sakshi.com",
+      "indiatimes.com",
+      "wattpad.com"
     ],
-    "cloob.com": [
-      "mihanblog.com"
+    "clnmde.com": [
+      "lotterypost.com"
     ],
     "cloud-iq.com": [
-      "newscientist.com",
-      "empireonline.com"
+      "britishmuseum.org",
+      "empireonline.com",
+      "newscientist.com"
     ],
     "cloudflare.com": [
-      "boohoo.com",
-      "cityheaven.net"
+      "stripchat.com",
+      "twilio.com",
+      "winnipegfreepress.com"
+    ],
+    "cloudflareaccess.com": [
+      "roche.com",
+      "mailerlite.com",
+      "blueorigin.com"
+    ],
+    "cloudinary.com": [
+      "guru.com",
+      "devex.com",
+      "babylist.com"
     ],
     "clublibertaddigital.com": [
       "libertaddigital.com"
     ],
     "cluep.com": [
-      "penguinrandomhouse.com",
-      "tidal.com"
+      "tidal.com",
+      "penguinrandomhouse.com"
     ],
     "cmanager-prometeo.appspot.com": [
-      "20minutos.es"
+      "20minutos.es",
+      "heraldo.es",
+      "lainformacion.com"
+    ],
+    "cmh.com.tw": [
+      "businessweekly.com.tw"
     ],
-    "cnmo-img.com.cn": [
-      "cnmo.com"
+    "cnn.com": [
+      "att.com",
+      "yahoo.com"
     ],
     "cnnd.vn": [
       "vtv.vn"
     ],
-    "cnrs.fr": [
-      "archives-ouvertes.fr"
-    ],
-    "cntraveler.com": [
-      "wired.com",
-      "newyorker.com",
-      "vanityfair.com"
+    "cnt.my": [
+      "correiobraziliense.com.br"
     ],
     "cntv.cn": [
       "cctv.com"
     ],
-    "cnyes.cool": [
-      "cnyes.com"
-    ],
     "cnzz.com": [
-      "huanqiu.com",
-      "jrj.com.cn",
-      "rednet.cn"
+      "115.com",
+      "6789.com",
+      "gaoqing.la"
     ],
     "cobaltgroup.com": [
       "edmunds.com",
+      "lexus.com",
       "chevrolet.com"
     ],
-    "coccusadmanlob.com": [
-      "cimaclub.io"
+    "coccoc.com": [
+      "tinhte.vn"
+    ],
+    "codepen.io": [
+      "css-tricks.com",
+      "freecodecamp.org"
     ],
-    "codon.vn": [
-      "x2convert.com"
+    "codesour.com": [
+      "livesicilia.it"
+    ],
+    "cogocast.net": [
+      "stltoday.com"
     ],
     "coherentpath.com": [
       "neimanmarcus.com",
-      "llbean.com"
+      "llbean.com",
+      "bergdorfgoodman.com"
     ],
     "cohesionapps.com": [
-      "healthline.com",
-      "medicalnewstoday.com",
-      "frontier.com"
+      "thesimpledollar.com",
+      "greatist.com",
+      "zdnet.com"
     ],
-    "coinmama.com": [
-      "informationweek.com"
+    "coindesk.com": [
+      "lunarcrush.com"
     ],
-    "cointiply.com": [
-      "informationweek.com"
+    "cointraffic.io": [
+      "whattomine.com",
+      "walletinvestor.com",
+      "icrypto.media"
     ],
     "collectandgather.com": [
-      "williams-sonoma.com",
-      "potterybarn.com",
-      "westelm.com"
+      "potterybarnkids.com",
+      "westelm.com",
+      "williams-sonoma.com"
     ],
     "collegenet.com": [
-      "gmu.edu"
-    ],
-    "colossusssp.com": [
-      "usatoday.com",
-      "azcentral.com",
-      "freep.com"
-    ],
-    "comm100.com": [
-      "a2hosting.com"
+      "gmu.edu",
+      "yu.edu",
+      "elon.edu"
     ],
     "comm100.io": [
-      "blibli.com"
+      "geekbuying.com",
+      "asce.org",
+      "a2hosting.com"
     ],
     "commander1.com": [
-      "yoox.com",
-      "ovh.com",
+      "carrefour.fr",
+      "laposte.fr",
       "ovhcloud.com"
     ],
-    "commitchange.com": [
-      "metrotimes.com",
-      "riverfronttimes.com",
-      "orlandoweekly.com"
-    ],
     "company-target.com": [
-      "adobe.com",
-      "digicert.com",
-      "ibm.com"
+      "proofpoint.com",
+      "bitdefender.com",
+      "nxp.com"
     ],
     "complex.com": [
       "allmusic.com"
     ],
+    "computer-bild.de": [
+      "computerbild.de"
+    ],
+    "concert.io": [
+      "vox.com"
+    ],
     "condenastdigital.com": [
-      "wired.com",
-      "newyorker.com",
-      "arstechnica.com"
+      "wired.it",
+      "wired.co.uk",
+      "glamourmagazine.co.uk"
     ],
     "connatix.com": [
-      "gizmodo.com",
+      "abcactionnews.com",
       "thegatewaypundit.com",
-      "jpost.com"
+      "taskandpurpose.com"
     ],
     "connectad.io": [
-      "w3schools.com",
-      "pastebin.com",
-      "idnes.cz"
+      "numbeo.com",
+      "radikal.ru",
+      "linguee.com"
     ],
     "connecto.io": [
-      "cardekho.com",
-      "zigwheels.com"
+      "cardekho.com"
     ],
     "connexity.net": [
       "sourceforge.net",
-      "slashdot.org"
+      "listindiario.com",
+      "androidcentral.com"
     ],
     "connextra.com": [
-      "mlb.com",
-      "cbs.com",
-      "nbcsports.com"
-    ],
-    "consent.is": [
-      "bugsnag.com"
+      "phillyvoice.com",
+      "unibet.com",
+      "draftkings.com"
     ],
     "consentag.eu": [
-      "boohoo.com"
+      "twilio.com",
+      "matchesfashion.com"
+    ],
+    "consentframework.com": [
+      "twoje-miasto.pl",
+      "demotywatory.pl",
+      "infinityfree.net"
+    ],
+    "consentmanager.net": [
+      "derwesten.de",
+      "kicker.de",
+      "dice.com"
     ],
     "constantcontact.com": [
       "rs6.net"
     ],
-    "consumerreports.org": [
-      "consumerist.com"
+    "consumersource.com": [
+      "apartmentguide.com",
+      "rent.com"
+    ],
+    "content-ad.net": [
+      "wisegeek.com"
     ],
-    "contentabc.com": [
-      "bravotube.net"
+    "contentdsp.com": [
+      "sofi.com"
     ],
     "contentexchange.me": [
       "b92.net",
-      "blic.rs",
-      "dnevnik.hr"
+      "abv.bg"
     ],
     "contentinsights.com": [
-      "niemanlab.org"
+      "niemanlab.org",
+      "rg.ru",
+      "idntimes.com"
     ],
     "contentive.com": [
       "searchenginewatch.com",
       "clickz.com"
     ],
+    "contently.com": [
+      "upmc.com",
+      "here.com"
+    ],
+    "contents-search-windows.com": [
+      "oricon.co.jp",
+      "daily.co.jp"
+    ],
     "contentsfeed.com": [
-      "asahi.com",
-      "donga.com",
-      "mainichi.jp"
+      "qoo10.jp",
+      "mainichi.jp",
+      "hani.co.kr"
     ],
     "contentsquare.net": [
-      "salesforce.com",
-      "shutterstock.com",
-      "bestbuy.com"
+      "verizon.com",
+      "goodyear.com",
+      "bottegaveneta.com"
     ],
     "contextads.live": [
-      "okaz.com.sa",
-      "aawsat.com",
-      "haibunda.com"
+      "cnbcindonesia.com",
+      "kompas.com",
+      "tribunnews.com"
     ],
     "contextweb.com": [
-      "forbes.com",
-      "sourceforge.net",
-      "imgur.com"
+      "isbank.com.tr",
+      "abcactionnews.com",
+      "thegatewaypundit.com"
+    ],
+    "contineljs.com": [
+      "vtv.vn",
+      "thethao247.vn",
+      "soha.vn"
     ],
     "contobox.com": [
       "homedepot.ca"
     ],
-    "conversantmedia.com": [
-      "epsilon.com"
+    "conversionruler.com": [
+      "ripple.com",
+      "wish.org"
     ],
-    "conversionlogic.net": [
-      "rottentomatoes.com"
+    "convertful.com": [
+      "ansys.com"
     ],
     "convertkit.com": [
-      "valuewalk.com"
+      "fourhourworkweek.com"
     ],
     "convertlanguage.com": [
-      "t-mobile.com"
+      "t-mobile.com",
+      "amtrak.com"
     ],
     "convio.net": [
-      "convio.com",
-      "alsa.org"
+      "alsa.org",
+      "convio.com"
+    ],
+    "cookiebot.com": [
+      "highcharts.com",
+      "cairn.info",
+      "cruzroja.es"
+    ],
+    "cookiepro.com": [
+      "gmu.edu"
+    ],
+    "cooladata.com": [
+      "boohoo.com"
     ],
     "coremetrics.com": [
-      "ibm.com",
-      "abebooks.com",
-      "thermofisher.com"
+      "boots.com",
+      "fabric.com",
+      "parker.com"
     ],
-    "corus.ca": [
-      "globalnews.ca"
+    "corover.mobi": [
+      "indianrail.gov.in"
     ],
     "costco.com": [
       "costco.ca"
@@ -12669,139 +13277,191 @@
     "cotsta.ru": [
       "kino-teatr.ru"
     ],
-    "coupang.com": [
-      "hani.co.kr"
+    "coub.com": [
+      "yaplakal.com"
+    ],
+    "countable.us": [
+      "causes.com"
+    ],
+    "countryflags.io": [
+      "supersonic.com"
     ],
     "coupons.net": [
       "coupons.com"
     ],
     "coveo.com": [
-      "bell.ca"
+      "heart.org"
     ],
-    "coxbusiness.com": [
-      "cox.com"
+    "cpex.cz": [
+      "idnes.cz",
+      "aktualne.cz"
     ],
     "cpmstar.com": [
-      "hi.ru",
-      "armorgames.com",
-      "pcgamesn.com"
+      "minecraftforum.net",
+      "insanegames.io",
+      "mmo-champion.com"
     ],
     "cpx.to": [
-      "dailymotion.com",
-      "livescience.com",
-      "express.co.uk"
+      "cyclingnews.com",
+      "techradar.com",
+      "anandtech.com"
     ],
     "cquotient.com": [
-      "uniqlo.com",
-      "puma.com",
-      "boohoo.com"
+      "balenciaga.com",
+      "fossil.com",
+      "bottegaveneta.com"
+    ],
+    "crain.com": [
+      "modernhealthcare.com",
+      "adage.com",
+      "autonews.com"
+    ],
+    "crazyegg.com": [
+      "nova.edu",
+      "marchofdimes.org",
+      "acog.org"
     ],
     "creative-serving.com": [
-      "swarovski.com"
+      "president.jp",
+      "pilotonline.com"
     ],
     "creativecdn.com": [
-      "msn.com",
-      "booking.com",
-      "tokopedia.com"
+      "abcactionnews.com",
+      "gumtree.co.za",
+      "eldorado.ru"
     ],
-    "creativelive.com": [
-      "photo.net"
+    "credible.com": [
+      "foxbusiness.com",
+      "fox5ny.com",
+      "fox9.com"
     ],
-    "creativemarket.com": [
-      "informationweek.com"
+    "cresendo.net": [
+      "kmong.com"
     ],
-    "crentgate.com": [
-      "livejasmin.com"
+    "criteo.com": [
+      "president.jp",
+      "isbank.com.tr",
+      "abcactionnews.com"
     ],
-    "cretgate.com": [
-      "spankbang.com",
+    "crjpingate.com": [
+      "gotporn.com",
       "livejasmin.com"
     ],
-    "criteo.com": [
-      "dropbox.com",
-      "cnn.com",
-      "forbes.com"
+    "crowdriff.com": [
+      "floridastateparks.org",
+      "nycgo.com",
+      "exploratorium.edu"
+    ],
+    "crowdtwist.com": [
+      "marvel.com"
     ],
     "crsspxl.com": [
       "sourceforge.net",
-      "slashdot.org",
-      "las2orillas.co"
+      "rpp.pe",
+      "manta.com"
+    ],
+    "crunch.io": [
+      "yougov.com"
     ],
     "crwdcntrl.net": [
-      "oregonlive.com",
-      "nzherald.co.nz",
-      "umass.edu"
+      "spin.com",
+      "cbc.ca",
+      "wsoctv.com"
+    ],
+    "crypto.com": [
+      "newsbtc.com",
+      "bitcoinist.com"
     ],
     "cryptobrowser.site": [
       "cryptotabbrowser.com"
     ],
-    "cszz.ru": [
-      "drom.ru"
+    "cryptoo.me": [
+      "dutchycorp.space"
     ],
     "ctags.cn": [
-      "bitauto.com"
+      "yiche.com"
     ],
-    "ctnsnet.com": [
-      "reading.ac.uk",
-      "lancaster.ac.uk",
-      "highlow.com"
+    "ctflux.com": [
+      "youjizz.com"
     ],
-    "ctrip.com": [
-      "idianfa.com"
+    "ctnsnet.com": [
+      "yahoo.com",
+      "twilio.com",
+      "reading.ac.uk"
     ],
-    "cuberoot.co": [
-      "indiatoday.in",
-      "aajtak.in"
+    "cultergoy.com": [
+      "1377x.to"
     ],
     "culturaltracking.ru": [
+      "hermitagemuseum.org",
       "culture.ru"
     ],
+    "curacao-egaming.com": [
+      "verajohn.com"
+    ],
     "curalate.com": [
-      "jcpenney.com",
-      "crateandbarrel.com",
-      "williams-sonoma.com"
+      "fossil.com",
+      "riverisland.com",
+      "madewell.com"
     ],
-    "custhelp.com": [
-      "lenovo.com"
+    "customads.co": [
+      "beforeitsnews.com",
+      "thefederalist.com"
     ],
     "customer.io": [
-      "codecademy.com",
-      "buffer.com",
-      "smore.com"
+      "resellerclub.com",
+      "mxtoolbox.com",
+      "buffer.com"
     ],
     "custora.com": [
+      "converse.com",
       "patagonia.com",
-      "domestika.org",
-      "jcrew.com"
-    ],
-    "cvent.com": [
-      "stlouisfed.org"
+      "toms.com"
     ],
     "cvshealth.com": [
       "cvs.com"
     ],
     "cxense.com": [
-      "wsj.com",
-      "businessinsider.com",
-      "independent.co.uk"
+      "president.jp",
+      "morgenpost.de",
+      "redstate.com"
+    ],
+    "cxpublic.com": [
+      "president.jp",
+      "diamond.jp",
+      "obozrevatel.com"
+    ],
+    "cybersource.com": [
+      "beatport.com"
+    ],
+    "cybertronads.com": [
+      "premiumtimesng.com"
     ],
-    "cyol.net": [
-      "cyol.com"
+    "cztvcloud.com": [
+      "cztv.com"
     ],
     "d-bi.fr": [
+      "worldofwarships.eu",
       "boohoo.com",
       "worldoftanks.eu"
     ],
-    "d-markets.net": [
-      "cityheaven.net"
+    "d10gj7yjsfriaj.cloudfront.net": [
+      "teepublic.com"
+    ],
+    "d15z7dtgvh220z.cloudfront.net": [
+      "topcashback.com"
+    ],
+    "d18t35yyry2k49.cloudfront.net": [
+      "pelisplushd.net"
     ],
     "d1af033869koo7.cloudfront.net": [
       "marriott.com",
-      "bestbuy.com",
-      "siriusxm.com"
+      "columbia.com"
     ],
     "d1d3jupgwm7m5r.cloudfront.net": [
-      "defensenews.com"
+      "wsoctv.com",
+      "baltimoresun.com",
+      "bostonglobe.com"
     ],
     "d1dns4zpgsd7rz.cloudfront.net": [
       "rthk.hk"
@@ -12809,253 +13469,361 @@
     "d1epsz32winqbo.cloudfront.net": [
       "startribune.com"
     ],
-    "d1rv23qj5kas56.cloudfront.net": [
-      "webnode.com",
-      "webnode.cz"
+    "d2-apps.net": [
+      "infoseek.co.jp"
+    ],
+    "d21uzv52i0cqie.cloudfront.net": [
+      "msn.com"
     ],
     "d226aj4ao1t61q.cloudfront.net": [
       "activecampaign.com"
     ],
+    "d246big5q963u9.cloudfront.net": [
+      "tatacliq.com"
+    ],
+    "d291vdycu0ht11.cloudfront.net": [
+      "note.com"
+    ],
+    "d2dpiwfhf3tz0r.cloudfront.net": [
+      "aktuality.sk"
+    ],
+    "d2f4zoo8hyailp.cloudfront.net": [
+      "cambly.com"
+    ],
+    "d2gj27cpfrxt9y.cloudfront.net": [
+      "sportsmole.co.uk"
+    ],
+    "d2ksstuvcdowmk.cloudfront.net": [
+      "skiddle.com"
+    ],
+    "d2qrdklrsxowl2.cloudfront.net": [
+      "sothebys.com",
+      "aicpa.org"
+    ],
     "d2t77mnxyo7adj.cloudfront.net": [
-      "trello.com",
-      "saatchiart.com"
+      "canva.com",
+      "renttherunway.com",
+      "harrods.com"
     ],
     "d32blsbofe2158.cloudfront.net": [
       "247wallst.com"
     ],
-    "d32hpx6p5we0tx.cloudfront.net": [
-      "espncricinfo.com"
-    ],
     "d38xvr37kwwhcm.cloudfront.net": [
       "anthropologie.com",
+      "abcmouse.com",
       "fashionnova.com"
     ],
     "d395dw5zk780j2.cloudfront.net": [
-      "nationalpost.com",
-      "canada.com",
-      "financialpost.com"
+      "ottawacitizen.com",
+      "montrealgazette.com",
+      "calgaryherald.com"
+    ],
+    "d3kwtionx0p7im.cloudfront.net": [
+      "wbur.org"
+    ],
+    "d3nocrch4qti4v.cloudfront.net": [
+      "jomashop.com"
+    ],
+    "d3srxf9cr7mh5q.cloudfront.net": [
+      "christianpost.com"
     ],
     "d41.co": [
-      "hpe.com",
-      "3m.com",
-      "cio.com"
+      "computerworld.com",
+      "weareteachers.com",
+      "infoworld.com"
     ],
-    "d5nxst8fruw4z.cloudfront.net": [
-      "alexa.com"
+    "d881ll0fvb8ad.cloudfront.net": [
+      "brusheezy.com"
     ],
     "d9jj3mjthpub.cloudfront.net": [
-      "people.com",
       "allrecipes.com",
-      "eatthis.com"
+      "instyle.com",
+      "realsimple.com"
     ],
     "dable.io": [
-      "ettoday.net",
-      "jpnn.com",
-      "republika.co.id"
+      "lotteon.com",
+      "thairath.co.th",
+      "liputan6.com"
     ],
-    "dadcdigital.com": [
-      "funimation.com"
+    "dacmaiss.com": [
+      "fmoviesto.cc",
+      "asianembed.io"
     ],
-    "dadicinema.com": [
-      "300.cn"
+    "daexauto.com": [
+      "thenewslens.com"
     ],
-    "dailymail.co.uk": [
-      "metro.co.uk",
-      "inews.co.uk",
-      "thisismoney.co.uk"
+    "daib.pl": [
+      "naszemiasto.pl"
+    ],
+    "dailylearn.in": [
+      "oneindia.com"
     ],
     "dailymotion.com": [
+      "huffingtonpost.es",
       "heraldodemexico.com.mx",
-      "01net.com",
-      "asiaone.com"
+      "yeniakit.com.tr"
     ],
-    "dam-broadcast.com": [
-      "orange.com"
+    "dailystar.co.uk": [
+      "mirror.co.uk"
+    ],
+    "dalecta.com": [
+      "thebest.gr",
+      "to10.gr"
     ],
     "danv01ao0kdr2.cloudfront.net": [
-      "jabra.com"
+      "parallels.com",
+      "jabra.com",
+      "coreldraw.com"
     ],
-    "dapadobeproxyql.azurewebsites.net": [
-      "microsoft.com"
+    "dashboard-visor.com": [
+      "bancobai.ao"
     ],
-    "dapadobeproxytest.azurewebsites.net": [
-      "microsoft.com"
+    "dashboard.co.uk": [
+      "lloydsbank.com"
     ],
-    "datamind.ru": [
-      "tinkoff.ru",
-      "skyeng.ru"
+    "data-crypt.com": [
+      "rmg.co.uk"
+    ],
+    "data-dynamic.net": [
+      "ln-cc.com"
+    ],
+    "datadoghq.com": [
+      "italist.com",
+      "lemonade.com",
+      "biggerpockets.com"
+    ],
+    "datadrivenpromotion.com": [
+      "eldorado.ru",
+      "leroymerlin.ru",
+      "rzd.ru"
     ],
-    "dataplusmath.com": [
-      "liveramp.com"
+    "datafront.co": [
+      "dagospia.com"
     ],
-    "dataprev.gov.br": [
-      "inss.gov.br"
+    "datamind.ru": [
+      "afisha.ru",
+      "gazeta.ru",
+      "championat.com"
     ],
     "datasteam.io": [
-      "arthritis.org",
-      "oakley.com"
+      "therealreal.com",
+      "kingarthurbaking.com",
+      "ncl.com"
+    ],
+    "datatables.net": [
+      "catholic.org"
+    ],
+    "datawrkz.com": [
+      "dailydot.com",
+      "nautil.us"
     ],
     "dataxpand.com": [
       "las2orillas.co",
-      "taringa.net",
-      "rpp.pe"
+      "listindiario.com"
     ],
     "daum.net": [
-      "ettoday.net",
-      "tistory.com",
-      "kakaocorp.com"
-    ],
-    "dc-storm.com": [
-      "alibabacloud.com",
-      "udemy.com",
-      "coursera.org"
+      "lotteon.com",
+      "interpark.com",
+      "thairath.co.th"
     ],
-    "dc-tag.jp": [
-      "navitime.co.jp"
+    "daumcdn.net": [
+      "daum.net"
     ],
-    "dcmn.io": [
-      "idealo.de",
-      "babbel.com"
+    "dblks.net": [
+      "saltwire.com"
     ],
-    "dditscdn.com": [
-      "livejasmin.com"
+    "dc-tag.jp": [
+      "navitime.co.jp",
+      "tenki.jp",
+      "retty.me"
     ],
-    "dditservices.com": [
-      "spankbang.com"
+    "dcm9zy.net": [
+      "seamless.com"
     ],
     "ddos-guard.net": [
-      "hse.ru",
-      "ngs.ru"
+      "fitgirl-repacks.site"
     ],
     "deadline.com": [
       "indiewire.com"
     ],
     "deadlinefunnel.com": [
+      "positivepsychology.com",
       "copyblogger.com"
     ],
     "dealerinspire.com": [
       "cars.com"
     ],
-    "deema.agency": [
-      "khabaronline.ir"
+    "debenhams.co.uk": [
+      "karenmillen.com",
+      "debenhams.com"
+    ],
+    "decode.buzz": [
+      "exame.com"
+    ],
+    "deemanetwork.com": [
+      "basalam.com"
     ],
     "deep.bi": [
       "rappler.com",
+      "rp.pl",
       "sme.sk"
     ],
     "deepintent.com": [
-      "wired.com",
-      "patheos.com",
-      "patient.info"
+      "president.jp",
+      "hopkinsmedicine.org",
+      "acpjournals.org"
+    ],
+    "defenseone.com": [
+      "nextgov.com",
+      "govexec.com"
     ],
     "dell.com": [
-      "rsa.com",
       "delltechnologies.com"
     ],
+    "demand.supply": [
+      "astrologyanswers.com",
+      "cineulagam.com",
+      "lankasri.com"
+    ],
+    "demandbase.com": [
+      "atlassian.com",
+      "campaignmonitor.com",
+      "vmware.com"
+    ],
+    "demandjump.com": [
+      "doterra.com",
+      "ckeditor.com",
+      "ecwid.com"
+    ],
+    "demandware.net": [
+      "puma.com"
+    ],
     "demdex.net": [
-      "microsoft.com",
-      "linkedin.com",
-      "yahoo.com"
+      "ucsusa.org",
+      "abcactionnews.com",
+      "consumentenbond.nl"
     ],
     "denakop.com": [
-      "metropoles.com"
+      "metropoles.com",
+      "todamateria.com.br"
     ],
-    "denverpost.com": [
-      "bostonherald.com",
-      "twincities.com"
+    "denetsuk.com": [
+      "cima-club.cc"
+    ],
+    "dentsu.de": [
+      "postbank.de"
     ],
     "deployads.com": [
       "tinyurl.com",
-      "sciencedaily.com",
-      "myanimelist.net"
+      "lotterypost.com",
+      "sciencedaily.com"
     ],
     "deqwas.net": [
-      "rakuten.co.jp",
-      "suumo.jp",
-      "syosetu.com"
+      "doda.jp",
+      "honto.jp",
+      "suumo.jp"
     ],
     "desipearl.com": [
       "oneindia.com",
       "filmibeat.com"
     ],
     "detik.com": [
-      "cnnindonesia.com",
+      "haibunda.com",
       "cnbcindonesia.com",
       "insertlive.com"
     ],
+    "devmate.com": [
+      "macpaw.com"
+    ],
+    "dexguru.net": [
+      "dex.guru"
+    ],
     "dezeenjobs.com": [
       "dezeen.com"
     ],
-    "dfapvmql-q.global.ssl.fastly.net": [
-      "zappos.com",
-      "jcpenney.com",
-      "ulta.com"
-    ],
     "dfcfw.com": [
       "eastmoney.com"
     ],
-    "dhgate.com": [
-      "informationweek.com"
-    ],
     "di-dtaectolog-us-prod-1.appspot.com": [
-      "go.com",
-      "disney.com",
-      "starwars.com"
+      "starwars.com",
+      "thewaltdisneycompany.com",
+      "disney.com"
     ],
     "dialogtech.com": [
-      "findlaw.com",
-      "ringcentral.com",
-      "iit.edu"
+      "iit.edu",
+      "humana.com",
+      "pitneybowes.com"
     ],
-    "diginetica.net": [
-      "citilink.ru",
-      "eldorado.ru"
+    "dianomi.com": [
+      "blackenterprise.com",
+      "marketwatch.com"
     ],
-    "digitalaudienz.com": [
-      "estadao.com.br"
+    "diarioelpais.com": [
+      "elpais.com.uy"
     ],
-    "digitalbee.al": [
-      "balkanweb.com"
+    "dibspayment.eu": [
+      "dagbladet.no"
+    ],
+    "digiato.com": [
+      "rooziato.com"
+    ],
+    "digicert.com": [
+      "acefitness.org"
+    ],
+    "diginetica.net": [
+      "eldorado.ru",
+      "citilink.ru",
+      "sima-land.ru"
     ],
-    "digitalbox.ru": [
-      "zaycev.net"
+    "digitalcamp.co.kr": [
+      "chosun.com"
     ],
     "digitalfirstmedia.com": [
       "bostonherald.com"
     ],
     "digitalkites.com": [
-      "bollywoodshaadis.com"
+      "ibtimes.co.in"
     ],
-    "digitaloceanspaces.com": [
-      "vox.com"
+    "digitalks.az": [
+      "modern.az",
+      "yenisabah.az",
+      "day.az"
     ],
     "digitalriver.com": [
-      "poly.com"
+      "poly.com",
+      "vive.com"
     ],
-    "digitaltarget.ru": [
-      "rambler.ru",
-      "iz.ru",
-      "aif.ru"
+    "digitalriverws.com": [
+      "crucial.com"
     ],
-    "digitru.st": [
-      "imgur.com",
-      "speedtest.net",
-      "op.gg"
+    "digitaltarget.ru": [
+      "eldorado.ru",
+      "radikal.ru",
+      "sport-express.ru"
     ],
     "diqp43fm0w6zs.cloudfront.net": [
       "wwnorton.com"
     ],
     "discord.com": [
+      "allkpop.com",
       "bulbagarden.net",
       "lectortmo.com"
     ],
-    "districtm.ca": [
-      "royalgazette.com"
+    "discovery.com": [
+      "foodnetwork.com"
+    ],
+    "disqus.com": [
+      "jamaica-gleaner.com",
+      "dxomark.com",
+      "gitlab.com"
     ],
     "districtm.io": [
-      "okezone.com",
-      "forbes.com",
-      "imgur.com"
+      "president.jp",
+      "9to5google.com",
+      "thegazette.com"
+    ],
+    "djc888.cn": [
+      "ifeng.com"
     ],
     "djiops.com": [
       "dji.com"
@@ -13066,284 +13834,411 @@
     "dl1d2m8ri9v3j.cloudfront.net": [
       "smartrecruiters.com"
     ],
-    "dmgmediaprivacy.co.uk": [
-      "dailymail.co.uk",
-      "metro.co.uk",
-      "inews.co.uk"
+    "dlads.cn": [
+      "subhd.tv"
     ],
     "dmm.com": [
-      "dmm.co.jp"
+      "dmm.co.jp",
+      "r18.com"
     ],
     "dmpxs.com": [
-      "ktla.com",
-      "wgntv.com",
-      "kdvr.com"
+      "wavy.com",
+      "wfla.com",
+      "wgntv.com"
     ],
     "dmxleo.com": [
-      "dailymotion.com",
+      "huffingtonpost.es",
       "heraldodemexico.com.mx",
-      "01net.com"
+      "dailymotion.com"
+    ],
+    "dmzjmp.com": [
+      "youjizz.com"
+    ],
+    "dnacdn.net": [
+      "pilotonline.com",
+      "zappos.com",
+      "24h.com.vn"
+    ],
+    "dnb.com": [
+      "alliedmarketresearch.com"
+    ],
+    "dochase.com": [
+      "thenetnaija.com",
+      "lindaikejisblog.com",
+      "premiumtimesng.com"
     ],
     "docomo.ne.jp": [
-      "suumo.jp",
-      "hulu.jp",
+      "doda.jp",
       "allabout.co.jp"
     ],
     "doga.cm": [
       "ferret-plus.com"
     ],
-    "donorbox.org": [
-      "truthout.org"
+    "doityourself.com": [
+      "inhabitat.com"
+    ],
+    "dopansearor.com": [
+      "extreme-down.plus"
     ],
     "dotmetrics.net": [
-      "avaz.ba",
-      "scotsman.com",
-      "birminghammail.co.uk"
+      "express.co.uk",
+      "inews.co.uk",
+      "avaz.ba"
     ],
     "dotomi.com": [
-      "yahoo.com",
-      "okezone.com",
-      "forbes.com"
+      "president.jp",
+      "ulta.com",
+      "timeshighereducation.com"
     ],
     "doubleclick.net": [
-      "youtube.com",
-      "linkedin.com",
-      "netflix.com"
+      "president.jp",
+      "bicycling.com",
+      "cartoonnetwork.com"
     ],
     "doublepimp.com": [
-      "spankbang.com",
-      "efukt.com",
-      "gotporn.com"
+      "gotporn.com",
+      "analdin.com",
+      "xozilla.com"
+    ],
+    "doubleverify.com": [
+      "seekingalpha.com",
+      "cleveland.com",
+      "sbnation.com"
     ],
     "douyucdn.cn": [
       "douyu.com"
     ],
-    "dowjoneson.com": [
-      "wsj.com",
-      "marketwatch.com",
-      "dowjones.com"
+    "downza.com": [
+      "onlinedown.net"
+    ],
+    "doyouad.com": [
+      "hani.co.kr",
+      "domeggook.com"
     ],
-    "dpgmedia.net": [
-      "dpgmedia.be",
-      "dpgmedia.nl",
-      "volkskrant.nl"
+    "dozubatan.com": [
+      "multicanais.tv",
+      "pelisplushd.net"
     ],
     "dpmsrv.com": [
-      "boston.com",
-      "techtarget.com",
-      "adweek.com"
+      "shrm.org",
+      "scmagazine.com",
+      "fiercepharma.com"
+    ],
+    "dragonforms.com": [
+      "fiercepharma.com",
+      "fiercehealthcare.com",
+      "fiercebiotech.com"
     ],
     "drcareers.ca": [
       "cmaj.ca"
     ],
+    "dream.co.id": [
+      "diadona.id"
+    ],
     "dreamlab.pl": [
-      "onet.pl"
+      "onet.pl",
+      "blick.ch",
+      "businessinsider.com.pl"
     ],
     "dropbox.com": [
-      "smallseotools.com",
       "tinypng.com",
-      "getcloudapp.com"
+      "pdfsimpli.com",
+      "smallseotools.com"
     ],
     "dropboxusercontent.com": [
-      "rewardstyle.com"
+      "shopltk.com"
+    ],
+    "drtbn.com": [
+      "drtuber.com"
+    ],
+    "ds360.co": [
+      "adexchanger.com"
     ],
-    "dsp.com": [
-      "zhibo8.cc"
+    "dsoauthorizationapi-prod.azurewebsites.net": [
+      "dstvafrica.com"
+    ],
+    "dspnow.ru": [
+      "mining.online",
+      "revopush.com"
     ],
     "dsspn.com": [
-      "newchic.com"
+      "banggood.com",
+      "dhgate.com"
     ],
-    "dtprofit.com": [
-      "drtuber.com"
+    "dstillery.com": [
+      "lendingclub.com",
+      "royalcaribbean.com",
+      "box.com"
     ],
     "dtscdn.com": [
-      "otvfoco.com.br",
-      "las2orillas.co"
+      "licindia.in",
+      "al-maraabimedias.net"
     ],
     "dtscout.com": [
-      "alnaharegypt.com",
-      "otvfoco.com.br",
+      "1377x.to",
+      "licindia.in",
       "las2orillas.co"
     ],
     "dttq.net": [
       "acehardware.com"
     ],
     "duba.com": [
-      "newduba.cn"
+      "firefoxchina.cn"
     ],
     "dugout.com": [
-      "thethao247.vn",
-      "indosport.com"
+      "youm7.com",
+      "indosport.com",
+      "thethao247.vn"
     ],
-    "duoyi.com": [
-      "sina.com.cn"
+    "duhnet.tv": [
+      "fanatik.com.tr"
     ],
-    "dxcdn.com": [
-      "dx.com"
+    "duniagames.co.id": [
+      "ggwp.id"
+    ],
+    "duns100.co.il": [
+      "calcalist.co.il"
+    ],
+    "dunsregistered.com": [
+      "alliedmarketresearch.com"
     ],
-    "dynad.net": [
-      "uol.com.br"
+    "duomai.com": [
+      "cnbeta.com"
     ],
-    "dynadot.com": [
-      "informationweek.com"
+    "durasite.net": [
+      "goo-net.com"
+    ],
+    "duzytv.com": [
+      "traileraddict.com"
+    ],
+    "dxcdn.com": [
+      "dx.com"
     ],
     "dynamics.com": [
-      "edelman.com"
+      "clevelandclinic.org",
+      "information-age.com",
+      "phoenixnap.com"
     ],
     "dynamicyield.com": [
-      "washingtonexaminer.com",
-      "urbanoutfitters.com",
-      "dior.com"
+      "eldorado.ru",
+      "pacsun.com",
+      "anthropologie.com"
+    ],
+    "dynatrace.com": [
+      "ck12.org",
+      "nespresso.com",
+      "endclothing.com"
     ],
     "dyntrk.com": [
-      "imgur.com",
-      "retargetly.com"
+      "gumtree.co.za",
+      "heraldodemexico.com.mx",
+      "baltimoresun.com"
     ],
     "e-contenta.com": [
-      "ozon.ru"
+      "regnum.ru"
     ],
-    "e-himart.co.kr": [
-      "hani.co.kr"
+    "e-volution.ai": [
+      "thenewsminute.com",
+      "techtimes.com"
     ],
-    "e-planning.net": [
-      "youm7.com",
-      "softonic.com",
-      "geeksforgeeks.org"
+    "e54b.net": [
+      "westelm.com"
+    ],
+    "eadv.it": [
+      "milanworld.net"
+    ],
+    "eaglecdn.com": [
+      "gazeta.ru",
+      "lenta.ru",
+      "championat.com"
+    ],
+    "eagleplatform.com": [
+      "gazeta.ru",
+      "lenta.ru",
+      "championat.com"
     ],
     "easemob.com": [
-      "iliangcang.com",
-      "loex.io"
+      "iliangcang.com"
+    ],
+    "easyliao.com": [
+      "educity.cn"
     ],
     "eb.com": [
       "britannica.com"
     ],
     "ebay.com": [
-      "businessinsider.com.au"
+      "purewow.com"
     ],
     "ebayimg.com": [
+      "2dehands.be",
       "marktplaats.nl"
     ],
     "ebis.ne.jp": [
       "so-net.ne.jp",
-      "thebase.in",
-      "doda.jp"
+      "doda.jp",
+      "cybozu.com"
     ],
     "ebu.io": [
-      "dw.com"
+      "dw.com",
+      "srf.ch",
+      "francetvinfo.fr"
+    ],
+    "ec-concier.com": [
+      "tower.jp"
     ],
     "ecbsn.com": [
       "rakuten.com"
     ],
     "eccmp.com": [
       "newegg.com",
-      "popsci.com",
-      "cabelas.com"
+      "pch.com",
+      "evite.com"
     ],
     "echoban.ru": [
       "svoboda.org",
       "ng.ru"
     ],
-    "ecustomeropinions.com": [
-      "skysports.com"
+    "econacademics.org": [
+      "repec.org"
     ],
     "ecwid.ru": [
       "ecwid.com"
     ],
-    "edge-cdn.net": [
-      "biomedcentral.com",
-      "springeropen.com"
+    "eda.video": [
+      "regnum.ru"
+    ],
+    "edgrmtracking.com": [
+      "homeworklib.com"
+    ],
+    "ediemidnightzombies.com": [
+      "ugg.com"
     ],
     "edigitalsurvey.com": [
       "bbc.com",
-      "formula1.com"
+      "london.edu"
+    ],
+    "editnews.com": [
+      "sverigesradio.se"
     ],
-    "editor80.com": [
-      "heraldodemexico.com.mx"
+    "ednplus.com": [
+      "chosun.com",
+      "hani.co.kr",
+      "asiae.co.kr"
     ],
-    "editorx.com": [
-      "wix.com"
+    "edugrampromo.com": [
+      "studopedia.ru"
+    ],
+    "eduvision.edu.pk": [
+      "4mark.net"
     ],
     "eestatic.com": [
       "elespanol.com"
     ],
+    "ef.com": [
+      "ef.edu"
+    ],
     "effectivemeasure.net": [
-      "bbc.com",
-      "manoramaonline.com",
-      "abs-cbn.com"
+      "dstvafrica.com",
+      "news24.com",
+      "bbc.com"
     ],
     "egain.cloud": [
-      "lego.com",
-      "jcpenney.com"
+      "goodyear.com"
     ],
-    "el-mundo.net": [
-      "marca.com",
-      "elmundo.es",
-      "expansion.com"
+    "eggplant.cloud": [
+      "computing.co.uk"
+    ],
+    "egou.com": [
+      "yiqifa.com"
+    ],
+    "egovsum.com": [
+      "mee.gov.cn"
+    ],
+    "einnews.com": [
+      "einpresswire.com"
+    ],
+    "ekbl.net": [
+      "immobiliare.it"
     ],
     "eland-tech.com": [
-      "buzzorange.com"
+      "mirrormedia.mg"
+    ],
+    "elastic.co": [
+      "swiftype.com"
+    ],
+    "electrek.co": [
+      "pinterest.com"
+    ],
+    "elevaate.io": [
+      "riteaid.com"
     ],
     "elfsight.com": [
-      "afsp.org"
+      "ellitoral.com",
+      "helloasso.com",
+      "seismic.com"
     ],
     "elmercurio.com": [
       "emol.com"
     ],
+    "elmtv.az": [
+      "science.gov.az"
+    ],
     "eloqua.com": [
-      "alibabacloud.com",
-      "addthis.com",
-      "intel.com"
+      "flexera.com",
+      "ivanti.com",
+      "dupont.com"
     ],
     "elpais.com": [
+      "caracol.com.co",
       "as.com",
       "cadenaser.com"
     ],
-    "elsevier.com": [
-      "thelancet.com",
-      "ssrn.com",
-      "cell.com"
-    ],
-    "elsevierhealth.com": [
-      "thelancet.com",
-      "cell.com"
-    ],
     "eltiempo.co": [
       "eltiempo.com"
     ],
-    "eltiempo.digital": [
-      "eltiempo.com"
+    "emas-poc.com": [
+      "umeng.com"
+    ],
+    "embed.ly": [
+      "channelnewsasia.com",
+      "psychiatryonline.org"
     ],
     "embedly.com": [
+      "goguardian.com",
+      "formstack.com",
       "uservoice.com"
     ],
-    "emxdgt.com": [
-      "forbes.com",
-      "usatoday.com",
-      "dailymotion.com"
+    "emlgrid.com": [
+      "home.pl"
+    ],
+    "emol.cl": [
+      "emol.com"
     ],
-    "enamad.ir": [
-      "digikala.com",
-      "divar.ir",
-      "mofidonline.com"
+    "empregoreal.com": [
+      "uwatchfree.ph"
     ],
-    "ename.cn": [
-      "ename.com",
-      "ename.net"
+    "emxdgt.com": [
+      "thegatewaypundit.com",
+      "phillyvoice.com",
+      "thegazette.com"
     ],
-    "engageclick.com": [
-      "marriott.com"
+    "en25.com": [
+      "cybersource.com",
+      "sonicwall.com",
+      "zebra.com"
     ],
     "engageya.com": [
-      "memurlar.net",
-      "sozcu.com.tr",
-      "haberler.com"
+      "ntv.com.tr",
+      "bloomberght.com",
+      "vanguardngr.com"
     ],
     "ens.fr": [
       "psl.eu"
     ],
     "ensighten.com": [
-      "aljazeera.com",
-      "britishairways.com"
+      "labcorp.com",
+      "equifax.com",
+      "oprahdaily.com"
     ],
     "entertainow.com": [
       "dailydot.com"
@@ -13354,176 +14249,217 @@
     "envoke.com": [
       "wildapricot.com"
     ],
-    "epicurious.com": [
-      "wired.com",
-      "newyorker.com",
-      "vanityfair.com"
+    "episerver.com": [
+      "optimizely.com"
     ],
     "episerver.net": [
-      "iata.org",
-      "bsigroup.com"
+      "unisys.com",
+      "euromonitor.com",
+      "connectwise.com"
     ],
     "eqads.com": [
-      "autotrader.ca"
+      "vcahospitals.com"
+    ],
+    "esm1.net": [
+      "subaru.com",
+      "autotrader.com"
+    ],
+    "esmplus.com": [
+      "gmarket.co.kr",
+      "auction.co.kr"
     ],
-    "equalstyle.com": [
-      "hubpages.com"
+    "espn.com": [
+      "theundefeated.com",
+      "abc7chicago.com",
+      "infobae.com"
     ],
-    "erepublic.com": [
-      "govtech.com",
-      "governing.com"
+    "espn.com.ar": [
+      "infobae.com"
     ],
     "essayassist.com": [
       "eliteessaywriters.com"
     ],
     "essayprofit.com": [
+      "royalessays.co.uk",
       "masterpapers.com",
-      "payforessay.net",
-      "samedayessay.com"
+      "payforessay.net"
     ],
     "estadao-bi-ga360.appspot.com": [
       "estadao.com.br"
     ],
-    "estat.com": [
-      "over-blog.com",
-      "lefigaro.fr",
-      "eklablog.com"
+    "etahub.com": [
+      "pornhub.com",
+      "thumbzilla.com",
+      "youporn.com"
+    ],
+    "etargetnet.com": [
+      "topky.sk",
+      "zoznam.sk"
+    ],
+    "etherscan.com": [
+      "polygonscan.com"
     ],
-    "etracker.de": [
-      "unibe.ch",
-      "muenchen.de"
+    "ethicalshop.org": [
+      "theecologist.org"
+    ],
+    "ethousealc.xyz": [
+      "xozilla.com"
+    ],
+    "eulerian.net": [
+      "oui.sncf",
+      "sfr.fr",
+      "societegenerale.fr"
     ],
     "eum-appdynamics.com": [
-      "webex.com",
-      "intuit.com",
-      "jstor.org"
+      "libertymutual.com",
+      "progressive.com",
+      "siriusxm.com"
+    ],
+    "eurolandir.com": [
+      "bbva.com",
+      "vodafone.com",
+      "arcelormittal.com"
+    ],
+    "europe-west1-s4a-ga-raw-data-prd.cloudfunctions.net": [
+      "sephora.de"
+    ],
+    "eventbriteapi.com": [
+      "csu.edu.au"
     ],
     "everesttech.net": [
-      "adobe.com",
-      "msn.com",
-      "okezone.com"
+      "hilton.com",
+      "salvationarmyusa.org",
+      "mgmresorts.com"
+    ],
+    "everforo.com": [
+      "freeforums.org"
     ],
     "evergage.com": [
-      "cisco.com",
-      "ti.com",
-      "adorama.com"
+      "shrm.org",
+      "banco.bradesco",
+      "thehartford.com"
     ],
     "everyaction.com": [
-      "ewg.org",
       "ucsusa.org",
-      "audubon.org"
-    ],
-    "everzones.com": [
-      "cleanpng.com"
-    ],
-    "evise.com": [
-      "thelancet.com",
-      "cell.com"
+      "ewg.org",
+      "plannedparenthood.org"
     ],
-    "evo.company": [
-      "prom.ua",
-      "tiu.ru"
+    "evidon.com": [
+      "ign.com",
+      "hulu.com",
+      "spiceworks.com"
     ],
     "evolok.net": [
       "realclearpolitics.com",
-      "newstatesman.com",
-      "nation.africa"
+      "elpais.com.uy"
     ],
-    "evsuite.com": [
-      "thrivecart.com"
+    "ewdcloud.com": [
+      "shanghai.gov.cn"
     ],
     "ewrvdi.net": [
       "alamy.com"
     ],
+    "ex.co": [
+      "ole.com.ar",
+      "upi.com"
+    ],
+    "ex2b.com": [
+      "exness.com"
+    ],
     "exactag.com": [
-      "t-online.de",
-      "bahn.de"
+      "sky.de",
+      "t-online.de"
     ],
     "exacttarget.com": [
-      "uschamber.com"
+      "legacy.com"
     ],
-    "excite.co.jp": [
-      "exblog.jp"
+    "excoino.com": [
+      "tabnak.ir",
+      "asriran.com"
     ],
     "exdynsrv.com": [
-      "manganelo.com",
-      "veoh.com",
-      "lectortmo.com"
+      "gotporn.com",
+      "hulkshare.com",
+      "gogoanime.cm"
+    ],
+    "execute-api.us-east-1.amazonaws.com": [
+      "shutterfly.com"
     ],
     "exelator.com": [
-      "amazon.com",
-      "msn.com",
-      "okezone.com"
+      "abcactionnews.com",
+      "parasut.com",
+      "fivethirtyeight.com"
     ],
     "exitintel.com": [
       "harpercollins.com",
-      "simonandschuster.com"
+      "nfib.com"
+    ],
+    "exnessaffiliates.markets": [
+      "exness.com"
     ],
     "exoclick.com": [
-      "manganelo.com",
-      "txxx.com",
-      "stripchat.com"
+      "gotporn.com",
+      "stripchat.com",
+      "verajohn.com"
     ],
     "exosrv.com": [
-      "spankbang.com",
+      "upornia.com",
       "sxyprn.com",
-      "txxx.com"
+      "youjizz.com"
     ],
     "exoticads.com": [
       "chaturbate.com"
     ],
-    "expedia.com": [
-      "informationweek.com",
-      "fstoppers.com"
-    ],
     "expediapartnercentral.com": [
       "vrbo.com"
     ],
     "experiancs.com": [
       "experian.com"
     ],
-    "expertrec.com": [
-      "livecareer.com"
+    "expertfile.com": [
+      "tcu.edu"
     ],
     "exponea.com": [
-      "ozon.ru",
-      "id-binomo.com",
-      "patient.info"
+      "hobbs.com",
+      "olx.co.id",
+      "binomo-web.com"
     ],
-    "eyeota.net": [
-      "msn.com",
-      "forbes.com",
-      "detik.com"
-    ],
-    "eyereturn.com": [
-      "thestar.com",
-      "queensu.ca",
-      "eyereturnmarketing.com"
+    "extremereach.io": [
+      "nba.com",
+      "babbel.com",
+      "maxpreps.com"
     ],
-    "ezoic.net": [
-      "smallbiztrends.com",
-      "mensjournal.com",
-      "broadwayworld.com"
+    "eyeota.net": [
+      "president.jp",
+      "ucsusa.org",
+      "abcactionnews.com"
     ],
-    "f1272serve.xyz": [
-      "youporn.com"
+    "ezoic.com": [
+      "omniglot.com",
+      "cultofmac.com",
+      "blogwolf.com"
     ],
     "f5.com": [
       "nginx.com"
     ],
-    "fabled.com": [
-      "next.co.uk"
-    ],
     "facebook.com": [
-      "instagram.com",
-      "netflix.com",
-      "amazon.com"
+      "president.jp",
+      "bicycling.com",
+      "business-standard.com"
     ],
-    "fairfaxregional.com.au": [
-      "canberratimes.com.au"
+    "facebook.net": [
+      "commercialappeal.com",
+      "providencejournal.com",
+      "theledger.com"
+    ],
+    "fam-8.net": [
+      "dlsite.com"
+    ],
+    "fam-ad.com": [
+      "dlsite.com"
     ],
-    "faisys.com": [
-      "qhnmdb.com"
+    "fanat.az": [
+      "qafqazinfo.az"
     ],
     "fang.com": [
       "soufun.com"
@@ -13534,189 +14470,344 @@
     "farfetch.net": [
       "farfetch.com"
     ],
-    "faromen.online": [
-      "hclips.com"
-    ],
     "fastapi.net": [
       "ifeng.com"
     ],
     "fastcounter.de": [
       "directupload.net"
     ],
+    "fastfinch.co": [
+      "trackonomics.net"
+    ],
+    "fatmedia.io": [
+      "flexjobs.com"
+    ],
+    "fbot.me": [
+      "revolve.com",
+      "backstage.com",
+      "art.com"
+    ],
+    "fc2.com": [
+      "veoh.com"
+    ],
+    "fccnn.com": [
+      "duluthnewstribune.com"
+    ],
     "fcglcdn.com": [
       "firstcry.com"
     ],
+    "fcmrktplace.com": [
+      "phoenix.edu"
+    ],
     "feathr.co": [
-      "asm.org",
-      "nutrition.org",
-      "contentmarketinginstitute.com"
+      "computer.org",
+      "digitalcommerce360.com",
+      "scmagazine.com"
+    ],
+    "feedad.com": [
+      "fanduel.com",
+      "bet9ja.com",
+      "betway.com"
     ],
     "feedify.net": [
-      "jagonews24.com",
-      "newstrend.news",
-      "tv9marathi.com"
+      "jagonews24.com"
+    ],
+    "feedmob.biz": [
+      "surfeasy.com"
+    ],
+    "feeldmc.com": [
+      "ytn.co.kr"
+    ],
+    "feelgood.cn": [
+      "douyin.com",
+      "feishu.cn"
     ],
     "felmat.net": [
       "techacademy.jp",
       "lolipop.jp"
     ],
-    "fengimg.com": [
-      "feng.com"
-    ],
     "fengkongcloud.com": [
-      "ccidnet.com",
+      "hupu.com",
       "56.com"
     ],
     "ferret-one.com": [
       "ferret-plus.com"
     ],
+    "fetnet.net": [
+      "hinet.net"
+    ],
     "ffmapi.com": [
       "audiomack.com"
     ],
+    "fg8dgt.com": [
+      "tractorsupply.com",
+      "grammarly.com",
+      "skillshare.com"
+    ],
     "fieldtest.cc": [
       "bloody-disgusting.com"
     ],
-    "filmibeat.com": [
-      "oneindia.com"
+    "fiftyt.com": [
+      "president.jp",
+      "refinery29.com",
+      "fantasypros.com"
     ],
-    "finam.ru": [
-      "kp.ru"
+    "figpii.com": [
+      "invespcro.com"
     ],
-    "financialjuice.com": [
-      "zerohedge.com"
+    "figstatic.com": [
+      "figshare.com"
+    ],
+    "file.domains": [
+      "resoomer.com"
+    ],
+    "filepicker.io": [
+      "genius.com",
+      "justjared.com"
+    ],
+    "filmibeat.com": [
+      "oneindia.com"
     ],
     "finder.com.au": [
       "finder.com"
     ],
+    "fineartamerica.com": [
+      "december.com"
+    ],
+    "finmarketslive.cl": [
+      "bci.cl"
+    ],
+    "firebase-dot-devsite-v2-prod.appspot.com": [
+      "crashlytics.com",
+      "google.com"
+    ],
     "firebaselogging.googleapis.com": [
-      "vice.com",
-      "history.com",
-      "hk01.com"
+      "charitynavigator.org",
+      "latamairlines.com",
+      "refinery29.com"
+    ],
+    "firewalls.com": [
+      "staysafeonline.org"
+    ],
+    "fireworkanalytics.com": [
+      "gulte.com",
+      "khaleejtimes.com",
+      "oneindia.com"
+    ],
+    "fireworkapi.com": [
+      "gulte.com",
+      "khaleejtimes.com",
+      "oneindia.com"
+    ],
+    "firmofthefuture.com": [
+      "intuit.com"
     ],
     "firstimpression.io": [
-      "wegotthiscovered.com",
-      "jpost.com",
-      "ynet.co.il"
+      "staradvertiser.com",
+      "ntv.com.tr",
+      "archdaily.com"
+    ],
+    "fitanalytics.com": [
+      "massimodutti.com"
     ],
-    "fiverr.com": [
-      "informationweek.com"
+    "five9.com": [
+      "lls.org"
     ],
     "fivetran.com": [
-      "wistia.com",
-      "kiva.org"
+      "dosomething.org"
     ],
     "fkw.com": [
-      "qhdsny.com",
-      "qhnmdb.com"
+      "qhnmdb.com",
+      "qhdsny.com"
     ],
     "flashtalking.com": [
-      "adobe.com",
-      "godaddy.com",
-      "dell.com"
+      "dmu.ac.uk",
+      "upwork.com",
+      "libertymutual.com"
+    ],
+    "flattr.com": [
+      "qbnz.com"
+    ],
+    "flickr.com": [
+      "bath.ac.uk",
+      "louisville.edu",
+      "imo.org"
+    ],
+    "flipboard.com": [
+      "worldatlas.com",
+      "businessinsider.com",
+      "nypost.com"
     ],
     "flipp.com": [
       "jcpenney.com"
     ],
+    "flocdn.com": [
+      "howstuffworks.com",
+      "mapquest.com"
+    ],
     "flocktory.com": [
-      "farfetch.com",
-      "cian.ru",
-      "mvideo.ru"
+      "eldorado.ru",
+      "faberlic.com",
+      "alfabank.ru"
+    ],
+    "flourish.studio": [
+      "rnz.co.nz"
+    ],
+    "flow.io": [
+      "uncommongoods.com"
+    ],
+    "flowics.com": [
+      "tycsports.com"
+    ],
+    "flowtype.press": [
+      "peerj.com",
+      "phys.org",
+      "medicalxpress.com"
     ],
-    "flowtype.press": [
-      "sciencedaily.com"
+    "flybuys.com.au": [
+      "taste.com.au"
     ],
-    "flw.li": [
-      "project-syndicate.org"
+    "fmlabsonline.com": [
+      "scoopwhoop.com"
     ],
     "focas.jp": [
-      "dlsite.com",
-      "onamae.com"
+      "onamae.com",
+      "dlsite.com"
+    ],
+    "focus.cn": [
+      "sohu.com"
+    ],
+    "focus.de": [
+      "chip.de"
     ],
     "fontplus.jp": [
-      "ntv.co.jp"
+      "ntv.co.jp",
+      "konami.com"
     ],
     "fooby.ch": [
       "20min.ch"
     ],
-    "foodnetwork.com": [
-      "foodnetwork.co.uk"
+    "forbes.com": [
+      "lunarcrush.com"
     ],
     "force.com": [
-      "bhphotovideo.com",
-      "akamai.com",
-      "rsa.com"
+      "resellerclub.com",
+      "teespring.com",
+      "geico.com"
     ],
-    "foreks.com": [
-      "liberal.gr"
+    "force24.co.uk": [
+      "rmg.co.uk"
     ],
-    "foresee.com": [
-      "qualcomm.com",
-      "ralphlauren.com"
+    "formsite.com": [
+      "xprize.org"
+    ],
+    "formstack.com": [
+      "abc7.com",
+      "pgi.com",
+      "kingoftime.jp"
     ],
     "formstack.io": [
       "exploratorium.edu"
     ],
-    "fospha.com": [
-      "nhm.ac.uk",
-      "mandarinoriental.com"
+    "fortcdn.com": [
+      "technion.ac.il",
+      "haifa.ac.il"
     ],
-    "foursquare.com": [
-      "oliveogrill.com"
+    "forumcomm.com": [
+      "duluthnewstribune.com"
+    ],
+    "fossil-group-gtm-parent.uc.r.appspot.com": [
+      "fossil.com"
+    ],
+    "fotomoto.com": [
+      "lancasteronline.com"
     ],
     "fout.jp": [
-      "moneyforward.com",
-      "wowkorea.jp",
-      "alc.co.jp"
+      "trilltrill.jp",
+      "mapion.co.jp",
+      "qoo10.jp"
     ],
-    "fox.com": [
-      "nationalgeographic.com",
-      "foxsports.com"
+    "foxbusiness.com": [
+      "stlouisfed.org"
+    ],
+    "foxnews.com": [
+      "thewrap.com",
+      "wnd.com",
+      "stlouisfed.org"
     ],
     "foxycart.com": [
       "brookings.edu"
     ],
+    "fpjs.io": [
+      "neimanmarcus.com",
+      "iqoption.com"
+    ],
     "fppressa.ru": [
       "cosmo.ru"
     ],
+    "fpt.vn": [
+      "vnexpress.net"
+    ],
     "franecki.net": [
-      "filmix.co",
+      "baskino.me",
       "rezka.ag",
-      "baskino.me"
+      "kinogo.cx"
     ],
     "franeski.net": [
-      "hdrezka-ag.com"
+      "kinogo.zone"
+    ],
+    "freecaster.com": [
+      "loewe.com"
     ],
     "freelancer.com": [
-      "informationweek.com"
+      "warriorforum.com",
+      "freelancer.in"
+    ],
+    "freent.de": [
+      "freenet.de"
     ],
     "freeskreen.com": [
       "globalnews.ca",
-      "sfweekly.com",
-      "sfexaminer.com"
+      "ledevoir.com",
+      "straight.com"
     ],
     "freespee.com": [
-      "plus.net"
+      "arts.ac.uk",
+      "vodafone.co.uk",
+      "pgi.com"
     ],
-    "freevisitorcounters.com": [
-      "prensa-latina.cu"
+    "freewill.com": [
+      "peta.org"
     ],
     "freshchat.com": [
-      "freshdesk.com",
-      "sehatq.com",
-      "upstox.com"
+      "cakeresume.com",
+      "readcube.com",
+      "freshdesk.com"
     ],
     "freshdesk.com": [
-      "italist.com"
+      "springer.com"
+    ],
+    "freshmarketer.com": [
+      "freshworks.com"
     ],
     "freshrelevance.com": [
-      "stltoday.com",
-      "madison.com"
+      "pressofatlanticcity.com",
+      "nwitimes.com",
+      "tulsaworld.com"
+    ],
+    "freshworks.com": [
+      "basketball-reference.com",
+      "insighttimer.com",
+      "rss.com"
     ],
-    "fresnobee.com": [
-      "idahostatesman.com"
+    "freychang.fun": [
+      "pelisplushd.net"
     ],
     "friendbuy.com": [
-      "forever21.com"
+      "afterpay.com"
+    ],
+    "friendly-community.tk": [
+      "freecodecamp.org"
     ],
     "frosmo.com": [
       "helsinki.fi"
@@ -13724,283 +14815,439 @@
     "fstrk.net": [
       "forgeofempires.com"
     ],
-    "fujitsu-webmart.com": [
-      "moppy.jp"
+    "ft.com": [
+      "polyfill.io"
     ],
-    "fundraiseup.com": [
-      "heart.org"
+    "ftd.agency": [
+      "axar.az",
+      "filmyani.org"
+    ],
+    "fuckandcdn.com": [
+      "sunporno.com"
+    ],
+    "fullstory.com": [
+      "bhphotovideo.com",
+      "globalgiving.org",
+      "roll20.net"
+    ],
+    "fupa.net": [
+      "badische-zeitung.de"
+    ],
+    "fuseplatform.net": [
+      "organicfacts.net",
+      "qatarliving.com",
+      "datareportal.com"
     ],
     "fwmrm.net": [
-      "geeksforgeeks.org",
-      "foodnetwork.com",
-      "nbc.com"
+      "cc.com",
+      "trutv.com",
+      "nick.com"
     ],
-    "fx678img.com": [
-      "fx678.com"
+    "fx678.com": [
+      "gold678.com"
     ],
-    "fyi-marketing.com": [
-      "tomanifesto.gr"
+    "g2.com": [
+      "choozle.com",
+      "inmoment.com",
+      "greenhouse.io"
     ],
-    "fyrsbckgi-c.global.ssl.fastly.net": [
-      "lenovo.com",
-      "upwork.com",
-      "asics.com"
+    "g2crowd.com": [
+      "salsalabs.com",
+      "trendmicro.com",
+      "talentlms.com"
     ],
-    "gamania.com": [
-      "nownews.com"
+    "gabia.com": [
+      "hiworks.com"
+    ],
+    "gacraft.jp": [
+      "walkerplus.com",
+      "navitime.co.jp",
+      "itmedia.co.jp"
     ],
     "gameanalytics.dev": [
       "gameanalytics.com"
     ],
+    "gamesfromheaven.com": [
+      "gogoanime.cm"
+    ],
+    "gaming-curacao.com": [
+      "betfury.io"
+    ],
     "gammaplatform.com": [
       "baomoi.com",
       "indosport.com",
-      "2banh.vn"
+      "thethao247.vn"
     ],
-    "garanti.com.tr": [
-      "garantibbva.com.tr"
+    "gartner.com": [
+      "sumologic.com",
+      "groove.co"
     ],
     "gator.io": [
       "webstarts.com"
     ],
+    "gatorapi.com": [
+      "netmarketshare.com"
+    ],
     "gaug.es": [
-      "crictracker.com"
+      "simpli.fi",
+      "tucows.com",
+      "spectator.org"
     ],
     "gazeta.pl": [
-      "wyborcza.pl"
+      "wyborcza.pl",
+      "blox.pl"
     ],
-    "gcimetrics.com": [
-      "guitarcenter.com"
+    "gazetkapromocyjna.pl": [
+      "interia.pl"
+    ],
+    "gbqofs.io": [
+      "siriusxm.com",
+      "iheart.com",
+      "sherwin-williams.com"
+    ],
+    "gcprivacy.com": [
+      "digitaltrends.com"
+    ],
+    "gcweb-cdn.azurewebsites.net": [
+      "gamblingcommission.gov.uk"
     ],
     "gd.gov.cn": [
       "gz.gov.cn"
     ],
+    "gdeslon.ru": [
+      "mvideo.ru",
+      "citilink.ru"
+    ],
     "gdz.work": [
       "gdz.ru"
     ],
-    "geekbuying.com": [
-      "informationweek.com"
+    "geapps.io": [
+      "ge.com"
+    ],
+    "geckochat.io": [
+      "cardiff.ac.uk",
+      "gold.ac.uk"
+    ],
+    "geekdo.com": [
+      "boardgamegeek.com"
     ],
     "geetest.com": [
-      "zhaopin.com",
+      "infojobs.net",
       "globalsources.com",
-      "fnac.com"
+      "porch.com"
     ],
     "geilicdn.com": [
       "weidian.com"
     ],
     "geistm.com": [
-      "msn.com",
+      "abcactionnews.com",
       "dashlane.com",
-      "rosettastone.com"
-    ],
-    "gelbmann.info": [
-      "w3techs.com"
-    ],
-    "geminimedia-eg.com": [
-      "masrawy.com"
+      "grammarly.com"
     ],
     "gemius.pl": [
-      "allegro.pl",
-      "ensonhaber.com",
-      "onet.pl"
+      "haberler.com",
+      "nv.ua",
+      "ntv.com.tr"
+    ],
+    "generalmills.com": [
+      "bettycrocker.com"
     ],
     "generaltracking.de": [
       "check24.de"
     ],
-    "genieesspv.jp": [
-      "eroterest.net",
-      "jawapos.com"
+    "genius.com": [
+      "justjared.com"
     ],
     "geniusmonkey.com": [
-      "pdx.edu",
+      "beatstars.com",
+      "onsemi.com",
       "fullerton.edu"
     ],
-    "geofli.com": [
-      "nokia.com"
+    "genndi.com": [
+      "kartra.com"
+    ],
+    "geonames.org": [
+      "nickis.com"
     ],
     "geotrust.com": [
       "rapidssl.com"
     ],
-    "get4click.ru": [
-      "skyeng.ru"
-    ],
-    "getadmiral.com": [
-      "bigthink.com",
-      "newatlas.com"
+    "get-scatter.com": [
+      "atomichub.io"
     ],
-    "getapp.com": [
-      "scoop.it"
+    "getambassador.com": [
+      "rcn.com"
     ],
     "getblue.io": [
-      "newchic.com",
-      "movavi.com"
+      "eldorado.ru",
+      "movavi.com",
+      "mvideo.ru"
     ],
     "getblueshift.com": [
-      "slickdeals.net",
-      "udacity.com",
-      "tiki.vn"
+      "point2homes.com",
+      "animoto.com",
+      "rentcafe.com"
+    ],
+    "getbread.com": [
+      "epson.com"
     ],
     "getclicky.com": [
-      "boutell.co.uk",
-      "kompas.tv",
-      "newatlas.com"
+      "amny.com",
+      "coffeecup.com",
+      "techtimes.com"
     ],
     "getcreditone.com": [
       "creditonebank.com"
     ],
     "getdrip.com": [
-      "socialmediaexaminer.com",
       "leadpages.com",
-      "thrivecart.com"
+      "wpforms.com",
+      "tailwindapp.com"
     ],
     "getletterpress.com": [
-      "casetify.com",
-      "toasttab.com",
-      "stitchfix.com"
+      "artsy.net",
+      "warbyparker.com",
+      "1stdibs.com"
     ],
-    "getnshow.com": [
-      "hani.co.kr"
+    "getpocket.com": [
+      "eiga.com",
+      "bignewsnetwork.com",
+      "cronolog.org"
+    ],
+    "getpublica.com": [
+      "cbssports.com",
+      "cbsnews.com",
+      "last.fm"
+    ],
+    "getresponse.com": [
+      "clubshop.com"
     ],
     "getrockerbox.com": [
-      "codecademy.com",
       "society6.com",
-      "saatchiart.com"
+      "salvationarmyusa.org",
+      "bigstockphoto.com"
+    ],
+    "getshogun.com": [
+      "modcloth.com",
+      "harpercollins.com"
+    ],
+    "getsitecontrol.com": [
+      "blackboard.com"
     ],
     "getsmartcontent.com": [
-      "pcworld.com"
+      "khoros.com",
+      "miro.com",
+      "connectwise.com"
+    ],
+    "gettyimages.com": [
+      "bbb.org"
     ],
-    "getway.biz": [
-      "parspack.com"
+    "gez.io": [
+      "bloomberght.com",
+      "haberturk.com"
+    ],
+    "gfl85trk.com": [
+      "bancochile.cl"
     ],
     "gh-base.com": [
       "ascii.jp"
     ],
-    "gigazine.asia": [
+    "ghac.cn": [
+      "pcauto.com.cn"
+    ],
+    "gigazine.be": [
       "gigazine.net"
     ],
     "gigya.com": [
-      "abc.net.au",
-      "deloitte.com",
-      "abs-cbn.com"
+      "computer.org",
+      "20minutos.es",
+      "canadiantire.ca"
     ],
-    "gimp.org": [
-      "flattr.com"
+    "giosg.com": [
+      "tuni.fi"
+    ],
+    "giosgusercontent.com": [
+      "tuni.fi"
+    ],
+    "giphy.com": [
+      "urbandictionary.com",
+      "cafemom.com",
+      "upworthy.com"
     ],
     "giraff.io": [
-      "iz.ru",
-      "vz.ru",
-      "yandex.ru"
+      "thairath.co.th",
+      "sanook.com",
+      "vz.ru"
+    ],
+    "gismeteo.ru": [
+      "lentainform.com"
     ],
     "gitee.com": [
-      "discuz.net"
+      "discuz.net",
+      "oschina.net"
     ],
     "github.com": [
       "flurry.com",
-      "imagemagick.com"
+      "imagemagick.org",
+      "bootstrapcdn.com"
     ],
-    "gixioanalytics.com": [
-      "slashgear.com"
+    "githubapp.com": [
+      "github.blog"
     ],
     "gjirafa.com": [
-      "gazetaexpress.com"
+      "gazetaexpress.com",
+      "balkanweb.com"
     ],
-    "glamour.com": [
-      "wired.com",
-      "newyorker.com",
-      "vanityfair.com"
+    "glanacion.com": [
+      "lanacion.com.ar"
     ],
     "glassboxdigital.io": [
       "marriott.com",
-      "creditonebank.com",
+      "salliemae.com",
       "ritzcarlton.com"
     ],
-    "glassdoor.com": [
-      "a2hosting.com",
-      "paychex.com"
-    ],
     "gleam.io": [
-      "macrumors.com",
       "businessinsider.com.au",
-      "androidauthority.com"
+      "benzinga.com"
+    ],
+    "gliacloud.com": [
+      "newtalk.tw"
     ],
     "global-e.com": [
-      "forever21.com"
+      "uniqlo.com",
+      "playboy.com",
+      "aloyoga.com"
+    ],
+    "globalsign.com": [
+      "dothome.co.kr"
+    ],
+    "globalsiteanalytics.com": [
+      "ally.com",
+      "truist.com"
     ],
     "globalwebindex.net": [
-      "people.com",
-      "ew.com",
-      "travelandleisure.com"
+      "instyle.com",
+      "realsimple.com",
+      "gwi.com"
+    ],
+    "globenewswire.com": [
+      "otcmarkets.com",
+      "broadcom.com",
+      "roche.com"
     ],
     "globo.com": [
       "techtudo.com.br"
     ],
+    "gm-cdn.com": [
+      "gmc.com",
+      "chevrolet.com"
+    ],
+    "gm.com": [
+      "gmc.com"
+    ],
+    "gmo.media": [
+      "teacup.com"
+    ],
     "gmossp-sp.jp": [
-      "xrea.com",
-      "tenki.jp",
-      "lolipop.jp"
+      "doda.jp",
+      "lolipop.jp",
+      "value-domain.com"
+    ],
+    "gnetwork.me": [
+      "listindiario.com"
+    ],
+    "gnezdo.ru": [
+      "radikal.ru",
+      "mk.ru",
+      "doramy.club"
     ],
     "go.com": [
       "abc7news.com",
-      "abc7chicago.com",
-      "abc13.com"
+      "theundefeated.com",
+      "abc7chicago.com"
+    ],
+    "goadopt.io": [
+      "metropoles.com",
+      "baixaki.com.br",
+      "tecmundo.com.br"
     ],
     "godaddy.com": [
-      "heycould.com",
-      "junwonsil.com",
-      "cdn.house"
+      "sys-con.com",
+      "examiner.com",
+      "kintera.org"
+    ],
+    "godotengine.org": [
+      "4mark.net"
+    ],
+    "godsave.lgbt": [
+      "baskino.me",
+      "rezka.ag",
+      "filmix.ac"
     ],
     "goepson.com": [
       "epson.com"
     ],
-    "gogocdn.net": [
-      "gogoanime.so"
+    "gogel.al": [
+      "balkanweb.com",
+      "panorama.com.al"
     ],
-    "goinflow.com": [
-      "tenable.com"
+    "gogo-load.com": [
+      "gogoanime.cm"
     ],
     "goo.ne.jp": [
       "ocn.ne.jp"
     ],
+    "goodgamesmanship.com": [
+      "sxyprn.com"
+    ],
     "google-analytics.com": [
-      "linkedin.com",
-      "google.com",
-      "godaddy.com"
+      "president.jp",
+      "bicycling.com",
+      "business-standard.com"
+    ],
+    "google.be": [
+      "knack.be"
+    ],
+    "google.co.jp": [
+      "rocketnews24.com"
     ],
     "google.com": [
-      "linkedin.com",
-      "yahoo.com",
-      "googletagmanager.com"
+      "president.jp",
+      "bicycling.com",
+      "business-standard.com"
     ],
-    "google.com.pk": [
-      "express.pk"
+    "google.com.bd": [
+      "banglanews24.com"
     ],
     "googleadservices.com": [
-      "matterport.com"
+      "ncsu.edu",
+      "crisistextline.org",
+      "fivethirtyeight.com"
     ],
-    "goop.com": [
-      "informationweek.com"
+    "googlesyndication.com": [
+      "giga.de",
+      "marvel.com",
+      "beaconjournal.com"
     ],
     "gosuslugi.ru": [
-      "mosreg.ru"
+      "mosreg.ru",
+      "permkrai.ru"
     ],
     "gotprofits.com": [
       "gotporn.com"
     ],
-    "goutee.top": [
-      "allocine.fr"
+    "govexec.com": [
+      "defenseone.com",
+      "nextgov.com"
     ],
-    "governing.com": [
-      "govtech.com"
+    "grammarly.com": [
+      "sentencechecker.top"
     ],
-    "gq.com": [
-      "wired.com",
-      "newyorker.com",
-      "vanityfair.com"
+    "grandforksherald.com": [
+      "zippia.com"
     ],
-    "graizoah.com": [
-      "shahid4u.io",
-      "clipconverter.cc"
+    "granicus.com": [
+      "denvergov.org"
     ],
     "gravito.net": [
       "iltalehti.fi"
@@ -14009,31 +15256,57 @@
       "grc.com"
     ],
     "green-red.com": [
-      "jugantor.com"
+      "kalerkantho.com"
+    ],
+    "greenhouse.io": [
+      "connatix.com"
+    ],
+    "grid.id": [
+      "bolasport.com"
     ],
     "gridsumdissector.com": [
-      "www.gov.cn",
-      "pcauto.com.cn",
+      "bshare.cn",
+      "mee.gov.cn",
       "cztv.com"
     ],
+    "grizzlyapps.com": [
+      "omgjapan.com"
+    ],
+    "groovehq.com": [
+      "tinyjpg.com",
+      "tinypng.com"
+    ],
     "groovinads.com": [
-      "cronica.com.ar",
-      "retargetly.com",
-      "perfil.com"
+      "ole.com.ar",
+      "liverpool.com.mx",
+      "homedepot.com.mx"
+    ],
+    "group-ib.com": [
+      "faberlic.com"
     ],
     "group-ib.ru": [
       "eldorado.ru"
     ],
     "groupondata.com": [
+      "livingsocial.com",
       "groupon.com"
     ],
     "growingio.com": [
-      "focus.cn",
-      "53kf.com",
-      "koolearn.com"
+      "kucoin.com",
+      "leetcode.com",
+      "zcool.com.cn"
+    ],
+    "growsurf.com": [
+      "deliverr.com"
     ],
-    "grumft.com": [
-      "otvfoco.com.br"
+    "growth-attribution.s3.amazonaws.com": [
+      "deliverr.com"
+    ],
+    "growthbuddy.app": [
+      "betway.com"
+    ],
+    "grubhub.com": [
+      "seamless.com"
     ],
     "grupaonet.pl": [
       "onet.pl"
@@ -14044,152 +15317,206 @@
     "grupoelcorteingles.es": [
       "elcorteingles.es"
     ],
-    "gsoi.fr": [
-      "sudouest.fr"
+    "gruporeforma.com": [
+      "reforma.com"
+    ],
+    "gsmaintelligence.com": [
+      "gsma.com"
     ],
     "gsspat.jp": [
       "dmm.co.jp",
-      "lolipop.jp",
-      "wowkorea.jp"
+      "ecnavi.jp",
+      "ss-blog.jp"
     ],
     "gssprt.jp": [
-      "sony.jp",
-      "eroterest.net",
-      "jawapos.com"
+      "doda.jp",
+      "interpark.com",
+      "ss-blog.jp"
+    ],
+    "gstatic.com": [
+      "theblaze.com",
+      "drom.ru",
+      "webflow.com"
     ],
     "gtags.net": [
-      "ctrip.com",
-      "suning.com",
-      "idianfa.com"
+      "suning.com"
+    ],
+    "gtm-5bj3nql-ytzhz.uc.r.appspot.com": [
+      "kidney.org"
+    ],
+    "gtm-mnpmjpp-n2mxo.uc.r.appspot.com": [
+      "bmo.com",
+      "amazon-adsystem.com"
+    ],
+    "gtm-ppqt7nx-nmviz.uc.r.appspot.com": [
+      "techspot.com",
+      "mixcloud.com",
+      "iop.org"
+    ],
+    "gtm-twsfn5p-nwizz.uc.r.appspot.com": [
+      "irobot.com"
+    ],
+    "guarantee-cdn.com": [
+      "jomashop.com"
+    ],
+    "guidestar.org": [
+      "rarediseases.org",
+      "religionnews.com"
     ],
     "gumgum.com": [
-      "youm7.com",
-      "geeksforgeeks.org",
-      "venturebeat.com"
+      "spin.com",
+      "hollywoodlife.com",
+      "thegazette.com"
+    ],
+    "gumroad.com": [
+      "waitbutwhy.com"
+    ],
+    "gunosy.com": [
+      "trilltrill.jp",
+      "eposcard.co.jp"
     ],
     "guoshipartners.com": [
-      "hinet.net",
-      "buzzorange.com"
+      "cw.com.tw"
     ],
-    "gwdg.de": [
-      "uni-goettingen.de"
+    "h12-media.com": [
+      "dogemate.com"
     ],
-    "gwmtracking.com": [
-      "norton.com",
-      "proofpoint.com",
-      "blurb.com"
+    "haberler.com": [
+      "sondakika.com"
+    ],
+    "haberturk.com": [
+      "bloomberght.com"
     ],
-    "haaretz.co.il": [
-      "haaretz.com"
+    "hachidori.io": [
+      "suruga-ya.jp"
     ],
     "hactar.is": [
       "opendemocracy.net"
     ],
-    "hainanfp.com": [
-      "hinews.cn"
+    "hanalytics.eu": [
+      "yam.com"
     ],
-    "halfclub.com": [
-      "hani.co.kr"
+    "hankookilbo.com": [
+      "koreatimes.co.kr"
     ],
     "hanmaker.com": [
       "ooopic.com",
+      "588ku.com",
       "58pic.com"
     ],
-    "hao123.com": [
-      "skycn.com"
+    "haoyundm.com": [
+      "cn163.net"
     ],
-    "hao123img.com": [
-      "skycn.com"
+    "haplat.net": [
+      "dahe.cn",
+      "cityheaven.net"
     ],
-    "harrisinteractive.eu": [
-      "olympic.org"
+    "harvard.edu": [
+      "lumendatabase.org"
     ],
     "hasbroapps.com": [
       "hasbro.com"
     ],
     "hatena.ne.jp": [
-      "hatenablog.com"
+      "alc.co.jp",
+      "toyokeizai.net",
+      "tv-tokyo.co.jp"
     ],
     "hbabit.com": [
       "huobi.com"
     ],
-    "hbc.com": [
-      "saksfifthavenue.com"
+    "hbpl.co.uk": [
+      "campaignlive.co.uk"
+    ],
+    "hbrsd.com": [
+      "ascopubs.org"
     ],
     "hcaptcha.com": [
-      "bahn.de",
-      "cgtrader.com"
+      "mewe.com",
+      "fouanalytics.com",
+      "zapmeta.ws"
     ],
-    "headbidder.net": [
-      "christianpost.com"
+    "hdnux.com": [
+      "lunarcrush.com"
     ],
-    "healthunlocked.com": [
-      "adaa.org"
+    "hdsex.org": [
+      "hq3x.com"
+    ],
+    "hdzog.com": [
+      "pornzog.com"
+    ],
+    "he2d.com": [
+      "17173.com",
+      "woskj2.com"
+    ],
+    "health.gov.il": [
+      "www.gov.il"
+    ],
+    "healthline.com": [
+      "medicalnewstoday.com",
+      "psychcentral.com"
     ],
     "heapanalytics.com": [
-      "merriam-webster.com",
-      "calendly.com",
-      "slickdeals.net"
+      "upwork.com",
+      "libertymutual.com",
+      "heap.io"
     ],
-    "hellorf.com": [
-      "zcool.com.cn"
+    "heatmap.it": [
+      "t-online.de"
+    ],
+    "helixbi.io": [
+      "thehartford.com"
     ],
     "heraldm.com": [
       "koreaherald.com"
     ],
     "hexagon-analytics.com": [
-      "flickr.com",
-      "udemy.com",
-      "scribd.com"
+      "vercel.com",
+      "zola.com",
+      "hostmonster.com"
     ],
-    "hgbn.network": [
-      "24video.vip"
-    ],
-    "hgtv.com": [
-      "discovery.com",
-      "foodnetwork.com",
-      "diynetwork.com"
+    "hgmsites.net": [
+      "motorauthority.com"
     ],
     "hhcdn.ru": [
       "hh.ru"
     ],
-    "highlow.net": [
-      "highlow.com"
-    ],
-    "highwire.org": [
-      "pnas.org",
-      "diabetesjournals.org",
-      "aacrjournals.org"
+    "hi-george.com": [
+      "clickondetroit.com"
     ],
-    "hihainan.info": [
-      "hinews.cn"
+    "hideousplay.com": [
+      "fool.com"
     ],
-    "hiido.com": [
-      "yy.com",
-      "bigolive.tv",
-      "duowan.com"
+    "highwebmedia.com": [
+      "painaltube.com",
+      "spankbang.com"
     ],
-    "hilton.com": [
-      "informationweek.com"
+    "highwire.org": [
+      "jneurosci.org",
+      "cmaj.ca",
+      "ersjournals.com"
     ],
     "hindustantimes.com": [
-      "livemint.com",
       "livehindustan.com",
-      "shine.com"
+      "livemint.com",
+      "lunarcrush.com"
     ],
     "hinet.net": [
-      "xuite.net"
+      "xuite.net",
+      "thenewslens.com",
+      "storm.mg"
     ],
-    "histats.com": [
-      "alnaharegypt.com",
-      "sarkariresult.com",
-      "las2orillas.co"
+    "history.com": [
+      "biography.com"
+    ],
+    "hit.az": [
+      "qafqazinfo.az"
     ],
     "hitslink.com": [
       "webstarts.com"
     ],
-    "hive.co": [
-      "complex.com"
+    "hj2i.net": [
+      "potterybarnkids.com"
     ],
     "hket.com": [
       "ulifestyle.com.hk"
@@ -14199,65 +15526,105 @@
       "ulifestyle.com.hk"
     ],
     "hlserve.com": [
-      "bestbuy.com",
       "dickssportinggoods.com"
     ],
-    "hmhost.co.uk": [
-      "autocar.co.uk"
-    ],
     "holder.com.ua": [
-      "i.ua",
       "bigmir.net",
-      "korrespondent.net"
+      "korrespondent.net",
+      "i.ua"
     ],
     "holmesmind.com": [
       "yahoo.com",
-      "buzzorange.com"
+      "techcrunch.com",
+      "autoblog.com"
+    ],
+    "homecare.co.uk": [
+      "livein.care"
     ],
     "homeway.com.cn": [
       "hexun.com"
     ],
-    "hosted-inin.com": [
-      "ray-ban.com"
+    "hosting.money": [
+      "yoursite.com",
+      "yourwebsite.com"
     ],
     "hot-mob.com": [
       "on.cc"
     ],
     "hotelscombined.com": [
-      "informationweek.com"
+      "price.com.hk"
+    ],
+    "hotjar.com": [
+      "walletinvestor.com",
+      "hrc.org",
+      "rarible.com"
     ],
-    "hotwire.com": [
-      "informationweek.com"
+    "hoursetituently.xyz": [
+      "shorturl.at"
+    ],
+    "hp.com": [
+      "hpdaas.com",
+      "hpsmart.com"
     ],
     "hq3x.com": [
+      "videosection.com",
       "hdsex.org"
     ],
+    "hqchip.com": [
+      "elecfans.com"
+    ],
+    "hrpassport.com": [
+      "trinet.com"
+    ],
+    "hrzn-nxt.com": [
+      "siriusxm.com",
+      "customink.com",
+      "stitchfix.com"
+    ],
+    "hs-sites.com": [
+      "notified.com"
+    ],
     "hsbc.com.hk": [
       "hangseng.com"
     ],
-    "htcvive.com": [
-      "htc.com"
+    "hsmedia.ru": [
+      "woman.ru"
     ],
-    "hton.com.cn": [
-      "workercn.cn"
+    "https": [
+      "cairn.info"
     ],
     "hubpd.com": [
       "huanqiu.com",
       "stcn.com"
     ],
     "hubspot.com": [
-      "surveymonkey.com",
-      "freepik.com",
-      "disqus.com"
+      "salsalabs.com",
+      "digitalcommerce360.com",
+      "heraldscotland.com"
+    ],
+    "huemenar.com": [
+      "jbl.com"
+    ],
+    "hugetraffic.com": [
+      "fling.com"
+    ],
+    "huiju.cool": [
+      "mokahr.com"
     ],
-    "hujiang.com": [
-      "hjenglish.com"
+    "hullapp.io": [
+      "cxl.com"
     ],
     "hulu.com": [
-      "informationweek.com"
+      "hilton.com"
     ],
     "huluqa.com": [
-      "hilton.com"
+      "doordash.com"
+    ],
+    "hum.works": [
+      "scmagazine.com"
+    ],
+    "humanoid.fr": [
+      "numerama.com"
     ],
     "humcommerce.com": [
       "cyberchimps.com"
@@ -14267,21 +15634,41 @@
       "hurriyetdailynews.com"
     ],
     "hushly.com": [
-      "teamviewer.com",
-      "matterport.com",
-      "onelogin.com"
+      "lytics.com",
+      "trinet.com",
+      "snowflake.com"
+    ],
+    "hwcdn.net": [
+      "irishcentral.com",
+      "foreignpolicy.com"
     ],
     "hybrid.ai": [
-      "ozon.ru",
-      "rezka.ag",
-      "drive2.ru"
+      "radikal.ru",
+      "fiercepharma.com",
+      "qz.com"
+    ],
+    "hydrax.xyz": [
+      "uwatchfree.ph"
+    ],
+    "hyperise.io": [
+      "datadome.co"
+    ],
+    "hypers.com.cn": [
+      "yiche.com",
+      "autohome.com.cn"
     ],
     "hyros.com": [
-      "clickfunnels.com"
+      "clickfunnels.com",
+      "samcart.com"
+    ],
+    "hyvor.com": [
+      "nfpa.org",
+      "ispsystem.com",
+      "presstv.ir"
     ],
     "i-mobile.co.jp": [
       "lolipop.jp",
-      "syosetu.com",
+      "ecnavi.jp",
       "dlsite.com"
     ],
     "i.ua": [
@@ -14295,469 +15682,791 @@
       "canadiantire.ca"
     ],
     "iadvize.com": [
-      "samsung.com",
-      "prestashop.com",
-      "labanquepostale.fr"
+      "decathlon.fr",
+      "oui.sncf",
+      "samsung.com"
     ],
-    "iasds01.com": [
-      "zingnews.vn",
-      "baomoi.com"
+    "iae.one": [
+      "mi.com"
     ],
     "ib-ibi.com": [
-      "howstuffworks.com",
-      "mapquest.com"
+      "newsday.com",
+      "newsweek.com",
+      "mlive.com"
     ],
     "ibclick.stream": [
       "webmd.com",
-      "medscape.com",
-      "medicinenet.com"
+      "emedicinehealth.com",
+      "motorauthority.com"
     ],
-    "ibillboard.com": [
-      "ceskatelevize.cz"
+    "ibcstack.com": [
+      "cineulagam.com",
+      "lankasri.com"
     ],
-    "ibt.com": [
-      "ibtimes.co.uk"
+    "ibeat-analytics.com": [
+      "timesnownews.com"
+    ],
+    "ibm.com": [
+      "securityintelligence.com"
     ],
     "iconnode.com": [
       "anydesk.com"
     ],
+    "ictr.cn": [
+      "pcauto.com.cn",
+      "gongkong.com"
+    ],
     "id5-sync.com": [
-      "okezone.com",
-      "imgur.com",
-      "dailymail.co.uk"
+      "parasut.com",
+      "redstate.com",
+      "haberler.com"
     ],
     "idealmedia.io": [
-      "uptodown.com"
-    ],
-    "ideaplus.mk": [
-      "time.mk"
+      "interfax.com.ua",
+      "i.ua",
+      "tsn.ua"
     ],
     "idio.co": [
-      "ibm.com",
-      "intel.com",
-      "adp.com"
+      "adp.com",
+      "dolby.com",
+      "entrust.com"
+    ],
+    "idx.lat": [
+      "ole.com.ar",
+      "elsiglo.mx",
+      "retargetly.com"
     ],
     "iesnare.com": [
-      "mercari.com",
-      "citi.com",
-      "dyn.com"
+      "upwork.com",
+      "expediapartnercentral.com",
+      "ysense.com"
+    ],
+    "ietp-web-app-global-assets.azurewebsites.net": [
+      "theiet.org"
+    ],
+    "iftheycall.com": [
+      "udesk.cn"
+    ],
+    "igaw.io": [
+      "lotteon.com",
+      "jobkorea.co.kr",
+      "ssg.com"
     ],
     "ign.com": [
-      "videojs.com",
-      "gamespy.com"
+      "videojs.com"
     ],
     "igodigital.com": [
-      "usatoday.com",
-      "smh.com.au",
-      "lowes.com"
+      "president.jp",
+      "fox9.com",
+      "canadiantire.ca"
+    ],
+    "igstatic.com": [
+      "tagesspiegel.de"
     ],
     "iheart.com": [
-      "theblaze.com",
       "bnnbloomberg.ca"
     ],
-    "iherb.com": [
-      "informationweek.com"
-    ],
     "ijento.com": [
       "searchenginewatch.com",
       "clickz.com"
     ],
+    "ilgcdn.com": [
+      "ilgiornale.it"
+    ],
     "iljmp.com": [
-      "stocktwits.com"
+      "thehoth.com"
+    ],
+    "ilyf4amifh.com": [
+      "thepiratebay.org"
     ],
     "im-apps.net": [
-      "kakaku.com",
-      "biglobe.ne.jp",
-      "nifty.com"
+      "doda.jp",
+      "rocketnews24.com",
+      "mapion.co.jp"
     ],
     "imedao.com": [
       "xueqiu.com"
     ],
     "imedia.cz": [
-      "seznam.cz",
-      "idnes.cz",
-      "novinky.cz"
+      "csfd.cz"
+    ],
+    "imgsmail.ru": [
+      "vesti.ru"
     ],
     "imhd.io": [
-      "variety.com",
-      "rollingstone.com",
-      "wwd.com"
+      "bicycling.com",
+      "elle.com",
+      "runnersworld.com"
     ],
     "imi.chat": [
       "asha.org"
     ],
     "impact-ad.jp": [
-      "yahoo.co.jp",
-      "rakuten.co.jp",
-      "nikkei.com"
+      "president.jp",
+      "ocn.ne.jp",
+      "gizmodo.jp"
     ],
     "impact.com": [
+      "oneplus.com",
       "bestbuy.com"
     ],
-    "implishing.club": [
-      "shorturl.at",
-      "analdin.com",
-      "xozilla.com"
+    "impactserving.com": [
+      "spankbang.com"
     ],
     "impression.link": [
       "thetrainline.com"
     ],
+    "impressionmonster.com": [
+      "hdsex.org"
+    ],
     "imrworldwide.com": [
-      "yahoo.co.jp",
-      "cnn.com",
-      "twitch.tv"
+      "fivethirtyeight.com",
+      "treccani.it",
+      "wetransfer.com"
     ],
     "imspublishergroup.com": [
       "marketbeat.com"
     ],
+    "imtwjwoasak.com": [
+      "etonline.com",
+      "nbcsports.com",
+      "today.com"
+    ],
+    "imv.az": [
+      "qaynarinfo.az",
+      "qafqazinfo.az"
+    ],
+    "in-appadvertising.com": [
+      "thewrap.com"
+    ],
     "in-page-push.com": [
-      "opensubtitles.org",
-      "fakaza.com",
-      "clipconverter.cc"
+      "olevod.com",
+      "multicanais.tv"
+    ],
+    "in.gov.br": [
+      "www.gov.br"
     ],
     "inbenta.com": [
-      "credit-agricole.fr"
+      "credit-agricole.fr",
+      "vueling.com"
     ],
-    "indacolive.com": [
-      "dezeen.com"
+    "inbenta.io": [
+      "gencat.cat"
     ],
     "indapass.hu": [
-      "index.hu",
-      "blog.hu"
+      "blog.hu",
+      "index.hu"
     ],
     "indeed.com": [
-      "indeed.co.uk",
-      "wpfr.net"
+      "livein.care"
+    ],
+    "independent.co.uk": [
+      "newsbreak.com"
+    ],
+    "independent.ie": [
+      "belfasttelegraph.co.uk"
     ],
     "india.com": [
-      "dnaindia.com"
+      "wionews.com",
+      "bollywoodlife.com"
     ],
     "indianexpress.com": [
       "financialexpress.com"
     ],
+    "indianrailways.gov.in": [
+      "indianrail.gov.in"
+    ],
+    "indiatimes.com": [
+      "businessinsider.in"
+    ],
     "indoleads.com": [
-      "newchic.com"
+      "visme.co"
+    ],
+    "industrybrains.com": [
+      "shrm.org"
+    ],
+    "inews.co.id": [
+      "inews.id"
+    ],
+    "inews.id": [
+      "okezone.com"
     ],
     "infeed.id": [
       "liputan6.com",
       "dream.co.id",
-      "bola.com"
+      "diadona.id"
+    ],
+    "infinario.com": [
+      "kiwi.com"
     ],
     "infinigrow.com": [
-      "similarweb.com"
+      "quantummetric.com"
     ],
-    "infinity-tracking.net": [
-      "telegraph.co.uk",
-      "gartner.com",
-      "waldenu.edu"
+    "influ2.com": [
+      "yotpo.com",
+      "jwplayer.com",
+      "sumologic.com"
+    ],
+    "infoedgeindia.com": [
+      "naukri.com"
+    ],
+    "infogram.com": [
+      "theaustralian.com.au",
+      "forbes.com"
+    ],
+    "infojobs.com": [
+      "infojobs.net"
     ],
     "infolinks.com": [
-      "prospect.org",
-      "cootekservice.com"
+      "lamag.com",
+      "conservativebrief.com",
+      "fitday.com"
+    ],
+    "infomo.net": [
+      "inews.id",
+      "sindonews.com",
+      "okezone.com"
+    ],
+    "informa.com": [
+      "informaconnect.com"
+    ],
+    "informizely.com": [
+      "wise.com"
     ],
     "informz.net": [
-      "physiology.org",
       "eatright.org",
-      "adaa.org"
+      "kpbs.org",
+      "acsm.org"
+    ],
+    "inforum.com": [
+      "duluthnewstribune.com"
+    ],
+    "infox.sg": [
+      "inosmi.ru"
     ],
     "infusionsoft.app": [
-      "keap.com"
+      "keap.com",
+      "nautil.us"
     ],
     "infusionsoft.com": [
       "keap.com"
     ],
-    "ingage.tech": [
-      "alternet.org"
-    ],
     "injapan.com": [
       "japantoday.com"
     ],
+    "inlcorp.com": [
+      "khan.co.kr"
+    ],
     "inmobi.net": [
       "inmobi.com"
     ],
+    "inmobiapis.com": [
+      "upgrad.com"
+    ],
     "inmoment.com": [
       "golfdigest.com"
     ],
     "innity.com": [
-      "liputan6.com",
-      "merdeka.com",
-      "kapanlagi.com"
+      "katadata.co.id",
+      "ruliweb.com",
+      "sanook.com"
     ],
     "innocraft.cloud": [
-      "thunderbird.net",
-      "bunnycdn.com"
+      "thunderbird.net"
     ],
     "innogamescdn.com": [
       "forgeofempires.com"
     ],
-    "innologica.com": [
-      "inoreader.com"
-    ],
     "innovid.com": [
-      "southwest.com",
-      "toyota.com",
-      "bet.com"
+      "verizon.com",
+      "chrysler.com",
+      "southwest.com"
     ],
     "inpagepush.com": [
-      "y2mate.guru",
-      "shahid4u.io",
-      "4anime.to"
+      "futemax.gratis"
     ],
     "inpwrd.net": [
-      "twincities.com",
-      "dice.com"
+      "nikonusa.com",
+      "nba.com",
+      "samsung.com"
     ],
     "inq.com": [
-      "ups.com",
-      "att.com",
-      "tdameritrade.com"
+      "bell.ca",
+      "tdameritrade.com",
+      "gehealthcare.com"
+    ],
+    "inrixmedia.com": [
+      "classicfm.com"
     ],
     "insent.ai": [
-      "sortable.com"
+      "revjet.com",
+      "inmobi.com",
+      "tune.com"
     ],
     "inside-graph.com": [
-      "gucci.com",
-      "sephora.com",
-      "valentino.com"
+      "bottegaveneta.com",
+      "flytap.com",
+      "ysl.com"
     ],
     "insider.com": [
-      "businessinsider.com.au"
+      "businessinsider.com"
     ],
     "insightexpressai.com": [
-      "unsplash.com",
-      "experian.com",
-      "thrillist.com"
+      "upwork.com",
+      "bbva.mx",
+      "thedodo.com"
     ],
-    "instabot.io": [
-      "arthritis.org"
+    "inspectlet.com": [
+      "6sense.com",
+      "kaywa.com",
+      "noip.com"
     ],
     "instagram.com": [
-      "arizona.edu",
-      "nokia.com",
-      "tmz.com"
+      "hachettebookgroup.com",
+      "jmu.edu",
+      "out.com"
+    ],
+    "instana.io": [
+      "hunker.com",
+      "ciceksepeti.com",
+      "saatchiart.com"
     ],
     "insticator.com": [
+      "staradvertiser.com",
       "youm7.com",
-      "mydramalist.com",
-      "alternet.org"
+      "washingtontimes.com"
     ],
-    "insurads.com": [
-      "corriere.it",
-      "abc.es",
-      "vocento.com"
+    "instiengage.com": [
+      "staradvertiser.com",
+      "youm7.com",
+      "washingtontimes.com"
     ],
-    "intellitxt.com": [
-      "techadvisor.co.uk"
+    "instreamatic.com": [
+      "fontanka.ru",
+      "ngs.ru",
+      "e1.ru"
     ],
-    "intent-apps.com": [
-      "codecademy.com",
-      "zappos.com"
+    "insurads.com": [
+      "huffingtonpost.es",
+      "mundodeportivo.com",
+      "periodistadigital.com"
     ],
-    "intent.ai": [
-      "news.am"
+    "intellimizeio.com": [
+      "inman.com",
+      "tableau.com",
+      "vidyard.com"
     ],
-    "intentiq.com": [
-      "usatoday.com",
-      "uptodown.com",
-      "matterport.com"
+    "intellitxt.com": [
+      "computerworld.com",
+      "techadvisor.com",
+      "macworld.co.uk"
     ],
-    "intentmedia.net": [
-      "zappos.com",
-      "hotwire.com",
-      "latam.com"
+    "intentiq.com": [
+      "wsoctv.com",
+      "lamag.com",
+      "worldpopulationreview.com"
     ],
     "intentsify.io": [
-      "home.neustar"
+      "wistia.com",
+      "treasuredata.com",
+      "pendo.io"
+    ],
+    "intercomcdn.com": [
+      "mongodb.com",
+      "splashtop.com",
+      "g2.com"
+    ],
+    "intergi.com": [
+      "coolmathgames.com",
+      "newser.com",
+      "symbaloo.com"
     ],
     "intergient.com": [
-      "collider.com",
-      "infoplease.com",
-      "letterboxd.com"
+      "chess.com",
+      "blu-ray.com",
+      "coolmathgames.com"
     ],
     "internetbrands.com": [
-      "nolo.com",
-      "avvo.com",
-      "vbulletin.com"
+      "wikitravel.org",
+      "motorauthority.com",
+      "modelmayhem.com"
+    ],
+    "interworksmedia.co.kr": [
+      "koreaherald.com",
+      "edaily.co.kr",
+      "asiae.co.kr"
+    ],
+    "intrado.com": [
+      "notified.com"
+    ],
+    "intsig.net": [
+      "camscanner.com"
+    ],
+    "investing.com": [
+      "lunarcrush.com"
     ],
     "investingchannel.com": [
-      "finviz.com",
-      "benzinga.com",
-      "stocktwits.com"
+      "streetinsider.com",
+      "stocktwits.com",
+      "finviz.com"
     ],
     "investis.com": [
       "ge.com",
-      "informa.com",
-      "thewaltdisneycompany.com"
+      "rolls-royce.com"
     ],
-    "investorwords.com": [
-      "businessdictionary.com"
+    "investisdigital.com": [
+      "rolls-royce.com"
     ],
-    "invl.co": [
-      "goody25.com"
+    "investorq.com": [
+      "indiainfoline.com"
     ],
-    "invttjs.com.br": [
-      "abril.com.br"
+    "invmrkt.com": [
+      "motortrend.com"
+    ],
+    "inzynk.io": [
+      "splunk.com"
     ],
     "ioam.de": [
-      "spiegel.de",
-      "businessinsider.de",
-      "t-online.de"
+      "morgenpost.de",
+      "giga.de",
+      "ksta.de"
     ],
     "iocnt.net": [
-      "orf.at",
-      "krone.at",
-      "kurier.at"
+      "kurier.at",
+      "willhaben.at",
+      "krone.at"
+    ],
+    "iol.it": [
+      "tiscali.it"
+    ],
+    "iono.fm": [
+      "bizcommunity.com"
+    ],
+    "iovation.com": [
+      "upwork.com",
+      "betonline.ag"
     ],
     "ip-label.net": [
-      "rtve.es"
+      "renfe.com"
     ],
-    "ipchaxun.com": [
-      "ip138.com"
+    "ip2c.net": [
+      "intellum.com"
     ],
     "iperceptions.com": [
-      "xfinity.com",
-      "adobe.com",
-      "wwe.com"
+      "fossil.com",
+      "uofmhealth.org",
+      "adobe.com"
     ],
     "ipgeolocation.io": [
-      "chathamhouse.org"
+      "suse.com"
     ],
-    "ipify.org": [
-      "threatpost.com"
+    "ipinfo.io": [
+      "cvent.com"
     ],
     "ipinyou.com": [
+      "pcauto.com.cn",
       "shangri-la.com",
-      "klook.com"
+      "5pao.com"
+    ],
+    "iplsc.com": [
+      "interia.pl"
+    ],
+    "iponweb.net": [
+      "goo.ne.jp",
+      "ocn.ne.jp"
+    ],
+    "ipp-meredith.com": [
+      "allrecipes.com",
+      "instyle.com",
+      "realsimple.com"
     ],
     "ipredictive.com": [
-      "coinmarketcap.com",
-      "aarp.org",
-      "autozone.com"
+      "president.jp",
+      "psu.edu",
+      "harley-davidson.com"
+    ],
+    "ipregistry.co": [
+      "clear.co",
+      "inmotionhosting.com"
+    ],
+    "ipresso.pl": [
+      "tvn24.pl"
     ],
-    "ipvanish.com": [
-      "informationweek.com"
+    "iqm.com": [
+      "nikonusa.com"
     ],
     "iqoption.com": [
       "iqbroker.com"
     ],
+    "iqtrading.asia": [
+      "iqbroker.com"
+    ],
     "irs03.com": [
-      "mgtv.com",
-      "56.com",
-      "pcauto.com.cn"
+      "pcauto.com.cn",
+      "xcar.com.cn",
+      "56.com"
+    ],
+    "is.cc": [
+      "interserver.net"
     ],
     "isanook.com": [
       "sanook.com"
     ],
-    "islamist-movements.com": [
-      "albawabhnews.com"
+    "iscrv.com": [
+      "sina.cn"
     ],
     "ispot.tv": [
-      "wayfair.com",
+      "shrm.org",
       "t-mobile.com",
-      "experian.com"
+      "chrysler.com"
     ],
     "issuu.com": [
-      "metrotimes.com",
-      "riverfronttimes.com",
-      "orlandoweekly.com"
+      "uniandes.edu.co",
+      "lamag.com",
+      "lawrence.com"
     ],
     "istruzione.it": [
       "miur.gov.it"
     ],
+    "italia.it": [
+      "miur.gov.it",
+      "polimi.it",
+      "unimi.it"
+    ],
     "iteratehq.com": [
       "nytimes.com",
-      "economist.com",
-      "roku.com"
+      "msnbc.com",
+      "today.com"
+    ],
+    "iterwebcms.com": [
+      "elpais.com.uy"
     ],
-    "itmedia.co.jp": [
-      "atmarkit.co.jp"
+    "itskiddoan.club": [
+      "4shared.com",
+      "olevod.com",
+      "futemax.gratis"
     ],
-    "itmedia.jp": [
-      "itmedia.co.jp",
-      "atmarkit.co.jp"
+    "iubenda.com": [
+      "ansa.it",
+      "coltortiboutique.com",
+      "gds.it"
     ],
     "ivcbrasil.org.br": [
-      "campograndenews.com.br",
       "estadao.com.br",
-      "clicrbs.com.br"
+      "campograndenews.com.br",
+      "exame.com"
+    ],
+    "ivi.ru": [
+      "ivi.tv"
     ],
     "ivideosmart.com": [
-      "tribunnews.com",
-      "inquirer.net",
+      "brilio.net",
+      "kompas.com",
+      "manilatimes.net"
+    ],
+    "ivstracker.net": [
+      "jawapos.com",
       "brilio.net"
     ],
     "ivx.cn": [
       "ih5.cn"
     ],
     "ixiaa.com": [
-      "aaa.com",
-      "equifax.com"
+      "aaa.com"
+    ],
+    "ixigua.com": [
+      "feishu.cn"
     ],
     "izooto.com": [
-      "moneycontrol.com",
-      "inquirer.net",
-      "jpnn.com"
+      "sakshi.com",
+      "wionews.com",
+      "aajtak.in"
+    ],
+    "jabeh.com": [
+      "niniban.com"
     ],
     "jabmo.app": [
-      "sigmaaldrich.com"
+      "sigmaaldrich.com",
+      "ptc.com"
+    ],
+    "jabra.br.com": [
+      "jabra.com"
+    ],
+    "jabra.ca": [
+      "jabra.com"
+    ],
+    "jabra.cn": [
+      "jabra.com"
+    ],
+    "jabra.co.kr": [
+      "jabra.com"
+    ],
+    "jabra.co.nz": [
+      "jabra.com"
+    ],
+    "jabra.co.uk": [
+      "jabra.com"
+    ],
+    "jabra.com.au": [
+      "jabra.com"
+    ],
+    "jabra.com.de": [
+      "jabra.com"
+    ],
+    "jabra.com.tr": [
+      "jabra.com"
+    ],
+    "jabra.cz": [
+      "jabra.com"
+    ],
+    "jabra.dk": [
+      "jabra.com"
+    ],
+    "jabra.es": [
+      "jabra.com"
+    ],
+    "jabra.fi": [
+      "jabra.com"
+    ],
+    "jabra.fr": [
+      "jabra.com"
+    ],
+    "jabra.hk": [
+      "jabra.com"
+    ],
+    "jabra.in": [
+      "jabra.com"
+    ],
+    "jabra.jp": [
+      "jabra.com"
+    ],
+    "jabra.lat": [
+      "jabra.com"
+    ],
+    "jabra.nl": [
+      "jabra.com"
+    ],
+    "jabra.no": [
+      "jabra.com"
+    ],
+    "jabra.pl": [
+      "jabra.com"
+    ],
+    "jabra.ru": [
+      "jabra.com"
+    ],
+    "jabra.se": [
+      "jabra.com"
+    ],
+    "jabra.sg": [
+      "jabra.com"
+    ],
+    "jabraheadsets.ch": [
+      "jabra.com"
     ],
     "jads.co": [
-      "tyker.xyz",
+      "tktube.com",
       "avgle.com"
     ],
     "janrainsso.com": [
-      "financialpost.com",
-      "montrealgazette.com",
-      "calgaryherald.com"
+      "sportsnet.ca",
+      "ottawacitizen.com",
+      "montrealgazette.com"
     ],
-    "jassfederal.ch": [
-      "bluewin.ch"
+    "jazz.co": [
+      "jazzhr.com"
+    ],
+    "jbs.org": [
+      "thenewamerican.com"
     ],
     "jd.com": [
+      "chinaz.com",
       "ifeng.com"
     ],
-    "jhu.edu": [
-      "jhsph.edu"
+    "jebbit.com": [
+      "monster.com"
+    ],
+    "jetbluevacations.com": [
+      "jetblue.com"
+    ],
+    "jhmt.cz": [
+      "ceskatelevize.cz"
+    ],
+    "jifo.co": [
+      "epochtimes.com",
+      "err.ee"
     ],
     "jilt.com": [
       "famethemes.com",
+      "wpbrigade.com",
       "wpzoom.com"
     ],
     "jiosaavn.com": [
-      "jio.com"
+      "ndtv.com"
+    ],
+    "jisc.ac.uk": [
+      "sherpa.ac.uk"
     ],
-    "jivosite.com": [
-      "e-planning.net",
-      "1sept.ru"
+    "jivox.com": [
+      "potterybarnkids.com",
+      "westelm.com",
+      "williams-sonoma.com"
     ],
     "jixie.io": [
-      "grid.id"
+      "gridoto.com",
+      "kompas.com",
+      "tribunnews.com"
     ],
     "jnqsge.net": [
       "acuityscheduling.com"
     ],
-    "jobat.be": [
-      "nieuwsblad.be"
+    "joins.com": [
+      "joongang.co.kr",
+      "dcinside.com"
+    ],
+    "jokerly.com": [
+      "lavoixdunord.fr"
+    ],
+    "jotform.com": [
+      "coinmarketcap.com",
+      "eweek.com"
     ],
     "journalmedia.ie": [
       "thejournal.ie"
     ],
-    "jrs5.com": [
-      "newegg.com"
+    "journity.com": [
+      "answersingenesis.org"
+    ],
+    "jpush.cn": [
+      "jiguang.cn"
     ],
-    "jschina.com.cn": [
-      "xhby.net"
+    "jq22.com": [
+      "eccn.com"
+    ],
+    "jscache.com": [
+      "tripadvisor.com"
+    ],
+    "jsdatabox.com": [
+      "audacy.com"
     ],
     "jsdelivr.net": [
-      "hops.id",
-      "saksfifthavenue.com",
-      "uns.ac.id",
-      "jamesclear.com"
+      "uncrate.com",
+      "fmkorea.com",
+      "cummins.com"
     ],
     "jsrdn.com": [
-      "dallasnews.com",
-      "realclearpolitics.com",
-      "sparknotes.com"
+      "irishcentral.com",
+      "newson6.com",
+      "dallasnews.com"
+    ],
+    "jubnaadserve.com": [
+      "nairametrics.com",
+      "khaberni.com"
+    ],
+    "juicer.io": [
+      "psu.edu",
+      "informs.org",
+      "unm.edu"
     ],
     "juicyads.com": [
       "e-hentai.org",
@@ -14765,200 +16474,251 @@
     ],
     "justpremium.com": [
       "techradar.com",
-      "inquisitr.com",
-      "pcgamer.com"
+      "mentalfloss.com",
+      "t3n.de"
     ],
     "jwplayer.com": [
-      "theregister.com",
-      "beinsports.com",
-      "stripes.com"
+      "dostor.org",
+      "coindesk.com",
+      "outsideonline.com"
     ],
     "jwpltx.com": [
-      "npr.org",
-      "merriam-webster.com",
-      "fastcompany.com"
+      "fastcompany.com",
+      "staradvertiser.com",
+      "familyhandyman.com"
     ],
-    "jxtrackers.azurewebsites.net": [
-      "kompas.com",
-      "grid.id",
-      "kompasiana.com"
+    "jxzwfww.gov.cn": [
+      "jiangxi.gov.cn"
     ],
     "kaipuyun.cn": [
-      "hunan.gov.cn",
       "hainan.gov.cn",
-      "stdaily.com"
-    ],
-    "kaixin001.com.cn": [
-      "kaixin001.com"
+      "stdaily.com",
+      "hunan.gov.cn"
     ],
     "kakao.com": [
-      "daum.net",
-      "tistory.com"
-    ],
-    "kameleoon.eu": [
-      "heise.de",
-      "awin.com",
-      "banquepopulaire.fr"
+      "lotteon.com",
+      "thairath.co.th",
+      "daum.net"
     ],
     "kampyle.com": [
-      "lowes.com"
+      "customink.com",
+      "ibm.com",
+      "cartier.com"
     ],
     "kanade-ad.net": [
-      "tenki.jp",
-      "syosetu.com"
+      "doda.jp"
     ],
-    "kaprila.com": [
-      "soft98.ir",
-      "faradars.org",
-      "yasdl.com"
+    "kancloud.cn": [
+      "thinkphp.cn"
+    ],
+    "kantartns.lt": [
+      "delfi.lt"
     ],
     "kaptcha.com": [
-      "nerdwallet.com",
-      "placeit.net",
-      "everlane.com"
+      "magazine.store",
+      "partycity.com",
+      "placeit.net"
     ],
     "kargo.com": [
-      "dailymail.co.uk",
-      "youm7.com",
-      "thehill.com"
+      "timesunion.com",
+      "gta5-mods.com",
+      "seattlepi.com"
     ],
-    "karpishe.com": [
-      "asriran.com"
+    "karousell.com": [
+      "carousell.sg"
     ],
     "kartra.com": [
       "webinarjam.com"
     ],
     "kaspersky-labs.com": [
-      "kaspersky.com"
-    ],
-    "kaxsdc.com": [
-      "papajohns.com"
+      "sbermegamarket.ru"
     ],
     "kayak.com": [
       "priceline.com"
     ],
-    "kcsfile.com": [
-      "kucoin.com"
+    "kbb.com": [
+      "autotrader.com"
+    ],
+    "kcc0.com": [
+      "draftkings.com"
+    ],
+    "keeper.io": [
+      "keepersecurity.com"
+    ],
+    "keepmylocaltv.com": [
+      "wkyc.com",
+      "khou.com",
+      "wbir.com"
     ],
     "kexin001.com": [
       "babytree.com"
     ],
     "keywee.co": [
-      "nationalgeographic.com",
-      "mashable.com",
-      "nypost.com"
-    ],
-    "kf5.com": [
-      "growingio.com"
+      "fastcompany.com",
+      "fatherly.com",
+      "baltimoresun.com"
     ],
-    "kinsta.com": [
-      "informationweek.com"
+    "kezhaozhao.com": [
+      "qcc.com"
     ],
-    "kivpro.com": [
-      "yenicag.az"
+    "kh4ffx.net": [
+      "booktopia.com.au"
     ],
     "kl-youniverse.com": [
-      "dream.co.id",
-      "bola.com",
-      "fimela.com"
+      "kapanlagi.com",
+      "merdeka.com",
+      "liputan6.com"
     ],
     "klangoo.com": [
-      "globalresearch.ca",
-      "dailyherald.com"
-    ],
-    "klarnaservices.com": [
-      "jbl.com"
-    ],
-    "klarnauserservices.com": [
-      "jbl.com"
+      "manilatimes.net",
+      "dailyherald.com",
+      "zawya.com"
     ],
-    "kleecks.com": [
-      "fendi.com"
+    "klaviyo.com": [
+      "corporatefinanceinstitute.com",
+      "teespring.com"
     ],
     "klick2contact.com": [
       "thebodyshop.com"
     ],
     "knet.cn": [
       "china.com.cn",
-      "eastday.com",
+      "51sole.com",
       "hexun.com"
     ],
+    "knightlab.com": [
+      "northwestern.edu"
+    ],
     "knnlab.com": [
       "informaconnect.com"
     ],
     "knotch.it": [
-      "aboutamazon.com"
+      "kingarthurbaking.com",
+      "aboutamazon.com",
+      "ally.com"
+    ],
+    "know-where.com": [
+      "publix.com"
     ],
     "koddi.com": [
       "hilton.com",
-      "wyndhamhotels.com"
+      "wyndhamhotels.com",
+      "ritzcarlton.com"
+    ],
+    "kolkwi4tzicraamabilis.com": [
+      "sxyprn.com"
+    ],
+    "kommunicate.io": [
+      "olympusdao.finance"
     ],
     "kompas.com": [
-      "tribunnews.com",
-      "grid.id",
-      "kompasiana.com"
+      "bolasport.com",
+      "kontan.co.id"
     ],
-    "kooora.ws": [
-      "kooora.com"
+    "kompasads.com": [
+      "kompas.tv"
     ],
-    "kpcdn.net": [
-      "kp.ru"
+    "koscom.co.kr": [
+      "khan.co.kr"
     ],
-    "kraken.com": [
-      "informationweek.com"
+    "kp.house": [
+      "kp.ru"
     ],
     "krxd.net": [
-      "time.com",
-      "foxnews.com",
-      "salesforce.com"
+      "linternaute.com",
+      "cc.com",
+      "banco.bradesco"
     ],
     "ksmobile.com": [
-      "duba.com",
-      "newduba.cn"
+      "duba.net",
+      "duba.com"
     ],
-    "kwanzoo.com": [
-      "treasuredata.com"
+    "kthwaalso.xyz": [
+      "cuevana3.io",
+      "boafoda.com",
+      "pelisplushd.net"
+    ],
+    "ktxlytics.io": [
+      "utoledo.edu",
+      "oakland.edu",
+      "cancer.org"
+    ],
+    "kubserver.icu": [
+      "thenetnaija.com"
     ],
-    "labocleo.org": [
-      "hypotheses.org",
-      "openedition.org"
+    "kulichki.com": [
+      "kulichki.net"
+    ],
+    "kustomerapp.com": [
+      "fwrd.com",
+      "revolve.com",
+      "youngliving.com"
+    ],
+    "kwikmotion.com": [
+      "okaz.com.sa"
+    ],
+    "kworks.ru": [
+      "kwork.ru"
     ],
     "ladbible.com": [
       "sportbible.com"
     ],
     "ladsp.com": [
       "syosetu.com",
-      "sony.jp",
-      "sankei.com"
+      "doda.jp",
+      "honto.jp"
+    ],
+    "ladsp.jp": [
+      "mapion.co.jp"
     ],
-    "lan.com": [
-      "latam.com"
+    "lalibre.be": [
+      "dhnet.be"
     ],
     "landc.co.uk": [
       "thisismoney.co.uk"
     ],
-    "latinongroup.com": [
-      "ambito.com"
+    "languagetoolplus.com": [
+      "languagetool.org"
     ],
-    "leadexpert.pl": [
-      "gazeta.pl"
+    "lasexta.com": [
+      "publico.es"
     ],
-    "leadlab.click": [
-      "fraunhofer.de"
+    "lavanetwork.net": [
+      "thethao247.vn"
     ],
-    "leadlander.com": [
-      "panasonic.com",
-      "servicenow.com",
-      "cornerstoneondemand.com"
+    "layer0.co": [
+      "ugg.com"
+    ],
+    "lazada.com": [
+      "dianxiaomi.com"
+    ],
+    "le.com": [
+      "letv.com"
+    ],
+    "leadid.com": [
+      "bindright.com"
+    ],
+    "leadin.com": [
+      "civicplus.com"
+    ],
+    "leadintel.io": [
+      "whathifi.com",
+      "marieclaire.co.uk",
+      "wallpaper.com"
+    ],
+    "leadportal.com": [
+      "ecowatch.com"
     ],
     "leadquizzes.com": [
       "diariolibre.com"
     ],
     "leadspace.com": [
-      "opendns.com"
+      "recurly.com"
     ],
     "leadsrx.com": [
-      "monster.com"
+      "norton.com",
+      "treasuredata.com",
+      "kohler.com"
     ],
     "leady.com": [
       "fieldengineer.com"
@@ -14966,843 +16726,1253 @@
     "leafly.ca": [
       "leafly.com"
     ],
-    "ledger.com": [
-      "informationweek.com"
+    "leankun.com": [
+      "sina.cn"
+    ],
+    "ledauphine-presse.fr": [
+      "ledauphine.com"
+    ],
+    "leetemplates.com": [
+      "missoulian.com",
+      "trib.com"
     ],
     "leju.com": [
-      "7gz.com"
+      "sina.cn",
+      "7gz.com",
+      "sina.com.cn"
+    ],
+    "lemmatechnologies.com": [
+      "999.md",
+      "autoblog.com"
     ],
     "lemnisk.co": [
+      "bajajfinserv.in",
       "axisbank.com"
     ],
-    "lennyletter.com": [
-      "wired.com",
-      "newyorker.com",
-      "vanityfair.com"
+    "lendingtree.com": [
+      "comparecards.com"
     ],
     "lenovo.com": [
       "lenovo.com.cn"
     ],
     "lentainform.com": [
-      "uptodown.com",
-      "rbc.ru",
-      "idealmedia.io"
+      "ren.tv",
+      "km.ru",
+      "mk.ru"
+    ],
+    "leojmp.com": [
+      "gayboystube.com"
+    ],
+    "leprogres-presse.fr": [
+      "leprogres.fr"
+    ],
+    "letslinc.com": [
+      "pacsun.com",
+      "carters.com"
     ],
     "letv.com": [
       "le.com"
     ],
     "lfeeder.com": [
-      "foxitsoftware.com",
-      "wur.nl"
+      "attentivemobile.com",
+      "reviews.io"
+    ],
+    "lfstmedia.com": [
+      "lifestreet.com"
     ],
     "liadm.com": [
-      "bloomberg.com",
-      "cnet.com",
-      "usatoday.com"
+      "ucsusa.org",
+      "nrdc.org",
+      "hollywoodlife.com"
     ],
-    "liebao.cn": [
-      "duba.com",
-      "newduba.cn"
+    "libanswers.com": [
+      "unsw.edu.au"
+    ],
+    "libertymutual-cdn.com": [
+      "libertymutual.com"
     ],
     "lietou-static.com": [
       "liepin.com"
     ],
+    "lifeserver.net": [
+      "lifesitenews.com"
+    ],
     "lightboxcdn.com": [
-      "cnet.com",
-      "zdnet.com",
-      "fastcompany.com"
+      "wsoctv.com",
+      "fastcompany.com",
+      "everydayhealth.com"
     ],
-    "lightinthebox.com": [
-      "informationweek.com"
+    "lightonironmentcompetitemarxisting.xyz": [
+      "shorturl.at"
     ],
     "lijit.com": [
-      "simpli.fi",
-      "mimecast.com",
-      "iflscience.com"
+      "staradvertiser.com",
+      "youm7.com",
+      "rasmussenreports.com"
+    ],
+    "like-video.com": [
+      "likee.video",
+      "imo.im"
     ],
     "likeevideo.com": [
-      "bigolive.tv"
+      "bigo.tv"
     ],
     "likr.com.tw": [
-      "chinatimes.com",
-      "newtalk.tw",
-      "businesstoday.com.tw"
+      "edh.tw",
+      "popdaily.com.tw",
+      "thanhnien.vn"
+    ],
+    "limabrasiltools.azurewebsites.net": [
+      "serasa.com.br"
+    ],
+    "limbik.com": [
+      "canberratimes.com.au",
+      "thedrive.com"
+    ],
+    "line-apps.com": [
+      "buy123.com.tw"
     ],
     "line.me": [
-      "plala.or.jp",
-      "freee.co.jp",
-      "oppo.com"
+      "newspicks.com",
+      "trilltrill.jp",
+      "doda.jp"
+    ],
+    "linkadx.com": [
+      "khan.co.kr"
+    ],
+    "linkaraby.com": [
+      "zid.sa"
     ],
     "linkconnector.com": [
+      "movavi.com",
       "wondershare.com",
-      "lww.com",
-      "newchic.com"
+      "justcbdstore.com"
     ],
     "linkedin.com": [
-      "adobe.com",
-      "amazon.com",
-      "msn.com"
+      "yumpu.com",
+      "theworlds50best.com",
+      "iit.edu"
     ],
     "linker.hr": [
-      "jutarnji.hr",
-      "dnevnik.hr"
-    ],
-    "linkonlineworld.com": [
-      "yallakora.com",
-      "masrawy.com"
+      "dnevnik.hr",
+      "jutarnji.hr"
     ],
     "linkprice.com": [
+      "khan.co.kr",
       "helpstart.co.kr"
     ],
     "linksynergy.com": [
-      "rakuten.co.jp",
-      "alibabacloud.com",
-      "udemy.com"
+      "rakuten.com",
+      "rakutenadvertising.com",
+      "hilton.com"
+    ],
+    "liputan6.id": [
+      "brilio.net",
+      "merdeka.com",
+      "bola.com"
     ],
     "list-manage.com": [
-      "woocommerce.com",
-      "nme.com",
-      "lapatilla.com"
+      "digitalmusicnews.com",
+      "stripes.com",
+      "theoatmeal.com"
     ],
     "listrakbi.com": [
-      "denverpost.com",
       "almanac.com",
-      "budsgunshop.com"
-    ],
-    "literatumonline.com": [
-      "thelancet.com",
-      "cell.com"
+      "listrak.com",
+      "denverpost.com"
     ],
-    "liuzhuni.com": [
-      "huim.com"
+    "litv.tv": [
+      "hinet.net",
+      "ltn.com.tw"
     ],
     "live2support.com": [
       "proprofs.com",
       "qualaroo.com"
     ],
     "livechatinc.com": [
-      "wpengine.com",
-      "ning.com",
-      "livechat.com",
-      "moo.com"
+      "benchmarkemail.com",
+      "lwolf.com",
+      "coschedule.com"
+    ],
+    "livehelpnow.net": [
+      "ada.org",
+      "metopera.org"
     ],
     "livejasmin.com": [
-      "spankbang.com"
+      "gotporn.com",
+      "xozilla.com",
+      "planetsuzy.org"
+    ],
+    "livemarketshoppers.com": [
+      "k12.com"
+    ],
+    "livemint.com": [
+      "livehindustan.com"
+    ],
+    "liveperson.com": [
+      "microsoft.com",
+      "t-mobile.com"
     ],
     "liveperson.net": [
-      "godaddy.com",
-      "virginmedia.com",
-      "microsoft.com"
+      "metamask.io",
+      "uline.com",
+      "siriusxm.com"
+    ],
+    "livere.com": [
+      "asiae.co.kr"
+    ],
+    "livere.me": [
+      "mk.co.kr",
+      "asiae.co.kr",
+      "khan.co.kr"
     ],
     "livetex.me": [
       "cntd.ru"
     ],
     "livetex.ru": [
-      "timeweb.com",
       "cntd.ru"
     ],
-    "lkqd.net": [
-      "youm7.com",
-      "gizmodo.com",
-      "memurlar.net"
+    "llbean.net": [
+      "llbean.com"
+    ],
+    "lmaxdigital.io": [
+      "theblockcrypto.com"
+    ],
+    "lmcdn.ru": [
+      "lamoda.ru"
     ],
     "lmiutil.com": [
       "lastpass.com",
-      "logmein.com"
+      "logmein.com",
+      "goto.com"
+    ],
+    "ln.is": [
+      "linkis.com"
     ],
     "lndata.com": [
       "thenewslens.com"
     ],
     "loadercdn.net": [
+      "bigmir.net",
       "ukr.net",
-      "gismeteo.ua",
-      "sinoptik.ua"
+      "liga.net"
     ],
-    "loc.gov": [
-      "wdl.org"
+    "localizer.co": [
+      "topcashback.com"
+    ],
+    "localnewslab.io": [
+      "inquirer.com",
+      "texastribune.org",
+      "washingtoncitypaper.com"
     ],
     "localytics.com": [
-      "passeidireto.com"
+      "passeidireto.com",
+      "gasbuddy.com"
+    ],
+    "locker2.com": [
+      "kfc.com"
     ],
     "lockerdome.com": [
-      "psychcentral.com",
-      "astrologyanswers.com"
+      "worldpopulationreview.com",
+      "astrologyanswers.com",
+      "ncronline.org"
     ],
     "logger.co.kr": [
       "dothome.co.kr"
     ],
-    "loginfra.com": [
-      "webtoons.com",
-      "vlive.tv"
+    "loggly.com": [
+      "shutterstock.com",
+      "hubspot.com",
+      "tennessean.com"
     ],
-    "loginhood.io": [
-      "bigthink.com",
-      "iflscience.com",
-      "247wallst.com"
+    "logicanalytics.io": [
+      "logrocket.com"
+    ],
+    "loginfra.com": [
+      "webtoons.com"
     ],
     "loginside.co.kr": [
       "koreaherald.com"
     ],
-    "logitech.com": [
-      "logitechg.com"
-    ],
     "logly.co.jp": [
-      "nifty.com",
-      "excite.co.jp",
-      "diamond.jp"
+      "rocketnews24.com",
+      "walkerplus.com",
+      "itmedia.co.jp"
     ],
     "logsss.com": [
       "gearbest.com"
     ],
     "loop11.com": [
+      "business.gov.au",
       "ato.gov.au",
-      "business.gov.au"
+      "sccgov.org"
+    ],
+    "loopanalytics.com": [
+      "usablenet.com",
+      "amplify.com"
     ],
     "loopassets.net": [
-      "uniqlo.com",
-      "coach.com"
+      "uniqlo.com"
     ],
     "loopgift.com": [
       "uniqlo.com",
-      "coach.com",
       "michaelkors.com"
     ],
+    "loopme.com": [
+      "draftkings.com"
+    ],
+    "loopme.me": [
+      "primis.tech",
+      "dx.com",
+      "ign.com"
+    ],
+    "lordofthequietbadgers.com": [
+      "clickcease.com"
+    ],
+    "lotlinx.com": [
+      "wavy.com",
+      "wfla.com",
+      "khon2.com"
+    ],
     "lp4.io": [
-      "nrk.no",
-      "ilsole24ore.com",
-      "bluewin.ch"
+      "tv2.no",
+      "svt.se",
+      "sueddeutsche.de"
     ],
     "lpage.co": [
       "macleans.ca"
     ],
-    "lpoint.com": [
-      "hani.co.kr"
-    ],
     "lps.lpages.co": [
       "leadpages.com"
     ],
     "lsurl.cn": [
       "findlaw.cn"
     ],
+    "ltmse.com": [
+      "premier.one"
+    ],
     "ltwebstatic.com": [
       "shein.com"
     ],
+    "lucid.app": [
+      "lucidchart.com"
+    ],
+    "lucidchart.com": [
+      "lucid.app"
+    ],
+    "lumen.com": [
+      "centurylink.com"
+    ],
+    "lumentech.com": [
+      "lumen.com"
+    ],
+    "lundegaard.cloud": [
+      "heureka.cz"
+    ],
+    "lura.live": [
+      "fox9.com",
+      "wavy.com",
+      "fox10phoenix.com"
+    ],
+    "luxnet.ua": [
+      "24tv.ua"
+    ],
     "lwcal.com": [
       "rice.edu"
     ],
     "lww.com": [
-      "ahajournals.org",
-      "neurology.org",
-      "ovid.com"
+      "wolterskluwer.com"
+    ],
+    "lynn-latam-production-br-ch-reg-t2188.azurewebsites.net": [
+      "udla.edu.ec"
     ],
     "lytics.io": [
-      "adweek.com",
       "ancestry.com",
-      "tableau.com"
+      "audacy.com",
+      "foxbusiness.com"
     ],
     "lz-pub-ads.com": [
-      "cronica.com.ar"
+      "perfil.com"
+    ],
+    "m0mentum.net": [
+      "infoseek.co.jp"
+    ],
+    "m1905.cn": [
+      "1905.com"
+    ],
+    "m2.ai": [
+      "studyuo.com",
+      "cleantechnica.com",
+      "demilked.com"
     ],
     "m6r.eu": [
-      "statista.com",
-      "ceskatelevize.cz"
+      "messefrankfurt.com"
     ],
-    "maases.com": [
-      "promodj.com"
+    "machinessp.xyz": [
+      "shorturl.at"
     ],
     "macromill.com": [
-      "asahi.com",
-      "yomiuri.co.jp",
-      "hotpepper.jp"
+      "rocketnews24.com",
+      "athome.co.jp",
+      "carsensor.net"
     ],
     "mad-docs.azurewebsites.net": [
       "n4g.com"
     ],
+    "madrid.org": [
+      "comunidad.madrid"
+    ],
     "maerskline.com": [
       "maersk.com"
     ],
+    "maggieeatstheangel.com": [
+      "slickdeals.net"
+    ],
     "magnetmail.net": [
-      "asm.org",
+      "uli.org",
       "acog.org",
-      "jbc.org"
+      "asm.org"
+    ],
+    "magnum-dev.com": [
+      "magnumphotos.com"
     ],
     "mail.ru": [
-      "aliexpress.ru",
-      "rambler.ru",
-      "sberbank.ru",
-      "tutu.ru"
+      "infourok.ru",
+      "fotostrana.ru",
+      "eldorado.ru"
     ],
-    "mailfire.io": [
-      "legit.ng",
-      "tuko.co.ke",
-      "briefly.co.za"
+    "mailchimp.com": [
+      "digitalmusicnews.com",
+      "team-bhp.com",
+      "stripes.com"
     ],
-    "mailmunch.co": [
-      "euronews.com"
+    "mailerlite.com": [
+      "thefederalist.com"
     ],
     "mainetodaymedia.com": [
       "pressherald.com"
     ],
+    "mainroll.com": [
+      "grid.id",
+      "independent.ie",
+      "kompas.com"
+    ],
+    "malcolm.app": [
+      "tinyurl.com"
+    ],
+    "mangools.com": [
+      "kwfinder.com"
+    ],
     "mantisadnetwork.com": [
-      "ultimate-guitar.com",
-      "tvtropes.org",
-      "ecowatch.com"
+      "8tracks.com",
+      "thewrap.com",
+      "upi.com"
+    ],
+    "mapbox.com": [
+      "worldbank.org",
+      "mapquest.com"
     ],
     "mapixl.com": [
+      "grainger.com",
       "coursera.org"
     ],
+    "mapmyindia.in": [
+      "cowin.gov.in"
+    ],
     "mapquestapi.com": [
       "suntrust.com"
     ],
     "marchex.io": [
       "kia.com",
-      "marist.edu"
+      "wm.com"
     ],
     "marinsm.com": [
       "lucidchart.com",
-      "warriorplus.com",
-      "vistaprint.com"
+      "lucid.app",
+      "carbonite.com"
     ],
     "marketdatasystems.com": [
       "ig.com"
     ],
     "marketingautomation.services": [
-      "emxdigital.com"
+      "convinceandconvert.com",
+      "itnews.com.au",
+      "paltalk.com"
     ],
     "marketlinc.com": [
-      "teamviewer.com",
+      "gwi.com",
       "kaspersky.com",
-      "eset.com"
+      "formstack.com"
     ],
     "marketo.com": [
-      "appsflyer.com",
-      "verizonmedia.com",
-      "yahoo.com"
+      "demandbase.com",
+      "shrm.org",
+      "flurry.com"
     ],
     "marketperf.com": [
+      "centerblog.net",
       "unblog.fr"
     ],
+    "markitondemand.com": [
+      "asx.com.au"
+    ],
     "marktplaats.net": [
+      "2dehands.be",
       "marktplaats.nl"
     ],
+    "marsflag.com": [
+      "sony.net",
+      "sony.co.jp"
+    ],
+    "marvellousmachine.net": [
+      "springer.com"
+    ],
+    "massrel.io": [
+      "gohawaii.com"
+    ],
     "massrelevance.com": [
-      "pgatour.com"
+      "gohawaii.com"
     ],
-    "matchtv.ru": [
-      "sportbox.ru"
+    "mastercard.com": [
+      "mastercard.us",
+      "mastercard.de"
     ],
     "mateti.net": [
-      "tiscali.it",
-      "raiplay.it"
+      "raiplay.it",
+      "repubblica.it",
+      "ilpost.it"
     ],
     "matheranalytics.com": [
-      "latimes.com",
-      "nypost.com",
-      "chicagotribune.com"
+      "thegazette.com",
+      "baltimoresun.com",
+      "denverpost.com"
     ],
     "mathtag.com": [
-      "yahoo.com",
-      "msn.com",
-      "okezone.com"
+      "president.jp",
+      "ole.com.ar",
+      "parasut.com"
+    ],
+    "matoakie.com": [
+      "cima-club.cc"
     ],
-    "matomo.cloud": [
-      "getyourguide.com",
-      "crossref.org"
+    "mautic.net": [
+      "cvshealth.com"
     ],
     "maven.io": [
-      "hubpages.com",
       "si.com",
-      "biography.com"
+      "fashionista.com",
+      "psmag.com"
+    ],
+    "mavenaudiences.com": [
+      "money.com",
+      "ecwid.com"
     ],
     "mavencoalition.io": [
-      "hubpages.com",
       "si.com",
-      "biography.com"
+      "fashionista.com",
+      "psmag.com"
     ],
     "maxmind.com": [
-      "mediafire.com"
+      "lamag.com",
+      "mediafire.com",
+      "instantcheckmate.com"
     ],
-    "maxymiser.net": [
-      "orange.fr",
-      "kaspersky.com",
-      "logitech.com"
-    ],
-    "mcclatchy.com": [
-      "sacbee.com",
-      "star-telegram.com",
-      "thestate.com"
+    "mci.gov.sa": [
+      "extra.com"
     ],
     "mdgms.com": [
       "bluewin.ch"
     ],
+    "mdpi-res.com": [
+      "mdpi.com"
+    ],
+    "mdstrm.com": [
+      "rpp.pe"
+    ],
     "mea.gov.in": [
       "passportindia.gov.in"
     ],
+    "meba.kr": [
+      "lotteon.com",
+      "jobkorea.co.kr",
+      "ssg.com"
+    ],
+    "medallia.com": [
+      "macys.com",
+      "hottopic.com",
+      "meijer.com"
+    ],
+    "medallia.eu": [
+      "se.com"
+    ],
     "media.net": [
-      "msn.com",
-      "forbes.com",
-      "reuters.com"
+      "abcactionnews.com",
+      "nrdc.org",
+      "thegatewaypundit.com"
     ],
     "media6degrees.com": [
-      "bloomberg.com",
-      "box.com",
-      "acs.org"
+      "goodyear.com",
+      "dstillery.com",
+      "airtm.com"
     ],
     "mediaad.org": [
-      "tejaratnews.com",
-      "parsfootball.com",
-      "rokna.net"
+      "khabaronline.ir",
+      "rtl-theme.com",
+      "basalam.com"
     ],
     "mediacategory.com": [
-      "joins.com",
-      "zum.com"
+      "lotteon.com",
+      "hani.co.kr",
+      "edaily.co.kr"
     ],
     "mediacdn.vn": [
       "soha.vn"
     ],
     "mediacorp.sg": [
+      "mothership.sg",
       "channelnewsasia.com",
       "todayonline.com"
     ],
-    "mediaforge.com": [
-      "newegg.com"
-    ],
     "mediafuse.com": [
-      "foreignaffairs.com",
-      "digitalcommerce360.com",
-      "allbusiness.com"
+      "fiercepharma.com",
+      "qz.com",
+      "fiercehealthcare.com"
+    ],
+    "mediago.io": [
+      "autoblog.com"
+    ],
+    "mediaindex.co.kr": [
+      "khan.co.kr"
+    ],
+    "medialand.ru": [
+      "rbc.ru"
+    ],
+    "mediarithmics.com": [
+      "pcgamer.com",
+      "adorocinema.com",
+      "gamesradar.com"
     ],
-    "mediaset.net": [
-      "mediaset.it"
+    "mediasquare.fr": [
+      "lepoint.fr"
+    ],
+    "mediatoday.ru": [
+      "fontanka.ru"
     ],
     "mediav.com": [
-      "so.com",
-      "ctrip.com",
-      "duba.com"
+      "wkzuche.com",
+      "mokahr.com",
+      "6789.com"
     ],
     "mediavine.com": [
-      "cnsnews.com"
+      "rasmussenreports.com",
+      "yahoo.com",
+      "planetware.com"
     ],
     "mediawallahscript.com": [
-      "sourceforge.net",
-      "slashdot.org",
-      "gopro.com"
-    ],
-    "mediawayss.com": [
-      "korrespondent.net"
+      "microcenter.com",
+      "gopro.com",
+      "qvc.com"
     ],
     "mediaweaver.jp": [
-      "toyokeizai.net",
-      "diamond.jp"
+      "president.jp",
+      "toyokeizai.net"
+    ],
+    "medicalnewstoday.com": [
+      "psychcentral.com"
     ],
     "medium.al": [
-      "panorama.com.al",
-      "balkanweb.com",
-      "syri.net"
+      "balkanweb.com"
     ],
     "medium.com": [
-      "towardsdatascience.com"
+      "uxdesign.cc",
+      "towardsdatascience.com",
+      "uxplanet.org"
     ],
     "medtargetsystem.com": [
-      "wired.com",
-      "mayoclinic.org",
-      "sciencedaily.com"
+      "hopkinsmedicine.org",
+      "peerj.com",
+      "acpjournals.org"
+    ],
+    "meetami.ai": [
+      "rspca.org.uk"
+    ],
+    "mega.nz": [
+      "mega.io"
+    ],
+    "megaphone.fm": [
+      "cio.com",
+      "clickorlando.com",
+      "tmz.com"
+    ],
+    "megatime.com.tw": [
+      "pchome.com.tw"
     ],
     "meiqia.com": [
-      "ywart.com",
-      "guifun.com",
-      "koolearn.com"
+      "ascendex.com"
+    ],
+    "meistertask.com": [
+      "mindmeister.com"
+    ],
+    "meituan.net": [
+      "meituan.com",
+      "dianping.com"
     ],
     "meizu.cn": [
       "meizu.com"
     ],
-    "mellowads.com": [
-      "moonbit.co.in",
-      "moonliteco.in",
-      "moondoge.co.in"
+    "meizu.com": [
+      "flyme.cn"
+    ],
+    "meltwaternews.com": [
+      "uow.edu.au"
+    ],
+    "mendeley.com": [
+      "sciencedirect.com"
     ],
     "mercadopago.cl": [
       "mercadolibre.cl"
     ],
+    "mercadopago.com.pe": [
+      "mercadolibre.com.pe"
+    ],
+    "mercadopago.com.uy": [
+      "mercadolibre.com.uy"
+    ],
     "meredithcorp.io": [
-      "people.com",
-      "southernliving.com"
+      "shape.com"
+    ],
+    "meritpages.com": [
+      "clarku.edu"
+    ],
+    "mesearch.ai": [
+      "triblive.com"
+    ],
+    "messagebird.com": [
+      "scribbr.com"
+    ],
+    "metadata.io": [
+      "rstudio.com"
     ],
     "metricool.com": [
-      "ancient.eu"
+      "worldhistory.org"
+    ],
+    "metrics-ga.an.r.appspot.com": [
+      "au.com",
+      "kddi.com"
+    ],
+    "metrixa.com": [
+      "flippa.com"
     ],
     "metroscubicos.com": [
-      "mercadolibre.com.mx"
+      "mercadolibre.com.mx",
+      "mercadopago.com.mx"
+    ],
+    "metv.com": [
+      "wfmz.com",
+      "nbc12.com"
     ],
     "mfadsrvr.com": [
-      "msn.com",
-      "forbes.com",
-      "thehill.com"
+      "abcactionnews.com",
+      "yahoo.com",
+      "autoblog.com"
     ],
     "mgid.com": [
-      "uptodown.com",
-      "liveinternet.ru",
-      "memurlar.net"
-    ],
-    "mhtr.be": [
-      "independent.ie"
+      "techtimes.com",
+      "adnkronos.com",
+      "beforeitsnews.com"
     ],
     "mia-chat.com": [
-      "payforessay.net",
       "papernow.org"
     ],
-    "miamiherald.com": [
-      "mcclatchydc.com"
-    ],
     "miaozhen.com": [
-      "cnbeta.com",
-      "autohome.com.cn",
-      "pchouse.com.cn"
+      "pcauto.com.cn",
+      "ali213.net",
+      "autohome.com.cn"
     ],
     "mib.gov.in": [
-      "parivahan.gov.in",
-      "up.gov.in"
+      "parivahan.gov.in"
     ],
     "micpn.com": [
-      "lenovo.com",
-      "barnesandnoble.com",
-      "nbcsports.com"
+      "canadiantire.ca",
+      "dsw.com",
+      "tractorsupply.com"
     ],
     "microad.jp": [
-      "rakuten.co.jp",
-      "hatena.ne.jp",
-      "tenki.jp"
+      "president.jp",
+      "syosetu.com",
+      "doda.jp"
     ],
     "microadinc.com": [
-      "lolipop.jp",
       "syosetu.com",
+      "lolipop.jp",
       "moppy.jp"
     ],
-    "microcontenidos.com": [
-      "excelsior.com.mx"
-    ],
     "microsoft.com": [
-      "quizizz.com",
-      "minecraft.net",
-      "flipgrid.com"
-    ],
-    "microsofttranslator.com": [
-      "iyiou.com"
-    ],
-    "midas-network.com": [
-      "b92.net"
+      "trekbikes.com",
+      "wakelet.com",
+      "minecraft.net"
     ],
-    "mimilcnf.pro": [
-      "hdsex.org"
+    "micstatic.com": [
+      "made-in-china.com"
     ],
-    "mindbox.cloud": [
-      "semrush.com"
+    "midtrans.com": [
+      "ggwp.id"
     ],
     "mindbox.ru": [
-      "citilink.ru",
-      "cosmo.ru",
+      "infourok.ru",
+      "expert.ru",
       "vseinstrumenti.ru"
     ],
-    "minibc.com": [
-      "euroluxhome.com"
-    ],
-    "miniclip.com": [
-      "agar.io"
-    ],
-    "miniclippt.com": [
-      "agar.io"
-    ],
-    "miniinthebox.com": [
-      "informationweek.com"
-    ],
     "mirror.co.uk": [
-      "dailystar.co.uk",
       "manchestereveningnews.co.uk",
-      "dailyrecord.co.uk"
+      "liverpoolecho.co.uk",
+      "birminghammail.co.uk"
     ],
-    "mituo.cn": [
-      "metinfo.cn"
+    "missouristate.info": [
+      "missouristate.edu"
     ],
-    "mixcloud.com": [
-      "b92.net"
+    "mitself.net": [
+      "finanzen.net",
+      "tagesspiegel.de",
+      "pcwelt.de"
+    ],
+    "mixadvert.com": [
+      "bigmir.net",
+      "ukr.net"
+    ],
+    "mixandfun.com": [
+      "analdin.com",
+      "xozilla.com",
+      "realsrv.com"
     ],
     "mixi.media": [
-      "realclearpolitics.com",
-      "newsmax.com",
-      "valuewalk.com"
+      "valuewalk.com",
+      "rt.com",
+      "goodnewsnetwork.org"
+    ],
+    "mixpanel.com": [
+      "webs.com",
+      "wise.com",
+      "voot.com"
     ],
     "mktoresp.com": [
-      "taboola.com",
-      "mimecast.com",
-      "topuniversities.com"
+      "vdx.tv",
+      "dynamicyield.com",
+      "brandwatch.com"
     ],
     "ml314.com": [
-      "cnn.com",
-      "forbes.com",
-      "sourceforge.net"
+      "digitalcommerce360.com",
+      "fastcompany.com",
+      "scmagazine.com"
+    ],
+    "mlbstatic.com": [
+      "mlb.com"
     ],
-    "mlsys.xyz": [
-      "inquisitr.com"
+    "mmctsvc.com": [
+      "mentalfloss.com",
+      "theplayerstribune.com",
+      "90min.com"
     ],
     "mmonline.io": [
-      "manoramaonline.com"
+      "manoramaonline.com",
+      "theweek.in"
+    ],
+    "mmpww.com": [
+      "filgoal.com"
     ],
     "mmstat.com": [
-      "sohu.com",
-      "sina.com.cn",
-      "huanqiu.com"
+      "115.com",
+      "gaoqing.la",
+      "ccwin.cn"
     ],
-    "mmtro.com": [
-      "lacoste.com"
+    "mnsuseumco.xyz": [
+      "cuevana3.io",
+      "shorturl.at"
     ],
     "moatads.com": [
-      "forbes.com",
-      "bloomberg.com",
-      "cnet.com"
+      "euronews.com",
+      "globalnews.ca",
+      "foxsports.com"
     ],
     "mobizone.mobi": [
       "almasryalyoum.com"
     ],
+    "mobon.net": [
+      "lotteon.com",
+      "edaily.co.kr",
+      "jobkorea.co.kr"
+    ],
     "mobvista.com": [
       "rayjump.com"
     ],
-    "modlily.com": [
-      "informationweek.com"
+    "modern.az": [
+      "azvision.az"
+    ],
+    "modoro360.com": [
+      "youm7.com"
     ],
     "moe.video": [
-      "yaplakal.com"
+      "regnum.ru"
     ],
     "moevideo.biz": [
-      "yaplakal.com"
+      "regnum.ru"
+    ],
+    "moex.com": [
+      "sberbank.ru"
     ],
     "monetate.net": [
-      "nationalgeographic.com",
-      "marriott.com",
-      "newegg.com"
+      "progressive.com",
+      "waitrose.com",
+      "johnlewis.com"
     ],
-    "monohost.com": [
-      "pdf2doc.com",
-      "compressjpeg.com",
-      "jpg2pdf.com"
+    "money-link.com.tw": [
+      "businesstoday.com.tw"
     ],
     "monsido.com": [
-      "uga.edu",
-      "utk.edu",
-      "nature.org"
+      "hudl.com",
+      "syracuse.edu",
+      "wgtn.ac.nz"
+    ],
+    "monu.delivery": [
+      "conservativebrief.com",
+      "earth911.com",
+      "goodnewsnetwork.org"
     ],
     "mookie1.com": [
-      "newsweek.com",
-      "howstuffworks.com",
-      "in.gr"
+      "parasut.com",
+      "linternaute.com",
+      "husqvarna.com"
     ],
     "moovit.com": [
-      "undip.ac.id"
+      "undip.ac.id",
+      "uns.ac.id"
     ],
     "mopinion.com": [
+      "simplisafe.com",
       "tomtom.com",
-      "sncf.com"
+      "thestudentroom.co.uk"
+    ],
+    "more-data.ru": [
+      "iz.ru",
+      "ren.tv",
+      "5-tv.ru"
+    ],
+    "moshimo.com": [
+      "moshimo.co.jp"
+    ],
+    "motorcycleid.com": [
+      "carid.com"
     ],
     "motorsport.com": [
-      "motor1.com"
+      "autosport.com"
+    ],
+    "mountain.com": [
+      "bamboohr.com",
+      "threadless.com",
+      "movember.com"
+    ],
+    "mouseflow.com": [
+      "psfk.com",
+      "connectwise.com",
+      "nature.org"
+    ],
+    "mowuzoji.xyz": [
+      "888satoshis.com",
+      "dutchycorp.space"
     ],
     "mox.tv": [
+      "korrespondent.net",
+      "protothema.gr",
       "filgoal.com"
     ],
     "moxielinks.com": [
       "banggood.com"
     ],
+    "mparticle.com": [
+      "today.com",
+      "tulsaworld.com",
+      "headspace.com"
+    ],
     "mpeasylink.com": [
+      "humana.com",
       "t-mobile.com",
-      "ford.com",
-      "cox.com"
+      "chrysler.com"
     ],
     "mpianalytics.com": [
-      "subito.it",
-      "milanuncios.com",
-      "willhaben.at"
+      "subito.it"
     ],
     "mpio.io": [
-      "art.com"
+      "latimes.com",
+      "rockerbox.com"
     ],
-    "mpshark.com": [
-      "9anime.to"
+    "mql5.com": [
+      "superoffice.com",
+      "exness.com"
     ],
     "mrelko.com": [
       "rutor.info"
     ],
+    "mrpdata.net": [
+      "stltoday.com"
+    ],
     "mrpfd.com": [
-      "citrix.com"
+      "citrix.com",
+      "bmc.com",
+      "cloud.com"
     ],
     "mrtnsvr.com": [
-      "thebodyshop.com"
+      "audiomack.com"
+    ],
+    "msftauth.net": [
+      "microsoft.com"
     ],
     "msgapp.com": [
       "post-gazette.com"
     ],
+    "mshago.com": [
+      "spankbang.com"
+    ],
     "msn.com": [
-      "wsj.com",
+      "drive.com.au",
       "ninemsn.com.au"
     ],
+    "mtcaptcha.com": [
+      "nabu.de",
+      "iec.ch"
+    ],
     "mtgroup.kr": [
+      "news1.kr",
       "mt.co.kr"
     ],
-    "mtmo.cc": [
-      "flvto.biz",
-      "2conv.com"
+    "mtrackd.com": [
+      "b92.net",
+      "dnevnik.hr",
+      "jutarnji.hr"
     ],
     "mts.ru": [
-      "aliexpress.ru",
-      "rambler.ru",
-      "lenta.ru"
+      "nic.ru",
+      "radikal.ru",
+      "gazprombank.ru"
     ],
     "mtvnservices.com": [
       "nick.com",
       "bet.com",
-      "cc.com"
-    ],
-    "muji.net": [
-      "muji.com"
+      "mtv.com"
     ],
     "mulesoft.com": [
       "programmableweb.com"
     ],
-    "musthird.com": [
-      "airbnb.com",
-      "airbnb.co.uk",
-      "airbnb.ca"
+    "murdoch-website-001.azurewebsites.net": [
+      "murdoch.edu.au"
+    ],
+    "mxcdn.net": [
+      "giga.de",
+      "hamburg.de",
+      "kicker.de"
+    ],
+    "mxfwdredir.com": [
+      "correiobraziliense.com.br"
+    ],
+    "mxptint.net": [
+      "president.jp",
+      "gumtree.co.za",
+      "yahoo.com"
     ],
-    "mxapis.com": [
-      "localbitcoins.com"
+    "mxradon.com": [
+      "mygreatlearning.com"
     ],
-    "mxplay.com": [
-      "mxplayer.in"
+    "myaudience.de": [
+      "telekom.com"
     ],
     "myfinance.com": [
-      "moneycrashers.com"
+      "zdnet.com",
+      "gamespot.com",
+      "cnet.com"
     ],
-    "mykhel.com": [
-      "oneindia.com"
+    "mygovv4-webchat.azurewebsites.net": [
+      "my.gov.au"
     ],
-    "myopenads.com": [
-      "channelmyanmar.org"
+    "myjscript.com": [
+      "qaynarinfo.az",
+      "qafqazinfo.az"
     ],
-    "myshopify.com": [
-      "eero.com",
-      "iqair.com"
+    "mymyads.net": [
+      "jkforum.net"
     ],
-    "myvisualiq.net": [
-      "amazon.com",
-      "samsung.com",
-      "walmart.com"
+    "mynetreklam.com": [
+      "mynet.com"
     ],
-    "myvoicenation.com": [
-      "miaminewtimes.com",
-      "westword.com"
+    "myopenads.com": [
+      "channelmyanmar.org"
     ],
-    "n1272serv.xyz": [
-      "youporn.com"
+    "myvisualiq.net": [
+      "zipcar.com",
+      "cyclingnews.com",
+      "techradar.com"
     ],
     "n2.hk": [
       "discuss.com.hk"
     ],
+    "nadavi.net": [
+      "e-katalog.ru"
+    ],
+    "najva.com": [
+      "arga-mag.com",
+      "khabaronline.ir",
+      "rtl-theme.com"
+    ],
     "nakamasweb.com": [
       "lectortmo.com"
     ],
     "nakanohito.jp": [
-      "backlog.com",
-      "freee.co.jp",
-      "diamond.jp"
+      "suruga-ya.jp",
+      "tokyo-np.co.jp",
+      "jmty.jp"
+    ],
+    "nalog.ru": [
+      "nalog.gov.ru"
     ],
     "namebrightstatic.com": [
       "namebright.com"
     ],
     "nanda.vn": [
-      "zingnews.vn",
-      "laodong.vn",
-      "vtv.vn"
-    ],
-    "nanigans.com": [
-      "llbean.com",
-      "snhu.edu"
+      "tuoitre.vn",
+      "soha.vn",
+      "baomoi.com"
     ],
     "nanorep.co": [
       "icicibank.com",
       "lastpass.com",
-      "nordvpn.com"
+      "toastmasters.org"
+    ],
+    "nanorep.com": [
+      "icicibank.com",
+      "lastpass.com",
+      "toastmasters.org"
     ],
     "nanosemantics.ru": [
       "hh.ru"
     ],
+    "narrativ.com": [
+      "ulta.com",
+      "polygon.com",
+      "realself.com"
+    ],
     "narrative.io": [
-      "bigthink.com",
-      "iflscience.com",
-      "247wallst.com"
+      "president.jp",
+      "refinery29.com",
+      "fantasypros.com"
+    ],
+    "nate.com": [
+      "lotteon.com",
+      "jobkorea.co.kr",
+      "ssg.com"
     ],
     "nativendo.de": [
-      "freenet.de",
       "giga.de",
-      "morgenpost.de"
+      "stuttgarter-zeitung.de",
+      "freenet.de"
     ],
     "nativeroll.tv": [
-      "yaplakal.com",
-      "adme.ru",
-      "brightside.me"
+      "rosbalt.ru",
+      "regnum.ru"
+    ],
+    "nativery.com": [
+      "adnkronos.com"
     ],
     "navdmp.com": [
       "magazineluiza.com.br",
-      "techtudo.com.br",
-      "thenewslens.com"
+      "caracol.com.co",
+      "techtudo.com.br"
     ],
     "naver.com": [
-      "op.gg",
-      "unity.com",
-      "flaticon.com"
+      "movavi.com",
+      "modoo.at",
+      "interpark.com"
     ],
     "nbc.com": [
-      "bravotv.com"
+      "usanetwork.com"
     ],
-    "nbcuni.com": [
-      "cnbc.com",
+    "nbcnews.com": [
+      "telemundo.com",
+      "post-gazette.com"
+    ],
+    "nbcnewyork.com": [
+      "nbcphiladelphia.com"
+    ],
+    "nbcsports.com": [
+      "today.com",
+      "nbcnews.com"
+    ],
+    "nbcuas.com": [
+      "telemundo.com",
       "nbcnews.com",
       "today.com"
     ],
+    "nbcuni.com": [
+      "fandango.com",
+      "msnbc.com",
+      "golfchannel.com"
+    ],
     "nc0.co": [
-      "ensighten.com",
-      "williamhill.com"
+      "aljazeera.com",
+      "aljazeera.net",
+      "vueling.com"
+    ],
+    "ncclick.co.kr": [
+      "domeggook.com"
     ],
     "nch.com.au": [
       "nchsoftware.com"
     ],
+    "neimanmarcus.com": [
+      "bergdorfgoodman.com"
+    ],
     "neodatagroup.com": [
-      "ilfattoquotidiano.it"
+      "fanpage.it"
     ],
-    "neppa-dsp-ad.com": [
-      "cityheaven.net"
+    "nessainy.net": [
+      "asianembed.com"
     ],
     "netdna-ssl.com": [
       "dazeddigital.com"
     ],
-    "netmng.com": [
-      "lowes.com",
-      "mimecast.com",
-      "geotrust.com"
+    "netigate.se": [
+      "thieme.de"
+    ],
+    "netizen.co": [
+      "247wallst.com",
+      "newsmax.com",
+      "americanthinker.com"
+    ],
+    "netlify.com": [
+      "hexo.io",
+      "netlify.app"
     ],
-    "netrk.net": [
-      "dkb.de"
+    "netmng.com": [
+      "lls.org",
+      "avaya.com",
+      "simon.com"
     ],
     "networkad.net": [
       "eksisozluk.com"
     ],
+    "networksolutions.com": [
+      "register.com"
+    ],
+    "neulion.com": [
+      "nba.com"
+    ],
+    "new-programmatic.com": [
+      "999.md"
+    ],
     "newaircloud.com": [
       "workercn.cn"
     ],
-    "newmedia.az": [
-      "oxu.az",
-      "qafqazinfo.az",
-      "report.az"
-    ],
     "newrelic.com": [
-      "afternic.com"
+      "colorado.edu",
+      "democracynow.org",
+      "abc13.com"
     ],
     "news-network.ru": [
       "vazhno.ru"
@@ -15810,217 +17980,302 @@
     "news.cn": [
       "xinhuanet.com"
     ],
+    "news.com.au": [
+      "skynews.com.au"
+    ],
+    "newsbreak.com": [
+      "newsbreakapp.com"
+    ],
+    "newsbreakapp.com": [
+      "newsbreak.com"
+    ],
     "newscgp.com": [
-      "marketwatch.com",
       "nypost.com",
-      "thesun.co.uk"
+      "biblegateway.com",
+      "news.com.au"
     ],
-    "newshub.id": [
-      "liputan6.com"
+    "newscorpaustralia.com": [
+      "skynews.com.au"
     ],
     "newsmaxwidget.com": [
-      "thehill.com",
-      "newsmax.com"
+      "washingtontimes.com",
+      "newsmax.com",
+      "crooksandliars.com"
     ],
     "newsmemory.com": [
       "abqjournal.com"
     ],
-    "newsobserver.com": [
-      "mcclatchydc.com"
+    "newsnow.io": [
+      "canberratimes.com.au"
+    ],
+    "newsochub.com": [
+      "bastillepost.com"
+    ],
+    "newsquestdigital.co.uk": [
+      "heraldscotland.com"
+    ],
+    "newsroom.bi": [
+      "laprensagrafica.com",
+      "periodistadigital.com",
+      "tycsports.com"
     ],
-    "newyorker.com": [
-      "wired.com",
-      "vanityfair.com",
-      "vogue.com"
+    "newswatch.co.jp": [
+      "daily.co.jp"
+    ],
+    "newsweek.com": [
+      "ibtimes.com"
+    ],
+    "newtalk.tw": [
+      "nownews.com"
     ],
     "newzit.com": [
-      "dailymail.co.uk",
-      "metro.co.uk"
+      "dailystar.co.uk",
+      "dailymail.co.uk"
     ],
     "nextclick.pl": [
-      "joemonster.org"
+      "demotywatory.pl"
+    ],
+    "nextgov.com": [
+      "defenseone.com",
+      "govexec.com"
+    ],
+    "nextmillmedia.com": [
+      "advfn.com",
+      "kitco.com"
     ],
-    "nextelection.app": [
-      "scoop.co.nz"
+    "nfcube.com": [
+      "harpercollins.com"
     ],
     "ngpvan.com": [
-      "ewg.org",
       "ucsusa.org",
-      "audubon.org"
+      "ewg.org",
+      "plannedparenthood.org"
     ],
     "ngs.ru": [
-      "fontanka.ru"
+      "e1.ru"
     ],
-    "nicequest.com": [
-      "cadenaser.com"
+    "nice-incontact.com": [
+      "asq.org"
     ],
-    "nikon-cdn.com": [
-      "nikonusa.com"
+    "nikecloud.com": [
+      "nike.com"
     ],
-    "nikonsso.com": [
+    "nikon-cdn.com": [
       "nikonusa.com"
     ],
     "nimbleswan.io": [
-      "sharethis.com",
-      "skimlinks.com"
+      "skimlinks.com",
+      "whitney.org",
+      "sharethis.com"
     ],
     "ninahale.net": [
-      "uhc.com"
+      "uhc.com",
+      "myuhc.com"
     ],
     "nine.com.au": [
-      "smh.com.au",
-      "theage.com.au",
-      "businessinsider.com.au"
+      "drive.com.au",
+      "domain.com.au",
+      "ninemsn.com.au"
+    ],
+    "ning.com": [
+      "onfeetnation.com"
+    ],
+    "noclef.com": [
+      "gratowin-casino.com"
     ],
-    "njih.net": [
-      "adidas.com"
+    "nofraud.com": [
+      "palm.com"
+    ],
+    "nordot.jp": [
+      "nordot.app"
+    ],
+    "nordvpn.com": [
+      "nordaccount.com"
     ],
     "norstatsurveys.com": [
       "vg.no"
     ],
-    "norton.com": [
-      "informationweek.com"
-    ],
     "nosto.com": [
-      "gymshark.com",
+      "beatport.com",
       "fashionnova.com",
-      "jomashop.com"
+      "gymshark.com"
     ],
     "notifyvisitors.com": [
       "axisbank.com",
       "1mg.com"
     ],
     "noxgroup.com": [
-      "bignox.com"
+      "noxinfluencer.com"
     ],
     "nperf.com": [
       "ovh.net"
     ],
-    "npo.nl": [
-      "nos.nl"
-    ],
-    "npohosting.nl": [
-      "nos.nl"
+    "npr.org": [
+      "mprnews.org",
+      "westword.com"
     ],
     "nr-data.net": [
-      "chaturbate.com",
-      "instructure.com",
-      "sciencedirect.com"
+      "ucsusa.org",
+      "iit.edu",
+      "motherless.com"
     ],
-    "nsaudience.pl": [
-      "interia.pl"
+    "nrich.ai": [
+      "gehealthcare.com",
+      "walkme.com",
+      "d2l.com"
+    ],
+    "ns8ds.com": [
+      "netmarketshare.com"
+    ],
+    "nsm-corp.com": [
+      "worksmobile.com",
+      "jobkorea.co.kr"
+    ],
+    "nsp.gov.in": [
+      "scholarships.gov.in"
     ],
     "ntnu.edu": [
       "ntnu.no"
     ],
-    "ntvk1.ru": [
-      "aif.ru"
+    "nuance.com": [
+      "vodafone.co.uk",
+      "vans.com",
+      "thenorthface.com"
+    ],
+    "nudatasecurity.com": [
+      "expediapartnercentral.com"
     ],
     "nuggad.net": [
-      "iefimerida.gr"
+      "slate.fr"
+    ],
+    "nui.media": [
+      "pmi.org",
+      "asce.org",
+      "harpers.org"
     ],
-    "nxtck.com": [
-      "newegg.com"
+    "nwmgroups.hu": [
+      "origo.hu"
+    ],
+    "nyc3.cdn.digitaloceanspaces.com": [
+      "news-journalonline.com",
+      "desertsun.com",
+      "desmoinesregister.com"
+    ],
+    "nypost.com": [
+      "pagesix.com"
+    ],
+    "nytrng.com": [
+      "chewy.com",
+      "dhgate.com"
     ],
     "o-s.io": [
-      "souq.com",
-      "daraz.pk"
+      "konga.com",
+      "tatacliq.com"
     ],
-    "o333o.com": [
-      "hdsex.org"
+    "o2u.jp": [
+      "rocketnews24.com",
+      "backlog.com"
+    ],
+    "o3ae.net": [
+      "potterybarn.com"
+    ],
+    "o9trf8.net": [
+      "te.com"
     ],
-    "oadz.com": [
-      "qiku.com"
+    "oackoubs.com": [
+      "cima-club.cc"
     ],
     "ocdn.eu": [
       "onet.pl",
+      "blick.ch",
       "blic.rs"
     ],
-    "octclck.xyz": [
-      "radikal.ru"
-    ],
-    "octivid.com": [
-      "alaraby.co.uk"
+    "octobird.com": [
+      "7ba.info"
     ],
-    "oddcast.com": [
-      "washingtonsharedparenting.com"
+    "octogonehb.com": [
+      "elcomercio.com"
     ],
     "odoocdn.com": [
       "odoo.com"
     ],
+    "official-coupons.com": [
+      "carters.com",
+      "gymshark.com",
+      "boohoo.com"
+    ],
+    "official-deals.co.uk": [
+      "carters.com",
+      "gymshark.com",
+      "boohoo.com"
+    ],
     "offlinx.com": [
       "indigo.ca"
     ],
     "ojrq.net": [
-      "shutterstock.com",
-      "lenovo.com",
-      "hostgator.com"
+      "telestream.net",
+      "networksolutions.com",
+      "wish.com"
     ],
     "ok.ru": [
-      "narod.ru",
-      "iz.ru",
-      "labirint.ru"
-    ],
-    "okccdn.com": [
-      "okcupid.com"
+      "thairath.co.th",
+      "garant.ru",
+      "subscribe.ru"
     ],
     "okezone.com": [
-      "sindonews.com"
+      "inews.id"
     ],
     "okt.to": [
-      "globalsign.com",
-      "cvent.com",
-      "anu.edu.au"
+      "telestream.net",
+      "snowflake.com",
+      "dreambox.com"
     ],
     "okta.com": [
-      "servicenow.com",
-      "bcg.com",
-      "mgmresorts.com"
+      "fox9.com",
+      "fox10phoenix.com",
+      "fox2detroit.com"
     ],
     "olark.com": [
-      "matterport.com",
-      "microsoft.com",
-      "cloudinary.com"
-    ],
-    "olnl.net": [
-      "kino-teatr.ru"
-    ],
-    "olx-st.com": [
-      "olx.pl",
-      "olx.ua",
-      "olx.in"
-    ],
-    "omchanseyr.com": [
-      "4anime.to"
+      "answersingenesis.org",
+      "wp-rocket.me",
+      "umt.edu"
     ],
-    "omgpm.com": [
-      "gradeup.co"
+    "olmfaberyp.xyz": [
+      "shorturl.at"
     ],
     "omguk.com": [
-      "banggood.com",
-      "newchic.com"
+      "which.co.uk",
+      "banggood.com"
+    ],
+    "omnidesk.ru": [
+      "ispsystem.com"
     ],
     "omniscientai.com": [
-      "edh.tw"
+      "edh.tw",
+      "icook.tw"
     ],
     "omnitagjs.com": [
-      "imgur.com",
-      "dailymail.co.uk",
-      "salon.com"
+      "jamaica-gleaner.com",
+      "techadvisor.com",
+      "dotesports.com"
     ],
     "omny.fm": [
-      "foxnews.com",
-      "haaretz.com",
-      "geekwire.com"
+      "rabbitroom.com",
+      "houstonchronicle.com",
+      "foxnews.com"
     ],
     "omtrdc.net": [
-      "amazon.com",
-      "virginmedia.com",
-      "digicert.com"
+      "fivethirtyeight.com",
+      "paloaltonetworks.com",
+      "latercera.com"
     ],
     "onaudience.com": [
-      "khaberni.com",
-      "alwakeelnews.com"
+      "president.jp",
+      "parasut.com",
+      "scoopwhoop.com"
+    ],
+    "oncehub.com": [
+      "clickcertain.com"
     ],
     "oncueapp.appspot.com": [
       "pewtrusts.org"
@@ -16028,39 +18283,56 @@
     "one.gov.hk": [
       "www.gov.hk"
     ],
-    "onecms.io": [
-      "eatingwell.com"
-    ],
     "onecount.net": [
-      "newrepublic.com",
       "triblive.com"
     ],
     "oneindia.com": [
-      "filmibeat.com",
-      "goodreturns.in"
+      "goodreturns.in",
+      "filmibeat.com"
     ],
     "onelink.me": [
-      "appsflyer.com",
-      "farfetch.com"
+      "fox9.com",
+      "calm.com",
+      "fox10phoenix.com"
+    ],
+    "oneplus.net": [
+      "oneplus.com"
+    ],
+    "onesdata.com": [
+      "tower.jp"
     ],
     "onesignal.com": [
-      "elconfidencial.com"
+      "wikidot.com",
+      "techinasia.com",
+      "dikaiologitika.gr"
     ],
     "onet.pl": [
-      "blic.rs"
+      "blick.ch",
+      "blic.rs",
+      "pulse.ng"
+    ],
+    "onetag-sys.com": [
+      "petapixel.com",
+      "regnum.ru",
+      "dealmoon.com"
+    ],
+    "onetrust.com": [
+      "pearsonvue.com",
+      "nec.com",
+      "permutive.com"
     ],
     "onevision.com.tw": [
       "ltn.com.tw",
-      "chinatimes.com",
-      "hinet.net"
+      "ebc.net.tw",
+      "cw.com.tw"
     ],
     "online-metrix.net": [
-      "fidelity.com",
-      "citi.com",
-      "discover.com"
+      "celine.com",
+      "canadiantire.ca",
+      "cibc.com"
     ],
-    "onlyred.net": [
-      "rednet.cn"
+    "onnetwork.tv": [
+      "demotywatory.pl"
     ],
     "onrcx.com": [
       "intel.com"
@@ -16069,28 +18341,40 @@
       "popsugar.com"
     ],
     "onthe.io": [
-      "inquirer.net",
+      "tass.ru",
       "express.co.uk",
-      "rbc.ru"
+      "briefly.co.za"
+    ],
+    "ontraport.net": [
+      "ontraport.com"
+    ],
+    "ooyala.com": [
+      "jfklibrary.org"
+    ],
+    "opascp.com": [
+      "fastcomet.com",
+      "meltwater.com"
     ],
-    "ooyala.com": [
-      "dalet.com"
+    "opcmarkets.com": [
+      "oilprice.com"
     ],
     "opecloud.com": [
-      "businessinsider.de",
-      "sabq.org",
-      "kooora.com"
+      "president.jp",
+      "linternaute.com",
+      "jiji.com"
     ],
-    "open.com.cn": [
-      "imooc.com"
-    ],
-    "openstat.net": [
-      "aif.ru"
+    "openshiftapps.com": [
+      "telus.com"
     ],
     "openx.net": [
-      "yahoo.com",
-      "amazon.com",
-      "msn.com"
+      "president.jp",
+      "isbank.com.tr",
+      "abcactionnews.com"
+    ],
+    "opera.com": [
+      "fastcompany.com",
+      "militarytimes.com",
+      "newsweek.com"
     ],
     "opinionstage.com": [
       "nobelprize.org"
@@ -16103,76 +18387,113 @@
     ],
     "optimix.cn": [
       "bshare.cn",
-      "foodmate.net",
-      "xhby.net"
+      "1905.com",
+      "gmw.cn"
     ],
     "optimizely.com": [
       "bbc.com",
-      "bitly.com",
-      "xbox.com"
+      "elastic.co",
+      "economist.com"
     ],
     "optimove.events": [
       "jdsports.com"
     ],
+    "optnx.com": [
+      "privatehomeclips.com"
+    ],
+    "optyruntchan.com": [
+      "extreme-down.plus",
+      "opensubtitles.org"
+    ],
     "oracle.com": [
       "addthis.com",
-      "moat.com",
-      "dyn.com"
+      "moat.com"
     ],
     "oraclecloud.com": [
-      "nationalacademies.org"
+      "jcp.org",
+      "dollartree.com",
+      "brother-usa.com"
     ],
-    "oracleimg.com": [
-      "oracle.com",
-      "moat.com",
-      "dyn.com"
+    "oracleinfinity.io": [
+      "ethz.ch",
+      "spirit.com"
     ],
     "orange-business.com": [
       "orange.com"
     ],
-    "orangeads.fr": [
-      "orange.fr"
+    "orange.fr": [
+      "118712.fr"
     ],
     "orbita.cloud": [
       "redcrossblood.org"
     ],
+    "orcid.org": [
+      "dovepress.com"
+    ],
+    "ordu.az": [
+      "qafqazinfo.az"
+    ],
     "oreillystatic.com": [
       "oreilly.com"
     ],
+    "oribi.io": [
+      "techstars.com",
+      "uea.ac.uk",
+      "le.ac.uk"
+    ],
+    "origo.hu": [
+      "videa.hu"
+    ],
+    "os.uk": [
+      "visitscotland.com"
+    ],
     "osano.com": [
-      "ocregister.com",
-      "figma.com",
-      "dailynews.com"
+      "dailybreeze.com",
+      "leagueoflegends.com",
+      "mailgun.com"
     ],
-    "otaserve.net": [
-      "sankakucomplex.com"
+    "ostrichesica.com": [
+      "vpnmentor.com",
+      "fiverr.com"
     ],
     "otm-r.com": [
-      "liveinternet.ru",
-      "kp.ru",
-      "rg.ru"
+      "radikal.ru",
+      "livejournal.com",
+      "fontanka.ru"
     ],
-    "outbrain.com": [
-      "msn.com",
-      "cnn.com",
-      "sourceforge.net"
+    "otto.de": [
+      "chip.de"
     ],
-    "outlookhindi.com": [
-      "outlookindia.com"
+    "oup.com": [
+      "oed.com"
     ],
-    "outstream.today": [
-      "academic.ru"
+    "outbrain.com": [
+      "abcactionnews.com",
+      "nra.org",
+      "ole.com.ar"
     ],
     "ow5a.net": [
       "norton.com"
     ],
     "owneriq.net": [
+      "president.jp",
       "lycos.com",
-      "msi.com",
-      "scholastic.com"
+      "msi.com"
     ],
     "ownpage.fr": [
-      "20minutes.fr"
+      "slate.fr",
+      "vogue.fr"
+    ],
+    "oxiapps.com": [
+      "aloyoga.com"
+    ],
+    "oxybupav.xyz": [
+      "newsbtc.com"
+    ],
+    "p2r14.com": [
+      "foxnews.com",
+      "decider.com",
+      "indy100.com"
     ],
     "paddle.com": [
       "snapwidget.com"
@@ -16181,229 +18502,357 @@
       "padlet.com"
     ],
     "pages02.net": [
-      "prestashop.com",
-      "bbt.com"
+      "duke-energy.com",
+      "truist.com",
+      "sherwin-williams.com"
     ],
     "pages03.net": [
-      "smithsonianmag.com",
-      "turkishairlines.com",
-      "marketingprofs.com"
+      "marketingprofs.com",
+      "unicefusa.org",
+      "labcorp.com"
     ],
     "pages04.net": [
-      "scientificamerican.com",
-      "techsmith.com"
+      "qut.edu.au"
+    ],
+    "pages05.net": [
+      "rescue.org",
+      "walmart.com.mx",
+      "uline.com"
     ],
     "pages06.net": [
       "ibtimes.co.uk"
     ],
     "pages07.net": [
-      "asahi.com"
+      "asahi.com",
+      "tower.jp"
     ],
     "pages08.net": [
-      "military.com"
+      "military.com",
+      "spie.org"
     ],
-    "panet.eu": [
-      "panet.co.il"
+    "pagesense.io": [
+      "topuniversities.com",
+      "smallbiztrends.com",
+      "zoho.com"
+    ],
+    "painaltube.com": [
+      "efukt.com"
+    ],
+    "papercups.io": [
+      "everforo.com",
+      "freeforums.org"
     ],
     "pardot.com": [
-      "cpanel.net",
-      "slack.com",
-      "tandfonline.com"
+      "president.jp",
+      "piano.io",
+      "guinnessworldrecords.com"
     ],
     "parsely.com": [
-      "bloomberg.com",
-      "usatoday.com",
-      "cnbc.com"
+      "abcactionnews.com",
+      "heraldscotland.com",
+      "viacomcbs.com"
     ],
     "parsons.edu": [
       "newschool.edu"
     ],
-    "particularaudience.com": [
-      "jbhifi.com.au"
+    "partnersrc.com": [
+      "sendpulse.com"
     ],
-    "patreon.com": [
-      "warcraftlogs.com"
+    "pastelink.net": [
+      "4mark.net"
     ],
-    "paxful.com": [
-      "informationweek.com"
+    "pathfactory.com": [
+      "druva.com",
+      "blackboard.com",
+      "leanplum.com"
     ],
-    "paycom.com": [
-      "paycomonline.com"
+    "patreon.com": [
+      "marijuanamoment.net",
+      "w3resource.com"
     ],
     "paypal.com": [
-      "mercari.com",
-      "smashballoon.com",
-      "doxygen.nl"
+      "fossil.com",
+      "famethemes.com",
+      "norton.com"
+    ],
+    "paypalobjects.com": [
+      "famethemes.com",
+      "magazine.store",
+      "zazzle.com"
+    ],
+    "paystack.com": [
+      "premiumtimesng.com"
     ],
     "pb.ua": [
       "privat24.ua"
     ],
     "pbbl.co": [
-      "hilton.com",
-      "chron.com",
-      "fool.com"
+      "customink.com",
+      "madewell.com",
+      "anthropologie.com"
+    ],
+    "pbcdn.in": [
+      "policybazaar.com"
+    ],
+    "pbs.org": [
+      "pbskids.org"
+    ],
+    "pbskids.org": [
+      "pbs.org"
     ],
     "pbstck.com": [
-      "ldoceonline.com"
+      "ccm.net",
+      "laposte.fr"
     ],
-    "pc.com.cn": [
-      "pcauto.com.cn"
+    "pcone.com.tw": [
+      "buy123.com.tw"
     ],
-    "pcmag.com": [
-      "techspot.com",
-      "slashgear.com",
-      "betanews.com"
+    "pdnegocios.cl": [
+      "emol.com"
     ],
-    "pconline.com.cn": [
-      "pcbaby.com.cn",
-      "pchouse.com.cn",
-      "pcauto.com.cn"
+    "pdst.fm": [
+      "edmunds.com"
     ],
     "pdvacde.com": [
       "rezka.ag",
-      "baskino.me"
-    ],
-    "pelcro.com": [
-      "insidehighered.com",
-      "miaminewtimes.com"
+      "trafmag.com",
+      "kinokrad.co"
     ],
-    "pelmorex.com": [
-      "theweathernetwork.com"
+    "pdy5.net": [
+      "williams-sonoma.com"
     ],
     "pendo.io": [
-      "sciencedirect.com",
-      "thelancet.com",
-      "cell.com"
-    ],
-    "people.com.cn": [
-      "people.cn",
-      "peopledaily.com.cn"
+      "junglescout.com",
+      "amazon.jobs",
+      "moz.com"
     ],
-    "percycle.com": [
-      "magazineluiza.com.br"
-    ],
-    "performancefirst.jp": [
-      "moppy.jp"
+    "penguin.com": [
+      "penguinrandomhouse.com"
     ],
     "performi.com": [
       "fitsmallbusiness.com"
     ],
-    "permutive.app": [
-      "theverge.com",
-      "vox.com",
-      "nymag.com"
+    "perimeterx.net": [
+      "worthpoint.com",
+      "docsity.com"
+    ],
+    "permutive.com": [
+      "bicycling.com",
+      "tasty.co",
+      "fox4kc.com"
+    ],
+    "persosa.com": [
+      "daz3d.com"
     ],
     "petametrics.com": [
-      "telegraph.co.uk",
-      "scmp.com",
-      "thestar.com"
+      "si.com",
+      "fashionista.com",
+      "thespec.com"
     ],
-    "pgtb.me": [
-      "hawaiinewsnow.com"
+    "pfizer.com": [
+      "breakthroughs.com"
     ],
-    "philips.co.uk": [
-      "philips.com"
+    "pgtb.me": [
+      "hawaiinewsnow.com",
+      "nbc12.com"
     ],
-    "philips.com": [
-      "philips-hue.com"
+    "phaserep.com": [
+      "khan.co.kr"
     ],
     "photorank.me": [
       "vistaprint.com",
-      "jdsports.com",
-      "coach.com"
+      "maccosmetics.com",
+      "jdsports.com"
+    ],
+    "phywi.org": [
+      "challenges.fr"
+    ],
+    "pi-rate.com.au": [
+      "newcastle.edu.au"
     ],
     "piano.io": [
-      "japantimes.co.jp",
-      "canberratimes.com.au"
+      "wiwo.de",
+      "calgaryherald.com",
+      "financialpost.com"
+    ],
+    "pico.tools": [
+      "amny.com",
+      "clevescene.com",
+      "riverfronttimes.com"
+    ],
+    "pimg.tw": [
+      "pixnet.net"
     ],
     "pinduoduo.com": [
       "yangkeduo.com"
     ],
-    "pingan.com": [
-      "autohome.com.cn"
+    "pingan.com.cn": [
+      "pingan.com"
     ],
     "pinterest.com": [
-      "godaddy.com",
-      "spotify.com",
-      "etsy.com"
+      "smore.com",
+      "9to5google.com",
+      "sovrn.com"
+    ],
+    "piojm.tech": [
+      "bigo.tv"
     ],
-    "piri.net": [
-      "yenisafak.com"
+    "pipedrive.com": [
+      "shiprocket.in"
     ],
     "pitchfork.com": [
-      "wired.com",
-      "newyorker.com",
-      "vanityfair.com"
+      "ionicframework.com"
+    ],
+    "pivotal.io": [
+      "spring.io"
     ],
     "piwik.pro": [
-      "aarp.org",
-      "xs4all.nl",
-      "simplesite.com"
+      "cbs.nl",
+      "livechat.com",
+      "annefrank.org"
+    ],
+    "piwikpro.com": [
+      "fitchratings.com"
+    ],
+    "pix.pub": [
+      "slickdeals.net"
+    ],
+    "pixelmarcado-2l44sujizq-ew.a.run.app": [
+      "elpais.com"
+    ],
+    "pixfs.net": [
+      "pixnet.net",
+      "0rz.tw"
+    ],
+    "pixfuture.com": [
+      "healthaffairs.org"
     ],
     "pixlee.co": [
-      "puma.com",
-      "michaels.com"
+      "ugg.com",
+      "boisestate.edu",
+      "puma.com"
     ],
     "pixlee.com": [
       "puma.com",
-      "michaels.com",
-      "forever21.com"
+      "ugg.com",
+      "boisestate.edu"
     ],
     "pixnet.cc": [
       "pixnet.net"
     ],
     "placed.com": [
-      "simon.com"
+      "simon.com",
+      "premiumoutlets.com"
     ],
     "planalto.gov.br": [
       "www.gov.br"
     ],
+    "platformrijksoverheid.nl": [
+      "government.nl"
+    ],
+    "plausible.io": [
+      "techdirt.com",
+      "redbull.com"
+    ],
+    "plavxml.com": [
+      "optus.com.au"
+    ],
     "playbuzz.com": [
-      "perezhilton.com"
+      "chron.com",
+      "seattlepi.com"
+    ],
+    "playfamily.ru": [
+      "okko.tv"
+    ],
+    "playground.xyz": [
+      "the-sun.com",
+      "thescottishsun.co.uk",
+      "thesun.co.uk"
+    ],
+    "playmakerservices.com": [
+      "today.com",
+      "nbcnews.com"
     ],
     "playreplay.me": [
-      "yaplakal.com"
+      "regnum.ru"
     ],
     "playreplay.net": [
-      "yaplakal.com"
+      "regnum.ru"
+    ],
+    "plerdy.com": [
+      "ucoz.ru",
+      "bdnews24.com"
     ],
     "plezi.co": [
       "we-are-adot.com"
     ],
     "plista.com": [
       "freenet.de",
-      "9news.com.au",
-      "nine.com.au"
+      "1prime.ru",
+      "ninemsn.com.au"
     ],
-    "poemsdeucewee.com": [
-      "kickasstorrents.to"
+    "plu.mx": [
+      "jbc.org",
+      "thelancet.com",
+      "sciencedirect.com"
+    ],
+    "plus500.com": [
+      "metanews.com"
+    ],
+    "pluto.tv": [
+      "tvline.com"
+    ],
+    "pnperf.com": [
+      "boafoda.com"
+    ],
+    "pnstat.com": [
+      "tukif.com",
+      "boafoda.com"
+    ],
+    "podbean.com": [
+      "psychologicalscience.org",
+      "uu.se"
     ],
     "pointmediatracker.com": [
-      "udemy.com",
-      "nerdwallet.com",
+      "zola.com",
+      "society6.com",
       "squareup.com"
     ],
     "polarbyte.com": [
       "collinsdictionary.com"
     ],
-    "poll-maker.com": [
-      "eztv.io"
+    "politico.com": [
+      "politico.eu"
     ],
     "poll.fm": [
       "crowdsignal.com"
     ],
-    "poool.fr": [
-      "ladepeche.fr",
-      "sudouest.fr"
+    "pollinator.me": [
+      "sproutsocial.com"
+    ],
+    "popads.net": [
+      "wplocker.com"
     ],
     "popin.cc": [
-      "idntimes.com",
-      "itmedia.co.jp",
+      "mothership.sg",
+      "doda.jp",
       "edh.tw"
     ],
+    "popkit.club": [
+      "seositecheckup.com"
+    ],
+    "popmechanic.ru": [
+      "webinar.ru",
+      "uchi.ru",
+      "999.md"
+    ],
     "popt.in": [
-      "poynter.org",
-      "alphonso.tv"
+      "freshworks.com",
+      "bgu.ac.il",
+      "freshdesk.com"
+    ],
+    "popupmaker.com": [
+      "bcorporation.net"
     ],
     "port.hu": [
       "index.hu"
@@ -16411,146 +18860,217 @@
     "portalinmobiliario.com": [
       "mercadolibre.cl"
     ],
+    "portoutsid.xyz": [
+      "cuevana3.io"
+    ],
     "postaffiliatepro.com": [
-      "pandasecurity.com",
-      "solarwinds.com"
+      "bookmark.com",
+      "motionarray.com",
+      "extendthemes.com"
+    ],
+    "postimees.ee": [
+      "tvnet.lv"
+    ],
+    "postquare.com": [
+      "alwafd.news"
     ],
     "postrelease.com": [
-      "reuters.com",
-      "usnews.com",
-      "sfgate.com"
+      "crisistextline.org",
+      "spin.com",
+      "wavy.com"
     ],
-    "powerlinks.com": [
-      "msn.com",
-      "digicert.com",
-      "imgur.com"
+    "powerad.ai": [
+      "discovermagazine.com",
+      "bangordailynews.com"
     ],
     "powerreviews.com": [
-      "citi.com"
+      "partycity.com"
+    ],
+    "powersportsid.com": [
+      "carid.com"
+    ],
+    "powr.io": [
+      "packtpub.com"
     ],
     "pplive.com": [
       "pptv.com"
     ],
     "prcdn.co": [
-      "nationalpost.com",
-      "pressreader.com",
-      "vancouversun.com"
+      "ottawacitizen.com",
+      "montrealgazette.com",
+      "calgaryherald.com"
+    ],
+    "prdredir.com": [
+      "banggood.com"
+    ],
+    "preezie-analytics-hub.azurewebsites.net": [
+      "guitarcenter.com"
+    ],
+    "premier.one": [
+      "matchtv.ru"
     ],
     "prensaiberica.es": [
       "sport.es",
       "elperiodico.com"
     ],
+    "pressekompass.net": [
+      "t-online.de",
+      "abendblatt.de",
+      "handelsblatt.com"
+    ],
     "prfct.co": [
-      "theglobeandmail.com",
-      "lifehack.org",
-      "artnet.com"
+      "artnet.com",
+      "convinceandconvert.com",
+      "itnews.com.au"
     ],
-    "priceline.com": [
-      "informationweek.com"
+    "pricelib.ru": [
+      "livelib.ru"
     ],
     "primead.jp": [
       "allabout.co.jp"
     ],
     "primecaster.net": [
-      "tenki.jp",
+      "excite.co.jp",
       "infoseek.co.jp"
     ],
-    "printful.com": [
-      "informationweek.com"
+    "primis.tech": [
+      "worldpopulationreview.com",
+      "dotesports.com",
+      "newworldfans.com"
     ],
     "prisasd.com": [
       "elpais.com"
     ],
-    "prismamedia.com": [
-      "programme-tv.net"
+    "prismaconnect.fr": [
+      "programme-tv.net",
+      "capital.fr"
+    ],
+    "privacy-mgmt.com": [
+      "kinja.com",
+      "dejure.org",
+      "businessinsider.de"
     ],
     "privacymanager.io": [
-      "theodysseyonline.com",
-      "diepresse.com"
+      "vrt.be",
+      "abv.bg",
+      "rakutenadvertising.com"
     ],
-    "privally.io": [
+    "privally.global": [
       "colaboraread.com.br"
     ],
-    "privymktg.com": [
-      "myfonts.com",
-      "arabnews.com",
-      "macleans.ca"
-    ],
-    "prixa.net": [
-      "ratopati.com"
+    "privatehomeclips.com": [
+      "pornzog.com"
     ],
-    "prixacdn.net": [
-      "ratopati.com"
+    "privymktg.com": [
+      "morningbrew.com",
+      "fonts.com",
+      "privy.com"
     ],
-    "prlog.org": [
-      "markethive.com"
+    "prnewswire.com": [
+      "lunarcrush.com",
+      "newswire.ca"
     ],
     "pro-market.net": [
-      "sourceforge.net",
-      "time.com",
-      "slashdot.org"
+      "wsoctv.com",
+      "bravenet.com",
+      "lamag.com"
     ],
     "prod-ajc-proxy-connext.azurewebsites.net": [
-      "ajc.com",
-      "daytondailynews.com"
+      "daytondailynews.com",
+      "ajc.com"
     ],
     "prod-anchorage-proxy-connext.azurewebsites.net": [
       "adn.com"
     ],
+    "prod-api-coreapi.azurewebsites.net": [
+      "guitarcenter.com"
+    ],
+    "prod-cedarrapids-proxy-connext.azurewebsites.net": [
+      "thegazette.com"
+    ],
+    "prod-columbian-proxy-connext.azurewebsites.net": [
+      "columbian.com"
+    ],
     "prod-cosprings-proxy-connext.azurewebsites.net": [
       "gazette.com"
     ],
     "prod-dfm-proxy-connext.azurewebsites.net": [
-      "mercurynews.com",
-      "denverpost.com"
+      "denverpost.com",
+      "dailybreeze.com",
+      "eastbaytimes.com"
     ],
-    "prod-mng-proxy-connext.azurewebsites.net": [
-      "ocregister.com",
-      "bostonherald.com",
-      "twincities.com"
+    "prod-itex-proxy-connext.azurewebsites.net": [
+      "irishexaminer.com"
     ],
     "prod-newsday-proxy-connext.azurewebsites.net": [
       "newsday.com"
     ],
+    "prod-nola-proxy-connext.azurewebsites.net": [
+      "theadvocate.com",
+      "nola.com"
+    ],
     "prod-review-journal-proxy-connext.azurewebsites.net": [
       "reviewjournal.com"
     ],
+    "prod-saltwire-proxy-connext.azurewebsites.net": [
+      "saltwire.com"
+    ],
     "prod-smi-proxy-connext.azurewebsites.net": [
       "pressdemocrat.com"
     ],
-    "prod-spokesman-proxy-connext.azurewebsites.net": [
-      "spokesman.com"
-    ],
     "prod-tampabay-proxy-connext.azurewebsites.net": [
       "tampabay.com"
     ],
-    "producebreed.com": [
-      "1377x.to"
+    "prodmp.ru": [
+      "eldorado.ru",
+      "mi.com",
+      "rutube.ru"
     ],
-    "programattik.com": [
-      "hurriyet.com.tr",
-      "milliyet.com.tr",
-      "memurlar.net"
+    "profiledata.co.za": [
+      "businesslive.co.za"
     ],
     "project1service.com": [
       "brazzers.com"
     ],
+    "prolitteris.ch": [
+      "blick.ch"
+    ],
     "prometeo-media-service.com": [
-      "20minutos.es"
+      "20minutos.es",
+      "heraldo.es",
+      "lainformacion.com"
     ],
     "proofpoint.com": [
-      "gulfnews.com",
-      "unh.edu",
-      "weightwatchers.com"
+      "royalcaribbean.com",
+      "wimbledon.com",
+      "blueorigin.com"
     ],
-    "prosumsit.com": [
-      "songatak.com"
+    "propellerclick.com": [
+      "thenetnaija.com"
     ],
-    "provenexpert.com": [
-      "wbs-law.de"
+    "proper.io": [
+      "jamieoliver.com",
+      "nationalinterest.org",
+      "vecteezy.com"
+    ],
+    "propertyguru.com": [
+      "propertyguru.com.sg"
+    ],
+    "protecmedia.com": [
+      "elcolombiano.com"
     ],
     "provenpixel.com": [
-      "shopify.com"
+      "shopify.ca",
+      "shopify.in",
+      "gunbroker.com"
+    ],
+    "provesrc.com": [
+      "snov.io",
+      "herts.ac.uk"
+    ],
+    "providesupport.com": [
+      "islamweb.net",
+      "jigsy.com"
     ],
     "proxad.net": [
       "free.fr"
@@ -16558,203 +19078,282 @@
     "psakdin.co.il": [
       "mako.co.il"
     ],
+    "psimg.com": [
+      "pokerstars.bet"
+    ],
     "pswec.com": [
       "medscape.com"
     ],
+    "pterhearthink.xyz": [
+      "analdin.com"
+    ],
     "ptgncdn.com": [
       "spankbang.com"
     ],
     "pub.network": [
-      "aljazeera.com",
-      "boingboing.net",
-      "realclearpolitics.com"
+      "powerthesaurus.org",
+      "almanac.com",
+      "1001freefonts.com"
     ],
-    "pubble.io": [
-      "teamwork.com"
+    "pubgalaxy.com": [
+      "wccftech.com",
+      "dealmoon.com",
+      "photopea.com"
     ],
-    "publicradio.org": [
-      "marketplace.org"
+    "publicoid.com": [
+      "publico.pt"
+    ],
+    "publift.com": [
+      "qatarliving.com"
     ],
     "publir.com": [
-      "bizpacreview.com"
+      "americanthinker.com"
+    ],
+    "publisherdesk.com": [
+      "washingtonexaminer.com"
     ],
     "publishme.se": [
       "blogg.se"
     ],
     "pubmatic.com": [
-      "amazon.com",
-      "okezone.com",
-      "forbes.com"
-    ],
-    "pubstack.io": [
-      "laposte.fr",
-      "ccm.net",
-      "ldoceonline.com"
+      "president.jp",
+      "isbank.com.tr",
+      "abcactionnews.com"
     ],
     "pulsembed.eu": [
-      "blic.rs"
+      "businessinsider.com.pl",
+      "onet.pl"
+    ],
+    "pulsemediatv.com": [
+      "repubblica.it"
+    ],
+    "punctuations.in": [
+      "cdslindia.com"
+    ],
+    "puntodecompras.com.co": [
+      "elcolombiano.com"
     ],
     "purechat.com": [
-      "wwd.com"
+      "wwd.com",
+      "frost.com",
+      "ttu.edu"
+    ],
+    "purplepatch.online": [
+      "jugantor.com",
+      "jamuna.tv"
     ],
     "push.world": [
-      "banggood.com"
+      "nethouse.ru",
+      "banggood.com",
+      "svpressa.ru"
     ],
-    "pushbird.com": [
-      "sammobile.com"
+    "pushengage.com": [
+      "kotaku.com.au",
+      "prothomalo.com"
     ],
-    "pushe.co": [
-      "digiato.com",
-      "mediaad.org"
+    "pusher.com": [
+      "revjet.com",
+      "syndigo.com",
+      "chroniclelive.co.uk"
     ],
     "pushnami.com": [
       "ibtimes.com",
-      "metacafe.com",
-      "alternet.org"
+      "phoenixnewtimes.com",
+      "beliefnet.com"
+    ],
+    "pushwoosh.com": [
+      "knack.be"
+    ],
+    "pvd.to": [
+      "warbyparker.com"
     ],
     "pvxt.net": [
       "stockx.com"
     ],
-    "px-cloud.net": [
-      "homedepot.com"
-    ],
     "pxf.io": [
-      "fanduel.com"
+      "wish.com",
+      "guitarcenter.com",
+      "bitflyer.com"
+    ],
+    "pymnts.com": [
+      "airtm.com"
     ],
     "pymx5.com": [
-      "thedenverchannel.com",
-      "spokesman.com",
-      "abc15.com"
+      "abcactionnews.com",
+      "wcpo.com",
+      "santafenewmexican.com"
+    ],
+    "qbrick.com": [
+      "regeringen.se"
     ],
     "qchannel03.cn": [
+      "sina.cn",
       "ximalaya.com"
     ],
     "qhupdate.com": [
       "so.com",
       "360kuai.com"
     ],
+    "qichacha.com": [
+      "qcc.com"
+    ],
+    "qiota.com": [
+      "lavoixdunord.fr"
+    ],
     "qiyukf.com": [
-      "to8to.com",
+      "jiguang.cn",
+      "weidian.com",
       "smzdm.com"
     ],
     "qlitics.com": [
       "prothomalo.com",
+      "thequint.com",
       "bloombergquint.com"
     ],
     "qoo10.in": [
       "shopclues.com"
     ],
     "qq.com": [
-      "heytapmobi.com",
-      "douyu.com",
-      "heytapdownload.com"
+      "ems.com.cn",
+      "3dmgame.com",
+      "chinacourt.org"
     ],
     "qqjar.ru": [
-      "manganelo.com",
-      "gogoanime.so"
+      "gogoanime.cm",
+      "f95zone.to"
     ],
     "qs.com": [
       "topuniversities.com"
     ],
-    "qsstats.com": [
-      "webopedia.com",
-      "eweek.com"
+    "qualaroo.com": [
+      "paxful.com"
     ],
     "qualtrics.com": [
-      "realtor.com",
-      "autodesk.com",
-      "unity.com"
-    ],
-    "quantad.io": [
-      "gmarket.co.kr",
-      "auction.co.kr"
+      "reuters.com",
+      "rogers.com",
+      "pilotonline.com"
     ],
     "quantserve.com": [
-      "reddit.com",
-      "msn.com",
-      "okezone.com"
+      "bicycling.com",
+      "ucsusa.org",
+      "powerthesaurus.org"
     ],
     "quantumdex.io": [
-      "legit.ng",
-      "tuko.co.ke",
-      "briefly.co.za"
+      "dogemate.com",
+      "creaders.net",
+      "olevod.com"
+    ],
+    "quantumgraph.com": [
+      "cw.com.tw",
+      "rctiplus.com"
     ],
     "quantummetric.com": [
-      "homedepot.com",
-      "att.com",
-      "xfinity.com"
+      "ulta.com",
+      "canadiantire.ca",
+      "sce.com"
     ],
     "queryly.com": [
-      "postandcourier.com"
-    ],
-    "questionpro.com": [
-      "mta.info"
+      "fortune.com"
     ],
     "queue-it.net": [
-      "bestbuy.ca",
-      "swarovski.com",
-      "next.co.uk",
-      "kmart.com.au",
-      "doterra.com"
+      "ulta.com",
+      "boots.com",
+      "carrefour.fr"
+    ],
+    "quicca.com": [
+      "iq-servers.com"
+    ],
+    "quickbooksconnect.com": [
+      "intuit.com"
     ],
     "quickkoala.io": [
-      "viglink.com",
+      "sovrn.com",
       "1stdibs.com"
     ],
-    "quiq-api.com": [
-      "westelm.com"
+    "quiq-cdn.com": [
+      "potterybarnkids.com",
+      "westelm.com",
+      "volvocars.com"
     ],
     "quitzon.net": [
-      "filmix.co"
+      "baskino.me",
+      "filmix.ac",
+      "rezka.ag"
+    ],
+    "qumg.net": [
+      "sage.com"
+    ],
+    "qumucloud.com": [
+      "cbre.com"
     ],
     "quora.com": [
-      "bloomberg.com",
-      "latimes.com",
-      "shopify.com"
+      "talentlms.com",
+      "fool.com",
+      "fatherly.com"
+    ],
+    "quotemedia.com": [
+      "stockhouse.com"
+    ],
+    "qvig.net": [
+      "99designs.com"
     ],
     "qy.net": [
-      "iqiyi.com"
+      "iq.com"
     ],
     "r-ad.ne.jp": [
-      "hotpepper.jp",
-      "jalan.net",
-      "suumo.jp"
+      "carsensor.net",
+      "suumo.jp",
+      "hotpepper.jp"
     ],
-    "radissonhotels.com": [
-      "radissonblu.com"
+    "r2b2.cz": [
+      "aktualne.cz",
+      "lidovky.cz"
     ],
-    "rainbowred.com": [
-      "realme.com"
+    "radiokp.ru": [
+      "kp.ru"
     ],
     "rakuten.co.jp": [
-      "rakuten.com",
-      "rakuten-sec.co.jp",
-      "rakuten-card.co.jp"
+      "daily.co.jp",
+      "sponichi.co.jp",
+      "retty.me"
     ],
     "rakuten.com": [
-      "hilton.com",
-      "newegg.com",
-      "teespring.com"
+      "ramseysolutions.com",
+      "newscientist.com",
+      "shopstyle.com"
+    ],
+    "ramblechat.com": [
+      "anaconda.com",
+      "inmoment.com",
+      "blueshift.com"
     ],
     "rambler.ru": [
-      "livejournal.com",
-      "lenta.ru",
-      "gazeta.ru"
+      "eldorado.ru",
+      "tass.ru",
+      "livejournal.com"
     ],
-    "randomhouse.com": [
-      "penguinrandomhouse.com"
+    "rapidzebra.io": [
+      "ably.com",
+      "raygun.com",
+      "chartboost.com"
     ],
-    "rating-widget.com": [
-      "bilasport.net"
+    "rave-ecwid.azurewebsites.net": [
+      "premiumtimesng.com"
+    ],
+    "rawstory.com": [
+      "alternet.org"
     ],
     "raxcdn.com": [
       "japantoday.com"
     ],
-    "raycommedia.com": [
-      "hawaiinewsnow.com"
-    ],
     "razorpay.com": [
-      "bloombergquint.com"
+      "thequint.com"
+    ],
+    "rbb-online.de": [
+      "rbb24.de"
+    ],
+    "rbnt.org": [
+      "fastpic.org"
     ],
     "rcapiuseridexchange.azurewebsites.net": [
       "radio-canada.ca"
@@ -16763,260 +19362,349 @@
       "tdameritrade.com"
     ],
     "rcs.it": [
+      "gazzetta.it",
       "corriere.it"
     ],
-    "rcsmetrics.it": [
-      "corriere.it",
-      "gazzetta.it"
-    ],
     "rctiplus.com": [
       "okezone.com",
-      "inews.id"
+      "inews.id",
+      "sindonews.com"
+    ],
+    "rcvlink.com": [
+      "ukr.net",
+      "pravda.com.ua",
+      "liga.net"
+    ],
+    "rd.services": [
+      "unesp.br",
+      "sympla.com.br",
+      "tail.digital"
     ],
     "rdcdn.com": [
+      "dashlane.com",
       "weightwatchers.com"
     ],
+    "rdstation.com.br": [
+      "unesp.br",
+      "sympla.com.br",
+      "tail.digital"
+    ],
     "reachmax.cn": [
       "bshare.cn",
-      "foodmate.net",
-      "xhby.net"
+      "nbd.com.cn",
+      "chinanews.com"
     ],
     "reactful.com": [
       "brightcove.com",
-      "zscaler.com"
+      "proofpoint.com",
+      "arubanetworks.com"
+    ],
+    "readserver.net": [
+      "uptodown.com"
     ],
     "realclick.co.kr": [
-      "hani.co.kr"
+      "citrix.com"
     ],
-    "realite.id": [
-      "brilio.net",
-      "bola.net",
-      "dream.co.id"
+    "realmagnet.land": [
+      "aia.org"
     ],
     "realsrv.com": [
-      "spankbang.com",
-      "manganelo.com",
-      "eporner.com"
+      "gotporn.com",
+      "sunporno.com",
+      "xnxx.com"
     ],
     "realtime.email": [
       "autismspeaks.org"
     ],
-    "rec-engine.com": [
-      "paychex.com"
+    "reamedia.com.au": [
+      "realestate.com.au"
     ],
-    "recobell.io": [
-      "hani.co.kr"
+    "recaptcha.net": [
+      "airbnb.ca",
+      "gavi.org",
+      "vungle.com"
+    ],
+    "reciteme.com": [
+      "brighton.ac.uk"
+    ],
+    "recognified.net": [
+      "winfuture.de"
     ],
     "recommendationengine.googleapis.com": [
-      "newsweek.com",
-      "g2a.com",
-      "saatchiart.com"
+      "maccosmetics.com",
+      "digitec.ch",
+      "lightinthebox.com"
     ],
-    "recreativ.ru": [
-      "ukr.net",
-      "meta.ua"
+    "recotap.com": [
+      "browserstack.com"
     ],
-    "recruitics.com": [
-      "governmentjobs.com"
+    "recreationid.com": [
+      "carid.com"
     ],
-    "redbubble.com": [
-      "informationweek.com"
+    "recruiterbox.com": [
+      "whatfix.com"
     ],
-    "redcross.org": [
-      "redcrossblood.org"
+    "recruitics.com": [
+      "biospace.com",
+      "governmentjobs.com"
     ],
     "reddit.com": [
-      "godaddy.com",
-      "spotify.com",
-      "bloomberg.com",
-      "hudl.com"
+      "wetransfer.com",
+      "convertkit.com",
+      "manychat.com"
     ],
     "redhat.com": [
+      "ansible.com",
       "opensource.com"
     ],
     "redintelligence.net": [
-      "swarovski.com"
+      "webgo.de"
     ],
-    "redlink.com": [
-      "ahajournals.org",
-      "annualreviews.org"
+    "ref-r.com": [
+      "quizizz.com"
     ],
-    "refocus.ru": [
-      "eldorado.ru"
+    "referralrock.com": [
+      "activecampaign.com"
+    ],
+    "refersion.com": [
+      "fluentu.com"
+    ],
+    "reflow.tv": [
+      "boohoo.com"
     ],
     "regroup.com": [
       "csus.edu"
     ],
     "reichelcormier.bid": [
-      "filmix.co",
+      "baskino.me",
       "rezka.ag",
-      "baskino.me"
+      "trafmag.com"
+    ],
+    "reignn.com": [
+      "ynetnews.com"
+    ],
+    "rejoiner.com": [
+      "calacademy.org"
+    ],
+    "relaido.jp": [
+      "rocketnews24.com"
+    ],
+    "relap.info": [
+      "mail.ru"
     ],
     "relap.io": [
-      "mail.ru",
-      "ria.ru",
-      "tass.ru"
+      "radikal.ru",
+      "rg.ru",
+      "ria.ru"
     ],
-    "relateddigital.com": [
-      "ntv.com.tr",
-      "kariyer.net"
+    "relationer.xyz": [
+      "boafoda.com"
+    ],
+    "relish.com": [
+      "cookieandkate.com"
     ],
-    "remarqable.com": [
-      "ahajournals.org"
+    "remixd.com": [
+      "baltimoresun.com",
+      "sun-sentinel.com",
+      "orlandosentinel.com"
     ],
     "rentracks.jp": [
+      "ocnk.net",
       "techacademy.jp",
-      "lolipop.jp",
-      "ocnk.net"
+      "peraichi.com"
     ],
     "republer.com": [
-      "khaberni.com",
-      "alwakeelnews.com",
-      "aif.ru"
+      "radikal.ru",
+      "qafqazinfo.az",
+      "discover.com"
     ],
     "research-int.se": [
+      "thelocal.se",
       "aftonbladet.se",
-      "svt.se",
-      "expressen.se"
+      "svd.se"
     ],
     "researchintel.com": [
       "intel.com"
     ],
     "researchnow.com": [
-      "go.com",
-      "disney.com",
-      "starwars.com"
+      "wetransfer.com",
+      "starwars.com",
+      "thewaltdisneycompany.com"
+    ],
+    "resellerratings.com": [
+      "budsgunshop.com"
     ],
-    "resniks.pro": [
-      "sexu.com"
+    "resetdigital.co": [
+      "techhive.com",
+      "mydramalist.com",
+      "timeshighereducation.com"
+    ],
+    "resetsrv.com": [
+      "newsweek.com"
     ],
     "reson8.com": [
-      "nydailynews.com",
-      "startribune.com",
-      "baltimoresun.com"
+      "ole.com.ar",
+      "wsoctv.com",
+      "sun-sentinel.com"
+    ],
+    "resonate.com": [
+      "triblive.com"
+    ],
+    "responsetap.com": [
+      "regus.com"
     ],
     "retailrocket.net": [
       "eldorado.ru",
-      "dns-shop.ru",
+      "sbermegamarket.ru",
       "vseinstrumenti.ru"
     ],
     "retargetly.com": [
-      "perfil.com",
-      "excelsior.com.mx",
-      "ambito.com"
+      "ole.com.ar",
+      "expansion.mx",
+      "elsiglo.mx"
     ],
-    "retentioneering.com": [
-      "eldorado.ru"
+    "reuters.com": [
+      "staysafeonline.org"
+    ],
+    "rev-stripe.com": [
+      "thegatewaypundit.com"
+    ],
+    "revain.org": [
+      "kucoin.com"
     ],
     "revcontent.com": [
       "thegatewaypundit.com",
-      "tampabay.com",
-      "nationalreview.com"
+      "wfla.com",
+      "wgntv.com"
     ],
-    "reverb-assets.com": [
-      "reverb.com"
+    "revenuehits.com": [
+      "yoomark.com"
     ],
     "revive-adserver.net": [
-      "indiebound.org",
-      "defimedia.info"
+      "defimedia.info",
+      "apta.org"
     ],
     "revjet.com": [
-      "businessinsider.com",
-      "homedepot.com",
-      "yahoo.com"
+      "blackenterprise.com",
+      "marketwatch.com",
+      "homedepot.com"
     ],
-    "rezync.com": [
-      "williams-sonoma.com",
-      "spectrum.com",
-      "potterybarn.com"
+    "revoffers.com": [
+      "justcbdstore.com"
     ],
-    "rferl.org": [
-      "svoboda.org"
+    "rezync.com": [
+      "nrdc.org",
+      "norton.com",
+      "westelm.com"
     ],
     "rfihub.com": [
-      "usatoday.com",
-      "dailymotion.com",
-      "youm7.com"
+      "ucsusa.org",
+      "nrdc.org",
+      "jamaica-gleaner.com"
     ],
     "rfksrv.com": [
       "ulta.com",
-      "bloomingdales.com",
-      "tommy.com"
+      "dsw.com",
+      "petco.com"
     ],
     "rfvk.net": [
       "adorama.com"
     ],
+    "rgreatedins.xyz": [
+      "analdin.com",
+      "xozilla.com"
+    ],
     "ria.ru": [
+      "inosmi.ru",
       "sputniknews.com",
-      "rian.ru",
-      "inosmi.ru"
+      "1prime.ru"
     ],
     "richaudience.com": [
-      "softonic.com",
-      "marca.com",
-      "las2orillas.co"
+      "huffingtonpost.es",
+      "thegazette.com",
+      "softonic.com"
     ],
     "richrelevance.com": [
-      "rei.com",
-      "saksfifthavenue.com",
-      "williams-sonoma.com"
+      "musiciansfriend.com",
+      "ibs.it",
+      "thebay.com"
+    ],
+    "ricoh.co.jp": [
+      "ricoh.com"
     ],
     "rightinthebox.com": [
       "lightinthebox.com"
     ],
     "rightmessage.com": [
+      "cxl.com",
       "problogger.com"
     ],
-    "rightnowtech.com": [
-      "lenovo.com"
-    ],
     "rijksoverheid.nl": [
+      "government.nl",
       "rivm.nl"
     ],
+    "ringpublishing.com": [
+      "onet.pl"
+    ],
     "riotgames.com": [
+      "mobalytics.gg",
       "op.gg",
-      "u.gg",
-      "mobalytics.gg"
+      "u.gg"
     ],
     "riskified.com": [
-      "wayfair.com",
-      "zara.com",
-      "farfetch.com"
+      "fwrd.com",
+      "revolve.com",
+      "ibs.it"
+    ],
+    "ritzau.dk": [
+      "politiken.dk"
     ],
     "riverhit.com": [
-      "xozilla.com",
-      "sexu.com",
       "hdsex.org"
     ],
     "rkdms.com": [
-      "cnn.com",
-      "washingtonpost.com",
-      "wsj.com"
+      "hollywoodlife.com",
+      "libertymutual.com",
+      "goodyear.com"
     ],
-    "rktch.com": [
-      "aif.ru",
-      "vfsglobal.com"
+    "rkiapps.com": [
+      "vistaprint.com"
     ],
     "rlcdn.com": [
-      "godaddy.com",
-      "digicert.com",
-      "tandfonline.com"
+      "amny.com",
+      "ulta.com",
+      "baltimoresun.com"
+    ],
+    "rlets.com": [
+      "heraldscotland.com",
+      "palomar.edu",
+      "submittable.com"
     ],
     "rmtag.com": [
-      "udemy.com",
-      "coursera.org",
-      "hulu.com"
+      "bloomingdales.com",
+      "macys.com"
     ],
-    "rmulus.com": [
-      "juniper.net"
+    "rndskittytor.com": [
+      "myflixer.to",
+      "movies2watch.tv",
+      "cimalight.onl"
     ],
     "rnengage.com": [
+      "oracle.com",
       "mysql.com",
-      "rightnow.com",
-      "chewy.com"
+      "oakley.com"
+    ],
+    "rnp.br": [
+      "unb.br"
     ],
-    "rockcontent.com": [
-      "comcasttechnologysolutions.com"
+    "rocketmortgage.com": [
+      "quickenloans.com"
+    ],
+    "roeye.com": [
+      "vodafone.co.uk"
+    ],
+    "rokt.com": [
+      "staples.com"
     ],
     "roku.com": [
       "experian.com"
@@ -17024,65 +19712,96 @@
     "rollingstone.com": [
       "indiewire.com"
     ],
-    "rosewe.com": [
-      "informationweek.com"
+    "roularta.be": [
+      "knack.be"
     ],
-    "rotita.com": [
-      "informationweek.com"
+    "route-fifty.com": [
+      "defenseone.com",
+      "nextgov.com",
+      "govexec.com"
     ],
-    "rstbtmd.com": [
-      "rezka.ag",
-      "hdrezka-ag.com"
+    "roymorgan.com": [
+      "drive.com.au",
+      "canberratimes.com.au"
     ],
-    "rsz.sk": [
-      "aktuality.sk"
+    "roytheticc.xyz": [
+      "cuevana3.io",
+      "shorturl.at"
     ],
-    "rt.ru": [
-      "aif.ru"
+    "rqtrk.eu": [
+      "wyndhamhotels.com",
+      "nation.africa"
     ],
-    "rtbsuperhub.com": [
-      "cam4.com"
+    "rsz.sk": [
+      "aktuality.sk"
     ],
-    "rtk.io": [
-      "post-gazette.com",
-      "elwatannews.com",
-      "dostor.org"
+    "rtactivate.com": [
+      "resetdigital.co"
     ],
-    "rtm.com": [
-      "landsend.com"
+    "rtb.com.ru": [
+      "eldorado.ru",
+      "leroymerlin.ru",
+      "rzd.ru"
     ],
     "rtmark.net": [
-      "4shared.com",
-      "wplay.co",
-      "manganelo.com"
+      "made-in-china.com",
+      "thenetnaija.com",
+      "4shared.com"
     ],
     "rtr-vesti.ru": [
-      "vesti.ru",
-      "russia.tv"
+      "smotrim.ru",
+      "vesti.ru"
+    ],
+    "rtrcdn.com": [
+      "renttherunway.com"
+    ],
+    "rtxapps.com": [
+      "rtx.com"
     ],
     "rubiconproject.com": [
-      "yahoo.com",
-      "amazon.com",
-      "msn.com"
+      "president.jp",
+      "bicycling.com",
+      "isbank.com.tr"
+    ],
+    "rudo.video": [
+      "biobiochile.cl"
+    ],
+    "rue20.club": [
+      "rue20.com"
     ],
     "rumble.com": [
-      "makeleio.gr"
+      "beforeitsnews.com",
+      "makeleio.gr",
+      "lifesitenews.com"
     ],
     "rumiview.com": [
+      "csusb.edu",
       "asm.org",
-      "greenhouse.io",
-      "comptia.org"
+      "greenhouse.io"
     ],
     "run-syndicate.com": [
-      "manganelo.com"
+      "veoh.com"
+    ],
+    "runative-syndicate.com": [
+      "gogoanime.cm",
+      "f95zone.to"
+    ],
+    "runhosting.com": [
+      "atspace.com"
+    ],
+    "rusobr.ru": [
+      "edusite.ru"
     ],
     "russia.tv": [
-      "vesti.ru"
+      "smotrim.ru"
     ],
     "rutarget.ru": [
-      "aliexpress.ru",
-      "rambler.ru",
-      "sberbank.ru"
+      "nic.ru",
+      "radikal.ru",
+      "rg.ru"
+    ],
+    "rvrpushserv.com": [
+      "drtuber.com"
     ],
     "ryvx.net": [
       "dickssportinggoods.com"
@@ -17090,398 +19809,551 @@
     "rzk-m.com": [
       "rozetka.com.ua"
     ],
+    "s-i-r.de": [
+      "stuttgarter-zeitung.de"
+    ],
+    "s3-us-west-2.amazonaws.com": [
+      "irishcentral.com",
+      "newson6.com"
+    ],
+    "s3.amazonaws.com": [
+      "fxnetworks.com",
+      "powershow.com",
+      "6abc.com"
+    ],
+    "s3xified.com": [
+      "discover.com"
+    ],
     "s5o.ru": [
       "sports.ru"
     ],
     "sabavision.com": [
-      "aparat.com",
-      "asriran.com",
-      "parsfootball.com"
+      "zoomit.ir",
+      "digiato.com",
+      "rooziato.com"
+    ],
+    "sabrecdn.com": [
+      "mandarinoriental.com"
     ],
-    "sabay.com": [
-      "sabay.com.kh"
+    "safarme.ir": [
+      "beytoote.com"
     ],
-    "sacbee.com": [
-      "kansascity.com",
-      "charlotteobserver.com",
-      "newsobserver.com"
+    "sageportal.com": [
+      "sageone.com"
     ],
     "sagetalk.io": [
       "rosettastone.com"
     ],
+    "sailplay.net": [
+      "timesunion.com",
+      "houstonchronicle.com",
+      "ctpost.com"
+    ],
     "sajari.com": [
-      "lockheedmartin.com",
-      "activecampaign.com"
+      "nsw.gov.au",
+      "arin.net",
+      "tcu.edu"
     ],
     "salecycle.com": [
-      "qatarairways.com",
-      "bestwestern.com",
-      "valentino.com"
+      "zipcar.com",
+      "geekbuying.com",
+      "ysl.com"
     ],
-    "salemwebnetwork.com": [
-      "biblestudytools.com"
+    "salemove.com": [
+      "etrade.com"
     ],
     "salesforce.com": [
-      "bestbuy.ca",
-      "anthropologie.com",
-      "michaels.com"
+      "fossil.com",
+      "geico.com",
+      "se.com"
     ],
     "salesforceliveagent.com": [
-      "digicert.com",
-      "prnewswire.com",
-      "constantcontact.com"
+      "airindia.in",
+      "rasmussen.edu",
+      "absolute.com"
     ],
     "salesloft.com": [
-      "wpengine.com",
-      "newrelic.com",
-      "upwork.com"
+      "upwork.com",
+      "druva.com",
+      "absolute.com"
+    ],
+    "salesmanago.pl": [
+      "rp.pl",
+      "home.pl",
+      "bankier.pl"
+    ],
+    "salsalabs.org": [
+      "mhanational.org",
+      "citizen.org",
+      "sourcewatch.org"
     ],
     "samandehi.ir": [
-      "digikala.com",
-      "divar.ir",
-      "beytoote.com"
+      "virgool.io",
+      "aparat.com",
+      "namava.ir"
     ],
     "samba.tv": [
-      "theverge.com",
-      "vox.com",
-      "xfinity.com"
+      "polygon.com",
+      "reddit.com",
+      "theringer.com"
+    ],
+    "samplicio.us": [
+      "comparecards.com",
+      "unsplash.com",
+      "pilotonline.com"
+    ],
+    "samv4prod-webchat.azurewebsites.net": [
+      "servicesaustralia.gov.au"
+    ],
+    "sandisk.com": [
+      "westerndigital.com"
     ],
     "sanjagh.com": [
-      "rokna.net",
-      "tarafdari.com",
-      "khabaronline.ir"
+      "khabaronline.ir",
+      "khanefootball.com",
+      "basalam.com"
     ],
-    "sanoma.fi": [
-      "nu.nl"
+    "santander.com.br": [
+      "news.com.au"
     ],
     "sape.ru": [
-      "aif.ru"
+      "radikal.ru"
+    ],
+    "sardine.ai": [
+      "niftygateway.com"
     ],
     "sas.com": [
-      "next.co.uk"
+      "rainews.it"
+    ],
+    "sasinsetuid.com": [
+      "1377x.to"
+    ],
+    "satr.jp": [
+      "lolipop.jp"
+    ],
+    "sayweee.net": [
+      "sayweee.com"
+    ],
+    "sber.ru": [
+      "sberbank.ru"
+    ],
+    "sbermarketing.ru": [
+      "sberbank.ru"
+    ],
+    "sbicard.org": [
+      "sbicard.com"
+    ],
+    "sbnation.com": [
+      "mmafighting.com"
     ],
     "sc-static.net": [
-      "spotify.com",
-      "bloomberg.com",
-      "booking.com"
+      "dmu.ac.uk",
+      "shrm.org",
+      "missouristate.edu"
     ],
     "scarabresearch.com": [
-      "bitdefender.com",
-      "tate.org.uk",
-      "puma.com"
+      "tirerack.com",
+      "threadless.com",
+      "konga.com"
     ],
     "scatec.io": [
-      "pitchbook.com"
-    ],
-    "scene7.com": [
-      "pnc.com",
-      "poly.com"
-    ],
-    "scenepass.com": [
-      "gayboystube.com"
+      "lattice.com",
+      "agorapulse.com",
+      "on24.com"
     ],
     "schibsted.com": [
       "vg.no",
       "aftonbladet.se",
-      "finn.no"
+      "svd.se"
+    ],
+    "schibsted.io": [
+      "aftonbladet.se",
+      "svd.se",
+      "blocket.se"
     ],
     "scholarlyiq.com": [
-      "oup.com"
+      "brill.com",
+      "oed.com",
+      "geoscienceworld.org"
     ],
     "sciencedirect.com": [
-      "thelancet.com",
-      "cell.com"
-    ],
-    "sciencemag.org": [
-      "aaas.org"
+      "jbc.org",
+      "cell.com",
+      "thelancet.com"
     ],
     "sciencex.com": [
+      "techxplore.com",
       "phys.org",
       "medicalxpress.com"
     ],
-    "scmp.com": [
-      "alanba.com.kw"
-    ],
-    "scoop.it": [
-      "psl.eu"
-    ],
     "scorecardresearch.com": [
-      "linkedin.com",
-      "yahoo.com",
-      "reddit.com"
+      "bicycling.com",
+      "cartoonnetwork.com",
+      "business-standard.com"
+    ],
+    "scorestream.com": [
+      "timesunion.com",
+      "ctpost.com",
+      "nhregister.com"
     ],
     "scribblelive.com": [
-      "ctvnews.ca",
       "startribune.com"
     ],
-    "scupio.com": [
-      "shopee.tw",
-      "udn.com",
-      "shopee.com"
+    "scribd.com": [
+      "adevarul.ro",
+      "dawn.com",
+      "peninsuladailynews.com"
+    ],
+    "scrippsdigital.com": [
+      "abcactionnews.com",
+      "wtvr.com",
+      "thedenverchannel.com"
+    ],
+    "scriptspeak.com": [
+      "tampabay.com"
     ],
-    "sddan.com": [
-      "europe1.fr"
+    "scsstatic.ch": [
+      "swisscom.ch"
+    ],
+    "scupio.com": [
+      "storm.mg",
+      "shopee.com",
+      "7-11.com.tw"
     ],
     "sdlcdn.com": [
       "snapdeal.com"
     ],
+    "sdqoi2d.com": [
+      "ygdy8.com",
+      "ygdy8.net"
+    ],
+    "seadform.net": [
+      "parasut.com"
+    ],
+    "seamlessaccess.org": [
+      "sciencedirect.com",
+      "jamanetwork.com",
+      "nature.com"
+    ],
     "searchforce.net": [
       "ecwid.com"
     ],
     "searchiq.co": [
-      "comingsoon.net"
+      "sherdog.com",
+      "comingsoon.net",
+      "thepennyhoarder.com"
+    ],
+    "sears.com": [
+      "kmart.com"
     ],
-    "secrank.cn": [
-      "www.edu.cn"
+    "searshc.com": [
+      "sears.com",
+      "kmart.com"
+    ],
+    "secondstreetapp.com": [
+      "clickorlando.com"
     ],
     "section.io": [
       "yourtango.com"
     ],
     "secureaddisplay.com": [
+      "americamagazine.org",
       "newadvent.org"
     ],
     "securedtouch.com": [
-      "asos.com",
       "wish.com",
+      "next.co.uk",
       "agoda.com"
     ],
     "securedvisit.com": [
-      "homedepot.com",
-      "cafepress.com",
-      "peta.org"
+      "goodyear.com",
+      "thehartford.com",
+      "potterybarnkids.com"
+    ],
+    "secureprivacy.ai": [
+      "timebucks.com",
+      "darwinbox.com"
     ],
     "secureserver.net": [
-      "afternic.com",
-      "gamessu.com",
-      "sucuri.net"
+      "mediatemple.net",
+      "sucuri.net",
+      "stocksignals.us"
     ],
-    "securetve.com": [
-      "tsn.ca",
-      "bnnbloomberg.ca"
+    "securiti.ai": [
+      "braze.com",
+      "dell.com",
+      "sebrae.com.br"
+    ],
+    "securitymetrics.com": [
+      "ivisa.com",
+      "ama.org",
+      "toastmasters.org"
     ],
     "seedr.com": [
+      "afisha.ru",
       "gazeta.ru",
-      "championat.com",
-      "yaplakal.com"
+      "regnum.ru"
     ],
     "seedtag.com": [
-      "ccm.net",
       "milenio.com",
-      "elperiodico.com"
+      "ccm.net",
+      "livesicilia.it"
+    ],
+    "seekingalpha.com": [
+      "zerohedge.com"
     ],
     "segment.com": [
-      "travelandleisure.com",
-      "angel.co",
-      "marthastewart.com"
+      "calendly.com",
+      "hotjar.com",
+      "helium.com"
+    ],
+    "segmentstream.com": [
+      "sbermegamarket.ru"
     ],
     "segs.jp": [
       "cybozu.com",
-      "valuecommerce.ne.jp"
+      "valuecommerce.ne.jp",
+      "lolipop.jp"
     ],
     "sekindo.com": [
       "mako.co.il",
-      "ynetnews.com",
-      "primis.tech"
+      "listverse.com",
+      "brusselstimes.com"
     ],
     "selectmedia.asia": [
-      "onegreenplanet.org"
+      "onegreenplanet.org",
+      "makezine.com"
     ],
-    "self.com": [
-      "wired.com",
-      "newyorker.com",
-      "vanityfair.com"
+    "sellcodes.com": [
+      "ultimatelysocial.com"
     ],
-    "sellpoints.com": [
-      "costco.com",
-      "costco.ca"
+    "sellwild.com": [
+      "boingboing.net"
+    ],
+    "semantiqo.com": [
+      "mining.online",
+      "garant.ru",
+      "revopush.com"
     ],
     "semasio.net": [
-      "yahoo.com",
-      "lifo.gr",
-      "eksisozluk.com"
+      "parasut.com",
+      "eksisozluk.com",
+      "yahoo.com"
     ],
     "sembox.it": [
       "italist.com"
     ],
-    "semrush.com": [
-      "informationweek.com"
+    "sendpulse.com": [
+      "royalessays.co.uk",
+      "masterpapers.com",
+      "payforessay.net"
     ],
     "senseforth.com": [
-      "hdfcbank.com"
+      "icicibank.com"
     ],
     "sensic.net": [
-      "krone.at"
+      "straitstimes.com",
+      "channelnewsasia.com",
+      "zaobao.com.sg"
     ],
     "sensorsdata.cn": [
-      "36kr.com",
-      "iliangcang.com",
-      "zhaoshang.net"
+      "mokahr.com",
+      "sobot.com",
+      "udesk.cn"
+    ],
+    "sensorsdata.com": [
+      "modao.cc"
     ],
-    "sensorsdatavip.com": [
-      "canva.cn"
+    "sentry.io": [
+      "benzinga.com",
+      "gyazo.com",
+      "nbatopshot.com"
     ],
-    "sep.gob.mx": [
-      "www.gob.mx"
+    "sephora.fr": [
+      "sephora.de"
     ],
     "servebom.com": [
+      "cyclingnews.com",
       "techradar.com",
-      "livescience.com",
-      "howtogeek.com"
+      "anandtech.com"
     ],
     "servedbyadbutler.com": [
-      "vanguardngr.com"
+      "vanguardngr.com",
+      "bitcoinist.com",
+      "adaa.org"
     ],
     "servenobid.com": [
-      "geeksforgeeks.org",
-      "mathrubhumi.com",
-      "sakshi.com"
+      "fastcompany.com",
+      "militarytimes.com",
+      "scoopwhoop.com"
+    ],
+    "server-side-tagging-305814.ue.r.appspot.com": [
+      "blogs.com",
+      "bluehost.com"
     ],
     "serverbid.com": [
-      "usatoday.com",
-      "vox.com",
-      "ask.com"
+      "news-journalonline.com",
+      "desertsun.com",
+      "techtimes.com"
     ],
     "serving-sys.com": [
-      "dropbox.com",
-      "news.com.au",
-      "asu.edu"
+      "haberler.com",
+      "hachettebookgroup.com",
+      "audible.com"
+    ],
+    "sesameworkshop.org": [
+      "sesamestreet.org"
     ],
     "sessioncam.com": [
-      "hootsuite.com",
-      "braze.com",
-      "ama-assn.org"
+      "siriusxm.com",
+      "tirerack.com",
+      "principal.com"
+    ],
+    "sexad.net": [
+      "youjizz.com"
     ],
     "seznam.cz": [
+      "centrum.cz",
+      "webnode.cz",
       "idnes.cz"
     ],
-    "sf14g.com": [
-      "panasonic.com",
-      "cornerstoneondemand.com",
-      "freshbooks.com"
+    "sf311.org": [
+      "sf.gov"
     ],
-    "sfegypt.com": [
-      "elfagr.com"
+    "sfdc.sh": [
+      "heroku.com"
     ],
     "sfn.org": [
-      "jneurosci.org"
-    ],
-    "sgkrehberi.com": [
-      "memurlar.net"
-    ],
-    "sgsme.sg": [
-      "businesstimes.com.sg"
+      "jneurosci.org"
     ],
-    "shanghai.gov.cn": [
-      "sh.gov.cn"
+    "sh.gov.cn": [
+      "shanghai.gov.cn"
     ],
-    "shaqm.com": [
-      "mop.com"
+    "shahrekhabar.com": [
+      "mehrnews.com",
+      "borna.news"
     ],
-    "shareaholic.com": [
-      "worldstarhiphop.com",
-      "earthsky.org"
+    "sharedid.org": [
+      "brusheezy.com",
+      "greatist.com",
+      "dotesports.com"
     ],
-    "sharecare.com": [
-      "dailystrength.org"
+    "sharemedia.rs": [
+      "b92.net"
     ],
     "sharethis.com": [
-      "unicef.org",
-      "businessnewsdaily.com",
-      "freeimages.com"
+      "hollywoodlife.com",
+      "abbyy.com",
+      "astutesolutions.com"
     ],
     "sharethrough.com": [
-      "msn.com",
-      "forbes.com",
-      "webmd.com"
+      "president.jp",
+      "crisistextline.org",
+      "huffingtonpost.es"
     ],
-    "shbdn.com": [
-      "sahibinden.com"
+    "sherpadm.com": [
+      "cas.org"
     ],
     "shinobi.jp": [
-      "ninja.co.jp",
-      "cityheaven.net"
+      "moppy.jp"
     ],
     "shinystat.com": [
-      "dezeen.com",
       "sworld.co.uk"
     ],
     "shld.net": [
       "kmart.com"
     ],
-    "shoagnie.com": [
-      "clipconverter.cc"
+    "sholke.com": [
+      "filmix.ac",
+      "kinokrad.co"
     ],
     "shop.app": [
+      "fancy.com",
+      "omgjapan.com",
       "fashionnova.com"
     ],
     "shop.pe": [
-      "casetify.com",
       "digitalcommerce360.com",
-      "jabra.com"
+      "kayak.com",
+      "chewy.com"
+    ],
+    "shopify.com": [
+      "gymshark.com",
+      "shopify.dev",
+      "spigen.com"
     ],
-    "shopbop.com": [
-      "informationweek.com"
+    "shoppable.com": [
+      "familyhandyman.com"
     ],
-    "shopnetic.com": [
-      "rambler.ru",
-      "lenta.ru",
-      "ozon.ru"
+    "shopperapproved.com": [
+      "website.com"
     ],
     "shoprunner.com": [
-      "saksfifthavenue.com"
+      "saksfifthavenue.com",
+      "jimmychoo.com"
     ],
-    "shopsocially.com": [
-      "score.org"
+    "shukriya90.com": [
+      "jable.tv"
     ],
-    "shuidi.cn": [
-      "xuexila.com"
+    "shutterstock.com": [
+      "stocksnap.io"
     ],
     "sibautomation.com": [
-      "yektanet.com",
-      "dndbeyond.com",
+      "bl.ink",
+      "complianz.io",
       "simplecast.com"
     ],
     "sift.com": [
-      "udemy.com",
-      "meetup.com",
-      "wish.com"
+      "vercel.com",
+      "zola.com",
+      "hostmonster.com"
     ],
     "siftscience.com": [
-      "flickr.com",
-      "scribd.com",
-      "shutterstock.com"
-    ],
-    "signify.com": [
-      "philips-hue.com"
+      "kickstarter.com",
+      "teacherspayteachers.com",
+      "ksl.com"
     ],
     "signifyd.com": [
-      "ssense.com",
-      "colourpop.com",
-      "fashionnova.com"
+      "liveauctioneers.com",
+      "build.com",
+      "arlo.com"
+    ],
+    "simplecast.com": [
+      "forward.com",
+      "atlasobscura.com",
+      "usmagazine.com"
     ],
-    "simility.com": [
-      "offerup.com"
+    "simplex.tv": [
+      "post.ch"
     ],
     "simpli.fi": [
-      "okezone.com",
-      "matterport.com",
+      "president.jp",
+      "wsoctv.com",
       "rakuten.com"
     ],
     "sina.com.cn": [
-      "cnad.com",
-      "ccidnet.com"
+      "eoffcn.com",
+      "techweb.com.cn",
+      "eccn.com"
+    ],
+    "sinch.com": [
+      "sap.com",
+      "ariba.com"
     ],
     "sindonews.com": [
-      "okezone.com",
-      "inews.id"
+      "inews.id",
+      "okezone.com"
     ],
     "sinoptik.ua": [
       "ukr.net"
     ],
+    "site.com": [
+      "salesforce.com"
+    ],
     "site24x7rum.com": [
-      "myfonts.com",
       "cambridgeenglish.org",
-      "celine.com"
+      "fonts.com",
+      "vive.com"
     ],
     "sitecore-prod-cd-westus2.azurewebsites.net": [
       "alaskaair.com"
@@ -17490,434 +20362,614 @@
       "clickagy.com"
     ],
     "siteimproveanalytics.io": [
-      "mailchimp.com",
-      "opendns.com",
-      "berkeley.edu"
+      "davidson.edu",
+      "girlscouts.org",
+      "bell.ca"
+    ],
+    "sitejabber.com": [
+      "flexjobs.com",
+      "alibris.com"
     ],
     "sitelock.com": [
+      "centos-webpanel.com",
       "rapidgator.net",
-      "centos-webpanel.com"
+      "fatcow.com"
     ],
     "sitescout.com": [
-      "okezone.com",
-      "imgur.com",
-      "aol.com"
+      "president.jp",
+      "abcactionnews.com",
+      "ole.com.ar"
+    ],
+    "sitewit.com": [
+      "bizpacreview.com",
+      "premiumtimesng.com"
+    ],
+    "sjsmartcontent.org": [
+      "km.ru"
+    ],
+    "sjv.io": [
+      "animoto.com",
+      "cincinnati.com",
+      "weber.com"
     ],
     "skimresources.com": [
-      "businessinsider.com",
-      "dailymail.co.uk",
-      "nbcnews.com"
+      "neowin.net",
+      "price.com.hk",
+      "weheartit.com"
     ],
     "skplanet.com": [
-      "11st.co.kr",
-      "dothome.co.kr"
+      "chosun.com",
+      "koreaherald.com",
+      "11st.co.kr"
     ],
-    "sky.com": [
-      "skysports.com"
+    "skyassets.com": [
+      "sky.com"
     ],
-    "sky.it": [
-      "tiscali.it"
+    "skyword.com": [
+      "rd.com",
+      "familyhandyman.com",
+      "tasteofhome.com"
     ],
-    "slashdotmedia.com": [
-      "sourceforge.net",
-      "slashdot.org"
+    "slashdot.org": [
+      "linuxjournal.com"
+    ],
+    "sleeknote.com": [
+      "similarweb.com",
+      "comodoca.com",
+      "podia.com"
+    ],
+    "slgnt.eu": [
+      "cyclingnews.com",
+      "techradar.com",
+      "lalibre.be"
+    ],
+    "slgnt.us": [
+      "build.com",
+      "vitacost.com",
+      "educause.edu"
+    ],
+    "sli.do": [
+      "thekitchn.com"
+    ],
+    "slideshare.net": [
+      "datareportal.com",
+      "contentmarketinginstitute.com"
     ],
     "smaato.net": [
-      "imgur.com"
+      "abcactionnews.com",
+      "parasut.com",
+      "dogemate.com"
     ],
     "smadex.com": [
-      "realtor.com",
-      "taringa.net",
-      "rpp.pe"
+      "rpp.pe",
+      "realtor.com"
+    ],
+    "smart-bdash.com": [
+      "onamae.com"
+    ],
+    "smart-digital-solutions.de": [
+      "nissanusa.com"
     ],
     "smartadserver.com": [
-      "okezone.com",
-      "imgur.com",
-      "dailymotion.com"
+      "isbank.com.tr",
+      "abcactionnews.com",
+      "ole.com.ar"
+    ],
+    "smartasset.com": [
+      "marketwatch.com"
+    ],
+    "smartclip.net": [
+      "ilgiornale.it",
+      "eonline.com"
     ],
-    "smartclick.net": [
-      "bravotube.net"
+    "smarterhq.io": [
+      "baltimoresun.com",
+      "sun-sentinel.com",
+      "orlandosentinel.com"
+    ],
+    "smartlook.com": [
+      "ftmo.com"
     ],
     "smartnews-ads.com": [
-      "rakuten.co.jp",
-      "moneyforward.com",
-      "freee.co.jp"
+      "newspicks.com",
+      "trilltrill.jp",
+      "doda.jp"
     ],
     "smartocto.com": [
-      "tweakers.net",
-      "volkskrant.nl"
-    ],
-    "smartsurvey.co.uk": [
-      "fifa.com"
+      "volkskrant.nl",
+      "ad.nl"
     ],
     "smct.co": [
-      "rhs.org.uk"
+      "iubenda.com",
+      "marieclaire.co.uk",
+      "correiobraziliense.com.br"
+    ],
+    "smct.io": [
+      "iubenda.com",
+      "marieclaire.co.uk"
     ],
     "smi2.net": [
       "rbc.ru",
-      "kp.ru",
-      "vz.ru"
+      "mk.ru",
+      "gazeta.ru"
     ],
     "smi2.ru": [
-      "kp.ru",
-      "kommersant.ru",
-      "iz.ru"
+      "rg.ru",
+      "iz.ru",
+      "ren.tv"
     ],
     "smilewanted.com": [
-      "caradisiac.com"
+      "haaretz.com",
+      "lepoint.fr",
+      "plagiarismdetector.net"
     ],
-    "smithsonian.museum": [
-      "si.edu",
-      "smithsonianmag.com"
+    "smljmp.com": [
+      "stripchat.com",
+      "xhamsterlive.com"
     ],
-    "snapchat.com": [
-      "spotify.com",
-      "bloomberg.com",
-      "booking.com"
+    "smotrim.ru": [
+      "vesti.ru"
     ],
-    "snapdeal.biz": [
-      "snapdeal.com"
+    "smrtb.com": [
+      "pcgamer.com"
+    ],
+    "snapchat.com": [
+      "dmu.ac.uk",
+      "shrm.org",
+      "missouristate.edu"
     ],
     "snapwidget.com": [
-      "unh.edu",
-      "tulane.edu",
-      "theoatmeal.com"
+      "tulane.edu"
+    ],
+    "snatchbot.me": [
+      "creditonebank.com"
+    ],
+    "snigelweb.com": [
+      "finanznachrichten.de",
+      "notebookcheck.net",
+      "dict.cc"
+    ],
+    "snitcher.com": [
+      "taplytics.com"
+    ],
+    "snodlycaccias.com": [
+      "thenetnaija.com"
     ],
     "snplow.net": [
+      "zenefits.com",
       "lapresse.ca"
     ],
     "snrbox.com": [
       "onaudience.com"
     ],
     "snssdk.com": [
-      "toutiao.com",
-      "ixigua.com",
-      "bytedance.com"
+      "douyin.com",
+      "lua.org",
+      "zuipin.cn"
+    ],
+    "snva.jp": [
+      "mistore.jp"
     ],
     "so.com": [
-      "360kuai.com"
+      "360kuai.com",
+      "wkzuche.com",
+      "699pic.com"
+    ],
+    "soalonie.com": [
+      "pelisplushd.net"
+    ],
+    "soapps.net": [
+      "washingtontimes.com"
     ],
     "sobot.com": [
-      "shimo.im",
+      "jinshuju.net",
       "51cto.com",
-      "jinshuju.net"
+      "eoffcn.com"
     ],
     "socdm.com": [
+      "gizmodo.jp",
+      "auone.jp",
       "au.com"
     ],
-    "socialintents.com": [
-      "alphonso.tv"
-    ],
-    "soflopxl.com": [
-      "webcrawler.com",
-      "dogpile.com",
-      "info.com"
+    "sociabble.com": [
+      "sanofi.com"
     ],
-    "softspace.mobi": [
-      "analdin.com",
-      "xozilla.com"
+    "socsi.in": [
+      "napier.ac.uk",
+      "herts.ac.uk"
     ],
     "sogei.it": [
       "agenziaentrate.gov.it"
     ],
     "sogou.com": [
-      "soso.com",
-      "ifeng.com"
+      "soso.com"
     ],
     "sohu.com": [
+      "chinanews.com.cn",
       "56.com",
-      "yicai.com"
+      "nbd.com.cn"
+    ],
+    "soicos.com": [
+      "bbva.mx"
     ],
     "sojern.com": [
-      "marriott.com",
-      "metmuseum.org",
-      "wyndhamhotels.com"
+      "hilton.com",
+      "greyhound.com",
+      "mgmresorts.com"
     ],
     "sol-data.com": [
       "seek.com.au"
     ],
     "solarwinds.com": [
-      "pingdom.com"
+      "pingdom.com",
+      "loggly.com"
     ],
     "solosegment.com": [
-      "ul.com",
-      "asme.org",
-      "deere.com"
+      "deere.com",
+      "conference-board.org",
+      "asme.org"
     ],
     "solvemedia.com": [
-      "moonbit.co.in",
-      "moonliteco.in",
-      "moondoge.co.in"
+      "firefaucet.win"
     ],
-    "somoydigital.com": [
-      "somoynews.tv"
+    "somespider.com": [
+      "fatherly.com",
+      "scarymommy.com"
     ],
     "sonobi.com": [
-      "cnet.com",
-      "usatoday.com",
-      "dailymotion.com"
+      "thegatewaypundit.com",
+      "thegazette.com",
+      "fastcompany.com"
+    ],
+    "sophi.io": [
+      "news24.com",
+      "reuters.com",
+      "ctpost.com"
     ],
     "soundcloud.com": [
-      "ucl.ac.uk",
-      "irishtimes.com",
-      "seriouseats.com"
+      "coinmarketcap.com",
+      "incompetech.com",
+      "cmaj.ca"
     ],
     "soundestlink.com": [
+      "pagefly.io",
       "cettire.com"
     ],
+    "southcn.com": [
+      "gz.gov.cn"
+    ],
+    "southwatts.com": [
+      "royalcanin.com"
+    ],
     "sp-prod.net": [
-      "businessinsider.com",
-      "gizmodo.com",
-      "lifehacker.com"
+      "sporcle.com",
+      "arrivalist.com",
+      "insider.com"
     ],
     "sp-trk.com": [
+      "crowdworks.jp",
       "lolipop.jp"
     ],
+    "spankbang.com": [
+      "ptgncdn.com"
+    ],
+    "spclotto4.it": [
+      "garanteprivacy.it"
+    ],
     "speakol.com": [
-      "dostor.org",
-      "almasryalyoum.com"
+      "youm7.com",
+      "almasryalyoum.com",
+      "khaleejtimes.com"
     ],
     "spectate.com": [
-      "emory.edu",
-      "nova.edu",
-      "utsa.edu"
+      "nova.edu"
+    ],
+    "speedcurve.com": [
+      "theledger.com",
+      "clarionledger.com",
+      "coschedule.com"
     ],
     "speee-ad.jp": [
-      "alc.co.jp"
+      "tokyo-sports.co.jp",
+      "oricon.co.jp",
+      "tv-tokyo.co.jp"
     ],
     "sphereup.com": [
-      "abs-cbn.com",
-      "venturebeat.com",
-      "jpost.com"
-    ],
-    "sphlabs.com": [
-      "zaobao.com.sg",
-      "businesstimes.com.sg"
+      "manilatimes.net",
+      "pcwelt.de",
+      "globes.co.il"
     ],
     "spiceworks.com": [
-      "slack.com",
-      "sophos.com",
+      "viewsonic.com",
+      "lumen.com",
       "seagate.com"
     ],
-    "spider.af": [
-      "jalan.net"
+    "spiedigitallibrary.org": [
+      "spie.org"
+    ],
+    "spingo.com": [
+      "abqjournal.com",
+      "unionleader.com"
     ],
     "spokenlayer.com": [
-      "dailyherald.com",
-      "mcall.com",
-      "pilotonline.com"
+      "pilotonline.com",
+      "time.com",
+      "canberratimes.com.au"
+    ],
+    "spokenlayer.net": [
+      "time.com",
+      "canberratimes.com.au",
+      "skift.com"
+    ],
+    "spolecznosci.net": [
+      "wiocha.pl"
+    ],
+    "sporitaapi.azurewebsites.net": [
+      "sportsmole.co.uk"
+    ],
+    "sportradar.com": [
+      "betway.com"
     ],
     "sportradarserving.com": [
+      "unibet.com",
+      "fanduel.com",
       "bet9ja.com"
     ],
-    "sportrecs.com": [
-      "championat.com"
+    "sportscentral.io": [
+      "nbabite.com",
+      "soccerstreams.net"
     ],
     "spot.im": [
-      "aol.com",
-      "realclearpolitics.com",
-      "elespanol.com"
+      "taskandpurpose.com",
+      "amny.com",
+      "boston.com"
     ],
     "spoteffects.net": [
-      "123milhas.com",
-      "ionos.fr"
+      "ionos.co.uk"
     ],
     "spotify.com": [
-      "hurriyet.com.tr",
-      "biobiochile.cl",
-      "premierleague.com"
+      "heraldodemexico.com.mx",
+      "mothership.sg",
+      "rabbitroom.com"
     ],
     "spotim.market": [
-      "aol.com"
+      "boston.com",
+      "nypost.com",
+      "bizpacreview.com"
     ],
     "spotxchange.com": [
-      "tribunnews.com",
-      "tinyurl.com",
-      "dailymail.co.uk"
+      "abcactionnews.com",
+      "nrdc.org",
+      "phillyvoice.com"
     ],
-    "spreadshirt.net": [
-      "spreadshirt.com"
+    "spox.com": [
+      "sportingnews.com"
     ],
     "spreaker.com": [
-      "eltiempo.com",
-      "ellitoral.com"
+      "ellitoral.com",
+      "autoexpress.co.uk",
+      "desiringgod.org"
     ],
     "springserve.com": [
-      "venturebeat.com",
-      "wowhead.com",
-      "nexusmods.com"
+      "phillyvoice.com",
+      "thegazette.com",
+      "minecraftforum.net"
+    ],
+    "sprint.com": [
+      "t-mobile.com"
     ],
     "sputnik.ru": [
-      "pochta.ru",
-      "1sept.ru",
+      "sudrf.ru",
+      "minzdrav.gov.ru",
       "permkrai.ru"
     ],
     "square-enix.com": [
       "square-enix-games.com"
     ],
-    "squren.com": [
-      "gayboystube.com"
+    "squarespace.com": [
+      "webbyawards.com",
+      "youradchoices.ca",
+      "seesaw.me"
+    ],
+    "squareup.com": [
+      "reddit.com"
+    ],
+    "srv272b.com": [
+      "tube8.com",
+      "pornhub.com",
+      "redtube.com"
     ],
     "srvtrck.com": [
       "commentcamarche.net",
       "linternaute.com"
     ],
     "srx.com.sg": [
-      "straitstimes.com",
-      "businesstimes.com.sg"
-    ],
-    "ssense.com": [
-      "informationweek.com"
-    ],
-    "ssg.com": [
-      "hani.co.kr"
+      "straitstimes.com"
     ],
     "sspinc.io": [
-      "nordstromrack.com",
       "ssense.com"
     ],
     "st8fm.com": [
       "statefarm.com"
     ],
     "stack-sonar.com": [
-      "entrepreneur.com",
+      "interestingengineering.com",
       "venturebeat.com",
-      "slashdot.org"
+      "cnn.com"
     ],
     "stackadapt.com": [
-      "dropbox.com",
-      "youm7.com",
-      "hbr.org"
+      "salsalabs.com",
+      "nrdc.org",
+      "maryville.edu"
     ],
     "stackoverflow.com": [
-      "askubuntu.com",
-      "serverfault.com",
       "codinghorror.com"
     ],
     "stackpathcdn.com": [
-      "telugustop.com"
+      "goodlayers.com"
+    ],
+    "stackpathdns.com": [
+      "t-online.de"
+    ],
+    "stacksocial.com": [
+      "neowin.net",
+      "techdirt.com",
+      "bitsdujour.com"
     ],
-    "stat-rock.com": [
-      "elwatannews.com"
+    "stagingjobshq.com": [
+      "duluthnewstribune.com"
     ],
     "stat.media": [
-      "kp.ru",
-      "gazeta.ru",
-      "realclearpolitics.com"
+      "rg.ru",
+      "iz.ru",
+      "thairath.co.th"
+    ],
+    "stat.pet": [
+      "report.az",
+      "azvision.az",
+      "oxu.az"
     ],
     "statad.ru": [
-      "sberbank.ru",
-      "hh.ru",
-      "labirint.ru"
+      "eldorado.ru",
+      "faberlic.com",
+      "alfabank.ru"
     ],
     "statcounter.com": [
-      "freepik.com",
-      "hugedomains.com",
-      "flaticon.com"
+      "arynews.tv",
+      "resultados-futbol.com",
+      "opengroup.org"
     ],
     "state.nj.us": [
       "nj.gov"
     ],
+    "static-af.com": [
+      "airfrance.fr"
+    ],
+    "static-src.com": [
+      "blibli.com"
+    ],
+    "staticbg.com": [
+      "banggood.com"
+    ],
     "staticcache.org": [
       "williamhill.com"
     ],
-    "staticworld.net": [
-      "csoonline.com"
+    "staticflickr.com": [
+      "bath.ac.uk"
+    ],
+    "staticiv.com": [
+      "backcountry.com",
+      "allbirds.com"
+    ],
+    "staticroot.com": [
+      "lastminute.com"
+    ],
+    "statsperformdev.com": [
+      "soccerway.com"
     ],
     "statsy.net": [
       "rarbg.to"
     ],
     "statuspage.io": [
-      "ghost.org",
-      "postman.com"
+      "skiddle.com",
+      "arin.net",
+      "ghost.org"
     ],
     "stdout.cz": [
       "aktualne.cz"
     ],
-    "steelcentral.net": [
-      "wireshark.org"
-    ],
     "steelhousemedia.com": [
       "salesforce.com",
-      "stockx.com",
-      "careerbuilder.com"
+      "hootsuite.com",
+      "customink.com"
+    ],
+    "stepstone.be": [
+      "brusselstimes.com"
+    ],
+    "stepstone.de": [
+      "brusselstimes.com"
     ],
     "stickyadstv.com": [
-      "okezone.com",
-      "aol.com",
-      "youm7.com"
+      "parasut.com",
+      "wsoctv.com",
+      "avaz.ba"
+    ],
+    "stocktwits.com": [
+      "zacks.com"
     ],
-    "stockdio.com": [
-      "newsbeast.gr"
+    "stonly.com": [
+      "kisskissbankbank.com"
     ],
     "storage.googleapis.com": [
       "reviewjournal.com",
-      "campograndenews.com.br",
-      "clicrbs.com.br",
-      "texasmonthly.com"
+      "filgoal.com",
+      "triblive.com"
     ],
     "stores-bloomingdales.com": [
       "bloomingdales.com"
     ],
     "storygize.net": [
-      "bostonglobe.com",
-      "heart.org"
+      "crisistextline.org",
+      "audible.com",
+      "sandiegozoowildlifealliance.org"
     ],
     "stream.ne.jp": [
       "yomiuri.co.jp"
     ],
+    "streamable.com": [
+      "hopin.com"
+    ],
     "streamingddigital.com": [
       "bbva.es"
     ],
     "streamtheworld.com": [
-      "spreaker.com",
-      "eltiempo.com",
-      "cadenaser.com"
+      "baltimoresun.com",
+      "sun-sentinel.com",
+      "orlandosentinel.com"
     ],
-    "stripchat.com": [
-      "informationweek.com"
+    "streem.com.au": [
+      "thenewdaily.com.au"
     ],
     "stripe.com": [
-      "npr.org",
-      "feedly.com",
-      "newsweek.com"
+      "crisisgroup.org",
+      "getepic.com",
+      "dailyhive.com"
     ],
     "stripe.network": [
-      "feedly.com",
-      "artstation.com",
-      "stitcher.com"
+      "crisisgroup.org",
+      "getepic.com",
+      "dailyhive.com"
     ],
-    "stripst.com": [
-      "xhamsterlive.com",
-      "stripchat.com"
+    "stripecdn.com": [
+      "stripe.com"
     ],
     "striveme.com": [
       "kooora.com"
     ],
-    "stucki.io": [
-      "unibas.ch"
-    ],
-    "studybreakmedia.com": [
-      "citationmachine.net",
-      "easybib.com"
+    "stroeermediabrands.de": [
+      "giga.de"
     ],
     "stylight.net": [
-      "yoox.com"
+      "fwrd.com",
+      "revolve.com",
+      "brownsfashion.com"
     ],
-    "subservis.com": [
-      "hurriyet.com.tr",
-      "milliyet.com.tr",
-      "cnnturk.com"
+    "styria.hr": [
+      "vecernji.hr"
+    ],
+    "substack.com": [
+      "fouanalytics.com",
+      "michaelmoore.com"
     ],
     "summerhamster.com": [
-      "cnn.com",
-      "weather.com",
-      "zdnet.com"
+      "gamespot.com",
+      "lapresse.ca",
+      "adultswim.com"
     ],
     "sumo.com": [
-      "freshdesk.com",
-      "popsugar.com",
-      "thrillist.com"
+      "freshworks.com",
+      "techopedia.com",
+      "newamerica.org"
     ],
     "sumologic.com": [
       "levi.com"
@@ -17925,7 +20977,7 @@
     "sundaysky.com": [
       "dell.com",
       "cox.com",
-      "staples.com"
+      "safeway.com"
     ],
     "suning.cn": [
       "pptv.com"
@@ -17933,47 +20985,66 @@
     "suning.com": [
       "pptv.com"
     ],
-    "sunrtb.com": [
-      "eccn.com"
+    "suntimes.com": [
+      "straightdope.com"
+    ],
+    "superpointlesshamsters.com": [
+      "houseoffraser.co.uk"
     ],
     "supplyframe.com": [
-      "arduino.cc",
-      "ti.com",
-      "hackaday.com"
+      "hackaday.io",
+      "hackaday.com",
+      "alldatasheet.com"
     ],
     "surfcountor.com": [
-      "kenh14.vn"
+      "vtv.vn",
+      "soha.vn",
+      "cafef.vn"
+    ],
+    "surgerymcqs.com": [
+      "4mark.net"
     ],
     "survata.com": [
       "tripadvisor.com"
     ],
-    "svd.se": [
-      "aftonbladet.se"
+    "surveygizmo.com": [
+      "collegeboard.org"
+    ],
+    "survicate.com": [
+      "fourseasons.com"
+    ],
+    "suth.digital": [
+      "crucial.com"
+    ],
+    "sutherlandglobal.com": [
+      "airindia.in"
+    ],
+    "svk-native.ru": [
+      "ngs.ru",
+      "woman.ru",
+      "e1.ru"
     ],
     "svtrd.com": [
-      "tnt.com"
+      "tnt.com",
+      "thairath.co.th",
+      "sanook.com"
     ],
     "swiftype.com": [
-      "adage.com",
-      "techsmith.com",
-      "indiewire.com"
-    ],
-    "swisscom.ch": [
-      "bluewin.ch"
+      "akamai.com",
+      "princess.com",
+      "foxit.com"
     ],
-    "swisspass.ch": [
-      "sbb.ch"
+    "swisscom.com": [
+      "swisscom.ch"
     ],
     "symantec.com": [
-      "budsgunshop.com",
-      "jbl.com"
-    ],
-    "synchronycredit.com": [
-      "carecredit.com"
+      "waves.com",
+      "jbl.com",
+      "sleepnumber.com"
     ],
     "syndigo.cloud": [
-      "costco.com",
-      "costco.ca"
+      "costco.ca",
+      "costco.com"
     ],
     "syr.edu": [
       "syracuse.edu"
@@ -17981,9 +21052,6 @@
     "syuh.net": [
       "squarespace.com"
     ],
-    "szzbmy.com": [
-      "rabbitpre.com"
-    ],
     "t-mobilemoney.com": [
       "t-mobile.com"
     ],
@@ -17991,189 +21059,265 @@
       "livenation.com"
     ],
     "t.co": [
-      "wsj.com"
+      "wsj.com",
+      "qualcomm.com",
+      "goarmy.com"
     ],
-    "taboola.com": [
-      "msn.com",
-      "okezone.com",
-      "sourceforge.net"
+    "t.me": [
+      "telegra.ph"
     ],
-    "tacdn.com": [
-      "visitlondon.com"
+    "tableau.com": [
+      "santafenewmexican.com",
+      "irena.org",
+      "adb.org"
     ],
-    "tag4arm.com": [
-      "stockx.com",
-      "web.com"
+    "taboola.com": [
+      "president.jp",
+      "isbank.com.tr",
+      "togetter.com"
     ],
     "tagboard.com": [
-      "ucsd.edu",
-      "activision.com",
-      "scu.edu"
+      "uwec.edu",
+      "ucdavis.edu",
+      "ohio.edu"
+    ],
+    "tagcachestaticx.com": [
+      "4shared.com",
+      "olevod.com"
     ],
     "tagcommander.com": [
-      "hotels.com",
+      "piano.io",
       "yoox.com"
     ],
+    "tagdelivery.com": [
+      "dickssportinggoods.com",
+      "officedepot.com",
+      "bhphotovideo.com"
+    ],
     "tagtic.cn": [
       "a9vg.com"
     ],
+    "tagtoo.co": [
+      "ctee.com.tw",
+      "rakuten.com.tw"
+    ],
     "tailtarget.com": [
       "uol.com.br",
       "globo.com",
-      "metropoles.com"
+      "adorocinema.com"
     ],
-    "talkable.com": [
-      "blurb.com",
-      "society6.com"
+    "taiwanmedia.org": [
+      "hinet.net"
     ],
-    "tam.by": [
-      "tut.by"
+    "talkable.com": [
+      "society6.com",
+      "saatchiart.com",
+      "blurb.com"
     ],
     "tamedia.com.tw": [
       "momoshop.com.tw"
     ],
     "tamgrt.com": [
-      "wyndhamhotels.com",
-      "priceline.com",
-      "bestwestern.com"
+      "shangri-la.com",
+      "mgmresorts.com",
+      "priceline.com"
+    ],
+    "tankeai.com": [
+      "ooopic.com"
     ],
     "tanx.com": [
-      "sohu.com"
+      "ccwin.cn"
     ],
     "taobao.com": [
-      "sm.cn"
+      "ccwin.cn",
+      "mining.online",
+      "iconfont.cn"
     ],
     "tapad.com": [
-      "amazon.com",
-      "godaddy.com",
-      "okezone.com"
+      "ole.com.ar",
+      "dmu.ac.uk",
+      "parasut.com"
+    ],
+    "tapestry-gtm-n45nl7n.uk.r.appspot.com": [
+      "coachoutlet.com"
     ],
     "taplytics.com": [
+      "foxbusiness.com",
       "foxnews.com",
-      "foxbusiness.com"
+      "seamless.com"
     ],
     "tapnative.com": [
       "dailystrength.org"
     ],
-    "targetspot.com": [
-      "spreaker.com",
-      "eltiempo.com",
-      "ellitoral.com"
+    "targethaus.net": [
+      "visme.co"
+    ],
+    "tarteaucitron.io": [
+      "culture.gouv.fr",
+      "elysee.fr",
+      "ademe.fr"
+    ],
+    "tatadigital.com": [
+      "bigbasket.com"
     ],
     "tavoos.net": [
+      "khabarpu.com",
       "parsfootball.com",
-      "shomanews.com",
-      "rasadeghtesadi.com"
+      "beytoote.com"
     ],
     "tawk.to": [
-      "affordable-papers.net",
-      "essayswriting.org",
-      "cba.pl"
+      "accesspressthemes.com",
+      "proseotools.us",
+      "eset.com"
     ],
-    "taylorandfrancis.com": [
-      "tandfonline.com"
+    "taxel.jp": [
+      "tokyo-sports.co.jp",
+      "wowkorea.jp"
     ],
-    "tazabek.kg": [
-      "akipress.org"
+    "tbs.com": [
+      "yahoo.com",
+      "att.com"
     ],
     "tchibo.de": [
-      "t-online.de"
+      "t-online.de",
+      "liansuo.com",
+      "fardanews.com"
+    ],
+    "tcs-asp.net": [
+      "ecnavi.jp",
+      "moppy.jp"
     ],
     "tctm.co": [
-      "tapjoy.com"
+      "salsalabs.com",
+      "pandadoc.com",
+      "lucidchart.com"
+    ],
+    "tdbtrk.com": [
+      "plannedparenthood.org",
+      "hotwire.com"
     ],
     "tdefender.net": [
       "canadiantire.ca"
     ],
     "teads.tv": [
-      "grid.id",
-      "tokopedia.com",
-      "theatlantic.com"
+      "bicycling.com",
+      "crisistextline.org",
+      "ole.com.ar"
     ],
     "tealiumiq.com": [
-      "cnet.com",
-      "ibm.com",
-      "shopify.com"
+      "monash.edu",
+      "libertymutual.com",
+      "mindbodyonline.com"
+    ],
+    "teamblue.services": [
+      "natro.com"
+    ],
+    "techfordemocracy.dk": [
+      "um.dk"
+    ],
+    "techhub.co.kr": [
+      "lotteon.com",
+      "worksmobile.com",
+      "jobkorea.co.kr"
     ],
     "techlab-cdn.com": [
-      "yoox.com",
-      "gucci.com",
-      "mxc.com"
+      "armani.com",
+      "goodyear.com",
+      "dillards.com"
     ],
     "technical-service.net": [
+      "chefkoch.de",
       "stern.de",
-      "rtl.de",
-      "chefkoch.de"
+      "geo.de"
     ],
-    "technologyadvice.com": [
-      "serverwatch.com"
+    "technolutions.net": [
+      "shu.edu"
     ],
     "technoratimedia.com": [
-      "youm7.com",
-      "ask.com",
-      "venturebeat.com"
-    ],
-    "techonline.com": [
-      "eetimes.com"
+      "president.jp",
+      "abcactionnews.com",
+      "phillyvoice.com"
     ],
     "techtarget.com": [
-      "slack.com",
-      "newrelic.com",
-      "gotomeeting.com"
-    ],
-    "techweb.com": [
-      "informationweek.com",
-      "gamasutra.com",
-      "darkreading.com"
+      "paycomonline.com",
+      "lookout.com",
+      "treasuredata.com"
     ],
-    "teenvogue.com": [
-      "wired.com",
-      "newyorker.com",
-      "vanityfair.com"
+    "teespring.com": [
+      "creator-spring.com"
     ],
-    "telekom.de": [
-      "telekom.com"
+    "telegram.org": [
+      "axar.az"
     ],
     "teleport.media": [
-      "vesti.ru",
-      "russia.tv"
+      "smotrim.ru",
+      "1tv.ru",
+      "vesti.ru"
     ],
-    "televebion.net": [
-      "telewebion.com"
+    "teletarget.ru": [
+      "1tv.ru"
     ],
     "tend-table.com": [
-      "donga.com",
-      "koreaherald.com"
+      "chosun.com",
+      "koreaherald.com",
+      "edaily.co.kr"
     ],
     "tenmax.io": [
       "ruten.com.tw",
-      "xuite.net"
+      "1111.com.tw"
+    ],
+    "tensorflow-dot-devsite-v2-prod-3p.appspot.com": [
+      "tensorflow.org"
+    ],
+    "terminus.ninja": [
+      "jwplayer.com"
     ],
     "terminus.services": [
-      "wpengine.com",
-      "unity.com",
-      "gotomeeting.com"
+      "trustwave.com",
+      "cision.com",
+      "calm.com"
+    ],
+    "tesseradigital.com": [
+      "dailystar.com.lb"
+    ],
+    "tfaforms.com": [
+      "highspot.com",
+      "seti.org",
+      "350.org"
     ],
     "tfaforms.net": [
       "teamusa.org",
-      "und.edu",
+      "sigmaaldrich.com",
       "aamc.org"
     ],
+    "tgdd.vn": [
+      "dienmayxanh.com",
+      "thegioididong.com"
+    ],
+    "thaudray.com": [
+      "futemax.gratis"
+    ],
+    "the-ozone-project.com": [
+      "thetimes.co.uk",
+      "empireonline.com",
+      "thescottishsun.co.uk"
+    ],
     "theadex.com": [
-      "t-online.de",
-      "mobile.de",
       "messefrankfurt.com"
     ],
     "thebrighttag.com": [
-      "kohls.com",
-      "sephora.com",
-      "gopro.com"
+      "pokerstars.bet",
+      "constitutioncenter.org",
+      "asda.com"
+    ],
+    "thedmn.com": [
+      "dallasnews.com"
     ],
     "theglobeandmail.ca": [
       "theglobeandmail.com"
     ],
-    "thehindu.com": [
-      "thehindubusinessline.com"
+    "theglobeandmail.com": [
+      "lunarcrush.com"
     ],
     "theice.com": [
       "nyse.com"
@@ -18181,305 +21325,491 @@
     "thejobnetwork.com": [
       "timesfreepress.com"
     ],
-    "them.us": [
-      "wired.com",
-      "newyorker.com",
-      "vanityfair.com"
+    "themedianw.com": [
+      "asiae.co.kr"
     ],
-    "themarker.com": [
-      "haaretz.com"
+    "thenews.com.pk": [
+      "jang.com.pk"
     ],
-    "thenewstribune.com": [
-      "idahostatesman.com"
+    "theoplayer.com": [
+      "tv2.no"
+    ],
+    "theplatform.com": [
+      "usanetwork.com",
+      "syfy.com",
+      "eonline.com"
+    ],
+    "thepointyspritesclub.com": [
+      "clickup.com"
+    ],
+    "thequestionsnetwork.org": [
+      "linuxquestions.org"
     ],
     "theregister.co.uk": [
       "theregister.com"
     ],
     "thesame.tv": [
-      "yaplakal.com"
+      "regnum.ru"
+    ],
+    "thesmilingelbows.com": [
+      "payoneer.com"
     ],
     "thesun.co.uk": [
-      "talksport.com"
+      "the-sun.com"
+    ],
+    "theweathernetwork.com": [
+      "doordash.com"
+    ],
+    "thinglink.me": [
+      "thinglink.com"
     ],
     "thinkpad.com": [
       "lenovo.com.cn"
     ],
-    "threewave.jp": [
-      "moppy.jp"
+    "thisisdax.com": [
+      "baltimoresun.com",
+      "sun-sentinel.com",
+      "orlandosentinel.com"
+    ],
+    "thomann.de": [
+      "thomannmusic.com"
+    ],
+    "thrillist.com": [
+      "thedodo.com"
     ],
     "thron.com": [
-      "ferrari.com"
+      "ferrari.com",
+      "moncler.com"
     ],
     "thrtle.com": [
-      "variety.com",
-      "rollingstone.com",
-      "medscape.com"
+      "bicycling.com",
+      "elle.com",
+      "worldhistory.org"
     ],
     "thunderhead.com": [
-      "forever21.com",
+      "banco.bradesco",
       "telstra.com.au",
-      "banco.bradesco"
+      "bajajfinserv.in"
     ],
     "ti.com.cn": [
       "ti.com"
     ],
+    "tianqi.com": [
+      "365jia.cn"
+    ],
     "tidaltv.com": [
-      "okezone.com",
-      "imgur.com",
-      "geeksforgeeks.org"
+      "yahoo.com",
+      "telemundo.com",
+      "nbcnews.com"
     ],
     "tij.co.jp": [
       "ti.com"
     ],
-    "timecommerce.net": [
-      "people.com",
-      "allrecipes.com",
-      "ew.com"
+    "tijdschrift.nl": [
+      "ad.nl"
+    ],
+    "tiktok.com": [
+      "pacsun.com",
+      "hepsiburada.com",
+      "revolve.com"
     ],
-    "timewarnercable.com": [
-      "spectrumlocalnews.com",
-      "ny1.com"
+    "tiktokcdn.com": [
+      "shape.com",
+      "kompas.com"
+    ],
+    "tildacdn.com": [
+      "nnov.ru",
+      "latina-woman.com",
+      "tilda.cc"
+    ],
+    "timeinc.com": [
+      "magazinereadermall.com",
+      "eatingwell.com"
     ],
     "tinkoffinsurance.ru": [
       "tinkoff.ru"
     ],
+    "tinymce.com": [
+      "govtech.com"
+    ],
     "tinypass.com": [
-      "forbes.com",
-      "reuters.com",
-      "bloomberg.com"
+      "morgenpost.de",
+      "piano.io",
+      "redstate.com"
     ],
     "tiqcdn.com": [
-      "marketwatch.com",
-      "wsj.com",
-      "oakley.com"
+      "dsw.com",
+      "catch.com.au",
+      "kmart.com.au"
     ],
-    "titoaktop.com": [
-      "kickasstorrents.to"
+    "tk0x1.com": [
+      "draftkings.com"
     ],
     "tmall.ru": [
-      "aliexpress.com"
+      "aliexpress.ru",
+      "aliexpress.com",
+      "garant.ru"
+    ],
+    "tmid.es": [
+      "huffingtonpost.es",
+      "marca.com",
+      "as.com"
     ],
     "tmobile.com": [
       "t-mobile.com"
     ],
     "tns-counter.ru": [
-      "vk.com",
-      "mail.ru",
-      "ok.ru"
+      "tass.ru",
+      "smotrim.ru",
+      "radikal.ru"
     ],
     "tns-cs.net": [
-      "nrk.no",
-      "yr.no"
+      "yr.no",
+      "nrk.no"
     ],
     "tns-ua.com": [
-      "i.ua",
       "ria.com",
-      "bigmir.net"
+      "bigmir.net",
+      "korrespondent.net"
+    ],
+    "tntdrama.com": [
+      "yahoo.com",
+      "att.com"
+    ],
+    "tnu8.net": [
+      "backcountry.com"
     ],
     "toast.com": [
-      "ettoday.net",
-      "jpnn.com",
-      "dothome.co.kr"
+      "lotteon.com",
+      "interpark.com",
+      "tmon.co.kr"
+    ],
+    "toglooman.com": [
+      "pelisplushd.net",
+      "asianembed.com"
+    ],
+    "toidas.net": [
+      "j-cast.com"
     ],
     "tombot.ai": [
       "rosettastone.com"
     ],
-    "tomtop.com": [
-      "informationweek.com"
+    "tomi.ai": [
+      "gazprombank.ru",
+      "mvideo.ru",
+      "webinar.ru"
+    ],
+    "tonemedia.com": [
+      "setlist.fm"
+    ],
+    "toolsid.com": [
+      "carid.com"
     ],
-    "tongdun.cn": [
-      "tongdun.net"
+    "top.ge": [
+      "999.md"
     ],
     "top100.ru": [
-      "livejournal.com",
-      "rambler.ru",
-      "lenta.ru"
+      "eldorado.ru",
+      "tass.ru",
+      "livejournal.com"
     ],
     "top4top.io": [
       "cutt.us"
     ],
     "toplist.cz": [
+      "mzv.cz",
+      "ashemaletube.com",
       "opensubtitles.org"
     ],
+    "topthink.com": [
+      "thinkphp.cn"
+    ],
+    "touchev.com": [
+      "d1ev.com"
+    ],
     "toutapp.com": [
+      "red-gate.com",
       "newswire.com"
     ],
-    "tq.cn": [
-      "idianfa.com"
+    "tp88trk.com": [
+      "humblebundle.com",
+      "plannedparenthood.org",
+      "surfeasy.com"
+    ],
+    "tpmn.co.kr": [
+      "st.com",
+      "tpmn.io",
+      "qvc.com"
+    ],
+    "tr8ngames.com": [
+      "indonesiadiscuscommunity.com"
     ],
     "trackad.cz": [
-      "idnes.cz",
-      "aktualne.cz"
+      "lidovky.cz"
+    ],
+    "trackcb.com": [
+      "justcbdstore.com"
     ],
-    "trackalyzer.com": [
-      "servicenow.com"
+    "trackclicks.info": [
+      "meta.ua"
     ],
-    "tradablebits.com": [
-      "sundance.org"
+    "tradbypass.com": [
+      "planetsuzy.org"
     ],
     "tradedoubler.com": [
       "marca.com",
       "elmundo.es",
       "expansion.com"
     ],
+    "tradeinn.com": [
+      "dressinn.com"
+    ],
     "tradelab.fr": [
-      "eklablog.com",
-      "canalblog.com",
-      "icrc.org"
+      "pokerstars.bet"
+    ],
+    "tradingview-widget.com": [
+      "kitco.com",
+      "metanews.com"
     ],
     "tradingview.com": [
-      "investopedia.com",
-      "entrepreneur.com",
-      "kitco.com"
+      "beforeitsnews.com",
+      "elespanol.com",
+      "lainformacion.com"
     ],
-    "traffic-media.co.uk": [
-      "kinokrad.co",
-      "1plus1tv.ru"
+    "traffer.net": [
+      "kinogo.la"
     ],
     "trafficbass.com": [
-      "filmix.co",
+      "1plus1tv.ru",
       "radikal.ru",
-      "1plus1tv.ru"
+      "filmix.ac"
     ],
-    "trafficdok.com": [
-      "filmix.co"
+    "trafficforce.com": [
+      "hdsex.org"
     ],
     "trafficgate.net": [
       "rakuten.co.jp"
     ],
     "trafficguard.ai": [
-      "nerdwallet.com",
       "westernunion.com",
-      "williamhill.com"
+      "carousell.sg",
+      "paltalk.com"
     ],
-    "trafficjunky.net": [
-      "pornhub.com",
-      "redtube.com",
-      "nhentai.net"
+    "traffichaus.com": [
+      "f95zone.to",
+      "privatehomeclips.com"
     ],
-    "trafficlide.com": [
-      "filmix.co"
+    "trafficjunky.com": [
+      "f95zone.to",
+      "tube8.com",
+      "youporn.com"
     ],
-    "trafficsan.com": [
-      "kickassanime.rs"
+    "trafficjunky.net": [
+      "stripchat.com",
+      "verajohn.com",
+      "roobet.com"
     ],
     "trafmag.com": [
-      "rezka.ag",
-      "ukr.net",
-      "prom.ua"
+      "nv.ua",
+      "youm7.com",
+      "rezka.ag"
+    ],
+    "trailblazer.me": [
+      "salesforce.com"
     ],
-    "transferwise.com": [
-      "informationweek.com"
+    "translate-pa.googleapis.com": [
+      "uncg.edu",
+      "analyticsinsight.net",
+      "omegle.com"
     ],
     "travelaudience.com": [
-      "thetrainline.com"
+      "wego.com"
     ],
-    "trbna.com": [
-      "sports.ru"
+    "travelspike.azurewebsites.net": [
+      "frommers.com"
+    ],
+    "travelzoo.com": [
+      "frommers.com"
+    ],
+    "traversedlp.com": [
+      "traversedata.com"
+    ],
+    "trbo.com": [
+      "t-online.de"
     ],
     "treasuredata.com": [
-      "goo.ne.jp",
-      "kakaku.com",
-      "asahi.com"
+      "president.jp",
+      "syosetu.com",
+      "mothership.sg"
     ],
     "tremorhub.com": [
-      "dailymail.co.uk",
-      "aol.com",
-      "youm7.com"
+      "abcactionnews.com",
+      "nrdc.org",
+      "thegatewaypundit.com"
     ],
     "trendemon.com": [
       "tenable.com",
-      "walkme.com",
-      "panasonic.jp"
+      "frontlineeducation.com",
+      "taboola.com"
     ],
     "trendmd.com": [
-      "sciencedaily.com"
+      "techxplore.com",
+      "peerj.com",
+      "phys.org"
+    ],
+    "trgwl.com": [
+      "indonesiadiscuscommunity.com"
     ],
     "tribalfusion.com": [
-      "walmart.com",
-      "realtor.com",
-      "xe.com"
+      "president.jp",
+      "huffingtonpost.es",
+      "yahoo.com"
     ],
     "tribl.io": [
-      "ada.support",
-      "meltwater.com",
-      "jobvite.com"
+      "flexera.com",
+      "ada.cx",
+      "prnewswire.com"
     ],
-    "trinitymedia.ai": [
-      "stripes.com"
+    "triblive.com": [
+      "onecount.net"
     ],
-    "trip.com": [
-      "informationweek.com"
+    "trinitymedia.ai": [
+      "stripes.com",
+      "abplive.com",
+      "pressherald.com"
     ],
     "tripadvisor.com": [
-      "radissonblu.com"
+      "skyscanner.com",
+      "radissonhotels.com",
+      "omnihotels.com"
     ],
     "tripcdn.com": [
       "trip.com"
     ],
+    "triptease.io": [
+      "rosewoodhotels.com"
+    ],
+    "trkd-asia.com": [
+      "rakuten-sec.co.jp",
+      "smbcnikko.co.jp"
+    ],
     "trkn.us": [
-      "unsplash.com",
-      "newyorker.com",
-      "usps.com"
+      "iit.edu",
+      "ncsu.edu",
+      "upwork.com"
+    ],
+    "trlocationmanager.azurewebsites.net": [
+      "tipranks.com"
+    ],
+    "trrsf.com": [
+      "terra.com.br"
     ],
     "trs.cn": [
+      "hainan.gov.cn",
       "gxzf.gov.cn",
-      "xhby.net"
+      "stcn.com"
+    ],
+    "truckid.com": [
+      "carid.com"
+    ],
+    "truconversion.com": [
+      "inc42.com"
     ],
     "truefitcorp.com": [
-      "landsend.com"
+      "pacsun.com",
+      "catch.com.au",
+      "forever21.com"
     ],
     "truehits.in.th": [
-      "sanook.com",
-      "kapook.com",
-      "thairath.co.th"
+      "thairath.co.th",
+      "bangkokpost.com",
+      "trueid.net"
+    ],
+    "trueleadid.com": [
+      "bindright.com"
     ],
     "truepush.com": [
-      "eenadu.net",
-      "3isk.tv",
-      "sarvgyan.com"
+      "w3layouts.com",
+      "geekbuying.com",
+      "analyticsvidhya.com"
+    ],
+    "trugaze.io": [
+      "monografias.com"
     ],
     "trumba.com": [
-      "ucdavis.edu",
-      "okstate.edu",
-      "royalgazette.com"
+      "uwyo.edu",
+      "pepperdine.edu",
+      "facs.org"
     ],
     "truoptik.com": [
-      "wowhead.com"
+      "rpp.pe",
+      "slashdot.org",
+      "imore.com"
     ],
     "trustarc.com": [
-      "redhat.com",
-      "medscape.com",
-      "philips.com"
+      "oracle.com",
+      "mysql.com",
+      "podio.com"
     ],
-    "trustcommander.net": [
-      "mytheresa.com",
-      "lcl.fr"
+    "truste-svc.net": [
+      "philips.com",
+      "ansible.com"
     ],
     "trustedsite.com": [
-      "myus.com"
+      "loccitane.com",
+      "coreldraw.com",
+      "partycity.com"
     ],
     "trustivity.es": [
       "movistar.es"
     ],
+    "trustpilot.com": [
+      "minitool.com",
+      "simplywall.st",
+      "resumegenius.com"
+    ],
+    "trustradius.com": [
+      "druva.com",
+      "jobvite.com"
+    ],
     "trustspot.io": [
+      "aicpa.org",
+      "pdfsimpli.com",
       "cognitoforms.com"
     ],
+    "trutv.com": [
+      "yahoo.com",
+      "att.com"
+    ],
+    "truvid.com": [
+      "technews.tw"
+    ],
     "trvl-px.com": [
-      "hotels.com",
       "vrbo.com"
     ],
     "trwl1.com": [
+      "tktube.com",
+      "e-hentai.org",
       "avgle.com"
     ],
-    "trysera.com": [
-      "realclearpolitics.com",
-      "adorama.com"
+    "tsheets.com": [
+      "intuit.com"
     ],
     "tsyndicate.com": [
-      "drtuber.com",
       "stripchat.com",
-      "xhamster.desi"
+      "analdin.com",
+      "xozilla.com"
+    ],
+    "ttarget.ru": [
+      "km.ru"
+    ],
+    "ttrace.ru": [
+      "riafan.ru"
+    ],
+    "tubecorp.com": [
+      "txxx.com",
+      "upornia.com",
+      "privatehomeclips.com"
     ],
     "tucarro.com.co": [
       "mercadolibre.com.co"
@@ -18490,79 +21820,88 @@
     "tuinmueble.com.ve": [
       "mercadolibre.com.ve"
     ],
+    "tumblr.com": [
+      "premiumtimesng.com",
+      "osxdaily.com",
+      "4mark.net"
+    ],
     "tumoto.com.co": [
       "mercadolibre.com.co"
     ],
     "tumoto.com.ve": [
       "mercadolibre.com.ve"
     ],
+    "tunefindforfans.com": [
+      "azlyrics.com"
+    ],
     "turn.com": [
-      "okezone.com",
-      "forbes.com",
-      "sourceforge.net"
+      "president.jp",
+      "gumtree.co.za",
+      "upwork.com"
     ],
     "tutu.travel": [
       "tutu.ru"
     ],
-    "tvinsider.com": [
-      "gazette.com"
-    ],
-    "tvopen.gr": [
-      "ethnos.gr"
-    ],
     "tvpage.com": [
+      "buybuybaby.com",
       "bedbathandbeyond.com"
     ],
     "tvpixel.com": [
-      "nbcnews.com",
-      "vmware.com",
-      "today.com"
+      "upwork.com",
+      "fool.com",
+      "libertymutual.com"
     ],
     "tvsquared.com": [
-      "godaddy.com",
-      "coursera.org",
-      "hulu.com"
-    ],
-    "tw.cx": [
-      "justwatch.com"
+      "hopkinsmedicine.org",
+      "fool.com",
+      "pitneybowes.com"
     ],
     "twimg.com": [
-      "epfl.ch",
-      "nice.org.uk",
-      "royalsociety.org"
+      "durham.ac.uk",
+      "globalsign.com",
+      "ucl.ac.uk"
+    ],
+    "twinrdsrv.com": [
+      "tnaflix.com",
+      "hdsex.org",
+      "imagefap.com"
     ],
     "twitch.tv": [
-      "xataka.com",
-      "dndbeyond.com",
-      "fextralife.com"
+      "chess.com",
+      "dotesports.com",
+      "newworldfans.com"
     ],
     "twitter.com": [
-      "linkedin.com",
-      "amazon.com",
-      "adobe.com"
-    ],
-    "twnmm.com": [
-      "theweathernetwork.com"
+      "smore.com",
+      "ncsu.edu",
+      "flexera.com"
     ],
     "tynt.com": [
-      "ettoday.net",
-      "inquirer.net",
-      "alnaharegypt.com"
-    ],
-    "typekit.net": [
-      "illinois.edu",
-      "acs.org",
-      "jotform.com",
-      "pixar.com"
+      "akhbarona.com",
+      "conservativebrief.com",
+      "uw.edu.pl"
     ],
-    "u7u9.com": [
-      "sina.com.cn"
-    ],
-    "uadexchange.com": [
-      "uzone.id"
+    "typeform.com": [
+      "conservation.org"
     ],
-    "ubic.tech": [
-      "mos.ru"
+    "typekit.net": [
+      "nra.org",
+      "wsu.edu",
+      "shrm.org"
+    ],
+    "typography.com": [
+      "sierraclub.org",
+      "mansionglobal.com",
+      "nrdc.org"
+    ],
+    "ub-analytics.com": [
+      "airtm.com",
+      "wax.io"
+    ],
+    "ubembed.com": [
+      "duden.de",
+      "securly.com",
+      "cancer.org"
     ],
     "uc.se": [
       "jalbum.net"
@@ -18570,84 +21909,68 @@
     "ucfly.com": [
       "9game.cn"
     ],
-    "ucgstatic.eu": [
-      "unicredit.it"
-    ],
     "uciservice.com": [
-      "hotels.com",
       "hotwire.com"
     ],
-    "udemy.com": [
-      "informationweek.com"
-    ],
     "udesk.cn": [
+      "mokahr.com",
       "kuaidi100.com",
-      "zb.com",
-      "bitz.ai"
+      "aex.com"
     ],
     "udimg.com": [
       "urbandictionary.com"
     ],
     "udmserve.net": [
-      "timesofisrael.com",
-      "nationalinterest.org",
-      "freebeacon.com"
+      "ncronline.org",
+      "majorgeeks.com",
+      "ahram.org.eg"
     ],
-    "ufpcdn.com": [
-      "eztv.io"
+    "udnfunlife.com": [
+      "udn.com"
     ],
-    "uicdn.net": [
-      "ionos.com",
-      "ionos.de",
-      "ionos.fr"
+    "ufpcdn.com": [
+      "freestreams-live1.com"
     ],
     "uikc.net": [
       "qvc.com"
     ],
-    "uimserv.net": [
-      "ionos.com",
-      "ionos.fr"
-    ],
     "ukr.net": [
       "sinoptik.ua"
     ],
-    "ukw.jp": [
-      "peatix.com"
-    ],
-    "ulb.ac.be": [
-      "ulb.be"
-    ],
-    "ulclick.ru": [
-      "aif.ru",
-      "revopush.com"
-    ],
     "ulogin.ru": [
-      "aif.ru",
+      "mining.online",
       "revopush.com"
     ],
     "ultainc.com": [
       "ulta.com"
     ],
     "ultimedia.com": [
-      "lesoir.be",
-      "libertaddigital.com"
+      "lavoixdunord.fr",
+      "boursorama.com",
+      "challenges.fr"
     ],
-    "unbxdapi.com": [
-      "hsn.com"
+    "uma.media": [
+      "tnt-online.ru",
+      "mi.com"
+    ],
+    "unbounce.com": [
+      "teamviewer.com",
+      "airtm.com",
+      "kiva.org"
     ],
-    "uncn.jp": [
-      "hulu.jp"
+    "unbxdapi.com": [
+      "dillards.com",
+      "hsn.com",
+      "express.com"
     ],
-    "uncrate.supply": [
-      "uncrate.com"
+    "undefined": [
+      "daraz.lk",
+      "daraz.com.bd"
     ],
     "undertone.com": [
-      "variety.com",
-      "rollingstone.com",
-      "lastpass.com"
-    ],
-    "uni-frankfurt.de": [
-      "goethe-university-frankfurt.de"
+      "dotesports.com",
+      "billboard.com",
+      "techradar.com"
     ],
     "unicc.org": [
       "ohchr.org"
@@ -18662,80 +21985,130 @@
     "unite.com": [
       "freedownloadmanager.org"
     ],
+    "universalparks.com": [
+      "universalorlando.com"
+    ],
+    "unrulymedia.com": [
+      "ole.com.ar",
+      "youm7.com",
+      "dogemate.com"
+    ],
+    "unrulyvideo.com": [
+      "wenxuecity.com"
+    ],
     "unsplash.com": [
-      "pinterest.com",
-      "pinimg.com",
-      "pinterest.ca"
+      "thegazette.com",
+      "staradvertiser.com",
+      "vocal.media"
     ],
-    "uol.com.br": [
-      "magazineluiza.com.br"
+    "untimburra.com": [
+      "thenetnaija.com",
+      "dogemate.xyz",
+      "fmoviesto.cc"
     ],
     "uplift-platform.com": [
-      "caesars.com"
+      "aeromexico.com",
+      "carnival.com",
+      "spirit.com"
+    ],
+    "upload.cc": [
+      "weibo.com"
     ],
     "upravel.com": [
-      "kp.ru",
-      "aif.ru",
-      "citilink.ru"
+      "superjob.ru",
+      "regnum.ru",
+      "qafqazinfo.az"
+    ],
+    "uprivaladserver.net": [
+      "jneurosci.org"
     ],
-    "upsellit.com": [
-      "ccleaner.com"
+    "uptolike.com": [
+      "garant.ru"
     ],
-    "uptime.com": [
-      "thingiverse.com",
-      "storyblocks.com",
-      "weedmaps.com"
+    "uptrendsdata.com": [
+      "image-line.com"
     ],
     "uq.net.au": [
       "uq.edu.au"
     ],
-    "uqhv.net": [
-      "hsn.com"
+    "uralweb.ru": [
+      "sima-land.ru"
     ],
-    "urbandictionary.store": [
-      "urbandictionary.com"
+    "urlbi.com": [
+      "manta.com"
     ],
     "us-central1-ah-acemarketingteam.cloudfunctions.net": [
       "acehardware.com"
     ],
-    "us-central1-zendesk-functions.cloudfunctions.net": [
-      "yubico.com"
+    "us-central1-kube-ownlocal.cloudfunctions.net": [
+      "thegazette.com",
+      "staradvertiser.com",
+      "dailyherald.com"
     ],
     "usaa360.com": [
       "usaa.com"
     ],
+    "usabilla.com": [
+      "morningstar.com",
+      "rivm.nl",
+      "rhs.org.uk"
+    ],
+    "usanetwork.com": [
+      "nbc.com"
+    ],
+    "usechorus.com": [
+      "thisoldhouse.com"
+    ],
     "useinsider.com": [
-      "idntimes.com",
-      "mynet.com",
-      "blibli.com"
+      "ntv.com.tr",
+      "thairath.co.th",
+      "bangkokpost.com"
+    ],
+    "usemaxserver.de": [
+      "webgo.de"
+    ],
+    "useproof.com": [
+      "simplepractice.com",
+      "benzinga.com"
     ],
     "user-red.com": [
-      "alfabank.ru"
+      "rt.ru",
+      "sbermegamarket.ru",
+      "kontur.ru"
+    ],
+    "user.com": [
+      "uptimerobot.com",
+      "mangools.com",
+      "kwfinder.com"
+    ],
+    "userback.io": [
+      "jmir.org"
     ],
     "usercentrics.eu": [
       "adac.de",
-      "sennheiser.com",
+      "immowelt.de",
       "steinberg.net"
     ],
+    "userdatatrust.com": [
+      "wolterskluwer.com"
+    ],
     "usergram.info": [
+      "doda.jp",
       "ocn.ne.jp",
-      "sony.jp",
-      "hulu.jp"
-    ],
-    "userreplay.net": [
-      "containerstore.com",
-      "papajohns.com",
-      "bathandbodyworks.com"
+      "sony.jp"
     ],
     "userreport.com": [
-      "memurlar.net",
-      "blogg.se",
-      "iltalehti.fi"
+      "giga.de",
+      "techcrunch.com",
+      "scotsman.com"
+    ],
+    "usertracks.live": [
+      "answersingenesis.org"
     ],
     "uservoice.com": [
-      "scoop.it",
-      "adobe.com",
-      "slader.com"
+      "slides.com",
+      "gcfglobal.org",
+      "scoop.it"
     ],
     "userzoom.com": [
       "statefarm.com"
@@ -18744,461 +22117,674 @@
       "narod.ru"
     ],
     "usonar.jp": [
-      "sakura.ne.jp",
-      "sakura.ad.jp"
+      "sakura.ad.jp",
+      "mainichi.jp",
+      "freee.co.jp"
     ],
     "uspech.sk": [
       "sme.sk"
     ],
     "utarget.ru": [
-      "radikal.ru",
-      "utarget.pro"
+      "radikal.ru"
     ],
     "uuidksinc.net": [
       "rezka.ag",
-      "aif.ru"
+      "thairath.co.th",
+      "mk.ru"
     ],
-    "uxfeedback.ru": [
-      "cian.ru",
-      "mvideo.ru",
-      "eldorado.ru"
+    "uxtweak.com": [
+      "news.com.au",
+      "bristol.ac.uk",
+      "tuni.fi"
     ],
     "vads.net.vn": [
       "vietnamnet.vn"
     ],
-    "valkirum.com": [
-      "kinogo.zone"
-    ],
     "valuecommerce.com": [
-      "hotpepper.jp",
-      "alc.co.jp",
-      "techacademy.jp"
+      "gizmodo.jp",
+      "walkerplus.com",
+      "diamond.jp"
     ],
-    "valuecommerce.ne.jp": [
-      "moppy.jp"
+    "variety.com": [
+      "indiewire.com"
+    ],
+    "veinteractive.com": [
+      "walmart.com.mx",
+      "vodafone.co.uk"
     ],
-    "vanityfair.com": [
-      "wired.com",
-      "newyorker.com",
-      "vogue.com"
+    "vendemore.com": [
+      "bmc.com",
+      "splunk.com"
+    ],
+    "venraas.tw": [
+      "rakuten.com.tw"
+    ],
+    "venusrevival.com": [
+      "getyourguide.com"
+    ],
+    "vergic.com": [
+      "aicpa.org"
     ],
-    "veinteractive.com": [
-      "lesoir.be"
+    "verizonmedia.com": [
+      "yahooinc.com"
     ],
-    "velaro.com": [
-      "adp.com"
+    "verizonsmallbusinessessentials.com": [
+      "verizon.com"
     ],
-    "vendemore.com": [
-      "suse.com",
-      "splunk.com"
+    "vesta.io": [
+      "bukalapak.com"
     ],
-    "vergic.com": [
-      "aicpa.org"
+    "vesti.ru": [
+      "smotrim.ru"
     ],
-    "vertebrae-axis.com": [
-      "coach.com"
+    "vettnews.com": [
+      "poynter.org"
     ],
-    "verticalhealth.net": [
-      "psychcentral.com"
+    "vfgte.com": [
+      "youporn.com",
+      "pornhub.com"
     ],
     "vgtrk.com": [
-      "vesti.ru",
-      "russia.tv"
+      "smotrim.ru",
+      "vesti.ru"
     ],
     "vgwort.de": [
-      "wbs-law.de"
+      "giga.de",
+      "t3n.de",
+      "chip.de"
+    ],
+    "viacomcbs.digital": [
+      "cc.com"
+    ],
+    "viadata.store": [
+      "gifer.com",
+      "regnum.ru"
     ],
     "viafoura.co": [
       "cbc.ca",
-      "mirror.co.uk",
-      "mercurynews.com"
+      "sportsnet.ca",
+      "dailyhive.com"
+    ],
+    "viaplays.com": [
+      "animeflv.net",
+      "freestreams-live1.com"
     ],
     "viatorinc.com": [
       "viator.com"
     ],
-    "vidads.gr": [
-      "newsbeast.gr"
+    "vic-m.co": [
+      "businesslive.co.za",
+      "timeslive.co.za",
+      "dailymaverick.co.za"
     ],
-    "vidazoo.com": [
-      "washingtonian.com"
+    "vice.com": [
+      "refinery29.com"
     ],
     "video-cdn.net": [
-      "messefrankfurt.com"
+      "scientificamerican.com"
+    ],
+    "videobyte.com": [
+      "gta5-mods.com",
+      "nexusmods.com"
+    ],
+    "videodatacenter.com": [
+      "kinogo.cx"
+    ],
+    "videodelivery.net": [
+      "tanium.com",
+      "palinfo.com"
     ],
     "videohub.tv": [
       "colorado.edu",
-      "wsj.com",
-      "dashlane.com"
+      "dstillery.com",
+      "wsj.com"
+    ],
+    "videonow.ru": [
+      "fastpic.org",
+      "regnum.ru"
+    ],
+    "videostep.com": [
+      "julian-fashion.com"
+    ],
+    "videoyoum7.com": [
+      "telexpresse.com"
     ],
     "vidgrid.com": [
       "paylocity.com"
     ],
     "vidible.tv": [
-      "huffpost.com",
-      "huffingtonpost.ca",
-      "edh.tw"
+      "aol.com",
+      "bloombergquint.com",
+      "autoblog.com"
     ],
     "vidio.com": [
-      "liputan6.com",
-      "bola.net"
+      "kapanlagi.com",
+      "brilio.net",
+      "merdeka.com"
+    ],
+    "vidoomy.com": [
+      "cnbeta.com",
+      "guardian.ng"
+    ],
+    "vidy.com": [
+      "mothership.sg",
+      "haibunda.com",
+      "cnbcindonesia.com"
     ],
     "vidyard.com": [
-      "izooto.com",
-      "ultimatesoftware.com",
-      "clarivate.com"
+      "gravityforms.com",
+      "lwolf.com",
+      "elastic.co"
     ],
-    "vietid.net": [
-      "soha.vn"
+    "vietnamnetad.vn": [
+      "vietnamnet.vn"
     ],
     "vietnamnettv.vn": [
       "vietnamnet.vn"
     ],
+    "viewdeos.com": [
+      "nownews.com"
+    ],
     "viglink.com": [
-      "cnet.com",
-      "zdnet.com",
-      "techrepublic.com"
+      "futurism.com",
+      "electrek.co",
+      "design-milk.com"
+    ],
+    "vigo.one": [
+      "gazeta.ru",
+      "lenta.ru"
     ],
     "vihub.ru": [
-      "rezka.ag",
-      "baskino.me",
+      "fastpic.org",
       "litres.ru"
     ],
     "viki.io": [
-      "viki.com"
+      "viki.com",
+      "soompi.com"
     ],
     "vindicosuite.com": [
-      "jpost.com",
-      "zappos.com",
-      "medallia.com"
+      "avaz.ba",
+      "elsiglo.mx",
+      "salvationarmyusa.org"
     ],
     "viostream.com": [
       "ato.gov.au"
     ],
-    "vip.com": [
-      "idianfa.com"
-    ],
     "vipstatic.com": [
       "vip.com"
     ],
     "viqeo.tv": [
-      "rg.ru"
+      "ngs.ru",
+      "mk.ru"
     ],
-    "viralize.tv": [
-      "ilfattoquotidiano.it"
+    "viralsweep.com": [
+      "winespectator.com",
+      "dealnews.com"
     ],
     "virgul.com": [
-      "yemek.com",
-      "tureng.com"
+      "tureng.com",
+      "doviz.com"
     ],
-    "virtuoussoftware.com": [
-      "lifesitenews.com"
+    "virtonnews.com": [
+      "ng.ru"
     ],
     "visa.com": [
-      "authorize.net",
-      "cybersource.com"
+      "dunkindonuts.com",
+      "cybersource.com",
+      "authorize.net"
     ],
     "visilabs.net": [
+      "cimri.com",
       "kariyer.net"
     ],
+    "visionip.tv": [
+      "thisdaylive.com"
+    ],
+    "visitor-analytics.io": [
+      "blis.com"
+    ],
     "visitor-track.com": [
       "hivestreaming.com",
-      "prnewswire.com"
+      "birdeye.com",
+      "bmc.com"
     ],
     "visualstudio.com": [
-      "dior.com",
-      "seriouseats.com",
-      "techopedia.com"
+      "fontspace.com",
+      "woolworths.com.au",
+      "fifa.com"
     ],
     "visualwebsiteoptimizer.com": [
-      "instructure.com",
-      "okta.com",
-      "plesk.com"
+      "convertkit.com",
+      "manychat.com",
+      "goodtherapy.org"
     ],
-    "vivino.com": [
-      "informationweek.com"
+    "vizury.com": [
+      "build.com"
     ],
-    "vivocha.com": [
-      "insee.fr"
+    "vk-portal.net": [
+      "vk.com"
     ],
-    "vizergy.com": [
-      "hardrock.com"
+    "vk.com": [
+      "infourok.ru",
+      "fotostrana.ru",
+      "eldorado.ru"
     ],
-    "vizury.com": [
-      "adorama.com"
+    "vkuser.net": [
+      "ok.ru"
     ],
-    "vk.com": [
-      "livejournal.com",
-      "aliexpress.ru",
-      "asos.com"
+    "vm5apis.com": [
+      "thenewslens.com"
     ],
-    "vnecdn.net": [
-      "vnexpress.net"
+    "vmware.com": [
+      "bitnami.com",
+      "spring.io"
+    ],
+    "vo-media.ru": [
+      "topwar.ru"
+    ],
+    "vod.pl": [
+      "onet.pl"
     ],
     "vodgc.net": [
-      "tn.com.ar"
+      "tn.com.ar",
+      "ole.com.ar"
     ],
-    "vogue.com": [
-      "wired.com",
-      "newyorker.com",
-      "vanityfair.com"
+    "vodus-api-serverless.azurewebsites.net": [
+      "nst.com.my"
+    ],
+    "vodus.com": [
+      "nst.com.my"
     ],
     "voidboost.net": [
       "baskino.me"
     ],
+    "volcast.com": [
+      "lewrockwell.com"
+    ],
+    "voltaxservices.io": [
+      "mentalfloss.com",
+      "metro.co.uk",
+      "sportingnews.com"
+    ],
     "volvelle.tech": [
-      "lesoir.be"
+      "vodafone.co.uk"
+    ],
+    "votepca.com": [
+      "eonline.com"
     ],
     "voxmedia.com": [
-      "theverge.com",
-      "vox.com",
-      "polygon.com"
+      "theringer.com",
+      "straightdope.com",
+      "mmafighting.com"
     ],
-    "vporn.com": [
-      "pornone.com"
+    "vs3.com": [
+      "spankbang.com"
     ],
-    "vroom.be": [
-      "standaard.be"
+    "vtb24.ru": [
+      "vtb.ru"
     ],
-    "vrtzads.com": [
-      "thehindu.com"
+    "vtex.com": [
+      "motorola.com"
     ],
-    "vstocklab.com": [
-      "hani.co.kr"
+    "vuit.com": [
+      "wfmz.com"
+    ],
+    "vuukle.com": [
+      "valuewalk.com",
+      "greatandhra.com",
+      "conservativebrief.com"
     ],
-    "vupulse.com": [
-      "dailywire.com"
+    "vz.ru": [
+      "yandex.ru"
+    ],
+    "vzck.net": [
+      "basspro.com"
     ],
     "vzew.net": [
+      "journaldemontreal.com",
       "lenovo.com"
     ],
+    "w3counter.com": [
+      "icrypto.media"
+    ],
     "w55c.net": [
-      "forbes.com",
-      "addthis.com",
-      "pbs.org"
+      "president.jp",
+      "parasut.com",
+      "hopkinsmedicine.org"
     ],
     "w8.com.cn": [
-      "zol.com.cn",
-      "cnmo.com"
+      "zol.com.cn"
+    ],
+    "wal.co": [
+      "asda.com"
     ],
-    "walkme.com": [
-      "moodys.com"
+    "wallit.io": [
+      "city-journal.org"
     ],
     "wallkit.net": [
-      "thewrap.com"
+      "venturebeat.com",
+      "psfk.com"
+    ],
+    "walls.io": [
+      "rit.edu"
+    ],
+    "walmart.ca": [
+      "asda.com"
+    ],
+    "walmart.com": [
+      "hothardware.com",
+      "ozy.com"
+    ],
+    "warriorplus.com": [
+      "rytr.me"
     ],
     "watertu.com": [
       "gusuwang.com"
     ],
     "wbtrk.net": [
-      "goethe.de",
+      "rts.ch",
       "telekom.com",
-      "swissinfo.ch"
+      "messefrankfurt.com"
     ],
     "wcfbc.net": [
-      "repubblica.it",
+      "ferrari.com",
       "telekom.com",
       "messefrankfurt.com"
     ],
+    "wctrib.com": [
+      "duluthnewstribune.com"
+    ],
     "wdsvc.net": [
-      "alz.org",
-      "nature.org",
-      "taxfoundation.org"
+      "taxfoundation.org",
+      "savethechildren.org",
+      "washingtonexaminer.com"
     ],
-    "webankieta.pl": [
-      "certum.pl"
+    "weareplannedparenthood.org": [
+      "plannedparenthood.org"
+    ],
+    "weatherol.com": [
+      "tom.com"
     ],
     "webantenna.info": [
       "coconala.com",
       "hulu.jp",
       "onamae.com"
     ],
+    "webengage.co": [
+      "livehindustan.com",
+      "analyticsvidhya.com",
+      "pluralsight.com"
+    ],
     "webengage.com": [
-      "testbook.com",
-      "deccanherald.com",
-      "angelbroking.com"
+      "angelone.in",
+      "shiprocket.in",
+      "pluralsight.com"
     ],
     "webeyez.com": [
-      "similarweb.com"
+      "atterley.com"
+    ],
+    "webflow.com": [
+      "puzl.com",
+      "sabio.inc",
+      "connectadrealtime.com"
     ],
     "webforms-here.com": [
       "here.com"
     ],
-    "webmd.com": [
-      "avvo.com"
-    ],
-    "webnode.com": [
-      "webnode.cz"
+    "webim.ru": [
+      "hh.ru"
     ],
     "weborama.fr": [
-      "ivi.tv",
       "kino-teatr.ru",
-      "aif.ru"
+      "ivi.tv",
+      "mvideo.ru"
     ],
     "webpush.jp": [
-      "asahi.com",
       "sankei.com",
-      "sponichi.co.jp"
+      "tokyo-sports.co.jp",
+      "daily.co.jp"
+    ],
+    "webpuzzleapp.com": [
+      "theworlds50best.com"
     ],
-    "webs.com": [
-      "freewebs.com"
+    "webroot.com": [
+      "brightcloud.com"
     ],
     "webspectator.com": [
       "metropoles.com",
-      "goal.com",
-      "otvfoco.com.br"
+      "soccerway.com",
+      "ig.com.br"
     ],
     "webterren.com": [
-      "china.com.cn",
-      "eastday.com",
-      "rednet.cn"
+      "southcn.com",
+      "cnr.cn",
+      "mee.gov.cn"
     ],
     "webtracker.jp": [
-      "ascii.jp",
-      "famitsu.com"
+      "l-tike.com",
+      "famitsu.com",
+      "ascii.jp"
     ],
     "webtrafficsource.com": [
-      "newchic.com",
-      "dx.com"
+      "angelone.in",
+      "correiobraziliense.com.br",
+      "dhgate.com"
+    ],
+    "webtrekk-us.net": [
+      "bovada.lv"
     ],
     "webtrekk.net": [
-      "springer.com",
+      "tiscali.it",
       "hepsiburada.com",
-      "goethe.de"
+      "heise.de"
     ],
     "webtrendslive.com": [
+      "icc-cpi.int",
       "aaa.com",
-      "ingrammicro.com"
-    ],
-    "webturn.ru": [
-      "domclick.ru"
-    ],
-    "webullfintech.com": [
-      "webull.com"
+      "hitachi.com"
     ],
     "webvisor.org": [
-      "tribunnews.com",
-      "inquirer.net",
-      "narod.ru"
+      "tjournal.ru",
+      "rezka.ag",
+      "brilio.net"
     ],
     "weekli.de": [
+      "stuttgarter-zeitung.de",
       "rp-online.de"
     ],
     "weibo.com": [
-      "cnad.com",
-      "ccidnet.com",
-      "19888.tv"
+      "eoffcn.com",
+      "techweb.com.cn",
+      "hea.cn"
     ],
     "wellsmedia.com": [
       "insurancejournal.com"
     ],
-    "wemfbox.ch": [
-      "swissinfo.ch",
-      "nzz.ch",
-      "20min.ch"
+    "welt.de": [
+      "bild.de"
+    ],
+    "wenku365.com": [
+      "5ykj.com"
+    ],
+    "westernunion.ru": [
+      "westernunion.com"
+    ],
+    "westlaw.com": [
+      "thomsonreuters.com"
+    ],
+    "wetvinfo.com": [
+      "wetv.vip"
     ],
-    "wemorefun.com": [
-      "appgame.com"
+    "wezhan.cn": [
+      "qhyhgf.com"
     ],
-    "west.cn": [
-      "idianfa.com"
+    "wfla.com": [
+      "myfox8.com"
     ],
-    "whistleout.com": [
-      "dslreports.com"
+    "wheelwheel.space": [
+      "f95zone.to"
+    ],
+    "whiteboxdigital.ru": [
+      "regnum.ru"
+    ],
+    "whitesaas.com": [
+      "nic.ru",
+      "nethouse.ru"
     ],
     "wi-fi.ru": [
-      "ntv.ru",
-      "yaplakal.com",
-      "zaycev.net"
+      "eldorado.ru",
+      "sportbox.ru",
+      "matchtv.ru"
     ],
     "widengle.com": [
       "caesars.com"
     ],
-    "wikia-services.com": [
-      "gamepedia.com"
+    "widerplanet.com": [
+      "lotteon.com",
+      "hani.co.kr",
+      "jobkorea.co.kr"
+    ],
+    "wikimedia.org": [
+      "wikiwand.com",
+      "vice.com",
+      "thethao247.vn"
     ],
-    "wikipedia.org": [
-      "flattr.com"
+    "williams-sonoma.com": [
+      "westelm.com"
     ],
     "wiqhit.com": [
       "eur.nl"
     ],
-    "wired.com": [
-      "newyorker.com",
-      "vanityfair.com",
-      "vogue.com"
+    "wisenut.co.kr": [
+      "hani.co.kr"
     ],
     "wishabi.com": [
       "globalnews.ca",
-      "nationalpost.com",
-      "baltimoresun.com",
-      "edmontonjournal.com"
+      "wral.com"
+    ],
+    "wishpond.com": [
+      "astronomy.com",
+      "murdoch.edu.au"
+    ],
+    "wishpond.net": [
+      "astronomy.com"
     ],
     "wisokykulas.bid": [
-      "filmix.co"
+      "baskino.me",
+      "filmix.ac",
+      "rezka.ag"
     ],
     "wistia.com": [
-      "magento.com",
-      "getflywheel.com"
+      "heap.io",
+      "braze.com",
+      "drift.com"
     ],
     "wistia.net": [
-      "uservoice.com",
-      "pendo.io",
-      "pardot.com"
+      "data.world",
+      "vwo.com",
+      "pendo.io"
     ],
     "wix.com": [
-      "deviantart.com"
+      "britepool.com"
     ],
-    "wkxppshj-qx.global.ssl.fastly.net": [
-      "jcpenney.com",
-      "ulta.com",
-      "argos.co.uk"
+    "wizards.com": [
+      "reddit.com"
+    ],
+    "wmtransfer.com": [
+      "webmoney.ru"
     ],
-    "wnyc.org": [
-      "newyorker.com"
+    "wooly.com": [
+      "specialized.com"
     ],
-    "wo-cloud.com": [
-      "wetteronline.de"
+    "wooza.com.br": [
+      "claro.com.br"
     ],
-    "wondershare.com": [
-      "wondershare.net"
+    "wordpress.com": [
+      "jetpack.com",
+      "thisdaylive.com",
+      "soranews24.com"
     ],
     "workplace.tools": [
       "workplace.com"
     ],
+    "worldgravity.com": [
+      "mundodeportivo.com"
+    ],
+    "worldline-solutions.com": [
+      "renaultgroup.com"
+    ],
+    "woxo.tech": [
+      "tribune.com.pk"
+    ],
     "wp.com": [
-      "akismet.com",
+      "crowdsignal.com",
       "jetpack.com",
-      "crowdsignal.com"
+      "theaustralian.com.au"
+    ],
+    "wp.pl": [
+      "wykop.pl"
+    ],
+    "wpadmngr.com": [
+      "pornzog.com",
+      "txxx.com"
+    ],
+    "wpdigital.net": [
+      "washingtonpost.com"
+    ],
+    "wpengine.com": [
+      "spotx.tv",
+      "tennessee.edu",
+      "vungle.com"
     ],
     "wpmudev.com": [
-      "curtin.edu.au",
-      "familydoctor.org"
+      "weareteachers.com",
+      "familydoctor.org",
+      "utdallas.edu"
+    ],
+    "wsj.com": [
+      "airtm.com"
     ],
     "wsod.com": [
+      "tdameritrade.com",
       "reuters.com",
-      "cnbc.com",
-      "ft.com"
+      "investingchannel.com"
     ],
     "wt-eu02.net": [
       "libero.it",
-      "virgilio.it",
-      "telekom.com"
+      "ferrari.com",
+      "rts.ch"
     ],
     "wufoo.com": [
-      "redcrossblood.org"
+      "harvardmagazine.com"
+    ],
+    "wusa9.com": [
+      "khou.com",
+      "wtsp.com",
+      "wwltv.com"
     ],
-    "wzrkt.com": [
-      "indianexpress.com",
-      "thehindu.com",
-      "espncricinfo.com"
+    "wustl.edu": [
+      "newswise.com"
     ],
-    "xesimg.com": [
-      "xueersi.com"
+    "www.gov.cn": [
+      "cq.gov.cn",
+      "beijing.gov.cn"
+    ],
+    "wysistat.com": [
+      "lefigaro.fr",
+      "la-croix.com",
+      "ouest-france.fr"
     ],
     "xg4ken.com": [
-      "williams-sonoma.com",
-      "courier-journal.com",
-      "logitech.com"
+      "potterybarnkids.com",
+      "theledger.com",
+      "runnersworld.com"
+    ],
+    "xgen.dev": [
+      "julian-fashion.com"
+    ],
+    "xhamster.com": [
+      "efukt.com",
+      "painaltube.com"
     ],
     "xhuc.net": [
       "cabelas.com"
@@ -19207,101 +22793,119 @@
       "news.cn"
     ],
     "xinnet.com": [
-      "idianfa.com"
+      "300.cn"
     ],
     "xiti.com": [
-      "dw.com",
-      "accor.com",
-      "ovh.com"
+      "letelegramme.fr",
+      "musee-orsay.fr",
+      "service-public.fr"
     ],
     "xiu123.cn": [
       "6.cn"
     ],
     "xlisting.jp": [
+      "ocn.ne.jp",
       "rakuten.co.jp",
-      "goo.ne.jp",
-      "ocn.ne.jp"
-    ],
-    "xspadvertising.com": [
-      "sourceforge.net",
-      "deloitte.com",
-      "knowyourmeme.com"
+      "goo.ne.jp"
     ],
     "xtremepush.com": [
-      "digikala.com",
-      "rte.ie",
-      "premierbet.co.ao"
+      "irishtimes.com",
+      "betonline.ag",
+      "betus.com.pa"
     ],
-    "xunlei.com": [
-      "sandai.net"
+    "xxxjmp.com": [
+      "stripchat.com",
+      "analdin.com",
+      "gayboystube.com"
     ],
-    "xxxlutz.de": [
-      "t-online.de"
+    "y-track.com": [
+      "decathlon.fr",
+      "cartier.com"
     ],
     "yad2.co.il": [
       "walla.co.il"
     ],
     "yadro.ru": [
-      "mail.ru",
-      "ok.ru",
-      "rt.com"
+      "1plus1tv.ru",
+      "infourok.ru",
+      "fotostrana.ru"
     ],
     "yahoo.co.jp": [
-      "dropbox.com",
-      "rakuten.co.jp",
-      "slack.com"
+      "president.jp",
+      "newspicks.com",
+      "trilltrill.jp"
     ],
     "yahoo.com": [
-      "amazon.com",
-      "tumblr.com",
-      "msn.com"
+      "president.jp",
+      "isbank.com.tr",
+      "ucsusa.org"
     ],
     "yahoo.net": [
       "paulgraham.com"
     ],
+    "yahoosandbox.com": [
+      "techcrunch.com"
+    ],
+    "yandex.com": [
+      "ultimate-guitar.com",
+      "musescore.com"
+    ],
+    "yandex.net": [
+      "drom.ru",
+      "livejournal.com"
+    ],
     "yandex.ru": [
-      "tribunnews.com",
-      "mail.ru",
-      "aparat.com"
+      "motherless.com",
+      "haberler.com",
+      "infourok.ru"
     ],
     "yapfiles.ru": [
       "yaplakal.com"
     ],
+    "yastatic.net": [
+      "nalog.gov.ru"
+    ],
     "yccdn.com": [
-      "bitauto.com"
+      "yiche.com"
     ],
     "yektanet.com": [
-      "varzesh3.com",
-      "donya-e-eqtesad.com",
-      "tejaratnews.com"
-    ],
-    "yellowblue.io": [
-      "aol.com"
-    ],
-    "yiche.com": [
-      "bitauto.com"
+      "salameno.com",
+      "arga-mag.com",
+      "zoomit.ir"
     ],
-    "yieldify.com": [
-      "teespring.com"
+    "yeps.io": [
+      "validcbdoil.com",
+      "omgjapan.com"
     ],
     "yieldlab.net": [
-      "okezone.com",
-      "statista.com",
-      "businessinsider.de"
+      "parasut.com",
+      "giga.de",
+      "focus.de"
+    ],
+    "yieldlift.com": [
+      "militarytimes.com",
+      "motor1.com",
+      "digitaltrends.com"
     ],
     "yieldmanager.com": [
-      "ipage.com",
-      "tsite.jp"
+      "bizland.com",
+      "fatcow.com",
+      "hypermart.net"
     ],
     "yieldmo.com": [
-      "foreignpolicy.com",
-      "mobafire.com",
-      "woot.com"
+      "tinyurl.com",
+      "yahoo.com",
+      "rasmussenreports.com"
     ],
     "yieldoptimizer.com": [
-      "marriott.com",
-      "united.com",
-      "fourseasons.com"
+      "japan-guide.com",
+      "greyhound.com",
+      "malaysiaairlines.com"
+    ],
+    "yimg.com": [
+      "wgu.edu",
+      "movavi.com",
+      "klook.com"
     ],
     "yodasoft.in": [
       "sakshi.com"
@@ -19313,128 +22917,160 @@
       "yna.co.kr"
     ],
     "yoox.it": [
-      "yoox.com",
-      "mrporter.com",
-      "theoutnet.com"
+      "bottegaveneta.com"
     ],
     "yotpo.com": [
+      "pacsun.com",
       "threadless.com",
-      "colourpop.com",
-      "splice.com"
+      "fancy.com"
+    ],
+    "yottaa.net": [
+      "yottaa.com",
+      "dsw.com"
     ],
     "youdemai.com": [
       "lenovo.com.cn"
     ],
+    "youjizz.com": [
+      "exosrv.com"
+    ],
     "youku.com": [
-      "bshare.cn"
+      "5pao.com"
     ],
     "youplay.se": [
-      "thelocal.se"
+      "thelocal.se",
+      "thelocal.de",
+      "thelocal.fr"
+    ],
+    "yourtubetvs.site": [
+      "fastpic.org"
+    ],
+    "youth.gov.hk": [
+      "sie.gov.hk"
     ],
     "youtube-nocookie.com": [
-      "drupal.org",
-      "last.fm",
-      "tmz.com"
+      "gitlab.com",
+      "sli.do",
+      "wm.edu"
     ],
     "youtube.com": [
-      "apache.org",
-      "github.com",
-      "who.int",
-      "jabra.com",
-      "hirufm.lk"
+      "reverbnation.com",
+      "nngroup.com",
+      "ncsu.edu"
     ],
     "youvisit.com": [
-      "fsu.edu",
-      "uh.edu",
-      "vcu.edu"
+      "uncg.edu",
+      "missouristate.edu",
+      "uaf.edu"
+    ],
+    "yprocedent.co": [
+      "cuevana3.io"
+    ],
+    "ytube2dl.com": [
+      "9anime.to"
+    ],
+    "yuanben.io": [
+      "nbd.com.cn"
+    ],
+    "yuca.tv": [
+      "celine.com"
+    ],
+    "yuguo.com": [
+      "cifnews.com"
     ],
     "yumpu.com": [
       "vanguardngr.com"
     ],
     "yunaq.com": [
+      "zhiding.cn",
       "eqxiu.com",
-      "bt.cn",
-      "youzan.com"
+      "ali213.net"
+    ],
+    "yungao.mobi": [
+      "sina.cn",
+      "sina.com.cn"
+    ],
+    "ywxq.net": [
+      "trustedsite.com"
     ],
     "yystatic.com": [
       "yy.com"
     ],
-    "z-analytics.net": [
-      "zmags.com"
-    ],
     "z6rjha.net": [
       "techsmith.com"
     ],
-    "zadn.vn": [
-      "zingnews.vn"
-    ],
     "zaius.com": [
-      "sothebys.com"
+      "sothebys.com",
+      "optimizely.com"
     ],
     "zalo.me": [
-      "zingnews.vn",
       "baomoi.com",
-      "zingmp3.vn"
-    ],
-    "zaloapp.com": [
       "zingnews.vn",
-      "baomoi.com"
+      "tvphapluat.vn"
     ],
-    "zara.net": [
-      "zara.com"
+    "zap.buzz": [
+      "9anime.to"
     ],
     "zarabotkipro.ru": [
       "vz.ru"
     ],
+    "zarahome.net": [
+      "zarahome.com"
+    ],
     "zdbb.net": [
-      "speedtest.net",
-      "mashable.com",
-      "pcmag.com"
+      "spiceworks.com",
+      "everydayhealth.com",
+      "whattoexpect.com"
     ],
     "zdmimg.com": [
       "smzdm.com"
     ],
-    "zebestof.com": [
-      "webself.net",
-      "journaldunet.com"
-    ],
-    "zedo.com": [
-      "alwafd.news",
-      "thehindu.com",
-      "indiatoday.in"
-    ],
     "zemanta.com": [
-      "thehill.com",
-      "farfetch.com",
-      "newsmax.com"
+      "abcactionnews.com",
+      "lamag.com",
+      "chicagobusiness.com"
+    ],
+    "zenaps.com": [
+      "hostnet.nl"
     ],
     "zendesk.com": [
-      "neilpatel.com",
-      "bugsnag.com",
-      "folgory.com"
+      "almanac.com",
+      "leetchi.com",
+      "polar.com"
     ],
     "zengenti.com": [
-      "nottingham.ac.uk"
+      "brighton.ac.uk"
     ],
     "zeotap.com": [
-      "amazon.com",
-      "geeksforgeeks.org",
-      "skyrock.com"
+      "servimg.com",
+      "pcgamer.com",
+      "gamesradar.com"
+    ],
+    "zephr.com": [
+      "informationweek.com",
+      "gamedeveloper.com",
+      "darkreading.com"
     ],
     "zergnet.com": [
-      "marketwatch.com",
-      "wegotthiscovered.com",
-      "knowyourmeme.com"
+      "nypost.com",
+      "rasmussenreports.com",
+      "contactmusic.com"
     ],
     "zero.kz": [
-      "kundelik.kz",
-      "egov.kz"
+      "egov.kz",
+      "kundelik.kz"
+    ],
+    "zerohedge.com": [
+      "lunarcrush.com"
     ],
     "zeronaught.com": [
+      "southwest.com",
       "chipotle.com"
     ],
     "zg-api.com": [
-      "trulia.com"
+      "trulia.com",
+      "hotpads.com",
+      "streeteasy.com"
     ],
     "zhugeapi.net": [
       "processon.com"
@@ -19445,61 +23081,86 @@
     "ziffdavis.com": [
       "extremetech.com"
     ],
-    "ziftsolutions.com": [
-      "netacad.com"
+    "zikroarg.com": [
+      "multicanais.tv",
+      "cima4u.ws"
     ],
     "zimmo.be": [
-      "nieuwsblad.be",
-      "standaard.be"
+      "standaard.be",
+      "nieuwsblad.be"
     ],
     "zineone.com": [
-      "kohls.com"
+      "ashleyfurniture.com"
     ],
     "zippyfrog.co": [
       "bitly.com"
     ],
-    "zipwiresw.com": [
-      "metopera.org"
+    "zmags.com": [
+      "creatorbyzmags.com"
     ],
-    "zoho.com": [
-      "runsignup.com",
-      "xmission.com"
+    "znds.com": [
+      "dangbei.com"
     ],
-    "zoho.in": [
-      "zoho.com"
+    "zo.la": [
+      "hachettebookgroup.com"
+    ],
+    "zoho.com": [
+      "xmission.com",
+      "blis.com",
+      "datadome.co"
     ],
-    "zol.com.cn": [
-      "cnmo.com"
+    "zoho.eu": [
+      "topuniversities.com",
+      "bmj.com"
     ],
     "zonebourse.com": [
       "marketscreener.com"
     ],
     "zoomanalytics.co": [
-      "technion.ac.il"
+      "yadvashem.org"
+    ],
+    "zoomd.com": [
+      "mathrubhumi.com"
     ],
     "zoominfo.com": [
-      "appsflyer.com",
-      "eset.com",
-      "onelogin.com"
+      "piano.io",
+      "salsalabs.com",
+      "helpshift.com"
     ],
     "zoomph.com": [
-      "uga.edu",
-      "eatright.org"
+      "uga.edu"
     ],
     "zopim.com": [
+      "microcenter.com",
+      "babylist.com",
       "clockify.me"
     ],
     "zprk.io": [
-      "straitstimes.com",
-      "oneindia.com",
-      "thewrap.com"
+      "hardwarezone.com.sg",
+      "9news.com.au",
+      "goodreturns.in"
     ],
     "ztsrv.com": [
+      "beatstars.com",
+      "onsemi.com",
       "fullerton.edu"
     ],
     "zucks.net": [
-      "au.com"
+      "ecnavi.jp",
+      "au.com",
+      "daily.co.jp"
+    ],
+    "zum.com": [
+      "hani.co.kr",
+      "asiae.co.kr"
+    ],
+    "zvezdaweekly.ru": [
+      "tvzvezda.ru"
+    ],
+    "zybrdr.com": [
+      "boafoda.com",
+      "redgifs.com"
     ]
   },
-  "version": "2020.10.2"
+  "version": "2021.11.23"
 }
\ No newline at end of file
diff --git a/src/data/socialwidgets.json b/src/data/socialwidgets.json
index a09893ea..cb9c9b72 100644
--- a/src/data/socialwidgets.json
+++ b/src/data/socialwidgets.json
@@ -15,6 +15,20 @@
             "type": 2
         }
     },
+    "Apple Music": {
+        "domains": [
+            "embed.music.apple.com"
+        ],
+        "buttonSelectors": [
+            "iframe[src^='https://embed.music.apple.com/']"
+        ],
+        "replacementButton": {
+            "unblockDomains": [
+                "embed.music.apple.com"
+            ],
+            "type": 3
+        }
+    },
     "Coub Player": {
         "domain": "coub.com",
         "buttonSelectors": [
@@ -27,6 +41,20 @@
             "type": 3
         }
     },
+    "Dailymotion Player": {
+        "domain": "www.dailymotion.com",
+        "buttonSelectors": [
+            "iframe[src^='http://www.dailymotion.com/embed/video/']",
+            "iframe[src^='https://www.dailymotion.com/embed/video/']",
+            "iframe[src^='//www.dailymotion.com/embed/video/']"
+        ],
+        "replacementButton": {
+            "unblockDomains": [
+                "www.dailymotion.com"
+            ],
+            "type": 3
+        }
+    },
     "Digg": {
         "domain": "widgets.digg.com",
         "buttonSelectors": [
@@ -115,10 +143,30 @@
             "type": 3
         }
     },
+    "Google Maps": {
+        "domains": [
+            "maps.google.com",
+            "www.google.com"
+        ],
+        "buttonSelectors": [
+            "iframe[src^='https://maps.google.com/maps/']",
+            "iframe[src^='https://www.google.com/maps/']"
+        ],
+        "noDirectLink": true,
+        "replacementButton": {
+            "unblockDomains": [
+                "maps.google.com",
+                "www.google.com"
+            ],
+            "type": 3
+        }
+    },
     "Google reCAPTCHA": {
         "domains": [
             "google.com",
-            "www.google.com"
+            "www.google.com",
+            "recaptcha.net",
+            "www.recaptcha.net"
         ],
         "buttonSelectors": [
             "div.g-recaptcha",
@@ -128,13 +176,17 @@
         "scriptSelectors": [
             "script[src^='//google.com/recaptcha/api.js']",
             "script[src^='https://google.com/recaptcha/api.js']",
-            "script[src^='https://www.google.com/recaptcha/api.js']"
+            "script[src^='https://www.google.com/recaptcha/api.js']",
+            "script[src^='//recaptcha.net/recaptcha/api.js']",
+            "script[src^='https://recaptcha.net/recaptcha/api.js']",
+            "script[src^='https://www.recaptcha.net/recaptcha/api.js']"
         ],
-        "fallbackScriptUrl": "//google.com/recaptcha/api.js",
         "replacementButton": {
             "unblockDomains": [
                 "google.com",
-                "www.google.com"
+                "www.google.com",
+                "recaptcha.net",
+                "www.recaptcha.net"
             ],
             "type": 4
         }
@@ -150,6 +202,19 @@
             "type": 0
         }
     },
+    "OK Video Player": {
+        "domain": "ok.ru",
+        "buttonSelectors": [
+            "iframe[src^='https://ok.ru/videoembed/']",
+            "iframe[src^='//ok.ru/videoembed/']"
+        ],
+        "replacementButton": {
+            "unblockDomains": [
+                "ok.ru"
+            ],
+            "type": 3
+        }
+    },
     "Pinterest": {
         "domain": "assets.pinterest.com",
         "buttonSelectors": [
@@ -162,6 +227,18 @@
             "type": 0
         }
     },
+    "Rumble Video Player": {
+        "domain": "rumble.com",
+        "buttonSelectors": [
+            "iframe[src^='https://rumble.com/embed/']"
+        ],
+        "replacementButton": {
+            "unblockDomains": [
+                "rumble.com"
+            ],
+            "type": 3
+        }
+    },
     "SoundCloud": {
         "domain": "w.soundcloud.com",
         "buttonSelectors": [
@@ -203,6 +280,21 @@
             "type": 3
         }
     },
+    "TikTok": {
+        "domains": [
+            "www.tiktok.com"
+        ],
+        "buttonSelectors": [
+            "iframe[src^='https://www.tiktok.com/embed/']",
+            "iframe[src^='//www.tiktok.com/embed/']"
+        ],
+        "replacementButton": {
+            "unblockDomains": [
+                "www.tiktok.com"
+            ],
+            "type": 3
+        }
+    },
     "Twitch Player": {
         "domain": "player.twitch.tv",
         "buttonSelectors": [
diff --git a/src/data/surrogates.js b/src/data/surrogates.js
index eb46d1b4..91e00edf 100644
--- a/src/data/surrogates.js
+++ b/src/data/surrogates.js
@@ -1,6 +1,5 @@
 /*
- *
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2016 Electronic Frontier Foundation
  *
  * Privacy Badger is free software: you can redistribute it and/or modify
@@ -16,458 +15,167 @@
  * along with Privacy Badger.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-require.scopes.surrogatedb = (function() {
+require.scopes.surrogatedb = (function () {
+
+const MATCH_SUFFIX = 'suffix',
+  MATCH_PREFIX = 'prefix',
+  MATCH_PREFIX_WITH_PARAMS = 'prefix_params',
+  MATCH_ANY = 'any';
 
 /**
- * A hostname can have one or more surrogate scripts.
- *
- * "hostnames" maps hostnames to surrogate pattern tokens.
- *
- * Surrogate pattern tokens are used to look up the actual
- * surrogate script code (stored in "surrogates" object below).
- *
- * There are currently two types of surrogate pattern tokens:
- *
- * - {Array} one or more suffix tokens:
- *   Does the script URL (querystring excluded) end with the token?
- *
- * - {String} wildcard token:
- *   Matches any script URL for the hostname.
+ * `hostnames` maps hostnames to surrogate pattern tokens.
  */
 const hostnames = {
-  'b.scorecardresearch.com': [
-    '/beacon.js',
-    '/c2/plugins/streamsense_plugin_html5.js',
-  ],
-  'sb.scorecardresearch.com': [
-    '/beacon.js',
-    '/c2/plugins/streamsense_plugin_html5.js',
-  ],
-  'ssl.google-analytics.com': [
-    '/ga.js',
-    '/analytics.js',
-  ],
-  'www.google-analytics.com': [
-    '/analytics.js',
-    '/ga.js',
-  ],
-  'www.googletagservices.com': [
-    '/gpt.js',
-  ],
-  'api.youneeq.ca': [
-    '/app/yqmin',
-  ],
-  'cdn.krxd.net': 'noopjs',
-  'widgets.outbrain.com': '/outbrain.js',
+  'b.scorecardresearch.com': {
+    match: MATCH_SUFFIX,
+    tokens: [
+      '/beacon.js',
+      '/c2/plugins/streamsense_plugin_html5.js',
+    ]
+  },
+  'sb.scorecardresearch.com': {
+    match: MATCH_SUFFIX,
+    tokens: [
+      '/beacon.js',
+      '/c2/plugins/streamsense_plugin_html5.js',
+    ]
+  },
+  'ssl.google-analytics.com': {
+    match: MATCH_SUFFIX,
+    tokens: [
+      '/ga.js',
+      '/analytics.js',
+    ]
+  },
+  'www.google-analytics.com': {
+    match: MATCH_SUFFIX,
+    tokens: [
+      '/analytics.js',
+      '/ga.js',
+    ]
+  },
+  'www.googletagservices.com': {
+    match: MATCH_SUFFIX,
+    tokens: [
+      '/gpt.js',
+    ]
+  },
+  'securepubads.g.doubleclick.net': {
+    match: MATCH_SUFFIX,
+    tokens: [
+      '/tag/js/gpt.js',
+    ]
+  },
+  'api.youneeq.ca': {
+    match: MATCH_SUFFIX,
+    tokens: [
+      '/app/yqmin',
+    ]
+  },
+  'cdn.krxd.net': {
+    match: MATCH_ANY,
+    token: 'noopjs'
+  },
+  'widgets.outbrain.com': {
+    match: MATCH_SUFFIX,
+    tokens: [
+      '/outbrain.js',
+    ]
+  },
+  'c.amazon-adsystem.com': {
+    match: MATCH_SUFFIX,
+    tokens: [
+      '/apstag.js',
+    ]
+  },
+  'rumble.com': {
+    match: MATCH_PREFIX,
+    tokens: [
+      '/embedJS/',
+    ],
+    widgetName: "Rumble Video Player"
+  },
+  'www.google.com': {
+    match: MATCH_PREFIX_WITH_PARAMS,
+    params: {
+      onload: true,
+      //render: "explicit",
+      render: true,
+    },
+    tokens: [
+      '/recaptcha/api.js',
+      '/recaptcha/enterprise.js',
+    ],
+    widgetName: "Google reCAPTCHA"
+  },
+  'www.recaptcha.net': {
+    match: MATCH_PREFIX_WITH_PARAMS,
+    params: {
+      onload: true,
+      render: true,
+    },
+    tokens: [
+      '/recaptcha/api.js',
+      '/recaptcha/enterprise.js',
+    ],
+    widgetName: "Google reCAPTCHA"
+  },
 };
 
 /**
- * "surrogates" maps surrogate pattern tokens to surrogate script code.
+ * `surrogates` maps pattern tokens to web accessible resource URLs
+ * containing the actual surrogate script code.
  */
 const surrogates = {
-  /* eslint-disable no-extra-semi, space-in-parens */
-
   // Google Analytics (legacy ga.js)
   //
-  // sourced from https://github.com/uBlockOrigin/uAssets/ under GPLv3
-  // https://github.com/uBlockOrigin/uAssets/blob/2dfeece7cfe671e93573db6d176901cf2df37623/filters/resources.txt#L162-L260
-  //
   // test cases:
   // http://checkin.avianca.com/
   // https://www.vmware.com/support/pubs/ws_pubs.html (release notes links)
   //
   // API reference:
   // https://developers.google.com/analytics/devguides/collection/gajs/methods/
-  '/ga.js': '(' +
-    function() {
-      var noopfn = function() {
-        ;
-      };
-      //
-      var Gaq = function() {
-        ;
-      };
-      Gaq.prototype.Na = noopfn;
-      Gaq.prototype.O = noopfn;
-      Gaq.prototype.Sa = noopfn;
-      Gaq.prototype.Ta = noopfn;
-      Gaq.prototype.Va = noopfn;
-      Gaq.prototype._createAsyncTracker = noopfn;
-      Gaq.prototype._getAsyncTracker = noopfn;
-      Gaq.prototype._getPlugin = noopfn;
-      Gaq.prototype.push = function(a) {
-        if ( typeof a === 'function' ) {
-          a(); return;
-        }
-        if ( Array.isArray(a) === false ) {
-          return;
-        }
-        // https://twitter.com/catovitch/status/776442930345218048
-        // https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiDomainDirectory#_gat.GA_Tracker_._link
-        if ( a[0] === '_link' && typeof a[1] === 'string' ) {
-          window.location.assign(a[1]);
-        }
-        // https://github.com/gorhill/uBlock/issues/2162
-        if ( a[0] === '_set' && a[1] === 'hitCallback' && typeof a[2] === 'function' ) {
-          a[2]();
-        }
-      };
-      //
-      var tracker = (function() {
-        var out = {};
-        var api = [
-          '_addIgnoredOrganic _addIgnoredRef _addItem _addOrganic',
-          '_addTrans _clearIgnoredOrganic _clearIgnoredRef _clearOrganic',
-          '_cookiePathCopy _deleteCustomVar _getName _setAccount',
-          '_getAccount _getClientInfo _getDetectFlash _getDetectTitle',
-          '_getLinkerUrl _getLocalGifPath _getServiceMode _getVersion',
-          '_getVisitorCustomVar _initData _link _linkByPost',
-          '_setAllowAnchor _setAllowHash _setAllowLinker _setCampContentKey',
-          '_setCampMediumKey _setCampNameKey _setCampNOKey _setCampSourceKey',
-          '_setCampTermKey _setCampaignCookieTimeout _setCampaignTrack _setClientInfo',
-          '_setCookiePath _setCookiePersistence _setCookieTimeout _setCustomVar',
-          '_setDetectFlash _setDetectTitle _setDomainName _setLocalGifPath',
-          '_setLocalRemoteServerMode _setLocalServerMode _setReferrerOverride _setRemoteServerMode',
-          '_setSampleRate _setSessionTimeout _setSiteSpeedSampleRate _setSessionCookieTimeout',
-          '_setVar _setVisitorCookieTimeout _trackEvent _trackPageLoadTime',
-          '_trackPageview _trackSocial _trackTiming _trackTrans',
-          '_visitCode'
-        ].join(' ').split(/\s+/);
-        var i = api.length;
-        while ( i-- ) {
-          out[api[i]] = noopfn;
-        }
-        out._getLinkerUrl = function(a) {
-          return a;
-        };
-        return out;
-      })();
-      //
-      var Gat = function() {
-        ;
-      };
-      Gat.prototype._anonymizeIP = noopfn;
-      Gat.prototype._createTracker = noopfn;
-      Gat.prototype._forceSSL = noopfn;
-      Gat.prototype._getPlugin = noopfn;
-      Gat.prototype._getTracker = function() {
-        return tracker;
-      };
-      Gat.prototype._getTrackerByName = function() {
-        return tracker;
-      };
-      Gat.prototype._getTrackers = noopfn;
-      Gat.prototype.aa = noopfn;
-      Gat.prototype.ab = noopfn;
-      Gat.prototype.hb = noopfn;
-      Gat.prototype.la = noopfn;
-      Gat.prototype.oa = noopfn;
-      Gat.prototype.pa = noopfn;
-      Gat.prototype.u = noopfn;
-      var gat = new Gat();
-      window._gat = gat;
-      //
-      var gaq = new Gaq();
-      (function() {
-        var aa = window._gaq || [];
-        if ( Array.isArray(aa) ) {
-          while ( aa[0] ) {
-            gaq.push(aa.shift());
-          }
-        }
-      })();
-      window._gaq = gaq.qf = gaq;
-    } + ')();',
+  '/ga.js': 'google_ga.js',
 
-  // https://github.com/gorhill/uBlock/issues/1265
-  // https://github.com/uBlockOrigin/uAssets/blob/581f2c93eeca0e55991aa331721b6942f3162615/filters/resources.txt#L736-L746
-  /* eslint-disable no-undef */
-  '/beacon.js': '(' +
-    function() {
-      window.COMSCORE = {
-        purge: function() {
-          _comscore = [];
-        },
-        beacon: function() {
-          ;
-        }
-      };
-    } + ')();',
-  /* eslint-enable no-undef */
+  '/beacon.js': 'comscore_beacon.js',
 
   // http://www.dplay.se/ett-jobb-for-berg/ (videos)
-  '/c2/plugins/streamsense_plugin_html5.js': '(' +
-    function() {
-    } + ')();',
+  '/c2/plugins/streamsense_plugin_html5.js': 'noop.js',
 
   // https://github.com/EFForg/privacybadger/issues/993
-  // https://github.com/uBlockOrigin/uAssets/blob/2bc97541b3b9a9380b3ce8bd2242375925df293c/filters/resources.txt#L436-L567
-  /* eslint-disable no-empty */
-  '/gpt.js': '(' +
-    function() {
-      var p;
-      // https://developers.google.com/doubleclick-gpt/reference
-      var noopfn = function() {
-        ;
-      }.bind();
-      var noopthisfn = function() {
-        return this;
-      };
-      var noopnullfn = function() {
-        return null;
-      };
-      var nooparrayfn = function() {
-        return [];
-      };
-      var noopstrfn = function() {
-        return '';
-      };
-      //
-      var companionAdsService = {
-        addEventListener: noopthisfn,
-        enableSyncLoading: noopfn,
-        setRefreshUnfilledSlots: noopfn
-      };
-      var contentService = {
-        addEventListener: noopthisfn,
-        setContent: noopfn
-      };
-      var PassbackSlot = function() {
-        ;
-      };
-      p = PassbackSlot.prototype;
-      p.display = noopfn;
-      p.get = noopnullfn;
-      p.set = noopthisfn;
-      p.setClickUrl = noopthisfn;
-      p.setTagForChildDirectedTreatment = noopthisfn;
-      p.setTargeting = noopthisfn;
-      p.updateTargetingFromMap = noopthisfn;
-      var pubAdsService = {
-        addEventListener: noopthisfn,
-        clear: noopfn,
-        clearCategoryExclusions: noopthisfn,
-        clearTagForChildDirectedTreatment: noopthisfn,
-        clearTargeting: noopthisfn,
-        collapseEmptyDivs: noopfn,
-        defineOutOfPagePassback: function() { return new PassbackSlot(); },
-        definePassback: function() { return new PassbackSlot(); },
-        disableInitialLoad: noopfn,
-        display: noopfn,
-        enableAsyncRendering: noopfn,
-        enableSingleRequest: noopfn,
-        enableSyncRendering: noopfn,
-        enableVideoAds: noopfn,
-        get: noopnullfn,
-        getAttributeKeys: nooparrayfn,
-        getTargeting: noopfn,
-        getTargetingKeys: nooparrayfn,
-        getSlots: nooparrayfn,
-        refresh: noopfn,
-        set: noopthisfn,
-        setCategoryExclusion: noopthisfn,
-        setCentering: noopfn,
-        setCookieOptions: noopthisfn,
-        setForceSafeFrame: noopthisfn,
-        setLocation: noopthisfn,
-        setPublisherProvidedId: noopthisfn,
-        setRequestNonPersonalizedAds: noopthisfn,
-        setSafeFrameConfig: noopthisfn,
-        setTagForChildDirectedTreatment: noopthisfn,
-        setTargeting: noopthisfn,
-        setVideoContent: noopthisfn,
-        updateCorrelator: noopfn
-      };
-      var SizeMappingBuilder = function() {
-        ;
-      };
-      p = SizeMappingBuilder.prototype;
-      p.addSize = noopthisfn;
-      p.build = noopnullfn;
-      var Slot = function() {
-        ;
-      };
-      p = Slot.prototype;
-      p.addService = noopthisfn;
-      p.clearCategoryExclusions = noopthisfn;
-      p.clearTargeting = noopthisfn;
-      p.defineSizeMapping = noopthisfn;
-      p.get = noopnullfn;
-      p.getAdUnitPath = nooparrayfn;
-      p.getAttributeKeys = nooparrayfn;
-      p.getCategoryExclusions = nooparrayfn;
-      p.getDomId = noopstrfn;
-      p.getSlotElementId = noopstrfn;
-      p.getSlotId = noopthisfn;
-      p.getTargeting = nooparrayfn;
-      p.getTargetingKeys = nooparrayfn;
-      p.set = noopthisfn;
-      p.setCategoryExclusion = noopthisfn;
-      p.setClickUrl = noopthisfn;
-      p.setCollapseEmptyDiv = noopthisfn;
-      p.setTargeting = noopthisfn;
-      //
-      var gpt = window.googletag || {};
-      var cmd = gpt.cmd || [];
-      gpt.apiReady = true;
-      gpt.cmd = [];
-      gpt.cmd.push = function(a) {
-        try {
-          a();
-        } catch (ex) {
-        }
-        return 1;
-      };
-      gpt.companionAds = function() { return companionAdsService; };
-      gpt.content = function() { return contentService; };
-      gpt.defineOutOfPageSlot = function() { return new Slot(); };
-      gpt.defineSlot = function() { return new Slot(); };
-      gpt.destroySlots = noopfn;
-      gpt.disablePublisherConsole = noopfn;
-      gpt.display = noopfn;
-      gpt.enableServices = noopfn;
-      gpt.getVersion = noopstrfn;
-      gpt.pubads = function() { return pubAdsService; };
-      gpt.pubadsReady = true;
-      gpt.setAdIframeTitle = noopfn;
-      gpt.sizeMapping = function() { return new SizeMappingBuilder(); };
-      window.googletag = gpt;
-      while ( cmd.length !== 0 ) {
-        gpt.cmd.push(cmd.shift());
-      }
-    } + ')();',
-  /* eslint-enable no-empty */
+  '/gpt.js': 'googletagservices_gpt.js',
+  '/tag/js/gpt.js': 'googletagservices_gpt.js',
 
   // https://github.com/EFForg/privacybadger/issues/1014
-  /* eslint-disable no-unused-expressions */
-  '/app/yqmin': '(' +
-    function() {
-      var noopfn = function() {
-        ;
-      };
-      function YqClass() {
-        this.observe = noopfn;
-        this.observeMin = noopfn;
-        this.scroll_event = noopfn;
-        this.onready = noopfn;
-        this.yq_panel_click = noopfn;
-        this.titleTrim = noopfn;
-      }
-      window.Yq || (window.Yq = new YqClass);
-    } + ')();',
-  /* eslint-enable no-unused-expressions */
+  '/app/yqmin': 'youneeq.js',
 
-  // https://github.com/uBlockOrigin/uAssets/blob/0e225402b40db0983faf8b4ce13c73d57fb257d7/filters/resources.txt#L354-L403
-  /* eslint-disable no-empty */
-  '/analytics.js': '(' +
-    function() {
-      // https://developers.google.com/analytics/devguides/collection/analyticsjs/
-      var noopfn = function() {
-        ;
-      };
-      var noopnullfn = function() {
-        return null;
-      };
-      //
-      var Tracker = function() {
-        ;
-      };
-      var p = Tracker.prototype;
-      p.get = noopfn;
-      p.set = noopfn;
-      p.send = noopfn;
-      //
-      var w = window,
-        gaName = w.GoogleAnalyticsObject || 'ga';
-      var ga = function() {
-        var len = arguments.length;
-        if ( len === 0 ) {
-          return;
-        }
-        var f = arguments[len-1];
-        if ( typeof f !== 'object' || f === null || typeof f.hitCallback !== 'function' ) {
-          return;
-        }
-        try {
-          f.hitCallback();
-        } catch (ex) {
-        }
-      };
-      ga.create = function() {
-        return new Tracker();
-      };
-      ga.getByName = noopnullfn;
-      ga.getAll = function() {
-        return [];
-      };
-      ga.remove = noopfn;
-      // https://github.com/uBlockOrigin/uAssets/issues/2107
-      ga.loaded = true;
-      w[gaName] = ga;
-      // https://github.com/gorhill/uBlock/issues/3075
-      var dl = w.dataLayer;
-      if ( dl instanceof Object && dl.hide instanceof Object && typeof dl.hide.end === 'function' ) {
-        dl.hide.end();
-      }
-    } + ')();',
-  /* eslint-enable no-empty */
+  '/analytics.js': 'google_analytics.js',
 
-  // https://github.com/uBlockOrigin/uAssets/blob/d7d4836638dcf227938b4cead66ad9d01b6166ba/filters/resources.txt#L843-L868
-  '/outbrain.js': '(' +
-    function() {
-      var noopfn = function() {
-        ;
-      };
-      var obr = {};
-      var methods = [
-        'callClick', 'callLoadMore', 'callRecs', 'callUserZapping',
-        'callWhatIs', 'cancelRecommendation', 'cancelRecs', 'closeCard',
-        'closeModal', 'closeTbx', 'errorInjectionHandler', 'getCountOfRecs',
-        'getStat', 'imageError', 'manualVideoClicked', 'onOdbReturn',
-        'onVideoClick', 'pagerLoad', 'recClicked', 'refreshSpecificWidget',
-        'refreshWidget', 'reloadWidget', 'researchWidget', 'returnedError',
-        'returnedHtmlData', 'returnedIrdData', 'returnedJsonData', 'scrollLoad',
-        'showDescription', 'showRecInIframe', 'userZappingMessage', 'zappingFormAction'
-      ];
-      obr.extern = {
-        video: {
-          getVideoRecs: noopfn,
-          videoClicked: noopfn
-        }
-      };
-      methods.forEach(function(a) {
-        obr.extern[a] = noopfn;
-      });
-      window.OBR = window.OBR || obr;
-    } + ')();',
+  '/outbrain.js': 'outbrain.js',
 
-  // https://github.com/uBlockOrigin/uAssets/blob/0efcadb2ecc2a9f0daa5a1df79841d794b83860f/filters/resources.txt#L38-L41
-  'noopjs': '(' +
-    function() {
-      ;
-    } + ')();',
+  '/apstag.js': 'amazon_apstag.js',
 
-  /* eslint-enable no-extra-semi, space-in-parens */
-};
+  '/embedJS/': 'rumble_embedjs.js',
+
+  '/recaptcha/api.js': 'grecaptcha.js',
+  '/recaptcha/enterprise.js': 'grecaptcha_enterprise.js',
 
-// aliases
-// for example:
-// surrogates['/JS/socialize.js'] = surrogates['/JS/gigya.js'] = surrogates['/js/gigya.js'];
+  'noopjs': 'noop.js'
+};
 
-// reformat surrogate strings to exactly match formatting in uAssets
+// expand filenames to extension URLs
 Object.keys(surrogates).forEach(key => {
-  surrogates[key] = surrogates[key]
-    // remove space from anon function if present
-    .replace(/^\(function \(/, '(function(')
-    // fix indentation
-    .split(/[\r\n]/).map(str => str.replace(/^ {4}/, '')).join('\n')
-    // replace spaces by tabs
-    .replace(/ {2}/g, '\t');
+  let path = '/data/web_accessible_resources/' + surrogates[key];
+  surrogates[key] = chrome.runtime.getURL(path);
 });
 
 const exports = {
-  hostnames: hostnames,
-  surrogates: surrogates,
+  MATCH_ANY,
+  MATCH_PREFIX,
+  MATCH_PREFIX_WITH_PARAMS,
+  MATCH_SUFFIX,
+  hostnames,
+  surrogates,
 };
 
 return exports;
diff --git a/src/data/web_accessible_resources/.eslintrc.yml b/src/data/web_accessible_resources/.eslintrc.yml
new file mode 100644
index 00000000..f847da3f
--- /dev/null
+++ b/src/data/web_accessible_resources/.eslintrc.yml
@@ -0,0 +1,8 @@
+rules:
+  indent:
+    - error
+    - 4
+    - outerIIFEBody: 1
+  no-empty: off
+  no-extra-semi: off
+  space-in-parens: off
diff --git a/src/data/web_accessible_resources/README.md b/src/data/web_accessible_resources/README.md
new file mode 100644
index 00000000..2f312f91
--- /dev/null
+++ b/src/data/web_accessible_resources/README.md
@@ -0,0 +1,3 @@
+While the scripts here are exposed to websites (as per the web_accessible_resources manifest key), access is controlled by Privacy Badger via per-request single-use secret tokens.
+
+Search for `warAccessTokens` for the exact implementation.
diff --git a/src/data/web_accessible_resources/amazon_apstag.js b/src/data/web_accessible_resources/amazon_apstag.js
new file mode 100644
index 00000000..1b6ee1d7
--- /dev/null
+++ b/src/data/web_accessible_resources/amazon_apstag.js
@@ -0,0 +1,19 @@
+// https://github.com/gorhill/uBlock/blob/4b95420e5912cb2759da77dbb3d0d64095021c13/src/web_accessible_resources/amazon_apstag.js
+(function() {
+    'use strict';
+    const w = window;
+    const noopfn = function() {
+        ; // jshint ignore:line
+    }.bind();
+    const apstag = {
+        fetchBids: function(a, b) {
+            if ( b instanceof Function ) {
+                b([]);
+            }
+        },
+        init: noopfn,
+        setDisplayBids: noopfn,
+        targetingKeys: noopfn,
+    };
+    w.apstag = apstag;
+})();
diff --git a/src/data/web_accessible_resources/comscore_beacon.js b/src/data/web_accessible_resources/comscore_beacon.js
new file mode 100644
index 00000000..5b616bc5
--- /dev/null
+++ b/src/data/web_accessible_resources/comscore_beacon.js
@@ -0,0 +1,11 @@
+// https://github.com/gorhill/uBlock/blob/dcc72ba51c30abd4a1216049cc34f6c429ab2090/src/web_accessible_resources/scorecardresearch_beacon.js
+(function() {
+    'use strict';
+    window.COMSCORE = {
+        purge: function() {
+            window._comscore = [];
+        },
+        beacon: function() {
+        }
+    };
+})();
diff --git a/src/data/web_accessible_resources/google_analytics.js b/src/data/web_accessible_resources/google_analytics.js
new file mode 100644
index 00000000..f9d2508f
--- /dev/null
+++ b/src/data/web_accessible_resources/google_analytics.js
@@ -0,0 +1,86 @@
+// https://github.com/gorhill/uBlock/blob/e86a4cee8787400d8ad445dd4a6e4515405f25d1/src/web_accessible_resources/google-analytics_analytics.js + GTM workaround
+
+(function() {
+    'use strict';
+    // https://developers.google.com/analytics/devguides/collection/analyticsjs/
+    const noopfn = function() {
+    };
+    //
+    const Tracker = function() {
+    };
+    const p = Tracker.prototype;
+    p.get = noopfn;
+    p.set = noopfn;
+    p.send = noopfn;
+    //
+    const w = window;
+    const gaName = w.GoogleAnalyticsObject || 'ga';
+    const gaQueue = w[gaName];
+    // https://github.com/uBlockOrigin/uAssets/pull/4115
+    const ga = function() {
+        const len = arguments.length;
+        if ( len === 0 ) { return; }
+        const args = Array.from(arguments);
+        let fn;
+        let a = args[len-1];
+        if ( a instanceof Object && a.hitCallback instanceof Function ) {
+            fn = a.hitCallback;
+        } else if ( a instanceof Function ) {
+            fn = ( ) => { a(ga.create()); };
+        } else {
+            const pos = args.indexOf('hitCallback');
+            if ( pos !== -1 && args[pos+1] instanceof Function ) {
+                fn = args[pos+1];
+            }
+        }
+        if ( fn instanceof Function === false ) { return; }
+        try {
+            fn();
+        } catch (ex) {
+        }
+    };
+    ga.create = function() {
+        return new Tracker();
+    };
+    ga.getByName = function() {
+        return new Tracker();
+    };
+    ga.getAll = function() {
+        return [];
+    };
+    ga.remove = noopfn;
+    // https://github.com/uBlockOrigin/uAssets/issues/2107
+    ga.loaded = true;
+    w[gaName] = ga;
+    // https://github.com/gorhill/uBlock/issues/3075
+    const dl = w.dataLayer;
+    if ( dl instanceof Object ) {
+        if ( dl.hide instanceof Object && typeof dl.hide.end === 'function' ) {
+            dl.hide.end();
+        }
+        /*
+        if ( typeof dl.push === 'function' ) {
+            const doCallback = function(item) {
+                if ( item instanceof Object === false ) { return; }
+                if ( typeof item.eventCallback !== 'function' ) { return; }
+                setTimeout(item.eventCallback, 1);
+            };
+            if ( Array.isArray(dl) ) {
+                dl.push = item => doCallback(item);
+                const q = dl.slice();
+                for ( const item of q ) {
+                    doCallback(item);
+                }
+            }
+        }
+        */
+    }
+    // empty ga queue
+    if ( gaQueue instanceof Function && Array.isArray(gaQueue.q) ) {
+        const q = gaQueue.q.slice();
+        gaQueue.q.length = 0;
+        for ( const entry of q ) {
+            ga(...entry);
+        }
+    }
+})();
diff --git a/src/data/web_accessible_resources/google_ga.js b/src/data/web_accessible_resources/google_ga.js
new file mode 100644
index 00000000..7f21a0e4
--- /dev/null
+++ b/src/data/web_accessible_resources/google_ga.js
@@ -0,0 +1,98 @@
+// https://github.com/gorhill/uBlock/blob/dcc72ba51c30abd4a1216049cc34f6c429ab2090/src/web_accessible_resources/google-analytics_ga.js
+(function() {
+    'use strict';
+    const noopfn = function() {
+    };
+    //
+    const Gaq = function() {
+    };
+    Gaq.prototype.Na = noopfn;
+    Gaq.prototype.O = noopfn;
+    Gaq.prototype.Sa = noopfn;
+    Gaq.prototype.Ta = noopfn;
+    Gaq.prototype.Va = noopfn;
+    Gaq.prototype._createAsyncTracker = noopfn;
+    Gaq.prototype._getAsyncTracker = noopfn;
+    Gaq.prototype._getPlugin = noopfn;
+    Gaq.prototype.push = function(a) {
+        if ( typeof a === 'function' ) {
+            a(); return;
+        }
+        if ( Array.isArray(a) === false ) {
+            return;
+        }
+        // https://twitter.com/catovitch/status/776442930345218048
+        // https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiDomainDirectory#_gat.GA_Tracker_._link
+        if ( a[0] === '_link' && typeof a[1] === 'string' ) {
+            window.location.assign(a[1]);
+        }
+        // https://github.com/gorhill/uBlock/issues/2162
+        if ( a[0] === '_set' && a[1] === 'hitCallback' && typeof a[2] === 'function' ) {
+            a[2]();
+        }
+    };
+    //
+    const tracker = (function() {
+        const out = {};
+        const api = [
+            '_addIgnoredOrganic _addIgnoredRef _addItem _addOrganic',
+            '_addTrans _clearIgnoredOrganic _clearIgnoredRef _clearOrganic',
+            '_cookiePathCopy _deleteCustomVar _getName _setAccount',
+            '_getAccount _getClientInfo _getDetectFlash _getDetectTitle',
+            '_getLinkerUrl _getLocalGifPath _getServiceMode _getVersion',
+            '_getVisitorCustomVar _initData _link _linkByPost',
+            '_setAllowAnchor _setAllowHash _setAllowLinker _setCampContentKey',
+            '_setCampMediumKey _setCampNameKey _setCampNOKey _setCampSourceKey',
+            '_setCampTermKey _setCampaignCookieTimeout _setCampaignTrack _setClientInfo',
+            '_setCookiePath _setCookiePersistence _setCookieTimeout _setCustomVar',
+            '_setDetectFlash _setDetectTitle _setDomainName _setLocalGifPath',
+            '_setLocalRemoteServerMode _setLocalServerMode _setReferrerOverride _setRemoteServerMode',
+            '_setSampleRate _setSessionTimeout _setSiteSpeedSampleRate _setSessionCookieTimeout',
+            '_setVar _setVisitorCookieTimeout _trackEvent _trackPageLoadTime',
+            '_trackPageview _trackSocial _trackTiming _trackTrans',
+            '_visitCode'
+        ].join(' ').split(/\s+/);
+        let i = api.length;
+        while ( i-- ) {
+            out[api[i]] = noopfn;
+        }
+        out._getLinkerUrl = function(a) {
+            return a;
+        };
+        return out;
+    })();
+    //
+    const Gat = function() {
+    };
+    Gat.prototype._anonymizeIP = noopfn;
+    Gat.prototype._createTracker = noopfn;
+    Gat.prototype._forceSSL = noopfn;
+    Gat.prototype._getPlugin = noopfn;
+    Gat.prototype._getTracker = function() {
+        return tracker;
+    };
+    Gat.prototype._getTrackerByName = function() {
+        return tracker;
+    };
+    Gat.prototype._getTrackers = noopfn;
+    Gat.prototype.aa = noopfn;
+    Gat.prototype.ab = noopfn;
+    Gat.prototype.hb = noopfn;
+    Gat.prototype.la = noopfn;
+    Gat.prototype.oa = noopfn;
+    Gat.prototype.pa = noopfn;
+    Gat.prototype.u = noopfn;
+    const gat = new Gat();
+    window._gat = gat;
+    //
+    const gaq = new Gaq();
+    (function() {
+        const aa = window._gaq || [];
+        if ( Array.isArray(aa) ) {
+            while ( aa[0] ) {
+                gaq.push(aa.shift());
+            }
+        }
+    })();
+    window._gaq = gaq.qf = gaq;
+})();
diff --git a/src/data/web_accessible_resources/googletagservices_gpt.js b/src/data/web_accessible_resources/googletagservices_gpt.js
new file mode 100644
index 00000000..cc6e1e02
--- /dev/null
+++ b/src/data/web_accessible_resources/googletagservices_gpt.js
@@ -0,0 +1,130 @@
+// https://github.com/gorhill/uBlock/blob/dcc72ba51c30abd4a1216049cc34f6c429ab2090/src/web_accessible_resources/googletagservices_gpt.js
+(function() {
+    'use strict';
+    // https://developers.google.com/doubleclick-gpt/reference
+    const noopfn = function() {
+    }.bind();
+    const noopthisfn = function() {
+        return this;
+    };
+    const noopnullfn = function() {
+        return null;
+    };
+    const nooparrayfn = function() {
+        return [];
+    };
+    const noopstrfn = function() {
+        return '';
+    };
+    //
+    const companionAdsService = {
+        addEventListener: noopthisfn,
+        enableSyncLoading: noopfn,
+        setRefreshUnfilledSlots: noopfn
+    };
+    const contentService = {
+        addEventListener: noopthisfn,
+        setContent: noopfn
+    };
+    const PassbackSlot = function() {
+    };
+    let p = PassbackSlot.prototype;
+    p.display = noopfn;
+    p.get = noopnullfn;
+    p.set = noopthisfn;
+    p.setClickUrl = noopthisfn;
+    p.setTagForChildDirectedTreatment = noopthisfn;
+    p.setTargeting = noopthisfn;
+    p.updateTargetingFromMap = noopthisfn;
+    const pubAdsService = {
+        addEventListener: noopthisfn,
+        clear: noopfn,
+        clearCategoryExclusions: noopthisfn,
+        clearTagForChildDirectedTreatment: noopthisfn,
+        clearTargeting: noopthisfn,
+        collapseEmptyDivs: noopfn,
+        defineOutOfPagePassback: function() { return new PassbackSlot(); },
+        definePassback: function() { return new PassbackSlot(); },
+        disableInitialLoad: noopfn,
+        display: noopfn,
+        enableAsyncRendering: noopfn,
+        enableSingleRequest: noopfn,
+        enableSyncRendering: noopfn,
+        enableVideoAds: noopfn,
+        get: noopnullfn,
+        getAttributeKeys: nooparrayfn,
+        getTargeting: noopfn,
+        getTargetingKeys: nooparrayfn,
+        getSlots: nooparrayfn,
+        refresh: noopfn,
+        set: noopthisfn,
+        setCategoryExclusion: noopthisfn,
+        setCentering: noopfn,
+        setCookieOptions: noopthisfn,
+        setForceSafeFrame: noopthisfn,
+        setLocation: noopthisfn,
+        setPublisherProvidedId: noopthisfn,
+        setRequestNonPersonalizedAds: noopthisfn,
+        setSafeFrameConfig: noopthisfn,
+        setTagForChildDirectedTreatment: noopthisfn,
+        setTargeting: noopthisfn,
+        setVideoContent: noopthisfn,
+        updateCorrelator: noopfn
+    };
+    const SizeMappingBuilder = function() {
+    };
+    p = SizeMappingBuilder.prototype;
+    p.addSize = noopthisfn;
+    p.build = noopnullfn;
+    const Slot = function() {
+    };
+    p = Slot.prototype;
+    p.addService = noopthisfn;
+    p.clearCategoryExclusions = noopthisfn;
+    p.clearTargeting = noopthisfn;
+    p.defineSizeMapping = noopthisfn;
+    p.get = noopnullfn;
+    p.getAdUnitPath = nooparrayfn;
+    p.getAttributeKeys = nooparrayfn;
+    p.getCategoryExclusions = nooparrayfn;
+    p.getDomId = noopstrfn;
+    p.getResponseInformation = noopnullfn;
+    p.getSlotElementId = noopstrfn;
+    p.getSlotId = noopthisfn;
+    p.getTargeting = nooparrayfn;
+    p.getTargetingKeys = nooparrayfn;
+    p.set = noopthisfn;
+    p.setCategoryExclusion = noopthisfn;
+    p.setClickUrl = noopthisfn;
+    p.setCollapseEmptyDiv = noopthisfn;
+    p.setTargeting = noopthisfn;
+    //
+    const gpt = window.googletag || {};
+    const cmd = gpt.cmd || [];
+    gpt.apiReady = true;
+    gpt.cmd = [];
+    gpt.cmd.push = function(a) {
+        try {
+            a();
+        } catch (ex) {
+        }
+        return 1;
+    };
+    gpt.companionAds = function() { return companionAdsService; };
+    gpt.content = function() { return contentService; };
+    gpt.defineOutOfPageSlot = function() { return new Slot(); };
+    gpt.defineSlot = function() { return new Slot(); };
+    gpt.destroySlots = noopfn;
+    gpt.disablePublisherConsole = noopfn;
+    gpt.display = noopfn;
+    gpt.enableServices = noopfn;
+    gpt.getVersion = noopstrfn;
+    gpt.pubads = function() { return pubAdsService; };
+    gpt.pubadsReady = true;
+    gpt.setAdIframeTitle = noopfn;
+    gpt.sizeMapping = function() { return new SizeMappingBuilder(); };
+    window.googletag = gpt;
+    while ( cmd.length !== 0 ) {
+        gpt.cmd.push(cmd.shift());
+    }
+})();
diff --git a/src/data/web_accessible_resources/grecaptcha.js b/src/data/web_accessible_resources/grecaptcha.js
new file mode 100644
index 00000000..75d88a1d
--- /dev/null
+++ b/src/data/web_accessible_resources/grecaptcha.js
@@ -0,0 +1,31 @@
+(function () {
+
+    let script_src = document.currentScript.src;
+
+    window.grecaptcha = {
+        render: function (container) {
+            if (Object.prototype.toString.call(container) != "[object String]") {
+                if (!container.id) {
+                    container.id = "grecaptcha-" + Math.random().toString().replace(".", "");
+                }
+                container = container.id;
+            }
+            document.dispatchEvent(new CustomEvent("pbSurrogateMessage", {
+                detail: {
+                    type: "widgetFromSurrogate",
+                    name: "Google reCAPTCHA",
+                    widgetData: {
+                        domId: container,
+                        scriptUrl: script_src
+                    }
+                }
+            }));
+        }
+    };
+
+    let onload = (new URL(script_src)).searchParams.get('onload');
+    if (onload && onload in window) {
+        window[onload]();
+    }
+
+}());
diff --git a/src/data/web_accessible_resources/grecaptcha_enterprise.js b/src/data/web_accessible_resources/grecaptcha_enterprise.js
new file mode 100644
index 00000000..b0d870bd
--- /dev/null
+++ b/src/data/web_accessible_resources/grecaptcha_enterprise.js
@@ -0,0 +1,37 @@
+(function () {
+
+    let script_src = document.currentScript.src;
+
+    window.grecaptcha = {};
+
+    window.grecaptcha.enterprise = {
+        ready: function (cb) {
+            cb();
+        },
+        render: function (container) {
+            if (Object.prototype.toString.call(container) != "[object String]") {
+                if (!container.id) {
+                    container.id = "grecaptcha-" + Math.random().toString().replace(".", "");
+                }
+                container = container.id;
+            }
+            document.dispatchEvent(new CustomEvent("pbSurrogateMessage", {
+                detail: {
+                    type: "widgetFromSurrogate",
+                    name: "Google reCAPTCHA",
+                    widgetData: {
+                        domId: container,
+                        scriptUrl: script_src
+                    }
+                }
+            }));
+        },
+        execute: function () {}
+    };
+
+    let onload = (new URL(script_src)).searchParams.get('onload');
+    if (onload && onload in window) {
+        window[onload]();
+    }
+
+}());
diff --git a/src/data/web_accessible_resources/noop.js b/src/data/web_accessible_resources/noop.js
new file mode 100644
index 00000000..5e45103e
--- /dev/null
+++ b/src/data/web_accessible_resources/noop.js
@@ -0,0 +1,4 @@
+// https://github.com/gorhill/uBlock/blob/33a18c3a1eb101470c43979a41d8adef3e21208d/src/web_accessible_resources/noop.js
+(function() {
+    'use strict';
+})();
diff --git a/src/data/web_accessible_resources/outbrain.js b/src/data/web_accessible_resources/outbrain.js
new file mode 100644
index 00000000..ba25b51d
--- /dev/null
+++ b/src/data/web_accessible_resources/outbrain.js
@@ -0,0 +1,28 @@
+// https://github.com/gorhill/uBlock/blob/dcc72ba51c30abd4a1216049cc34f6c429ab2090/src/web_accessible_resources/outbrain-widget.js + modified to unbreak vice.com
+(function() {
+    'use strict';
+    const noopfn = function() {
+    };
+    const obr = {};
+    const methods = [
+        'callClick', 'callLoadMore', 'callRecs', 'callUserZapping',
+        'callWhatIs', 'cancelRecommendation', 'cancelRecs', 'closeCard',
+        'closeModal', 'closeTbx', 'errorInjectionHandler', 'getCountOfRecs',
+        'getStat', 'imageError', 'manualVideoClicked', 'onOdbReturn',
+        'onVideoClick', 'pagerLoad', 'recClicked', 'refreshSpecificWidget',
+        'refreshWidget', 'reloadWidget', 'renderSpaWidgets', 'researchWidget',
+        'returnedError', 'returnedHtmlData', 'returnedIrdData', 'returnedJsonData',
+        'scrollLoad', 'showDescription', 'showRecInIframe', 'userZappingMessage',
+        'zappingFormAction'
+    ];
+    obr.extern = {
+        video: {
+            getVideoRecs: noopfn,
+            videoClicked: noopfn
+        }
+    };
+    methods.forEach(function(a) {
+        obr.extern[a] = noopfn;
+    });
+    window.OBR = window.OBR || obr;
+})();
diff --git a/src/data/web_accessible_resources/rumble_embedjs.js b/src/data/web_accessible_resources/rumble_embedjs.js
new file mode 100644
index 00000000..69ff92a4
--- /dev/null
+++ b/src/data/web_accessible_resources/rumble_embedjs.js
@@ -0,0 +1,38 @@
+(function () {
+    if ("Rumble" in window && "_" in window.Rumble) {
+        for (let args of window.Rumble._) {
+            args = [].slice.apply(args);
+
+            let cmd = args[0],
+                conf = args[1],
+                script_src = document.currentScript.src,
+                idx = script_src.indexOf("/embedJS/"),
+                pub_code;
+
+            if (idx != -1) {
+                script_src = script_src.slice(idx + "/embedJS/".length);
+                idx = script_src.indexOf("/");
+                if (idx != -1) {
+                    script_src = script_src.slice(0, idx);
+                    idx = script_src.indexOf(".");
+                    if (idx != -1) {
+                        pub_code = script_src.slice(0, idx);
+                    }
+                }
+            }
+
+            if (pub_code && cmd == "play" && "div" in conf && "video" in conf) {
+                document.dispatchEvent(new CustomEvent("pbSurrogateMessage", {
+                    detail: {
+                        type: "widgetFromSurrogate",
+                        name: "Rumble Video Player",
+                        widgetData: {
+                            pubCode: pub_code,
+                            args
+                        }
+                    }
+                }));
+            }
+        }
+    }
+}());
diff --git a/src/data/web_accessible_resources/youneeq.js b/src/data/web_accessible_resources/youneeq.js
new file mode 100644
index 00000000..059bd44f
--- /dev/null
+++ b/src/data/web_accessible_resources/youneeq.js
@@ -0,0 +1,14 @@
+(function () {
+    var noopfn = function() {
+        ;
+    };
+    function YqClass() {
+        this.observe = noopfn;
+        this.observeMin = noopfn;
+        this.scroll_event = noopfn;
+        this.onready = noopfn;
+        this.yq_panel_click = noopfn;
+        this.titleTrim = noopfn;
+    }
+    window.Yq || (window.Yq = new YqClass); // eslint-disable-line no-unused-expressions
+}());
diff --git a/src/data/yellowlist.txt b/src/data/yellowlist.txt
index 935a75c2..a4a21f0f 100644
--- a/src/data/yellowlist.txt
+++ b/src/data/yellowlist.txt
@@ -7,6 +7,7 @@ accuweather.com
 actionnetwork.org
 imagesrv.adition.com
 auth.adobe.com
+documentcloud.adobe.com
 wwwimages.adobe.com
 xsdownload.adobe.com
 assets.adobedtm.com
@@ -17,8 +18,10 @@ akamaihd.net
 akamaized.net
 alexa.com
 alicdn.com
+aliyuncs.com
 ally.com
 amazon.com
+c.amazon-adsystem.com
 s3.amazonaws.com
 amazonaws.com
 coin.amazonpay.com
@@ -78,6 +81,7 @@ betterttv.net
 static.beyondmenu.com
 www.beyondmenu.com
 bigcommerce.com
+r.bing.com
 www.bing.com
 bit.ly
 bizrate.com
@@ -97,6 +101,7 @@ players.brightcove.net
 bungie.net
 buzzfed.com
 buzzfeed.com
+byteoversea.com
 cachefly.net
 calendly.com
 cardinalcommerce.com
@@ -132,8 +137,11 @@ cdn.cnetcontent.com
 ws.cnetcontent.com
 codepen.io
 codesandbox.io
+cdn.cohesionapps.com
+make.cohesionapps.com
 cloudplatform.coveo.com
 platform.cloud.coveo.com
+platform-eu.cloud.coveo.com
 static.cloud.coveo.com
 creativecommons.org
 cstv.com
@@ -142,12 +150,14 @@ custhelp.com
 d3js.org
 dailymotion.com
 danid.dk
+check.ddos-guard.net
 dealer.com
 dealerinspire.com
 delicious.com
 delvenetworks.com
 deviantart.com
 deviantart.net
+digitaloceanspaces.com
 digitalriver.com
 digitalrivercontent.net
 cdn.discourse.org
@@ -163,6 +173,7 @@ dotsub.com
 dl.dropboxusercontent.com
 dumpert.nl
 duosecurity.com
+dynamics.com
 cdn.dynamicyield.com
 cdn-eu.dynamicyield.com
 rcom.dynamicyield.com
@@ -189,6 +200,7 @@ cdn.embed.ly
 cdn.embedly.com
 i-cdn.embed.ly
 i.embed.ly
+envato.com
 pp.ephapay.net
 epoch.com
 epoq.de
@@ -226,15 +238,15 @@ fling.com
 flo.uri.sh
 flowplayer.org
 flyertown.ca
-adm.fwmrm.net
 fontawesome.com
 fontdeck.com
 fonts.com
 fonts.net
 force.com
 formstack.com
+fundraiseup.com
 fuseservice.com
-140cc.v.fwmrm.net
+fwmrm.net
 fyre.co
 gannett-cdn.com
 gannettonline.com
@@ -253,6 +265,7 @@ giphy.com
 gitbook.com
 github.com
 githubusercontent.com
+gleam.io
 gmodules.com
 godatafeed.com
 gogousenet.com
@@ -265,6 +278,7 @@ clients1.google.com
 clients6.google.com
 consent.google.com
 cse.google.com
+dai.google.com
 datastudio.google.com
 developers.google.com
 docs.google.com
@@ -272,6 +286,7 @@ drive.google.com
 feedburner.google.com
 feedproxy.google.com
 fonts.google.com
+fundingchoicesmessages.google.com
 fusiontables.google.com
 groups.google.com
 kh.google.com
@@ -282,10 +297,12 @@ khms3.google.com
 khms4.google.com
 labs.google.com
 maps-api-ssl.google.com
-mapsengine.google.com
 maps.google.com
+mapsengine.google.com
 mt0.google.com
 mt1.google.com
+mt2.google.com
+mt3.google.com
 mts0.google.com
 mts1.google.com
 mw1.google.com
@@ -367,6 +384,7 @@ instructure.com
 intellicast.com
 intensedebate.com
 intercom.io
+intercomcdn.com
 members.internetdefenseleague.org
 investingchannel.com
 script.ioam.de
@@ -392,6 +410,7 @@ cdnsecakmi.kaltura.com
 cfvod.kaltura.com
 www.kaltura.com
 kampyle.com
+ssl.kaptcha.com
 kataweb.it
 kickapps.com
 kickstarter.com
@@ -409,6 +428,7 @@ licdn.com
 licensebuttons.net
 addon.lidl.de
 media.lidl.com
+lightboxcdn.com
 linkwithin.com
 list-manage.com
 i.lithium.com
@@ -424,6 +444,7 @@ llnwd.net
 loggly.com
 logos.com
 lphbs.com
+lpsnmedia.net
 mail.ru
 mailchimp.com
 mapbox.com
@@ -499,6 +520,7 @@ amazoncustomerservice.d2.sc.omtrdc.net
 omny.fm
 attservicesinc.tt.omtrdc.net
 dsw.tt.omtrdc.net
+onetrust.com
 onswipe.com
 api.ooyala.com
 c.ooyala.com
@@ -548,6 +570,8 @@ powerreviews.com
 pricegrabber.com
 printfriendly.com
 prismic.io
+privacymanager.io
+cdn.privacy-mgmt.com
 providesupport.com
 psswrdbx.com
 publiekeomroep.nl
@@ -564,6 +588,7 @@ rackcdn.com
 rackspacecloud.com
 radikal.ru
 radiofrance.fr
+image.rakuten.co.jp
 rambler.ru
 images.rapgenius.com
 readability.com
@@ -578,6 +603,7 @@ redefine.pl
 cdngeneral.rentcafe.com
 resultspage.com
 rewardstyle.com
+rfksrv.com
 rpxnow.com
 rssinclude.com
 sagepay.com
@@ -602,10 +628,12 @@ securitymetrics.com
 seeclickfix.com
 sgizmo.com
 shopify.com
+shopifycdn.com
 shopping.com
 shop-pro.jp
 shoprunner.com
 sidearmsports.com
+simplecast.com
 siteimprove.com
 shield.sitelock.com
 sketchfab.com
@@ -623,6 +651,8 @@ api.soundcloud.com
 feeds.soundcloud.com
 sp-prod.net
 spot.im
+api.spreaker.com
+widget.spreaker.com
 springboardplatform.com
 squarespace.com
 squareup.com
@@ -635,9 +665,11 @@ stackoverflow.com
 staticamzn.com
 cdn.static-economist.com
 staticflickr.com
+statuspage.io
 steampowered.com
 store.akamai.steamstatic.com
 steamusercontent.com
+streamtheworld.com
 stripe.com
 m.stripe.network
 stripecdn.com
@@ -647,16 +679,21 @@ swiftype.com
 public.tableau.com
 public.tableausoftware.com
 c.tadst.com
+cdn.tagcommander.com
 taleo.net
 uploads.tapatalk-cdn.com
 targetimg1.com
 targetimg2.com
+tarteaucitron.io
 tawk.to
 technorati.com
 tegna-media.com
 textalk.se
+tfaforms.com
+tfaforms.net
 theplatform.com
 tile.thunderforest.com
+tiktokcdn.com
 timeinc.net
 tinypass.com
 tinypic.com
@@ -669,6 +706,7 @@ tradingview.com
 trb.com
 trbimg.com
 trumba.com
+trustarc.com
 privacy-policy.truste.com
 trustkeeper.net
 trustpilot.com
@@ -692,6 +730,7 @@ typepad.com
 typography.com
 assets.ubuntu.com
 uicdn.com
+uicdn.net
 ui-portal.de
 ultimedia.com
 ultraimg.com
@@ -699,6 +738,7 @@ unicornmedia.com
 unsplash.com
 uplynk.com
 usa.gov
+usercentrics.eu
 viafoura.net
 viddler.com
 videobash.com
@@ -759,6 +799,7 @@ yahoo.net
 yahooapis.com
 api-maps.yandex.ru
 img-fotki.yandex.ru
+maps.yandex.net
 yardbarker.com
 yastatic.net
 yellowpages.com
diff --git a/src/js/background.js b/src/js/background.js
index 6cdee4c6..eb6a30c8 100644
--- a/src/js/background.js
+++ b/src/js/background.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2014 Electronic Frontier Foundation
  *
  * Derived from Adblock Plus
@@ -41,8 +41,7 @@ function Badger() {
   self.isFirstRun = false;
   self.isUpdate = false;
 
-  self.webRTCAvailable = checkWebRTCBrowserSupport();
-  self.firstPartyDomainPotentiallyRequired = testCookiesFirstPartyDomain();
+  self.webRTCAvailable = checkWebRtcBrowserSupport();
 
   self.widgetList = [];
   let widgetListPromise = widgetLoader.loadWidgetsFromFile(
@@ -55,24 +54,30 @@ function Badger() {
     self.initializeSettings();
     // Privacy Badger settings are now fully ready
 
-    self.setPrivacyOverrides();
-
     self.heuristicBlocking = new HeuristicBlocking.HeuristicBlocker(thisStorage);
 
     // TODO there are async migrations
     // TODO is this the right place for migrations?
     self.runMigrations();
 
+    self.setPrivacyOverrides();
+
     // kick off async initialization steps
-    let seedDataPromise = self.loadFirstRunSeedData().catch(console.error),
-      ylistPromise = self.initializeYellowlist().catch(console.error),
+    let ylistPromise = self.initializeYellowlist().catch(console.error),
       dntHashesPromise = self.initializeDnt().catch(console.error),
       tabDataPromise = self.updateTabList().catch(console.error);
 
+    // async load known CNAME domain aliases (but don't wait on them)
+    self.initializeCnames().catch(console.error);
+
+    // seed data depends on the yellowlist
+    await ylistPromise;
+    let seedDataPromise = self.updateTrackerData().catch(console.error);
+
     // set badge text color to white in Firefox 63+
     // https://bugzilla.mozilla.org/show_bug.cgi?id=1474110
     // https://bugzilla.mozilla.org/show_bug.cgi?id=1424620
-    if (chrome.browserAction.hasOwnProperty('setBadgeTextColor')) {
+    if (utils.hasOwn(chrome.browserAction, 'setBadgeTextColor')) {
       chrome.browserAction.setBadgeTextColor({ color: "#fff" });
     }
 
@@ -87,14 +92,14 @@ function Badger() {
     // wait for async functions (seed data, yellowlist, ...) to resolve
     await widgetListPromise;
     await seedDataPromise;
-    await ylistPromise;
     await dntHashesPromise;
     await tabDataPromise;
 
-    // block all widget domains
-    // only need to do this when the widget list could have gotten updated
     if (badger.isFirstRun || badger.isUpdate) {
+      // block all widget domains
+      // only need to do this when the widget list could have gotten updated
       self.blockWidgetDomains();
+      self.blockPanopticlickDomains();
     }
 
     // start the listeners
@@ -126,7 +131,21 @@ function Badger() {
     // set up periodic fetching of hashes from eff.org
     setInterval(self.updateDntPolicyHashes.bind(self), utils.oneDay() * 4);
 
+    let privateStore = self.getPrivateSettings();
     if (self.isFirstRun) {
+      privateStore.setItem("firstRunTimerFinished", false);
+
+      // work around the welcome page getting closed by an extension restart
+      // such as in response to being granted Private Browsing permission
+      // from the post-install doorhanger on Firefox
+      setTimeout(function () {
+        privateStore.setItem("firstRunTimerFinished", true);
+      }, utils.oneMinute());
+
+      self.showFirstRunPage();
+
+    } else if (!privateStore.getItem("firstRunTimerFinished")) {
+      privateStore.setItem("firstRunTimerFinished", true);
       self.showFirstRunPage();
     }
   });
@@ -134,7 +153,7 @@ function Badger() {
   /**
    * WebRTC availability check
    */
-  function checkWebRTCBrowserSupport() {
+  function checkWebRtcBrowserSupport() {
     if (!(chrome.privacy && chrome.privacy.network &&
       chrome.privacy.network.webRTCIPHandlingPolicy)) {
       return false;
@@ -161,31 +180,6 @@ function Badger() {
     return available;
   }
 
-  /**
-   * Checks for availability of firstPartyDomain chrome.cookies API parameter.
-   * https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies/getAll#Parameters
-   *
-   * firstPartyDomain is required when privacy.websites.firstPartyIsolate is enabled,
-   * and is in Firefox since Firefox 59. (firstPartyIsolate is in Firefox since 58).
-   *
-   * We don't care whether firstPartyIsolate is enabled, but rather whether
-   * firstPartyDomain is supported. Assuming firstPartyDomain is supported,
-   * setting it to null in chrome.cookies.getAll() produces the same result
-   * regardless of the state of firstPartyIsolate.
-   *
-   * firstPartyDomain is not currently supported in Chrome.
-   */
-  function testCookiesFirstPartyDomain() {
-    try {
-      chrome.cookies.getAll({
-        firstPartyDomain: null
-      }, function () {});
-    } catch (ex) {
-      return false;
-    }
-    return true;
-  }
-
 }
 
 Badger.prototype = {
@@ -205,22 +199,27 @@ Badger.prototype = {
           fpData: {
             <script_origin>: {
               canvas: {
-                fingerprinting: boolean,
-                write: boolean
+                fingerprinting: {Boolean},
+                write: {Boolean}
               }
             },
             ...
           },
           frames: {
             <frame_id>: {
-              url: string,
-              host: string,
-              parent: int
+              url: {String}
+              host: {String}
+              widgetReplacementReady: {Boolean}
+              widgetQueue: {Array} widget objects
+              warAccessTokens: {
+                <extension_resource_URL>: {String} access token
+                ...
+              }
             },
             ...
           },
           origins: {
-            domain.tld: {String} action taken for this domain
+            <third_party_fqdn>: {String} action taken for this domain
             ...
           }
         },
@@ -229,6 +228,10 @@ Badger.prototype = {
    */
   tabData: {},
 
+  /**
+   * Mapping of known CNAME domain aliases
+   */
+  cnameDomains: {},
 
   // Methods
 
@@ -249,41 +252,86 @@ Badger.prototype = {
       if (!api) {
         return;
       }
-      api.get({}, result => {
-        if (result.levelOfControl != "controllable_by_this_extension") {
+
+      api.get({}, (result) => {
+        // exit if this browser setting is controlled by something else
+        if (!result.levelOfControl.endsWith("_by_this_extension")) {
+          return;
+        }
+
+        // if value is null, we want to relinquish control over the setting
+        if (value === null) {
+          // exit early if the setting isn't actually set (nothing to clear)
+          if (result.levelOfControl == "controllable_by_this_extension") {
+            return;
+          }
+
+          // clear the browser setting and exit
+          api.clear({
+            scope: 'regular'
+          }, () => {
+            if (chrome.runtime.lastError) {
+              console.error("Failed clearing override:", chrome.runtime.lastError);
+            } else {
+              console.log("Cleared override", name);
+            }
+          });
+
           return;
         }
+
+        // exit if setting is already set to value
+        if (result.value === value &&
+            result.levelOfControl == "controlled_by_this_extension") {
+          return;
+        }
+
+        // otherwise set the value
         api.set({
           value,
           scope: 'regular'
         }, () => {
           if (chrome.runtime.lastError) {
-            console.error("Privacy setting failed:", chrome.runtime.lastError);
+            console.error("Failed setting override:", chrome.runtime.lastError);
           } else {
-            console.log("Set", name, "to", value);
+            console.log("Set override", name, "to", value);
           }
         });
       });
     }
 
-    if (self.getSettings().getItem("disableGoogleNavErrorService")) {
-      if (chrome.privacy.services) {
-        _set_override(
-          "alternateErrorPagesEnabled",
-          chrome.privacy.services.alternateErrorPagesEnabled,
-          false
-        );
-      }
+    if (chrome.privacy.network) {
+      _set_override(
+        "networkPredictionEnabled",
+        chrome.privacy.network.networkPredictionEnabled,
+        (self.getSettings().getItem("disableNetworkPrediction") ? false : null)
+      );
     }
 
-    if (self.getSettings().getItem("disableHyperlinkAuditing")) {
-      if (chrome.privacy.websites) {
-        _set_override(
-          "hyperlinkAuditingEnabled",
-          chrome.privacy.websites.hyperlinkAuditingEnabled,
-          false
-        );
-      }
+    if (chrome.privacy.services) {
+      _set_override(
+        "alternateErrorPagesEnabled",
+        chrome.privacy.services.alternateErrorPagesEnabled,
+        (self.getSettings().getItem("disableGoogleNavErrorService") ? false : null)
+      );
+    }
+
+    if (chrome.privacy.websites) {
+      _set_override(
+        "hyperlinkAuditingEnabled",
+        chrome.privacy.websites.hyperlinkAuditingEnabled,
+        (self.getSettings().getItem("disableHyperlinkAuditing") ? false : null)
+      );
+    }
+
+    // when enabled, WebRTC IP handling policy is set to Mode 3
+    // https://tools.ietf.org/html/draft-ietf-rtcweb-ip-handling-01#page-5
+    if (badger.webRTCAvailable) {
+      _set_override(
+        "webRTCIPHandlingPolicy",
+        chrome.privacy.network.webRTCIPHandlingPolicy,
+        (self.getSettings().getItem("preventWebRTCIPLeak") ? 'default_public_interface_only' : null)
+      );
     }
   },
 
@@ -307,28 +355,67 @@ Badger.prototype = {
         return cb(new Error("Failed to parse seed data JSON"));
       }
 
-      self.mergeUserData(data, true);
+      self.mergeUserData(data);
       log("Loaded seed data successfully");
       return cb(null);
     });
   },
 
   /**
-   * Loads seed data upon first run.
+   * Loads seed data on extension installation.
+   *
+   * Clears the database (preserving user-customized sliders)
+   * and loads seed data on extension update
+   * when local learning is disabled.
    *
    * @returns {Promise}
    */
-  loadFirstRunSeedData: function () {
+  updateTrackerData: function () {
     let self = this;
 
     return new Promise(function (resolve, reject) {
-      if (!self.isFirstRun) {
-        log("No need to load seed data");
+      if (!self.isFirstRun && !self.isUpdate) {
+        log("No need to load seed data (existing installation, no update)");
         return resolve();
       }
 
+      let userActions = [];
+
+      if (self.isUpdate) {
+        if (self.getSettings().getItem("learnLocally")) {
+          log("No need to load seed data (local learning is enabled)");
+          return resolve();
+
+        } else {
+          let actions = Object.entries(
+            self.storage.getStore('action_map').getItemClones());
+
+          log("Clearing tracker data ...");
+
+          // first save user slider modifications
+          for (const [domain, actionData] of actions) {
+            if (actionData.userAction != "") {
+              userActions.push({
+                domain,
+                action: actionData.userAction
+              });
+            }
+          }
+
+          // clear existing data
+          self.storage.clearTrackerData();
+        }
+      }
+
+      log("Loading seed data ...");
       self.loadSeedData(err => {
         log("Seed data loaded! (err=%o)", err);
+
+        // reapply customized sliders if any
+        for (const item of userActions) {
+          self.storage.setupUserAction(item.domain, item.action);
+        }
+
         return (err ? reject(err) : resolve());
       });
     });
@@ -351,7 +438,7 @@ Badger.prototype = {
    * to ensure that all widgets that could get replaced
    * do get replaced by default for all users.
    */
-  blockWidgetDomains: function () {
+  blockWidgetDomains() {
     let self = this;
 
     // compile set of widget domains
@@ -372,6 +459,17 @@ Badger.prototype = {
     }
   },
 
+  /**
+   * Blocks the test domains used by Panopticlick.
+   *
+   * https://github.com/EFForg/privacybadger/issues/2712
+   */
+  blockPanopticlickDomains() {
+    for (let domain of ["trackersimulator.org", "eviltracker.net"]) {
+      this.heuristicBlocking.blocklistOrigin(domain, domain);
+    }
+  },
+
   /**
    * Saves a user preference for an origin, overriding the default setting.
    *
@@ -419,7 +517,7 @@ Badger.prototype = {
   recordFrame: function(tabId, frameId, frameUrl) {
     let self = this;
 
-    if (!self.tabData.hasOwnProperty(tabId)) {
+    if (!utils.hasOwn(self.tabData, tabId)) {
       self.tabData[tabId] = {
         blockedFrameUrls: {},
         frames: {},
@@ -447,14 +545,22 @@ Badger.prototype = {
 
     frame_id = frame_id || 0;
 
-    if (self.tabData.hasOwnProperty(tab_id)) {
-      if (self.tabData[tab_id].frames.hasOwnProperty(frame_id)) {
+    if (utils.hasOwn(self.tabData, tab_id)) {
+      if (utils.hasOwn(self.tabData[tab_id].frames, frame_id)) {
         return self.tabData[tab_id].frames[frame_id];
       }
     }
     return null;
   },
 
+  initializeCnames: function () {
+    return fetch(constants.CNAME_DOMAINS_LOCAL_URL)
+      .then(response => response.json())
+      .then(data => {
+        badger.cnameDomains = data;
+      });
+  },
+
   /**
    * Initializes the yellowlist from disk.
    *
@@ -653,7 +759,7 @@ Badger.prototype = {
 
     // update timestamp first;
     // avoids queuing the same domain multiple times
-    var recheckTime = _.random(
+    var recheckTime = utils.random(
       utils.oneDayFromNow(),
       utils.nDaysFromNow(7)
     );
@@ -707,18 +813,21 @@ Badger.prototype = {
   defaultSettings: {
     checkForDNTPolicy: true,
     disabledSites: [],
+    disableFloc: true,
     disableGoogleNavErrorService: true,
     disableHyperlinkAuditing: true,
+    disableNetworkPrediction: true,
     hideBlockedElements: true,
     learnInIncognito: false,
     learnLocally: false,
     migrationLevel: 0,
+    preventWebRTCIPLeak: false,
     seenComic: false,
     sendDNTSignal: true,
     showCounter: true,
+    showExpandedTrackingSection: false,
     showIntroPage: true,
     showNonTrackingDomains: false,
-    showTrackingDomains: false,
     socialWidgetReplacementEnabled: true,
     widgetReplacementExceptions: [],
     widgetSiteAllowlist: {},
@@ -764,8 +873,54 @@ Badger.prototype = {
       privateStore.setItem("badgerVersion", version);
     }
 
-    if (!privateStore.hasItem("showLearningPrompt")) {
-      privateStore.setItem("showLearningPrompt", false);
+    // initialize any other private store (not-for-export) settings
+    let privateDefaultSettings = {
+      firstRunTimerFinished: true,
+      showLearningPrompt: false,
+    };
+    for (let key of Object.keys(privateDefaultSettings)) {
+      if (!privateStore.hasItem(key)) {
+        privateStore.setItem(key, privateDefaultSettings[key]);
+      }
+    }
+    badger.initDeprecations();
+
+    if (self.isUpdate) {
+      // remove obsolete settings
+      if (settings.hasItem("showTrackingDomains")) {
+        settings.deleteItem("showTrackingDomains");
+      }
+    }
+  },
+
+  /**
+   * Initializes private flags that keep track of deprecated features.
+   *
+   * Called on Badger startup and user data import.
+   */
+  initDeprecations: function () {
+    let self = this,
+      privateStore = self.getPrivateSettings();
+
+    if (!privateStore.hasItem("legacyWebRtcProtectionUser")) {
+      // initialize "legacy WebRTC IP leak protection user" flag
+      privateStore.setItem("legacyWebRtcProtectionUser",
+        self.getSettings().getItem("preventWebRTCIPLeak"));
+
+    } else if (!privateStore.getItem("legacyWebRtcProtectionUser")) {
+      // set legacy flag to true if the IP protection gets enabled
+      // for whatever reason (testing, user data import)
+      if (self.getSettings().getItem("preventWebRTCIPLeak")) {
+        privateStore.setItem("legacyWebRtcProtectionUser", true);
+      }
+    }
+
+    if (!privateStore.hasItem("showWebRtcDeprecation")) {
+      // will show WebRTC protection deprecation message
+      // iff showWebRtcDeprecation exists and is set to true
+      if (privateStore.getItem("legacyWebRtcProtectionUser")) {
+        privateStore.setItem("showWebRtcDeprecation", true);
+      }
     }
   },
 
@@ -795,6 +950,8 @@ Badger.prototype = {
       Migrations.forgetCloudflare,
       Migrations.forgetConsensu,
       Migrations.resetWebRTCIPHandlingPolicy2,
+      Migrations.resetWebRtcIpHandlingPolicy3,
+      Migrations.forgetOpenDNS,
     ];
 
     for (var i = migrationLevel; i < migrations.length; i++) {
@@ -850,7 +1007,9 @@ Badger.prototype = {
         return;
       }
 
-      if (self.criticalError) {
+      let special_page = !utils.hasOwn(self.tabData, tab_id);
+
+      if (self.criticalError || (!special_page && badger.getPrivateSettings().getItem("showWebRtcDeprecation"))) {
         chrome.browserAction.setBadgeBackgroundColor({tabId: tab_id, color: "#cc0000"});
         chrome.browserAction.setBadgeText({tabId: tab_id, text: "!"});
         return;
@@ -860,9 +1019,8 @@ Badger.prototype = {
       // - the counter is disabled
       // - we don't have tabData for whatever reason (special browser pages)
       // - Privacy Badger is disabled on the page
-      if (
+      if (special_page ||
         !self.getSettings().getItem("showCounter") ||
-        !self.tabData.hasOwnProperty(tab_id) ||
         !self.isPrivacyBadgerEnabled(self.getFrameData(tab_id).host)
       ) {
         chrome.browserAction.setBadgeText({tabId: tab_id, text: ""});
@@ -937,13 +1095,6 @@ Badger.prototype = {
     );
   },
 
-  /**
-   * Check if widget replacement functionality is enabled.
-   */
-  isWidgetReplacementEnabled: function () {
-    return this.getSettings().getItem("socialWidgetReplacementEnabled");
-  },
-
   isDNTSignalEnabled: function() {
     return this.getSettings().getItem("sendDNTSignal");
   },
@@ -952,6 +1103,13 @@ Badger.prototype = {
     return this.getSettings().getItem("checkForDNTPolicy");
   },
 
+  isFlocOverwriteEnabled: function() {
+    if (document.interestCohort) {
+      return this.getSettings().getItem("disableFloc");
+    }
+    return false;
+  },
+
   /**
    * Add an origin to the disabled sites list
    *
@@ -1048,7 +1206,7 @@ Badger.prototype = {
         action == constants.USER_COOKIEBLOCK
       ),
       origins = self.tabData[tab_id].origins,
-      previously_blocked = origins.hasOwnProperty(fqdn) && (
+      previously_blocked = utils.hasOwn(origins, fqdn) && (
         origins[fqdn] == constants.BLOCK ||
         origins[fqdn] == constants.COOKIEBLOCK ||
         origins[fqdn] == constants.USER_BLOCK ||
@@ -1099,26 +1257,39 @@ Badger.prototype = {
   },
 
   /**
-   * Merge data exported from a different badger into this badger's storage.
+   * Merges Privacy Badger user data.
+   *
+   * Used to load pre-trained/"seed" data on installation and updates.
+   * Also used to import user data from other Privacy Badger instances.
    *
    * @param {Object} data the user data to merge in
-   * @param {Boolean} [skip_migrations=false] set when running from a migration to avoid infinite loop
    */
-  mergeUserData: function (data, skip_migrations) {
+  mergeUserData: function (data) {
     let self = this;
+
+    // fix incoming snitch map entries with current MDFP data
+    if (utils.hasOwn(data, "snitch_map")) {
+      let correctedSites = {};
+
+      for (let domain in data.snitch_map) {
+        let newSnitches = data.snitch_map[domain].filter(
+          site => utils.isThirdPartyDomain(site, domain));
+
+        if (newSnitches.length) {
+          correctedSites[domain] = newSnitches;
+        }
+      }
+
+      data.snitch_map = correctedSites;
+    }
+
     // The order of these keys is also the order in which they should be imported.
     // It's important that snitch_map be imported before action_map (#1972)
     ["snitch_map", "action_map", "settings_map"].forEach(function (key) {
-      if (data.hasOwnProperty(key)) {
+      if (utils.hasOwn(data, key)) {
         self.storage.getStore(key).merge(data[key]);
       }
     });
-
-    // for exports from older Privacy Badger versions:
-    // fix yellowlist getting out of sync, remove non-tracking domains, etc.
-    if (!skip_migrations) {
-      self.runMigrations();
-    }
   }
 
 };
diff --git a/src/js/bootstrap.js b/src/js/bootstrap.js
index 7d90ef4c..e20b98e0 100644
--- a/src/js/bootstrap.js
+++ b/src/js/bootstrap.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2014 Electronic Frontier Foundation
  *
  * Privacy Badger is free software: you can redistribute it and/or modify
diff --git a/src/js/constants.js b/src/js/constants.js
index 5a77d021..65bb5fdb 100644
--- a/src/js/constants.js
+++ b/src/js/constants.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2014 Electronic Frontier Foundation
  *
  * Privacy Badger is free software: you can redistribute it and/or modify
@@ -15,9 +15,9 @@
  * along with Privacy Badger.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-require.scopes.constants = (function() {
+require.scopes.constants = (function () {
 
-var exports = {
+let exports = {
 
   // Tracking status constants
   NO_TRACKING: "noaction",
@@ -30,6 +30,7 @@ var exports = {
   USER_COOKIEBLOCK: "user_cookieblock",
 
   // URLS
+  CNAME_DOMAINS_LOCAL_URL: chrome.runtime.getURL('data/cname_domains.json'),
   DNT_POLICIES_URL: "https://www.eff.org/files/dnt-policies.json",
   DNT_POLICIES_LOCAL_URL: chrome.runtime.getURL('data/dnt-policies.json'),
   YELLOWLIST_URL: "https://www.eff.org/files/cookieblocklist_new.txt",
@@ -51,4 +52,5 @@ exports.BLOCKED_ACTIONS = new Set([
 ]);
 
 return exports;
-})();
+
+}());
diff --git a/src/js/contentscripts/clobbercookie.js b/src/js/contentscripts/clobbercookie.js
index 402d00e4..1d6012b2 100644
--- a/src/js/contentscripts/clobbercookie.js
+++ b/src/js/contentscripts/clobbercookie.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2014 Electronic Frontier Foundation
  *
  * Privacy Badger is free software: you can redistribute it and/or modify
diff --git a/src/js/contentscripts/clobberlocalstorage.js b/src/js/contentscripts/clobberlocalstorage.js
index 7ff3528a..1708911a 100644
--- a/src/js/contentscripts/clobberlocalstorage.js
+++ b/src/js/contentscripts/clobberlocalstorage.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2014 Electronic Frontier Foundation
  *
  * Privacy Badger is free software: you can redistribute it and/or modify
diff --git a/src/js/contentscripts/collapser.js b/src/js/contentscripts/collapser.js
index 968905c9..b27b3cf8 100644
--- a/src/js/contentscripts/collapser.js
+++ b/src/js/contentscripts/collapser.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2020 Electronic Frontier Foundation
  *
  * Privacy Badger is free software: you can redistribute it and/or modify
diff --git a/src/js/contentscripts/dnt.js b/src/js/contentscripts/dnt.js
index 0584748b..e27fe48d 100644
--- a/src/js/contentscripts/dnt.js
+++ b/src/js/contentscripts/dnt.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2018 Electronic Frontier Foundation
  *
  * Privacy Badger is free software: you can redistribute it and/or modify
@@ -15,6 +15,17 @@
  * along with Privacy Badger.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+(function () {
+
+// don't inject into non-HTML documents (such as XML documents)
+// but do inject into XHTML documents
+if (document instanceof HTMLDocument === false && (
+  document instanceof XMLDocument === false ||
+  document.createElement('div') instanceof HTMLDivElement === false
+)) {
+  return;
+}
+
 function getPageScript() {
 
   // code below is not a content script: no chrome.* APIs /////////////////////
@@ -22,17 +33,23 @@ function getPageScript() {
   // return a string
   return "(" + function (NAVIGATOR, OBJECT) {
 
-    OBJECT.defineProperty(OBJECT.getPrototypeOf(NAVIGATOR), "doNotTrack", {
-      get: function doNotTrack() {
-        return "1";
-      }
-    });
+    if (NAVIGATOR.doNotTrack != "1") {
+      OBJECT.defineProperty(OBJECT.getPrototypeOf(NAVIGATOR), "doNotTrack", {
+        get: function doNotTrack() {
+          return "1";
+        }
+      });
+    }
 
-    OBJECT.defineProperty(OBJECT.getPrototypeOf(NAVIGATOR), "globalPrivacyControl", {
-      get: function globalPrivacyControl() {
-        return "1";
+    if (!NAVIGATOR.globalPrivacyControl) {
+      try {
+        OBJECT.defineProperty(NAVIGATOR, "globalPrivacyControl", {
+          value: true
+        });
+      } catch (e) {
+        console.error("Privacy Badger failed to set navigator.globalPrivacyControl, probably because another extension set it in an incompatible way first.");
       }
-    });
+    }
 
   // save locally to keep from getting overwritten by site code
   } + "(window.navigator, Object));";
@@ -43,17 +60,6 @@ function getPageScript() {
 
 // END FUNCTION DEFINITIONS ///////////////////////////////////////////////////
 
-(function () {
-
-// don't inject into non-HTML documents (such as XML documents)
-// but do inject into XHTML documents
-if (document instanceof HTMLDocument === false && (
-  document instanceof XMLDocument === false ||
-  document.createElement('div') instanceof HTMLDivElement === false
-)) {
-  return;
-}
-
 // TODO race condition; fix waiting on https://crbug.com/478183
 chrome.runtime.sendMessage({
   type: "checkDNT"
diff --git a/src/js/contentscripts/fingerprinting.js b/src/js/contentscripts/fingerprinting.js
index 08918966..29e0302f 100644
--- a/src/js/contentscripts/fingerprinting.js
+++ b/src/js/contentscripts/fingerprinting.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2015 Electronic Frontier Foundation
  *
  * Derived from Chameleon <https://github.com/ghostwords/chameleon>
@@ -18,12 +18,23 @@
  * along with Privacy Badger.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-function getFpPageScript() {
+(function () {
+
+// don't inject into non-HTML documents (such as XML documents)
+// but do inject into XHTML documents
+if (document instanceof HTMLDocument === false && (
+  document instanceof XMLDocument === false ||
+  document.createElement('div') instanceof HTMLDivElement === false
+)) {
+  return;
+}
+
+function getPageScript(event_id) {
 
   // code below is not a content script: no chrome.* APIs /////////////////////
 
   // return a string
-  return "(" + function (DOCUMENT, dispatchEvent, CUSTOM_EVENT, ERROR, DATE, setTimeout, OBJECT) {
+  return "(" + function (EVENT_ID, DOCUMENT, dispatchEvent, CUSTOM_EVENT, ERROR, DATE, setTimeout, OBJECT, FUNCTION, UNDEFINED) {
 
     const V8_STACK_TRACE_API = !!(ERROR && ERROR.captureStackTrace);
 
@@ -34,9 +45,14 @@ function getFpPageScript() {
       var geckoCallSiteRe = /^\s*(.*?)(?:\((.*?)\))?@?((?:file|https?|chrome):.*?):(\d+)(?::(\d+))?\s*$/i;
     }
 
-    var event_id = DOCUMENT.currentScript.getAttribute('data-event-id');
+    function hasOwn(obj, prop) {
+      return OBJECT.prototype.hasOwnProperty.call(obj, prop);
+    }
+    function apply(obj, context, args) {
+      return FUNCTION.prototype.apply.call(obj, context, args);
+    }
 
-    // from Underscore v1.6.0
+    // adapted from Underscore v1.6.0
     function debounce(func, wait, immediate) {
       var timeout, args, context, timestamp, result;
 
@@ -47,7 +63,7 @@ function getFpPageScript() {
         } else {
           timeout = null;
           if (!immediate) {
-            result = func.apply(context, args);
+            result = apply(func, context, args);
             context = args = null;
           }
         }
@@ -62,7 +78,7 @@ function getFpPageScript() {
           timeout = setTimeout(later, wait);
         }
         if (callNow) {
-          result = func.apply(context, args);
+          result = apply(func, context, args);
           context = args = null;
         }
 
@@ -76,7 +92,7 @@ function getFpPageScript() {
 
       // debounce sending queued messages
       var _send = debounce(function () {
-        dispatchEvent.call(DOCUMENT, new CUSTOM_EVENT(event_id, {
+        dispatchEvent.call(DOCUMENT, new CUSTOM_EVENT(EVENT_ID, {
           detail: messages
         }));
 
@@ -217,7 +233,7 @@ function getFpPageScript() {
             // bail if the text being written is too short,
             // of if we've already sent a monitoring payload
             if (skip_monitoring || !args[0] || args[0].length < 5) {
-              return orig.apply(this, args);
+              return apply(orig, this, args);
             }
           }
 
@@ -232,8 +248,8 @@ function getFpPageScript() {
               scriptUrl: script_url
             };
 
-          if (item.hasOwnProperty('extra')) {
-            msg.extra = item.extra.apply(this, args);
+          if (hasOwn(item, 'extra')) {
+            msg.extra = apply(item.extra, this, args);
           }
 
           send(msg);
@@ -251,7 +267,7 @@ function getFpPageScript() {
             }
           }
 
-          return orig.apply(this, args);
+          return apply(orig, this, args);
         }
 
         OBJECT.defineProperty(wrapped, "name", { value: orig.name });
@@ -284,10 +300,10 @@ function getFpPageScript() {
             height = args[3];
 
           // "this" is a CanvasRenderingContext2D object
-          if (width === undefined) {
+          if (width === UNDEFINED) {
             width = this.canvas.width;
           }
-          if (height === undefined) {
+          if (height === UNDEFINED) {
             height = this.canvas.height;
           }
 
@@ -319,7 +335,7 @@ function getFpPageScript() {
     methods.forEach(trapInstanceMethod);
 
   // save locally to keep from getting overwritten by site code
-  } + "(document, document.dispatchEvent, CustomEvent, Error, Date, setTimeout, Object));";
+  } + "(" + event_id + ", document, document.dispatchEvent, CustomEvent, Error, Date, setTimeout, Object, Function));";
 
   // code above is not a content script: no chrome.* APIs /////////////////////
 
@@ -327,17 +343,6 @@ function getFpPageScript() {
 
 // END FUNCTION DEFINITIONS ///////////////////////////////////////////////////
 
-(function () {
-
-// don't inject into non-HTML documents (such as XML documents)
-// but do inject into XHTML documents
-if (document instanceof HTMLDocument === false && (
-  document instanceof XMLDocument === false ||
-  document.createElement('div') instanceof HTMLDivElement === false
-)) {
-  return;
-}
-
 // TODO race condition; fix waiting on https://crbug.com/478183
 chrome.runtime.sendMessage({
   type: "detectFingerprinting"
@@ -345,23 +350,19 @@ chrome.runtime.sendMessage({
   if (!enabled) {
     return;
   }
-  /**
-   * Communicating to webrequest.js
-   */
-  var event_id = Math.random();
+
+  const event_id = Math.random();
 
   // listen for messages from the script we are about to insert
   document.addEventListener(event_id, function (e) {
-    // pass these on to the background page
+    // pass these on to the background page (handled by webrequest.js)
     chrome.runtime.sendMessage({
       type: "fpReport",
       data: e.detail
     });
   });
 
-  window.injectScript(getFpPageScript(), {
-    event_id: event_id
-  });
+  window.injectScript(getPageScript(event_id));
 });
 
 }());
diff --git a/src/js/contentscripts/floc.js b/src/js/contentscripts/floc.js
new file mode 100644
index 00000000..27a04879
--- /dev/null
+++ b/src/js/contentscripts/floc.js
@@ -0,0 +1,40 @@
+/*
+ * This file is part of Privacy Badger <https://privacybadger.org/>
+ * Copyright (C) 2021 Electronic Frontier Foundation
+ *
+ * Privacy Badger is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * Privacy Badger is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Privacy Badger.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+(function () {
+
+// don't inject into non-HTML documents (such as XML documents)
+// but do inject into XHTML documents
+if (document instanceof HTMLDocument === false && (
+  document instanceof XMLDocument === false ||
+  document.createElement('div') instanceof HTMLDivElement === false
+)) {
+  return;
+}
+
+// TODO race condition; fix waiting on https://crbug.com/478183
+chrome.runtime.sendMessage({
+  type: "checkFloc"
+}, function (enabled) {
+  if (enabled) {
+    window.injectScript("(" + function () {
+      delete Document.prototype.interestCohort;
+    } + "());");
+  }
+});
+
+}());
diff --git a/src/js/contentscripts/socialwidgets.js b/src/js/contentscripts/socialwidgets.js
index 14ae2b39..61aa8bd3 100644
--- a/src/js/contentscripts/socialwidgets.js
+++ b/src/js/contentscripts/socialwidgets.js
@@ -1,6 +1,7 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2014 Electronic Frontier Foundation
+ *
  * Derived from ShareMeNot
  * Copyright (C) 2011-2014 University of Washington
  *
@@ -43,6 +44,21 @@
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
+(function () {
+
+// don't inject into non-HTML documents (such as XML documents)
+// but do inject into XHTML documents
+if (document instanceof HTMLDocument === false && (
+  document instanceof XMLDocument === false ||
+  document.createElement('div') instanceof HTMLDivElement === false
+)) {
+  return;
+}
+
+function hasOwn(obj, prop) {
+  return Object.prototype.hasOwnProperty.call(obj, prop);
+}
+
 // widget data
 let widgetList;
 
@@ -52,11 +68,12 @@ const TRANSLATIONS = {};
 // references to widget page elements
 const WIDGET_ELS = {};
 
-
 /**
  * @param {Object} response response to checkWidgetReplacementEnabled
  */
-function initialize(response) {
+function init(response) {
+  const FRAME_ID = response.frameId;
+
   for (const key in response.translations) {
     TRANSLATIONS[key] = response.translations[key];
   }
@@ -68,8 +85,17 @@ function initialize(response) {
 
   // set up listener for dynamically created widgets
   chrome.runtime.onMessage.addListener(function (request) {
-    if (request.replaceWidget) {
-      replaceSubsequentTrackerButtonsHelper(request.trackerDomain);
+    // blocked something, see if this is a widget domain that should be replaced
+    if (request.type == "replaceWidget") {
+      if (request.frameId === FRAME_ID) {
+        replaceSubsequentTrackerButtonsHelper(request.trackerDomain);
+      }
+
+    // widget replacement initiated by a surrogate script
+    } else if (request.type == "replaceWidgetFromSurrogate") {
+      if (request.frameId === FRAME_ID) {
+        replaceIndividualButton(request.widget);
+      }
     }
   });
 }
@@ -85,7 +111,7 @@ function createReplacementElement(widget, trackerElem, callback) {
   let buttonData = widget.replacementButton;
 
   // no image data to fetch
-  if (!buttonData.hasOwnProperty('imagePath')) {
+  if (!hasOwn(buttonData, 'imagePath')) {
     return setTimeout(function () {
       _createReplacementElementCallback(widget, trackerElem, callback);
     }, 0);
@@ -152,7 +178,8 @@ function _createButtonReplacement(widget, callback) {
   if (button_type === 0) {
     let popup_url = buttonData.details + encodeURIComponent(window.location.href);
 
-    button.addEventListener("click", function () {
+    button.addEventListener("click", function (e) {
+      if (!e.isTrusted) { return; }
       window.open(popup_url);
     });
 
@@ -161,14 +188,16 @@ function _createButtonReplacement(widget, callback) {
   } else if (button_type == 1) {
     let iframe_url = buttonData.details + encodeURIComponent(window.location.href);
 
-    button.addEventListener("click", function () {
+    button.addEventListener("click", function (e) {
+      if (!e.isTrusted) { return; }
       replaceButtonWithIframeAndUnblockTracker(button, widget.name, iframe_url);
     }, { once: true });
 
   // in place button type; replace the existing button with code
   // specified in the widgets JSON
   } else if (button_type == 2) {
-    button.addEventListener("click", function () {
+    button.addEventListener("click", function (e) {
+      if (!e.isTrusted) { return; }
       replaceButtonWithHtmlCodeAndUnblockTracker(button, widget.name, buttonData.details);
     }, { once: true });
   }
@@ -179,32 +208,16 @@ function _createButtonReplacement(widget, callback) {
 function _createWidgetReplacement(widget, trackerElem, callback) {
   let replacementEl;
 
-  // in-place widget type:
+  // in-place widget types:
+  //
+  // type 3:
   // reinitialize the widget by reinserting its element's HTML
-  if (widget.replacementButton.type == 3) {
-    replacementEl = createReplacementWidget(
-      widget, trackerElem, reinitializeWidgetAndUnblockTracker);
-
-  // in-place widget type:
+  //
+  // type 4:
   // reinitialize the widget by reinserting its element's HTML
   // and activating associated scripts
-  } else if (widget.replacementButton.type == 4) {
-    let activationFn = replaceWidgetAndReloadScripts;
-
-    // if there are no matching script elements
-    if (!document.querySelectorAll(widget.scriptSelectors.join(',')).length) {
-      // and we don't have a fallback script URL
-      if (!widget.fallbackScriptUrl) {
-        // we can't do "in-place" activation; reload the page instead
-        activationFn = function () {
-          unblockTracker(widget.name, function () {
-            location.reload();
-          });
-        };
-      }
-    }
-
-    replacementEl = createReplacementWidget(widget, trackerElem, activationFn);
+  if ([3, 4].includes(widget.replacementButton.type)) {
+    replacementEl = createReplacementWidget(widget, trackerElem);
   }
 
   callback(replacementEl);
@@ -262,32 +275,30 @@ function replaceButtonWithHtmlCodeAndUnblockTracker(button, widget_name, html) {
  * Unblocks the given widget and replaces our replacement placeholder
  * with the original third-party widget element.
  *
- * The teardown to the initialization defined in createReplacementWidget().
+ * Reruns scripts defined in scriptSelectors, if any.
  *
- * @param {String} name the name/type of this widget (SoundCloud, Vimeo etc.)
+ * The teardown to the initialization defined in createReplacementWidget().
  */
-function reinitializeWidgetAndUnblockTracker(name) {
-  unblockTracker(name, function () {
-    // restore all widgets of this type
-    WIDGET_ELS[name].forEach(data => {
-      data.parent.replaceChild(data.widget, data.replacement);
-    });
-    WIDGET_ELS[name] = [];
-  });
-}
+function restoreWidget(widget) {
+  let name = widget.name;
+
+  if (widget.scriptSelectors) {
+    if (widget.scriptSelectors.some(i => i.includes("onload\\=vueRecaptchaApiLoaded"))) {
+      // we can't do "in-place" activation; reload the page instead
+      unblockTracker(name, function () {
+        location.reload();
+      });
+      return;
+    }
+  }
 
-/**
- * Similar to reinitializeWidgetAndUnblockTracker() above,
- * but also reruns scripts defined in scriptSelectors.
- *
- * @param {String} name the name/type of this widget (Disqus, Google reCAPTCHA)
- */
-function replaceWidgetAndReloadScripts(name) {
   unblockTracker(name, function () {
     // restore all widgets of this type
     WIDGET_ELS[name].forEach(data => {
       data.parent.replaceChild(data.widget, data.replacement);
-      reloadScripts(data.scriptSelectors, data.fallbackScriptUrl);
+      if (data.scriptSelectors) {
+        reloadScripts(data.scriptSelectors);
+      }
     });
     WIDGET_ELS[name] = [];
   });
@@ -296,18 +307,9 @@ function replaceWidgetAndReloadScripts(name) {
 /**
  * Find and replace script elements with their copies to trigger re-running.
  */
-function reloadScripts(selectors, fallback_script_url) {
+function reloadScripts(selectors) {
   let scripts = document.querySelectorAll(selectors.join(','));
 
-  // if there are no matches, try a known script URL
-  if (!scripts.length && fallback_script_url) {
-    let parent = document.documentElement,
-      replacement = document.createElement("script");
-    replacement.src = fallback_script_url;
-    parent.insertBefore(replacement, parent.firstChild);
-    return;
-  }
-
   for (let scriptEl of scripts) {
     // reinsert script elements only
     if (!scriptEl.nodeName || scriptEl.nodeName.toLowerCase() != 'script') {
@@ -351,11 +353,11 @@ function replaceScriptsRecurse(node) {
  * Replaces all tracker buttons on the current web page with the internal
  * replacement buttons, respecting the user's blocking settings.
  *
- * @param {Array} widgetsToReplace a list of widget names to replace
+ * @param {Object} widgetsToReplace an object with keys set to widget names
  */
 function replaceInitialTrackerButtonsHelper(widgetsToReplace) {
   widgetList.forEach(function (widget) {
-    if (widgetsToReplace.hasOwnProperty(widget.name)) {
+    if (hasOwn(widgetsToReplace, widget.name)) {
       replaceIndividualButton(widget);
     }
   });
@@ -390,7 +392,7 @@ function _make_id(prefix) {
   return prefix + "-" + Math.random().toString().replace(".", "");
 }
 
-function createReplacementWidget(widget, elToReplace, activationFn) {
+function createReplacementWidget(widget, elToReplace) {
   let name = widget.name;
 
   let widgetFrame = document.createElement('iframe');
@@ -443,8 +445,53 @@ function createReplacementWidget(widget, elToReplace, activationFn) {
 
   let textDiv = document.createElement('div');
   textDiv.style = styleAttrs.join(" !important;") + " !important";
-  textDiv.appendChild(document.createTextNode(
-    TRANSLATIONS.widget_placeholder_pb_has_replaced.replace("XXX", name)));
+
+  let summary = TRANSLATIONS.widget_placeholder_pb_has_replaced.replace("XXX", name),
+    link_start = "YYY",
+    link_end = "ZZZ";
+
+  // get a direct link to widget content when available
+  let widget_url;
+  if (widget.directLinkUrl) {
+    widget_url = widget.directLinkUrl;
+  } else if (elToReplace.nodeName.toLowerCase() == 'iframe' && elToReplace.src && !widget.noDirectLink) {
+    // use the frame URL for framed widgets
+    widget_url = elToReplace.src;
+  }
+
+  if (widget_url) {
+    // construct link to original widget frame
+    let text_before = summary.slice(0, summary.indexOf(link_start)),
+      text_after = summary.slice(summary.indexOf(link_end) + link_end.length),
+      link_text = summary.slice(
+        summary.indexOf(link_start) + link_start.length, summary.indexOf(link_end));
+
+    // nest in a wrapper to preserve whitespace (flexbox)
+    let wrapperDiv = document.createElement("div");
+
+    if (text_before) {
+      wrapperDiv.appendChild(document.createTextNode(text_before));
+    }
+
+    let widgetLink = document.createElement("a");
+    widgetLink.href = widget_url;
+    widgetLink.rel = "noreferrer";
+    widgetLink.target = "_blank";
+    widgetLink.appendChild(document.createTextNode(link_text));
+    wrapperDiv.appendChild(widgetLink);
+
+    if (text_after) {
+      wrapperDiv.appendChild(document.createTextNode(text_after));
+    }
+
+    textDiv.appendChild(wrapperDiv);
+
+  } else {
+    // no link to construct, remove the link markers
+    summary = summary.replace(link_start, "").replace(link_end, "");
+    textDiv.appendChild(document.createTextNode(summary));
+  }
+
   let infoIcon = document.createElement('a'),
     info_icon_id = _make_id("ico-help");
   infoIcon.id = info_icon_id;
@@ -466,9 +513,13 @@ function createReplacementWidget(widget, elToReplace, activationFn) {
     "transition: background-color 0.25s ease-out, border-color 0.25s ease-out, color 0.25s ease-out",
     "border-radius: 3px",
     "cursor: pointer",
-    "font-family: 'Lucida Grande', 'Segoe UI', Tahoma, 'DejaVu Sans', Arial, sans-serif",
-    "font-size: 12px",
+    // systemfontstack.com
+    "font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, helvetica neue, helvetica, Ubuntu, roboto, noto, segoe ui, arial, sans-serif",
+    "font-size: 14px",
     "font-weight: bold",
+    // fix overly bold text on macOS
+    "-webkit-font-smoothing: antialiased",
+    "-moz-osx-font-smoothing: grayscale",
     "line-height: 16px",
     "padding: 10px",
     "margin: 4px",
@@ -493,7 +544,7 @@ function createReplacementWidget(widget, elToReplace, activationFn) {
   widgetDiv.appendChild(buttonDiv);
 
   // save refs. to elements for use in teardown
-  if (!WIDGET_ELS.hasOwnProperty(name)) {
+  if (!hasOwn(WIDGET_ELS, name)) {
     WIDGET_ELS[name] = [];
   }
   let data = {
@@ -503,9 +554,6 @@ function createReplacementWidget(widget, elToReplace, activationFn) {
   };
   if (widget.scriptSelectors) {
     data.scriptSelectors = widget.scriptSelectors;
-    if (widget.fallbackScriptUrl) {
-      data.fallbackScriptUrl = widget.fallbackScriptUrl;
-    }
   }
   WIDGET_ELS[name].push(data);
 
@@ -515,11 +563,16 @@ function createReplacementWidget(widget, elToReplace, activationFn) {
       siteButton = widgetFrame.contentDocument.getElementById(site_button_id);
 
     onceButton.addEventListener("click", function (e) {
+      if (!e.isTrusted) { return; }
       e.preventDefault();
-      activationFn(name);
+      restoreWidget(widget);
     }, { once: true });
 
     siteButton.addEventListener("click", function (e) {
+      if (!e.isTrusted) {
+        return;
+      }
+
       e.preventDefault();
 
       // first message the background page to record that
@@ -528,7 +581,7 @@ function createReplacementWidget(widget, elToReplace, activationFn) {
         type: "allowWidgetOnSite",
         widgetName: name
       }, function () {
-        activationFn(name);
+        restoreWidget(widget);
       });
     }, { once: true });
 
@@ -578,6 +631,13 @@ html, body {
 }
 #${info_icon_id}:hover:before {
   color: #ec9329;
+}
+a {
+  text-decoration: underline;
+  color: black;
+}
+a:hover {
+  color: #ec9329;
 }
   `.trim();
 
@@ -590,6 +650,17 @@ html, body {
  * Replaces buttons/widgets in the DOM.
  */
 function replaceIndividualButton(widget) {
+  // for script type widgets,
+  // to avoid breaking lazy loaded widgets
+  // by replacing the DOM element too early
+  // first check whether a script is actually present
+  if (widget.replacementButton.type == 4) {
+    let script_selector = widget.scriptSelectors.join(',');
+    if (!document.querySelectorAll(script_selector).length) {
+      return;
+    }
+  }
+
   let selector = widget.buttonSelectors.join(','),
     elsToReplace = document.querySelectorAll(selector);
 
@@ -618,24 +689,18 @@ function unblockTracker(name, callback) {
 
 // END FUNCTION DEFINITIONS ///////////////////////////////////////////////////
 
-(function () {
-
-// don't inject into non-HTML documents (such as XML documents)
-// but do inject into XHTML documents
-if (document instanceof HTMLDocument === false && (
-  document instanceof XMLDocument === false ||
-  document.createElement('div') instanceof HTMLDivElement === false
-)) {
-  return;
-}
-
 chrome.runtime.sendMessage({
   type: "checkWidgetReplacementEnabled"
 }, function (response) {
   if (!response) {
     return;
   }
-  initialize(response);
+
+  init(response);
+
+  chrome.runtime.sendMessage({
+    type: "widgetReplacementReady"
+  });
 });
 
 }());
diff --git a/src/js/contentscripts/supercookie.js b/src/js/contentscripts/supercookie.js
index 0b15211f..6f328397 100644
--- a/src/js/contentscripts/supercookie.js
+++ b/src/js/contentscripts/supercookie.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2015 Electronic Frontier Foundation
  *
  * Derived from Chameleon <https://github.com/ghostwords/chameleon>
@@ -18,16 +18,32 @@
  * along with Privacy Badger.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+(function () {
+
+// don't inject into non-HTML documents (such as XML documents)
+// but do inject into XHTML documents
+if (document instanceof HTMLDocument === false && (
+  document instanceof XMLDocument === false ||
+  document.createElement('div') instanceof HTMLDivElement === false
+)) {
+  return;
+}
+
+// don't bother asking to run when trivially in first-party context
+if (window.top == window) {
+  return;
+}
+
 /**
  * Generate script to inject into the page
  *
  * @returns {string}
  */
-function getScPageScript() {
+function getPageScript(event_id) {
   // code below is not a content script: no chrome.* APIs /////////////////////
 
   // return a string
-  return "(" + function () {
+  return "(" + function (EVENT_ID) {
 
     /*
      * If localStorage is inaccessible, such as when "Block third-party cookies"
@@ -46,44 +62,34 @@ function getScPageScript() {
 
     (function (DOCUMENT, dispatchEvent, CUSTOM_EVENT, LOCAL_STORAGE, OBJECT, keys) {
 
-      var event_id = DOCUMENT.currentScript.getAttribute('data-event-id-super-cookie');
-
-      /**
-       * send message to the content script
-       *
-       * @param {*} message
-       */
-      var send = function (message) {
-        dispatchEvent.call(DOCUMENT, new CUSTOM_EVENT(event_id, {
+      function send(message) {
+        dispatchEvent.call(DOCUMENT, new CUSTOM_EVENT(EVENT_ID, {
           detail: message
         }));
-      };
+      }
 
       /**
        * Read HTML5 local storage and return contents
        * @returns {Object}
        */
-      let getLocalStorageItems = function () {
+      function getLocalStorageItems() {
         let lsItems = {};
         for (let i = 0; i < LOCAL_STORAGE.length; i++) {
           let key = LOCAL_STORAGE.key(i);
           lsItems[key] = LOCAL_STORAGE.getItem(key);
         }
         return lsItems;
-      };
+      }
 
-      if (event_id) { // inserted script may run before the event_id is available
-        let localStorageItems = getLocalStorageItems();
-        if (keys.call(OBJECT, localStorageItems).length) {
-          // send to content script
-          send({ localStorageItems });
-        }
+      let localStorageItems = getLocalStorageItems();
+      if (keys.call(OBJECT, localStorageItems).length) {
+        send({ localStorageItems });
       }
 
     // save locally to keep from getting overwritten by site code
     } (document, document.dispatchEvent, CustomEvent, localStorage, Object, Object.keys));
 
-  } + "());";
+  } + "(" + event_id + "));";
 
   // code above is not a content script: no chrome.* APIs /////////////////////
 
@@ -91,22 +97,6 @@ function getScPageScript() {
 
 // END FUNCTION DEFINITIONS ///////////////////////////////////////////////////
 
-(function () {
-
-// don't inject into non-HTML documents (such as XML documents)
-// but do inject into XHTML documents
-if (document instanceof HTMLDocument === false && (
-  document instanceof XMLDocument === false ||
-  document.createElement('div') instanceof HTMLDivElement === false
-)) {
-  return;
-}
-
-// don't bother asking to run when trivially in first-party context
-if (window.top == window) {
-  return;
-}
-
 // TODO race condition; fix waiting on https://crbug.com/478183
 
 // TODO here we could also be injected too quickly
@@ -130,10 +120,10 @@ chrome.runtime.sendMessage({
     return;
   }
 
-  var event_id_super_cookie = Math.random();
+  const event_id = Math.random();
 
   // listen for messages from the script we are about to insert
-  document.addEventListener(event_id_super_cookie, function (e) {
+  document.addEventListener(event_id, function (e) {
     // pass these on to the background page (handled by webrequest.js)
     chrome.runtime.sendMessage({
       type: "supercookieReport",
@@ -142,9 +132,7 @@ chrome.runtime.sendMessage({
     });
   });
 
-  window.injectScript(getScPageScript(), {
-    event_id_super_cookie: event_id_super_cookie
-  });
+  window.injectScript(getPageScript(event_id));
 
 });
 
diff --git a/src/js/contentscripts/utils.js b/src/js/contentscripts/utils.js
index 9f0a0fa3..247011a9 100644
--- a/src/js/contentscripts/utils.js
+++ b/src/js/contentscripts/utils.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2018 Electronic Frontier Foundation
  *
  * Privacy Badger is free software: you can redistribute it and/or modify
@@ -15,23 +15,21 @@
  * along with Privacy Badger.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+(function () {
+
 /**
  * Executes a script in the page's JavaScript context.
  *
  * @param {String} text The content of the script to insert.
  * @param {Object} data Data attributes to set on the inserted script tag.
  */
-window.injectScript = function (text, data) {
-  var parent = document.documentElement,
+window.injectScript = function (text) {
+  let parent = document.documentElement,
     script = document.createElement('script');
 
   script.text = text;
   script.async = false;
 
-  for (var key in data) {
-    script.setAttribute('data-' + key.replace(/_/g, '-'), data[key]);
-  }
-
   parent.insertBefore(script, parent.firstChild);
   parent.removeChild(script);
 };
@@ -51,3 +49,35 @@ function getFrameUrl() {
   return url;
 }
 window.FRAME_URL = getFrameUrl();
+
+// don't inject into non-HTML documents (such as XML documents)
+// but do inject into XHTML documents
+if (document instanceof HTMLDocument === false && (
+  document instanceof XMLDocument === false ||
+  document.createElement('div') instanceof HTMLDivElement === false
+)) {
+  return;
+}
+
+// END FUNCTION DEFINITIONS ///////////////////////////////////////////////////
+
+// register listener in top-level frames only for now
+// NOTE: before removing this restriction,
+// investigate implications of third-party scripts in nested frames
+// generating pbSurrogateMessage events
+if (window.top != window) {
+  return;
+}
+
+document.addEventListener("pbSurrogateMessage", function (e) {
+  if (e.detail && e.detail.type == "widgetFromSurrogate") {
+    chrome.runtime.sendMessage({
+      type: "widgetFromSurrogate",
+      name: e.detail.name,
+      data: e.detail.widgetData,
+      frameUrl: window.FRAME_URL
+    });
+  }
+});
+
+}());
diff --git a/src/js/firefoxandroid.js b/src/js/firefoxandroid.js
index 07eeb6a5..e2944c4c 100644
--- a/src/js/firefoxandroid.js
+++ b/src/js/firefoxandroid.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2014 Electronic Frontier Foundation
  *
  * Privacy Badger is free software: you can redistribute it and/or modify
diff --git a/src/js/firstparties/facebook.js b/src/js/firstparties/facebook.js
index 2c5d299a..583a3ac8 100644
--- a/src/js/firstparties/facebook.js
+++ b/src/js/firstparties/facebook.js
@@ -4,38 +4,67 @@
 // facebookcorewwwi.onion
 let fb_wrapped_link = `a[href*='${document.domain.split(".").slice(-2).join(".")}/l.php?']:not([aria-label])`;
 
-// remove all attributes from a link except for class and ARIA attributes
+function stopPropagation(e) {
+  e.stopImmediatePropagation();
+}
+
+// remove all attributes from a link
 function cleanAttrs(elem) {
-  for (let i = elem.attributes.length - 1; i >= 0; --i) {
-    const attr = elem.attributes[i];
-    if (attr.name !== 'class' && !attr.name.startsWith('aria-')) {
+  for (let attr of elem.attributes) {
+    // with some exceptions
+    if (attr.name != 'href' && attr.name != 'class' && !attr.name.startsWith('aria-')) {
       elem.removeAttribute(attr.name);
     }
   }
 }
 
-// Remove excessive attributes and event listeners from link a and replace
-// its destination with href
-function cleanLink(a) {
-  let href = new URL(a.href).searchParams.get('u');
+/**
+ * Cleans link elements:
+ *
+ *  - removes link redirection/"unwraps" the href
+ *  - removes fbclid parameter
+ *  - removes non-essential attributes
+ *  - stops mouse events
+ *
+ * Could be called multiple times on the same element.
+ *
+ * @param {Element} el the link element
+ */
+function cleanLink(el) {
+  let cleaned = false,
+    url = new URL(el.href);
+
+  // remove link redirection
+  if (url.searchParams.has('u')) {
+    let u_param = url.searchParams.get('u');
+    if (window.isURL(u_param)) {
+      // now remove fbclid
+      let uParamUrl = new URL(u_param);
+      uParamUrl.searchParams.delete('fbclid');
+      el.href = uParamUrl.toString();
+      cleaned = true;
+    }
+
+  // just remove fbclid
+  } else if (url.searchParams.has('fbclid')) {
+    url.searchParams.delete('fbclid');
+    el.href = url.toString();
+    cleaned = true;
+  }
 
-  // If we can't extract a good URL, abort without breaking the links
-  if (!window.isURL(href)) {
+  if (!cleaned) {
     return;
   }
 
-  let href_url = new URL(href);
-  href_url.searchParams.delete('fbclid');
-  href = href_url.toString();
-
-  cleanAttrs(a);
-  a.href = href;
-  a.rel = "noreferrer";
-  a.target = "_blank";
-  a.addEventListener("click", function (e) { e.stopImmediatePropagation(); }, true);
-  a.addEventListener("mousedown", function (e) { e.stopImmediatePropagation(); }, true);
-  a.addEventListener("mouseup", function (e) { e.stopImmediatePropagation(); }, true);
-  a.addEventListener("mouseover", function (e) { e.stopImmediatePropagation(); }, true);
+  cleanAttrs(el);
+
+  el.rel = "noreferrer noopener";
+  el.target = "_blank";
+
+  el.addEventListener("click", stopPropagation, true);
+  el.addEventListener("mousedown", stopPropagation, true);
+  el.addEventListener("mouseup", stopPropagation, true);
+  el.addEventListener("mouseover", stopPropagation, true);
 }
 
 // TODO race condition; fix waiting on https://crbug.com/478183
@@ -51,6 +80,6 @@ chrome.runtime.sendMessage({
     cleanLink(link);
   });
 
-  // Execute redirect unwrapping each time new content is added to the page
+  // execute redirect unwrapping each time new content is added to the page
   observeMutations(fb_wrapped_link, cleanLink);
 });
diff --git a/src/js/firstparties/google-search.js b/src/js/firstparties/google-search.js
index d5eea9af..5eab6ad1 100644
--- a/src/js/firstparties/google-search.js
+++ b/src/js/firstparties/google-search.js
@@ -1,7 +1,11 @@
 /* globals findInAllFrames:false */
-// In Firefox, outbound google links have the `rwt(...)` mousedown trigger.
-// In Chrome, they just have a `ping` attribute.
-let trap_link = "a[onmousedown^='return rwt(this,'], a[ping]";
+
+// Outbound Google links are different across browsers.
+// In order here: Firefox, Chrome, Firefox Android
+//
+// Ignore internal links in Chrome and desktop Firefox
+// to avoid unwrapping (and breaking the dropdown on) the settings link
+let trap_link = "a[onmousedown^='return rwt(this,']:not([href^='/']), a[ping]:not([href^='/']), a[href^='/url?q='], a[data-jsarwt='1']";
 
 // Remove excessive attributes and event listeners from link a
 function cleanLink(a) {
@@ -21,6 +25,20 @@ function cleanLink(a) {
   // block event listeners on the link
   a.addEventListener("click", function (e) { e.stopImmediatePropagation(); }, true);
   a.addEventListener("mousedown", function (e) { e.stopImmediatePropagation(); }, true);
+
+  // reassign href when in firefox android
+  if (a.href.startsWith(document.location.origin + "/url?q=")) {
+    let href = (new URL(a.href)).searchParams.get('q');
+    if (href && window.isURL(href)) {
+      a.href = href;
+    }
+  }
+}
+
+function cleanAllLinks() {
+  findInAllFrames(trap_link).forEach((link) => {
+    cleanLink(link);
+  });
 }
 
 // TODO race condition; fix waiting on https://crbug.com/478183
@@ -31,9 +49,10 @@ chrome.runtime.sendMessage({
     return;
   }
 
-  // since the page is rendered all at once, no need to set up a
-  // mutationObserver or setInterval
-  findInAllFrames(trap_link).forEach((link) => {
-    cleanLink(link);
-  });
+  // since the page is rendered all at once,
+  // no need to set up a mutationObserver or setInterval
+  cleanAllLinks();
+  // there does appear to be a timing issue here though,
+  // so let's rerun after a delay
+  setTimeout(cleanAllLinks, 2000);
 });
diff --git a/src/js/firstparties/lib/utils.js b/src/js/firstparties/lib/utils.js
index 3edb0c89..4010111c 100644
--- a/src/js/firstparties/lib/utils.js
+++ b/src/js/firstparties/lib/utils.js
@@ -1,4 +1,4 @@
-window.isURL = function(url) {
+window.isURL = function (url) {
   // ensure the URL starts with HTTP or HTTPS; otherwise we might be vulnerable
   // to XSS attacks
   return (url && (url.startsWith("https://") || url.startsWith("http://")));
@@ -8,7 +8,7 @@ window.isURL = function(url) {
  * Search a window and all IFrames within it for a query selector, then return a
  * list of all the elements in any frame that match.
  */
-window.findInAllFrames = function(query) {
+window.findInAllFrames = function (query) {
   let out = [];
   document.querySelectorAll(query).forEach((node) => {
     out.push(node);
@@ -31,12 +31,14 @@ window.findInAllFrames = function(query) {
  * Used by first-party scripts to listen for new links being added to the page
  * and strip them of tracking code immediately.
  */
-window.observeMutations = function(selector, callback) {
+window.observeMutations = function (selector, callback) {
   // Check all new nodes added by a mutation for tracking links and unwrap them
   function onMutation(mutation) {
-    if (!mutation.addedNodes.length) {
+    if (mutation.type == "attributes" && mutation.target) {
+      callback(mutation.target);
       return;
     }
+
     for (let node of mutation.addedNodes) {
       // Only act on element nodes, otherwise querySelectorAll won't work
       if (node.nodeType != Node.ELEMENT_NODE) {
@@ -56,7 +58,13 @@ window.observeMutations = function(selector, callback) {
   }
 
   // Set up a mutation observer with the constructed callback
-  new MutationObserver(function(mutations) {
+  new MutationObserver(function (mutations) {
     mutations.forEach(onMutation);
-  }).observe(document, {childList: true, subtree: true, attributes: false, characterData: false});
+  }).observe(document.body, {
+    childList: true,
+    subtree: true,
+    attributes: true,
+    attributeFilter: ["href"],
+    characterData: false,
+  });
 };
diff --git a/src/js/heuristicblocking.js b/src/js/heuristicblocking.js
index b0d3bc9e..77921030 100644
--- a/src/js/heuristicblocking.js
+++ b/src/js/heuristicblocking.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2014 Electronic Frontier Foundation
  *
  * Privacy Badger is free software: you can redistribute it and/or modify
@@ -17,12 +17,10 @@
 
 /* globals badger:false, log:false, URI:false */
 
-var constants = require("constants");
-var utils = require("utils");
-
-require.scopes.heuristicblocking = (function() {
-
+require.scopes.heuristicblocking = (function () {
 
+let constants = require("constants");
+let utils = require("utils");
 
 /*********************** heuristicblocking scope **/
 // make heuristic obj with utils and storage properties and put the things on it
@@ -42,13 +40,13 @@ function HeuristicBlocker(pbStorage) {
 HeuristicBlocker.prototype = {
 
   /**
-   * Blocklists an FQDN/origin:
+   * Blocklists a domain.
    *
    * - Blocks or cookieblocks an FQDN.
-   * - Blocks or cookieblocks its base domain.
+   * - Blocks or cookieblocks its base domain (eTLD+1).
    * - Cookieblocks any yellowlisted subdomains that share the base domain with the FQDN.
    *
-   * @param {String} base The base domain (etld+1) to blocklist
+   * @param {String} base The base domain (eTLD+1) to blocklist
    * @param {String} fqdn The FQDN
    */
   blocklistOrigin: function (base, fqdn) {
@@ -102,6 +100,7 @@ HeuristicBlocker.prototype = {
    *
    * @param {Object} details request/response details
    */
+  // TODO more like heuristicLearningFromCookies ... check DESIGN doc
   heuristicBlockingAccounting: function (details) {
     // ignore requests that are outside a tabbed window
     if (details.tabId < 0 || !badger.isLearningEnabled(details.tabId)) {
@@ -109,26 +108,36 @@ HeuristicBlocker.prototype = {
     }
 
     let self = this,
-      request_host = (new URI(details.url)).host,
-      request_origin = window.getBaseDomain(request_host);
+      request_host = (new URI(details.url)).host;
 
     // if this is a main window request, update tab data and quit
     if (details.type == "main_frame") {
-      self.tabOrigins[details.tabId] = request_origin;
+      self.tabOrigins[details.tabId] = window.getBaseDomain(request_host);
       self.tabUrls[details.tabId] = details.url;
       return {};
     }
 
-    let tab_origin = self.tabOrigins[details.tabId];
+    let tab_base = self.tabOrigins[details.tabId];
+    if (!tab_base) {
+      return {};
+    }
+
+    // CNAME uncloaking
+    if (utils.hasOwn(badger.cnameDomains, request_host)) {
+      // TODO details.url is still wrong
+      request_host = badger.cnameDomains[request_host];
+    }
+
+    let request_base = window.getBaseDomain(request_host);
 
     // ignore first-party requests
-    if (!tab_origin || !utils.isThirdPartyDomain(request_origin, tab_origin)) {
+    if (!utils.isThirdPartyDomain(request_base, tab_base)) {
       return {};
     }
 
-    // short-circuit if we already observed this origin tracking on this site
-    let firstParties = self.storage.getStore('snitch_map').getItem(request_origin);
-    if (firstParties && firstParties.indexOf(tab_origin) > -1) {
+    // short-circuit if we already observed this eTLD+1 tracking on this site
+    let firstParties = self.storage.getStore('snitch_map').getItem(request_base);
+    if (firstParties && firstParties.indexOf(tab_base) > -1) {
       return {};
     }
 
@@ -139,8 +148,8 @@ HeuristicBlocker.prototype = {
     }
 
     // check if there are tracking cookies
-    if (hasCookieTracking(details, request_origin)) {
-      self._recordPrevalence(request_host, request_origin, tab_origin);
+    if (hasCookieTracking(details)) {
+      self._recordPrevalence(request_host, request_base, tab_base);
       return {};
     }
   },
@@ -149,10 +158,10 @@ HeuristicBlocker.prototype = {
    * Wraps _recordPrevalence for use outside of webRequest listeners.
    *
    * @param {String} tracker_fqdn The fully qualified domain name of the tracker
-   * @param {String} tracker_origin Base domain of the third party tracker
-   * @param {String} page_origin Base domain of page where tracking occurred
+   * @param {String} tracker_base Base domain of the third party tracker
+   * @param {String} site_base Base domain of page where tracking occurred
    */
-  updateTrackerPrevalence: function (tracker_fqdn, tracker_origin, page_origin) {
+  updateTrackerPrevalence: function (tracker_fqdn, tracker_base, site_base) {
     // abort if we already made a decision for this fqdn
     let action = this.storage.getAction(tracker_fqdn);
     if (action != constants.NO_TRACKING && action != constants.ALLOW) {
@@ -161,8 +170,8 @@ HeuristicBlocker.prototype = {
 
     this._recordPrevalence(
       tracker_fqdn,
-      tracker_origin,
-      page_origin
+      tracker_base,
+      site_base
     );
   },
 
@@ -176,43 +185,48 @@ HeuristicBlocker.prototype = {
    * tracker lists).
    *
    * @param {String} tracker_fqdn The FQDN of the third party tracker
-   * @param {String} tracker_origin Base domain of the third party tracker
-   * @param {String} page_origin Base domain of page where tracking occurred
+   * @param {String} tracker_base Base domain of the third party tracker
+   * @param {String} site_base Base domain of page where tracking occurred
    */
-  _recordPrevalence: function (tracker_fqdn, tracker_origin, page_origin) {
-    var snitchMap = this.storage.getStore('snitch_map');
-    var firstParties = [];
-    if (snitchMap.hasItem(tracker_origin)) {
-      firstParties = snitchMap.getItem(tracker_origin);
-    }
-
+  _recordPrevalence: function (tracker_fqdn, tracker_base, site_base) {
     // GDPR Consent Management Provider
     // https://github.com/EFForg/privacybadger/pull/2245#issuecomment-545545717
-    if (tracker_origin == "consensu.org") {
+    if (tracker_base == "consensu.org") {
+      return;
+    }
+
+    // do not record Cisco OpenDNS/Umbrella proxy domains
+    if (tracker_fqdn.endsWith(".id.opendns.com")) {
       return;
     }
 
-    if (firstParties.indexOf(page_origin) != -1) {
-      return; // We already know about the presence of this tracker on the given domain
+    let self = this,
+      firstParties = [],
+      snitchMap = self.storage.getStore('snitch_map');
+
+    if (snitchMap.hasItem(tracker_base)) {
+      firstParties = snitchMap.getItem(tracker_base);
+    }
+
+    // do not record if already recorded this tracker on the given domain
+    if (firstParties.includes(site_base)) {
+      return;
     }
 
-    // record that we've seen this tracker on this domain (in snitch map)
-    firstParties.push(page_origin);
-    snitchMap.setItem(tracker_origin, firstParties);
+    // record that we've seen this tracker on this domain
+    firstParties.push(site_base);
+    snitchMap.setItem(tracker_base, firstParties);
 
     // ALLOW indicates this is a tracker still below TRACKING_THRESHOLD
     // (vs. NO_TRACKING for resources we haven't seen perform tracking yet).
     // see https://github.com/EFForg/privacybadger/pull/1145#discussion_r96676710
-    this.storage.setupHeuristicAction(tracker_fqdn, constants.ALLOW);
-    this.storage.setupHeuristicAction(tracker_origin, constants.ALLOW);
-
-    // Blocking based on outbound cookies
-    var httpRequestPrevalence = firstParties.length;
+    self.storage.setupHeuristicAction(tracker_fqdn, constants.ALLOW);
+    self.storage.setupHeuristicAction(tracker_base, constants.ALLOW);
 
-    // block the origin if it has been seen on multiple first party domains
-    if (httpRequestPrevalence >= constants.TRACKING_THRESHOLD) {
-      log('blocklisting origin', tracker_fqdn);
-      this.blocklistOrigin(tracker_origin, tracker_fqdn);
+    // (cookie)block the tracker if it has been seen on multiple first party domains
+    if (firstParties.length >= constants.TRACKING_THRESHOLD) {
+      log("blocklisting", tracker_fqdn);
+      self.blocklistOrigin(tracker_base, tracker_fqdn);
     }
   }
 };
@@ -462,11 +476,10 @@ function _extractCookies(details) {
 /**
  * Check if page is doing cookie tracking. Doing this by estimating the entropy of the cookies
  *
- * @param details details onBeforeSendHeaders details
- * @param {String} origin URL
- * @returns {boolean} true if it has cookie tracking
+ * @param {Object} details onBeforeSendHeaders details
+ * @returns {Boolean} true if it has cookie tracking
  */
-function hasCookieTracking(details, origin) {
+function hasCookieTracking(details) {
   let cookies = _extractCookies(details);
   if (!cookies.length) {
     return false;
@@ -484,13 +497,13 @@ function hasCookieTracking(details, origin) {
 
     // loop over every name/value pair in every cookie
     for (let name in cookie) {
-      if (!cookie.hasOwnProperty(name)) {
+      if (!utils.hasOwn(cookie, name)) {
         continue;
       }
 
-      // ignore CloudFlare
+      // ignore Cloudflare
       // https://support.cloudflare.com/hc/en-us/articles/200170156-Understanding-the-Cloudflare-Cookies
-      if (name == "__cfduid" || name == "__cf_bm") {
+      if (name == "__cf_bm") {
         continue;
       }
 
@@ -504,9 +517,9 @@ function hasCookieTracking(details, origin) {
     }
   }
 
-  log("All cookies for " + origin + " deemed low entropy...");
+  log(`All cookies for ${details.url} deemed low entropy...`);
   if (estimatedEntropy > constants.MAX_COOKIE_ENTROPY) {
-    log("But total estimated entropy is " + estimatedEntropy + " bits, so blocking");
+    log(`But total estimated entropy is ${estimatedEntropy} bits, so blocking`);
     return true;
   }
 
@@ -518,7 +531,7 @@ function startListeners() {
    * Adds heuristicBlockingAccounting as listened to onBeforeSendHeaders request
    */
   let extraInfoSpec = ['requestHeaders'];
-  if (chrome.webRequest.OnBeforeSendHeadersOptions.hasOwnProperty('EXTRA_HEADERS')) {
+  if (utils.hasOwn(chrome.webRequest.OnBeforeSendHeadersOptions, 'EXTRA_HEADERS')) {
     extraInfoSpec.push('extraHeaders');
   }
   chrome.webRequest.onBeforeSendHeaders.addListener(function(details) {
@@ -529,7 +542,7 @@ function startListeners() {
    * Adds onResponseStarted listener. Monitor for cookies
    */
   extraInfoSpec = ['responseHeaders'];
-  if (chrome.webRequest.OnResponseStartedOptions.hasOwnProperty('EXTRA_HEADERS')) {
+  if (utils.hasOwn(chrome.webRequest.OnResponseStartedOptions, 'EXTRA_HEADERS')) {
     extraInfoSpec.push('extraHeaders');
   }
   chrome.webRequest.onResponseStarted.addListener(function(details) {
@@ -548,10 +561,12 @@ function startListeners() {
 }
 
 /************************************** exports */
-var exports = {};
-exports.HeuristicBlocker = HeuristicBlocker;
-exports.startListeners = startListeners;
-exports.hasCookieTracking = hasCookieTracking;
+let exports = {
+  hasCookieTracking,
+  HeuristicBlocker,
+  startListeners,
+};
 return exports;
 /************************************** exports */
-})();
+
+}());
diff --git a/src/js/htmlutils.js b/src/js/htmlutils.js
index 2c015d44..d28bdc48 100644
--- a/src/js/htmlutils.js
+++ b/src/js/htmlutils.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2014 Electronic Frontier Foundation
  *
  * Privacy Badger is free software: you can redistribute it and/or modify
@@ -15,11 +15,20 @@
  * along with Privacy Badger.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-require.scopes.htmlutils = (function() {
+require.scopes.htmlutils = (function () {
 
 const i18n = chrome.i18n;
 const constants = require("constants");
 
+function escape_html(unsafe) {
+  return unsafe
+    .replace(/&/g, "&amp;")
+    .replace(/</g, "&lt;")
+    .replace(/>/g, "&gt;")
+    .replace(/"/g, "&quot;")
+    .replace(/'/g, "&#039;");
+}
+
 let htmlUtils = {
 
   // default Tooltipster config
@@ -106,11 +115,11 @@ let htmlUtils = {
       return `
 <div class="switch-container ${action}">
   <div class="switch-toggle switch-3 switch-candy">
-    <input id="block-${origin_id}" name="${origin}" value="${constants.BLOCK}" type="radio" ${is_checked(constants.BLOCK, action)}>
+    <input id="block-${origin_id}" name="${origin}" value="${constants.BLOCK}" type="radio" aria-label="${tooltips.block}" ${is_checked(constants.BLOCK, action)}>
     <label title="${tooltips.block}" class="tooltip" for="block-${origin_id}"></label>
-    <input id="cookieblock-${origin_id}" name="${origin}" value="${constants.COOKIEBLOCK}" type="radio" ${is_checked(constants.COOKIEBLOCK, action)}>
+    <input id="cookieblock-${origin_id}" name="${origin}" value="${constants.COOKIEBLOCK}" type="radio" aria-label="${tooltips.cookieblock}" ${is_checked(constants.COOKIEBLOCK, action)}>
     <label title="${tooltips.cookieblock}" class="tooltip" for="cookieblock-${origin_id}"></label>
-    <input id="allow-${origin_id}" name="${origin}" value="${constants.ALLOW}" type="radio" ${is_checked(constants.ALLOW, action)}>
+    <input id="allow-${origin_id}" name="${origin}" value="${constants.ALLOW}" type="radio" aria-label="${tooltips.allow}" ${is_checked(constants.ALLOW, action)}>
     <label title="${tooltips.allow}" class="tooltip" for="allow-${origin_id}"></label>
     <a></a>
   </div>
@@ -132,7 +141,6 @@ let htmlUtils = {
     <img src="/icons/UI-icons-red.svg" class="tooltip" title="${i18n.getMessage("tooltip_block")}"><img src="/icons/UI-icons-yellow.svg" class="tooltip" title="${i18n.getMessage("tooltip_cookieblock")}"><img src="/icons/UI-icons-green.svg" class="tooltip" title="${i18n.getMessage("tooltip_allow")}">
   </div>
 </div>
-<div class="spacer"></div>
 <div id="blockedResourcesInner" class="clickerContainer"></div>
     `.trim();
   },
@@ -152,8 +160,8 @@ let htmlUtils = {
       dnt_icon_url = chrome.runtime.getURL('/icons/dnt-16.png');
 
     return function (origin, action, show_breakage_warning) {
-      action = _.escape(action);
-      origin = _.escape(origin);
+      action = escape_html(action);
+      origin = escape_html(origin);
 
       // Get classes for main div.
       let classes = ['clicker'];
@@ -167,7 +175,7 @@ let htmlUtils = {
         classes.push('show-breakage-warning');
       }
 
-      // If origin has been whitelisted set text for DNT.
+      // show the DNT icon for DNT-compliant domains
       let dnt_html = '';
       if (action == constants.DNT) {
         dnt_html = `
@@ -177,11 +185,11 @@ let htmlUtils = {
         `.trim();
       }
 
-      // Construct HTML for origin.
+      // construct HTML for domain
       let origin_tooltip = htmlUtils.getActionDescription(action, origin);
       return `
 <div class="${classes.join(' ')}" data-origin="${origin}">
-  <div class="origin">
+  <div class="origin" role="heading" aria-level="4">
     <span class="ui-icon ui-icon-alert tooltip breakage-warning" title="${breakage_warning_tooltip}"></span>
     <span class="origin-inner tooltip" title="${origin_tooltip}">${dnt_html}${origin}</span>
   </div>
@@ -275,6 +283,8 @@ let htmlUtils = {
 
 };
 
+htmlUtils.escape = escape_html;
+
 let exports = {
   htmlUtils,
 };
diff --git a/src/js/incognito.js b/src/js/incognito.js
index 56d2d933..ac030fbc 100644
--- a/src/js/incognito.js
+++ b/src/js/incognito.js
@@ -1,7 +1,10 @@
 /* globals badger:false */
 
 require.scopes.incognito = (function() {
-var tabs = {};
+
+let utils = require('utils');
+
+let tabs = {};
 
 // Get all existing tabs
 chrome.tabs.query({}, function(results) {
@@ -32,7 +35,7 @@ function learningEnabled(tab_id) {
   }
   // if we don't have incognito data for whatever reason,
   // default to disabled
-  if (!tabs.hasOwnProperty(tab_id)) {
+  if (!utils.hasOwn(tabs, tab_id)) {
     return false;
   }
   // else, do not learn in incognito tabs
@@ -46,4 +49,5 @@ let exports = {
 };
 return exports;
 /************************************** exports */
-})();
+
+}());
diff --git a/src/js/migrations.js b/src/js/migrations.js
index cea4d378..6103573a 100644
--- a/src/js/migrations.js
+++ b/src/js/migrations.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2014 Electronic Frontier Foundation
  *
  * Privacy Badger is free software: you can redistribute it and/or modify
@@ -50,7 +50,7 @@ exports.Migrations= {
     for (var domain in action_map.getItemClones()) {
       if (badger.storage.getNextUpdateForDomain(domain) === 0) {
         // Recheck at a random time in the next week
-        var recheckTime = _.random(Date.now(), utils.nDaysFromNow(7));
+        var recheckTime = utils.random(Date.now(), utils.nDaysFromNow(7));
         badger.storage.touchDNTRecheckTime(domain, recheckTime);
       }
     }
@@ -63,7 +63,7 @@ exports.Migrations= {
     var action_map = badger.storage.getStore('action_map');
     for (var domain in action_map.getItemClones()) {
       // Recheck at a random time in the next week
-      var recheckTime = _.random(utils.oneDayFromNow(), utils.nDaysFromNow(7));
+      var recheckTime = utils.random(utils.oneDayFromNow(), utils.nDaysFromNow(7));
       badger.storage.touchDNTRecheckTime(domain, recheckTime);
     }
   },
@@ -235,83 +235,9 @@ exports.Migrations= {
     }
   },
 
-  forgetFirstPartySnitches: function (badger) {
-    console.log("Removing first parties from snitch map...");
-    let snitchMap = badger.storage.getStore("snitch_map"),
-      actionMap = badger.storage.getStore("action_map"),
-      snitchClones = snitchMap.getItemClones(),
-      actionClones = actionMap.getItemClones(),
-      correctedSites = {};
-
-    for (let domain in snitchClones) {
-      // creates new array of domains checking against the isThirdParty utility
-      let newSnitches = snitchClones[domain].filter(
-        item => utils.isThirdPartyDomain(item, domain));
-
-      if (newSnitches.length) {
-        correctedSites[domain] = newSnitches;
-      }
-    }
-
-    // clear existing maps and then use mergeUserData to rebuild them
-    actionMap.updateObject({});
-    snitchMap.updateObject({});
-
-    const data = {
-      snitch_map: correctedSites,
-      action_map: actionClones
-    };
-
-    // pass in boolean 2nd parameter to flag that it's run in a migration, preventing infinite loop
-    badger.mergeUserData(data, true);
-  },
-
-  forgetCloudflare: function (badger) {
-    let config = {
-      name: '__cfduid'
-    };
-    if (badger.firstPartyDomainPotentiallyRequired) {
-      config.firstPartyDomain = null;
-    }
-
-    chrome.cookies.getAll(config, function (cookies) {
-      console.log("Forgetting Cloudflare domains ...");
-
-      let actionMap = badger.storage.getStore("action_map"),
-        actionClones = actionMap.getItemClones(),
-        snitchMap = badger.storage.getStore("snitch_map"),
-        snitchClones = snitchMap.getItemClones(),
-        correctedSites = {},
-        // assume the tracking domains seen on these sites are all Cloudflare
-        cfduidFirstParties = new Set();
-
-      cookies.forEach(function (cookie) {
-        // get the base domain (also removes the leading dot)
-        cfduidFirstParties.add(window.getBaseDomain(cookie.domain));
-      });
-
-      for (let domain in snitchClones) {
-        let newSnitches = snitchClones[domain].filter(
-          item => !cfduidFirstParties.has(item));
-
-        if (newSnitches.length) {
-          correctedSites[domain] = newSnitches;
-        }
-      }
+  forgetFirstPartySnitches: noop,
 
-      // clear existing maps and then use mergeUserData to rebuild them
-      actionMap.updateObject({});
-      snitchMap.updateObject({});
-
-      const data = {
-        snitch_map: correctedSites,
-        action_map: actionClones
-      };
-
-      // pass in boolean 2nd parameter to flag that it's run in a migration, preventing infinite loop
-      badger.mergeUserData(data, true);
-    });
-  },
+  forgetCloudflare: noop,
 
   // https://github.com/EFForg/privacybadger/pull/2245#issuecomment-545545717
   forgetConsensu: (badger) => {
@@ -319,34 +245,33 @@ exports.Migrations= {
     badger.storage.forget("consensu.org");
   },
 
-  resetWebRTCIPHandlingPolicy2: function (badger) {
+  resetWebRTCIPHandlingPolicy2: noop,
+
+  resetWebRtcIpHandlingPolicy3: function (badger) {
     if (!badger.webRTCAvailable) {
       return;
     }
 
-    const cpn = chrome.privacy.network;
-
-    cpn.webRTCIPHandlingPolicy.get({}, function (result) {
-      if (!result.levelOfControl.endsWith('_by_this_extension')) {
+    console.log("Migrating WebRTC IP protection ...");
+    chrome.privacy.network.webRTCIPHandlingPolicy.get({}, function (res) {
+      if (res.levelOfControl != 'controlled_by_this_extension') {
         return;
       }
 
-      // migrate default (disabled) setting for old Badger versions
-      // from Mode 3 to Mode 1
-      if (result.value == 'default_public_interface_only') {
-        console.log("Resetting webRTCIPHandlingPolicy ...");
-        cpn.webRTCIPHandlingPolicy.clear({});
-
-      // migrate enabled setting for more recent Badger versions
-      // from Mode 4 to Mode 3
-      } else if (result.value == 'disable_non_proxied_udp') {
-        console.log("Updating WebRTC IP leak protection setting ...");
-        cpn.webRTCIPHandlingPolicy.set({
-          value: 'default_public_interface_only'
-        });
-      }
+      // since we previously enabled this privacy override,
+      // update corresponding Badger setting
+      badger.getSettings().setItem("preventWebRTCIPLeak", true);
+
+      // update the browser setting
+      // in case it needs to be migrated from Mode 4 to Mode 3
+      badger.setPrivacyOverrides();
     });
-  }
+  },
+
+  forgetOpenDNS: (badger) => {
+    console.log("Forgetting Cisco OpenDNS domains ...");
+    badger.storage.forget("opendns.com");
+  },
 
 };
 
diff --git a/src/js/multiDomainFirstParties.js b/src/js/multiDomainFirstParties.js
index 271d9b86..bd69d953 100644
--- a/src/js/multiDomainFirstParties.js
+++ b/src/js/multiDomainFirstParties.js
@@ -67,12 +67,34 @@ let multiDomainFirstPartiesArray = [
   ],
   [
     "adobe.com",
+
+    "acrobat.com",
+    "acrobatusers.com",
+    "adobeconnect.com",
+    "adobeevents.com",
     "adobeexchange.com",
+    "adobefpl.com",
+    "adobeidealab.com",
     "adobe.io",
+    "adobelanding.com",
+    "adobeleanprint.com",
     "adobelogin.com",
+    "adobeprerelease.com",
+    "adobeprimetime.com",
+    "adobesigncdn.com",
+    "adobesign.com",
+    "adobesignforsalesforce.com",
+    "adobe-students.com",
+    "adobeyourshotyourstory.com",
     "behance.net",
+    "echocdn.com",
+    "echosign.com",
+    "echosignforsalesforce.com",
+    "macromedia.com",
     "mixamo.com",
+    "mycreativetype.com",
     "myportfolio.com",
+    "photoshop.com",
     "typekit.com",
   ],
   [
@@ -342,6 +364,7 @@ let multiDomainFirstPartiesArray = [
     "tmail.com",
     "tmall.com",
     "tmall.hk",
+    "tmall.ru",
     "ttpod.com",
     "tudou.com",
     "uc.cn",
@@ -362,6 +385,13 @@ let multiDomainFirstPartiesArray = [
     "youkutv.com",
     "yousuode.cn",
 
+    "daraz.com",
+    "daraz.com.bd",
+    "daraz.com.np",
+    "daraz.lk",
+    "daraz.pk",
+    "shop.com.mm",
+
 
     "alipay.com",
 
@@ -424,6 +454,8 @@ let multiDomainFirstPartiesArray = [
     "amazon.in",
     "amazon.it",
     "amazon.nl",
+    "amazon.sa",
+    "amazon.sg",
 
     "audible.com",
     "audible.co.jp",
@@ -458,6 +490,7 @@ let multiDomainFirstPartiesArray = [
     "jtvnw.net",
     "ttvnw.net",
 
+    "a2z.com",
     "amazonpay.com",
     "media-amazon.com",
     "ssl-images-amazon.com",
@@ -541,7 +574,7 @@ let multiDomainFirstPartiesArray = [
     "tt.com",
     "diepresse.com",
   ],
-  ["apple.com", "icloud.com", "icloud.com.cn", "cdn-apple.com"],
+  ["apple.com", "apple.news", "icloud.com", "icloud.com.cn", "webkit.org", "cdn-apple.com"],
   ["applefcu.org", "applefcuonline.org"],
   ["archive.org", "openlibrary.org"],
   ["asos.com", "asosservices.com"],
@@ -613,6 +646,7 @@ let multiDomainFirstPartiesArray = [
     "autodesk.ru",
     "autodesk.se",
   ],
+  ["automattic.com", "wordpress.com", "wordpress.org", "wp.com"],
   ["avito.ru", "avito.st"],
   ["avon.com", "youravon.com"],
   [
@@ -621,6 +655,9 @@ let multiDomainFirstPartiesArray = [
     "hao123.com",
     "tieba.com",
 
+    "iq.com",
+    "iqiyi.com",
+
     "baidustatic.com",
     "bdimg.com",
     "bdstatic.com",
@@ -696,7 +733,7 @@ let multiDomainFirstPartiesArray = [
   ["bilibili.com", "acgvideo.com", "biliapi.net", "biliapi.com", "biligame.com", "hdslb.com"],
   ["binance.com", "binance.cloud", "binance.vision", "bnbstatic.com"],
   ["blizzard.com", "battle.net", "worldofwarcraft.com"],
-  ["bloomberg.com", "bbthat.com", "bwbx.io"],
+  ["bloomberg.com", "bbthat.com", "bwbx.io", "bloomberg.co.jp"],
   ["boardgamearena.com", "boardgamearena.net"],
   ["booking.com", "bstatic.com"],
   ["box.com", "boxcdn.net"],
@@ -759,48 +796,6 @@ let multiDomainFirstPartiesArray = [
     "mycanal.fr",
   ],
   ["capitalone.com", "capitalone360.com"],
-  [
-    "cbs.com",
-
-    "cbsi.com",
-    "cbsig.net",
-    "cbsimg.net",
-    "cbsinteractive.com",
-    "cbsistatic.com",
-    "cbslocal.com",
-    "cbsnews.com",
-    "cbssports.com",
-    "cbsstatic.com",
-    "chow.com",
-    "chowhound.com",
-    "chowmagazine.com",
-    "chowstatic.com",
-    "cnet.com",
-    "cnetcontent.com",
-    "cnettv.com",
-    "collegesports.com",
-    "com.com",
-    "comicvine.com",
-    "download.com",
-    "etonline.com",
-    "fansonly.com",
-    "gamespot.com",
-    "giantbomb.com",
-    "insideedition.com",
-    "last.fm",
-    "metacritic.com",
-    "news.com",
-    "scout.com",
-    "search.com",
-    "sho.com",
-    "sportsline.com",
-    "techrepublic.com",
-    "tv.com",
-    "tvgcdn.net",
-    "tvguide.com",
-    "upload.com",
-    "zdnet.com",
-  ],
   ["cb2.com", "crateandbarrel.com"],
   [
     "ccmbenchmark.com",
@@ -821,6 +816,8 @@ let multiDomainFirstPartiesArray = [
     "ciscolive.com",
     "duo.com",
     "netacad.com",
+    "opendns.com",
+    "umbrella.com",
     "webex.com",
 
     "static-cisco.com",
@@ -841,6 +838,7 @@ let multiDomainFirstPartiesArray = [
   [
     "condenast.com",
 
+    "allure.com",
     "architecturaldigest.com",
     "arstechnica.com",
     "bonappetit.com",
@@ -1045,6 +1043,28 @@ let multiDomainFirstPartiesArray = [
     "vtm.be",
 
     "dpgmedia.net",
+
+    "autoweek.nl",
+    "donaldduck.nl",
+    "fashionchick.nl",
+    "kieskeurig.nl",
+    "kijk.nl",
+    "lindanieuws.nl",
+    "linda.nl",
+    "magazine.nl",
+    "nu.nl",
+    "oudersvannu.nl",
+    "sbs6.nl",
+    "schoolbank.nl",
+    "startpagina.nl",
+    "veronicatv.nl",
+    "vtwonen.nl",
+    "wtf.nl",
+    "zie.nl",
+
+    "313.nl",
+    "sanomaservices.nl",
+    "snmmd.nl",
   ],
   ["dropbox.com", "dropboxstatic.com", "dropboxusercontent.com", "getdropbox.com"],
   ["d.rip", "kickstarter.com"],
@@ -1088,6 +1108,7 @@ let multiDomainFirstPartiesArray = [
     "ebay-us.com",
   ],
   ["elsevier.com", "sciencedirect.com", "sciencedirectassets.com"],
+  ["ename.com", "ename.cn", "ename.net"],
   [
     "enterprise.com",
 
@@ -1168,6 +1189,22 @@ let multiDomainFirstPartiesArray = [
     "alamo-np.fr",
     "alamo-np.ie",
   ],
+  [
+    "envato.com",
+
+    "3docean.net",
+    "audiojungle.net",
+    "codecanyon.net",
+    "envato.market",
+    "graphicriver.net",
+    "photodune.net",
+    "placeit.net",
+    "themeforest.net",
+    "tutsplus.com",
+    "videohive.net",
+
+    "envato-static.com",
+  ],
   ["epicgames.com", "unrealengine.com"],
   [
     "eventbrite.com",
@@ -1391,7 +1428,16 @@ let multiDomainFirstPartiesArray = [
   ],
   ["fastmail.com", "fastmailusercontent.com"],
   ["firefox.com", "firefoxusercontent.com", "mozilla.org"],
-  ["foxnews.com", "foxbusiness.com", "fncstatic.com"],
+  [
+    "foxcorporation.com",
+
+    "foxbusiness.com",
+    "fox.com",
+    "foxnews.com",
+    "foxsports.com",
+
+    "fncstatic.com",
+  ],
   [
     "futureplc.com",
 
@@ -1479,22 +1525,23 @@ let multiDomainFirstPartiesArray = [
   ],
   ["gitlab.com", "gitlab-static.net"],
   [
-    "gizmodo.com",
+    "g-omedia.com",
 
     "avclub.com",
     "deadspin.com",
+    "gizmodo.com",
     "jalopnik.com",
     "jezebel.com",
-    "kinja.com",
-    "kinja-img.com",
-    "kinja-static.com",
     "kotaku.com",
     "lifehacker.com",
-    "technoratimedia.com",
     "theinventory.com",
     "theonion.com",
     "theroot.com",
     "thetakeout.com",
+
+    "kinja.com",
+    "kinja-img.com",
+    "kinja-static.com",
   ],
   [
     "glassdoor.com",
@@ -1813,6 +1860,14 @@ let multiDomainFirstPartiesArray = [
     "habrastorage.org",
     "hsto.org",
   ],
+  [
+    "hatena.ne.jp",
+
+    "hatenablog.com",
+    "hatena.com",
+
+    "st-hatena.com",
+  ],
   ["healthfusion.com", "healthfusionclaims.com"],
   [
     "hearst.com",
@@ -1951,6 +2006,7 @@ let multiDomainFirstPartiesArray = [
     "stghouzz.com",
     "thathomesite.com",
   ],
+  ["hp.com", "hpdaas.com", "hpsmart.com"],
   [
     "huobi.com",
 
@@ -1971,6 +2027,23 @@ let multiDomainFirstPartiesArray = [
     "idealo.it",
     "idealo.com",
   ],
+  [
+    "idg.com",
+
+    "cio.com",
+    "computerworld.com",
+    "csoonline.com",
+    "greenbot.com",
+    "idg.net",
+    "idg.tv",
+    "infoworld.com",
+    "macworld.com",
+    "networkworld.com",
+    "pcworld.com",
+    "techhive.com",
+
+    "staticworld.net",
+  ],
   [
     "ign.fr",
 
@@ -2016,10 +2089,7 @@ let multiDomainFirstPartiesArray = [
     "tribunaexpresso.pt",
     "volantesic.pt",
   ],
-  [
-    "immobilienscout24.de",
-    "static-immobilienscout24.de",
-  ],
+  ["immobilienscout24.de", "static-immobilienscout24.de"],
   [
     "indeed.com",
 
@@ -2052,6 +2122,8 @@ let multiDomainFirstPartiesArray = [
     "indeed.pt",
   ],
   ["independent.co.uk", "indy100.com"],
+  ["intercom.com", "intercom.io", "intercomassets.com", "intercomcdn.com"],
+  ["itmedia.co.jp", "itmedia.jp"],
   [
     "iu.edu",
 
@@ -2079,6 +2151,7 @@ let multiDomainFirstPartiesArray = [
     "jd.hk",
     "jd.id",
     "jd.ru",
+    "jdl.cn",
     "jdpay.com",
     "jdwl.com",
     "jdx.com",
@@ -2108,6 +2181,28 @@ let multiDomainFirstPartiesArray = [
   ["jpmorganchase.com", "jpmorgan.com", "chase.com"],
   ["jobware.de", "jobware.com", "jobware.net"],
   ["jotform.com", "jotfor.ms"],
+  [
+    "kaspersky.com",
+
+    "kaspersky.ca",
+    "kaspersky.co.in",
+    "kaspersky.com.au",
+    "kaspersky.com.br",
+    "kaspersky.com.cn",
+    "kaspersky.com.tr",
+    "kaspersky.com.tw",
+    "kaspersky.co.uk",
+    "kaspersky.de",
+    "kaspersky.es",
+    "kaspersky.fi",
+    "kaspersky.fr",
+    "kaspersky.gr",
+    "kaspersky.it",
+    "kaspersky.nl",
+    "kaspersky.ru",
+
+    "kaspersky-labs.com",
+  ],
   [
     "kayak.com",
 
@@ -2222,6 +2317,18 @@ let multiDomainFirstPartiesArray = [
     "tandy.com.au",
     "zazz.com.au",
   ],
+  [
+    "kompasgramedia.com",
+
+    "grid.id",
+    "gridoto.com",
+    "kgmedia.id",
+    "kompas.com",
+    "kompasiana.com",
+    "kompas.tv",
+    "tribunnews.com",
+  ],
+  ["lbry.com", "odysee.com", "lbry.tv"],
   ["linkedin.com", "licdn.com"],
   ["livejournal.com", "livejournal.net", "lj-toys.com"],
   ["lnk.to", "tix.to", "tck.to", "ticket.to", "linkfire.com", "assetlab.io", "linkfire.co", "lnkfi.re"],
@@ -2282,6 +2389,68 @@ let multiDomainFirstPartiesArray = [
   ],
   ["mandtbank.com", "mtb.com"],
   ["mathletics.com", "mathletics.com.au", "mathletics.co.uk"],
+  [
+    "mcclatchy.com",
+
+    "bellinghamherald.com",
+    "bnd.com",
+    "bradenton.com",
+    "calientesemanal.com",
+    "carolinanewspapers.com",
+    "centredaily.com",
+    "chapelhillnews.com",
+    "charlotte.com",
+    "charlotteobserver.com",
+    "claytonnewsstar.com",
+    "cubanow.com",
+    "demo-mo.com",
+    "dfw.com",
+    "diariolaestrella.com",
+    "elnuevoherald.com",
+    "encubahoy.com",
+    "enquirerherald.com",
+    "flkeysnews.com",
+    "fortmilltimes.com",
+    "fresnobee.com",
+    "gateline.com",
+    "gogamecocks.com",
+    "heraldonline.com",
+    "heraldsun.com",
+    "idahostatesman.com",
+    "incubatoday.com",
+    "islandpacket.com",
+    "kansascity.com",
+    "kansas.com",
+    "kcstar.com",
+    "kentucky.com",
+    "keysnet.com",
+    "lakewyliepilot.com",
+    "ledger-enquirer.com",
+    "losbanosenterprise.com",
+    "lsjournal.com",
+    "macon.com",
+    "mcclatchydc.com",
+    "mcclatchyinteractive.com",
+    "mcclatchy-newsroom.com",
+    "mcclatchy-video.com",
+    "mcclatchy-wires.com",
+    "mercedsunstar.com",
+    "miamiherald.com",
+    "modbee.com",
+    "myrtlebeachonline.com",
+    "ncinsider.com",
+    "newsobserver.com",
+    "sacbee.com",
+    "sanluisobispo.com",
+    "sierrastar.com",
+    "star-telegram.com",
+    "sunherald.com",
+    "thenewstribune.com",
+    "theolympian.com",
+    "thestate.com",
+    "tri-cityherald.com",
+    "vidaenelvalle.com",
+  ],
   ["mdsol.com", "imedidata.com"],
   [
     "mediamarktsaturn.com",
@@ -2472,6 +2641,7 @@ let multiDomainFirstPartiesArray = [
     "msftidentity.com",
     "msft.net",
     "msidentity.com",
+    "msn.cn",
     "msn.com",
     "msndirect.com",
     "msocdn.com",
@@ -2674,9 +2844,18 @@ let multiDomainFirstPartiesArray = [
     "naver.jp",
   ],
   [
-    "nbcnews.com",
+    "nbcuniversal.com",
 
+    "cnbc.com",
+    "golfchannel.com",
     "msnbc.com",
+    "nbc.com",
+    "nbcnews.com",
+    "nbcolympics.com",
+    "nbcsports.com",
+    "nbcsportsedge.com",
+    "telemundo.com",
+    "telemundodeportes.com",
     "today.com",
 
     "newsvine.com",
@@ -2753,15 +2932,40 @@ let multiDomainFirstPartiesArray = [
     "whereilive.com.au",
     "whimn.com.au",
   ],
+  [
+    "nineforbrands.com.au",
+
+    "2gb.com",
+    "9news.com.au",
+    "9now.com.au",
+    "afr.com",
+    "brisbanetimes.com.au",
+    "businessinsider.com.au",
+    "canberratimes.com.au",
+    "caradvice.com.au",
+    "domain.com.au",
+    "drive.com.au",
+    "fairfaxmedia.com.au",
+    "gizmodo.com.au",
+    "kotaku.com.au",
+    "lifehacker.com.au",
+    "ninemsn.com.au",
+    "smh.com.au",
+    "theage.com.au",
+    "traveller.com.au",
+    "watoday.com.au",
+
+    "ffx.io",
+    "nine.com.au",
+  ],
   [
     "nintendo.com",
-    "nintendo.net",
-    "nintendo-europe.com",
-    "nintendonyc.com",
 
     "nintendo.at",
     "nintendo.be",
+    "nintendo.ca",
     "nintendo.ch",
+    "nintendo.co.jp",
     "nintendo.co.uk",
     "nintendo.co.za",
     "nintendo.de",
@@ -2770,9 +2974,13 @@ let multiDomainFirstPartiesArray = [
     "nintendo.fr",
     "nintendo.it",
     "nintendo.nl",
+    "nintendonyc.com",
     "nintendo.pt",
     "nintendo.ru",
 
+    "nintendo-europe.com",
+    "nintendo.net",
+
     "animal-crossing.com",
     "smashbros.com",
     "zelda.com",
@@ -2813,7 +3021,6 @@ let multiDomainFirstPartiesArray = [
     "zappelin.nl",
     "zapp.nl",
   ],
-  ["nymag.com", "vulture.com", "grubstreet.com", "thecut.com"],
   [
     "nypublicradio.org",
 
@@ -2879,15 +3086,53 @@ let multiDomainFirstPartiesArray = [
     "geforce.com.tw",
     "geforce.co.uk",
   ],
+  ["okcupid.com", "okccdn.com"],
+  [
+    "olxgroup.com",
+
+    "olx.ba",
+    "olx.bg",
+    "olx.co.id",
+    "olx.com",
+    "olx.com.ar",
+    "olx.com.br",
+    "olx.com.co",
+    "olx.com.ec",
+    "olx.com.eg",
+    "olx.com.pe",
+    "olx.com.pk",
+    "olx.com.sv",
+    "olx.co.za",
+    "olx.in",
+    "olx.kz",
+    "olx.pl",
+    "olx.pt",
+    "olx.ro",
+    "olx.ua",
+    "olx.uz",
+
+    "otodom.pl",
+    "otomoto.pl",
+
+    "olxcdn.com",
+    "olxssa.com",
+    "olx-st.com",
+  ],
   ["onlineatnsb.com", "norwaysavingsbank.com"],
   ["openstreetmap.org", "osmfoundation.org"],
   [
     "oracle.com",
 
     "ateam-oracle.com",
+    "bronto.com",
+    "covid19-rx.org",
+    "covid19rx.org",
+    "go.java",
     "java.com",
     "mysql.com",
+    "oraclefoundation.org",
 
+    "oraclecloud.com",
     "oracleimg.com",
   ],
   ["orange.fr", "sosh.fr", "woopic.com"],
@@ -2932,7 +3177,24 @@ let multiDomainFirstPartiesArray = [
     "ovh.net",
   ],
   ["paypal.com", "paypal-search.com", "paypalobjects.com"],
-  ["pcworld.com", "staticworld.net", "idg.com", "idg.net", "infoworld.com", "macworld.com", "techhive.com", "idg.tv"],
+  [
+    "pconline.cn",
+
+    "geeknev.com",
+    "imofan.com",
+    "pcautoactivity.com.cn",
+    "pcautoclub.com.cn",
+    "pcauto.com.cn",
+    "pcbaby.com.cn",
+    "pc.com.cn",
+    "pchouse.com.cn",
+    "pclady.com.cn",
+    "pconline.com.cn",
+    "pcprices.com.cn",
+    "pcvideo.com.cn",
+
+    "3conline.com",
+  ],
   [
     "pearson.com",
 
@@ -2955,8 +3217,92 @@ let multiDomainFirstPartiesArray = [
 
     "pearsoncmg.com",
   ],
+  ["people.com.cn", "people.cn", "peopledaily.com.cn"],
   ["pepco.com", "pepcoholdings.com"],
-  ["philips.com", "philips.nl"],
+  [
+    "philips.com",
+
+    "philips.ae",
+    "philips.am",
+    "philips.at",
+    "philips.az",
+    "philips.be",
+    "philips.bg",
+    "philips.by",
+    "philips.ca",
+    "philips.ch",
+    "philips.cl",
+    "philips.co.id",
+    "philips.co.il",
+    "philips.co.in",
+    "philips.co.jp",
+    "philips.co.ke",
+    "philips.co.kr",
+    "philips.com.ar",
+    "philips.com.au",
+    "philips.com.bh",
+    "philips.com.br",
+    "philips.com.co",
+    "philips.com.eg",
+    "philips.com.ge",
+    "philips.com.gh",
+    "philips.com.hk",
+    "philips.com.kw",
+    "philips.com.lb",
+    "philips.com.mx",
+    "philips.com.my",
+    "philips.com.om",
+    "philips.com.pe",
+    "philips.com.ph",
+    "philips.com.pk",
+    "philips.com.pl",
+    "philips.com.qa",
+    "philips.com.sa",
+    "philips.com.sg",
+    "philips.com.tr",
+    "philips.com.tw",
+    "philips.com.uy",
+    "philips.com.ve",
+    "philips.com.vn",
+    "philips.co.nz",
+    "philips.co.th",
+    "philips.co.uk",
+    "philips.co.za",
+    "philips.cz",
+    "philips.de",
+    "philips.dk",
+    "philips.ee",
+    "philips.es",
+    "philips.fi",
+    "philips.fr",
+    "philips.gr",
+    "philips.hr",
+    "philips.hu",
+    "philips.ie",
+    "philips.iq",
+    "philips.it",
+    "philips.jo",
+    "philips.kz",
+    "philips.lt",
+    "philips.lv",
+    "philips.ma",
+    "philips.ng",
+    "philips.nl",
+    "philips.no",
+    "philips.pl",
+    "philips.pt",
+    "philips.ro",
+    "philips.rs",
+    "philips.ru",
+    "philips.sa",
+    "philips.se",
+    "philips.si",
+    "philips.sk",
+    "philips.ua",
+    "philips.uz",
+
+    "philips-hue.com",
+  ],
   [
     "pinterest.com",
 
@@ -3014,6 +3360,7 @@ let multiDomainFirstPartiesArray = [
   ["pornhub.com", "phncdn.com"],
   ["postepay.it", "poste.it"],
   ["postimees.ee", "city24.ee", "city24.lv", "pmo.ee"],
+  ["pressreader.com", "prcdn.co"],
   [
     "pricerunner.com",
 
@@ -3147,7 +3494,51 @@ let multiDomainFirstPartiesArray = [
     "raiway.it",
   ],
   ["railnation.ru", "railnation.de", "rail-nation.com", "railnation.gr", "railnation.us", "trucknation.de", "traviangames.com"],
-  ["rakuten.com", "buy.com"],
+  [
+    "rakuten.com",
+
+    "rakuten.co.jp",
+    "rakuten.com.my",
+    "rakuten.com.tw",
+    "rakuten.co.uk",
+    "rakuten.eu",
+    "rakuten.fr",
+    "rakuten.ne.jp",
+
+    "buy.com",
+    "buyservices.com",
+    "fril.jp",
+    "gnavi.co.jp",
+    "infoseek.co.jp",
+    "kobo.com",
+    "linkshare.ne.jp",
+    "nikki.ne.jp",
+    "rakuten-airmap.co.jp",
+    "rakuten-bank.co.jp",
+    "rakuten-bank.com.tw",
+    "rakuten-card.co.jp",
+    "rakuten-dx.com",
+    "rakuten-dx.eu",
+    "rakuteneagles.jp",
+    "rakuten-insurance.co.jp",
+    "rakuten-life.co.jp",
+    "rakuten-sec.co.jp",
+    "rakutensl.com",
+    "rakuten-sonpo.co.jp",
+    "rakuten-sqreem.co.jp",
+    "rakuten-ssi.co.jp",
+    "rakuten.today",
+    "rakuten.tv",
+    "rakuten-wallet.co.jp",
+    "rebates.jp",
+    "vacation-stay.com",
+    "viber.co.jp",
+    "viber.com",
+    "viki.com",
+    "vissel-kobe.co.jp",
+
+    "rakuten-static.com",
+  ],
   [
     "realestate.com.au",
 
@@ -3243,14 +3634,57 @@ let multiDomainFirstPartiesArray = [
     "s-kanava.fi",
 
     "abcasemat.fi",
+    "foodie.fi",
+    "prisma.fi",
     "raflaamo.fi",
     "s-mobiili.fi",
+    "sokos.fi",
     "sokoshotels.fi",
+    "s-pankki.fi",
+    "s-ryhma.fi",
+    "tok.fi",
     "yhteishyva.fi",
 
+    "s-cloud.fi",
     "sok.fi",
     "s-palvelut.fi",
   ],
+  [
+    "sanoma.fi",
+
+    "aamulehti.fi",
+    "akuankka.fi",
+    "etlehti.fi",
+    "gloria.fi",
+    "hs.fi",
+    "hyvaterveys.fi",
+    "iltasanomat.fi",
+    "is.fi",
+    "jamsanseutu.fi",
+    "janakkalansanomat.fi",
+    "kankaanpaanseutu.fi",
+    "kmvlehti.fi",
+    "kodinkuvalehti.fi",
+    "menaiset.fi",
+    "merikarvialehti.fi",
+    "nelonen.fi",
+    "nokianuutiset.fi",
+    "radiorock.fi",
+    "radiosuomipop.fi",
+    "rannikkoseutu.fi",
+    "ruutu.fi",
+    "satakunnankansa.fi",
+    "supla.fi",
+    "suurkeuruu.fi",
+    "sydansatakunta.fi",
+    "tiede.fi",
+    "tyrvaansanomat.fi",
+    "valkeakoskensanomat.fi",
+    "vauva.fi",
+
+    "nelonenmedia.fi",
+    "snstatic.fi",
+  ],
   [
     "salesforce.com",
 
@@ -3290,32 +3724,54 @@ let multiDomainFirstPartiesArray = [
 
     "szn.cz",
   ],
+  [
+    "shopee.com",
+
+    "shopee.cl",
+    "shopee.cn",
+    "shopee.co.id",
+    "shopee.com.br",
+    "shopee.com.co",
+    "shopee.com.mx",
+    "shopee.com.my",
+    "shopee.co.th",
+    "shopee.ph",
+    "shopee.sg",
+    "shopee.tw",
+    "shopee.vn",
+
+    "shp.ee",
+  ],
   [
     "shopify.com",
-    "myshopify.com",
+
+    "shopify.ca",
+    "shopify.in",
+    "shopify.nl",
+
     "shopifycdn.com",
     "shopifyapps.com",
     "shopifycloud.com",
     "shopifyadmin.com",
     "shopifypreview.com",
   ],
-  ["siriusxm.com", "sirius.com"],
-  ["skygo.co.nz", "skytv.co.nz"],
-  ["skysports.com", "skybet.com", "skyvegas.com"],
-  ["slashdot.org", "sourceforge.net", "fsdn.com"],
-  ["slickdeals.net", "slickdealscdn.com"],
   [
-    "smh.com.au",
+    "si.edu",
 
-    "afr.com",
-    "brisbanetimes.com.au",
-    "canberratimes.com.au",
-    "fairfaxmedia.com.au",
-    "theage.com.au",
-    "watoday.com.au",
+    "airspacemag.com",
+    "smithsonianbooks.com",
+    "smithsonianchannel.com",
+    "smithsonianjourneys.org",
+    "smithsonianmag.com",
+    "smithsonianstore.com",
 
-    "ffx.io",
+    "smithsonian.museum",
   ],
+  ["siriusxm.com", "sirius.com"],
+  ["skygo.co.nz", "skytv.co.nz"],
+  ["skysports.com", "skybet.com", "skyvegas.com"],
+  ["slashdot.org", "sourceforge.net", "fsdn.com", "slashdotmedia.com"],
+  ["slickdeals.net", "slickdealscdn.com"],
   ["snapfish.com", "snapfish.ca"],
   [
     "sony.com",
@@ -3444,13 +3900,84 @@ let multiDomainFirstPartiesArray = [
   ],
   ["sprint.com", "sprintpcs.com", "nextel.com"],
   ["squareup.com", "cash.app", "mkt.com", "squarecdn.com"],
+  [
+    "stackexchange.com",
+
+    "askubuntu.com",
+    "blogoverflow.com",
+    "mathoverflow.net",
+    "serverfault.com",
+    "stackapps.com",
+    "stackoverflow.blog",
+    "stackoverflow.com",
+    "superuser.com",
+
+    "sstatic.net",
+    "stackauth.com",
+    "stackoverflow.email",
+    "stacksnippets.net",
+  ],
   ["steampowered.com", "steamstatic.com", "steamcommunity.com"],
   ["suning.com", "suning.cn", "hksuning.com"],
+  [
+    "surveymonkey.com",
+
+    "surveymonkey.ca",
+    "surveymonkey.co.uk",
+    "surveymonkey.de",
+    "surveymonkey.eu",
+    "surveymonkey.fr",
+    "surveymonkey.net",
+    "surveymonkey.nl",
+    "surveymonkey.ru",
+
+    "feedbackeconomy.com",
+    "research.net",
+
+    "smassets.net",
+  ],
   ["target.com", "targetimg1.com"],
   ["techdata.com", "techdata.ch"],
+  ["telegraaf.nl", "tcdn.nl", "tmgonlinemedia.nl", "tnet.nl"],
   ["telegram.org", "telegram.me", "t.me"],
   ["telekom.com", "t-online.de"],
   ["tesla.com", "teslamotors.com"],
+  ["tiktok.com", "byteoversea.com", "ibytedtos.com", "tiktokcdn.com", "tiktokv.com"],
+  [
+    "timesinternet.in",
+
+    "economictimes.com",
+    "educationtimes.com",
+    "etimes.in",
+    "gaana.co.in",
+    "gaana.com",
+    "gadgetsnow.com",
+    "iamgujarat.com",
+    "idiva.com",
+    "indiatimes.com",
+    "indiatimes.in",
+    "magicbricks.com",
+    "maharashtratimes.com",
+    "mensxp.com",
+    "misskyra.com",
+    "mumbaimirror.com",
+    "punemirror.in",
+    "samayam.com",
+    "speakingtree.in",
+    "timesnowhindi.com",
+    "timesnownews.com",
+    "timesofindia.com",
+    "timespoints.com",
+    "timesprime.com",
+    "vijaykarnataka.com",
+    "whatshot.in",
+
+    "etimg.com",
+    "gaanacdn.com",
+    "iimg.in",
+    "toiimg.com",
+    "tvid.in",
+  ],
   [
     "toyota.com",
 
@@ -3506,6 +4033,21 @@ let multiDomainFirstPartiesArray = [
 
     "toyota-europe.com",
   ],
+  [
+    "tribpub.com",
+
+    "baltimoresun.com",
+    "bestreviews.com",
+    "chicagotribune.com",
+    "courant.com",
+    "dailypress.com",
+    "mcall.com",
+    "nydailynews.com",
+    "orlandosentinel.com",
+    "pilotonline.com",
+    "sun-sentinel.com",
+    "thedailymeal.com",
+  ],
   [
     "tripadvisor.com",
 
@@ -3680,6 +4222,125 @@ let multiDomainFirstPartiesArray = [
     "ppconlineinfo.com",
     "wellbeing-4life.com",
   ],
+  [
+    "united-internet.de",
+
+    "1and1.com",
+    "1and1.co.uk",
+    "1and1.es",
+    "1and1.fr",
+    "1and1.pl",
+    "1und1.de",
+
+    "gmx.at",
+    "gmx.ch",
+    "gmx.com",
+    "gmx.fr",
+    "gmx.net",
+
+    "ionos.be",
+    "ionos.ca",
+    "ionos.ch",
+    "ionos.co",
+    "ionos.co.id",
+    "ionos.com",
+    "ionos.com.ar",
+    "ionos.com.br",
+    "ionos.com.es",
+    "ionos.com.pe",
+    "ionos.com.ua",
+    "ionos.com.ve",
+    "ionos.co.uk",
+    "ionos.co.za",
+    "ionos.de",
+    "ionos.dk",
+    "ionos.es",
+    "ionos.eu",
+    "ionos.fr",
+    "ionos.id",
+    "ionos.in",
+    "ionos.info",
+    "ionos.is",
+    "ionos.it",
+    "ionos.li",
+    "ionos.me",
+    "ionos.nl",
+    "ionos.nz",
+    "ionos.ph",
+    "ionos.pt",
+    "ionos.se",
+    "ionos.sg",
+    "ionos.uk",
+    "ionos.us",
+    "ionos.vn",
+
+    "ionos-cloud.be",
+    "ionoscloud.be",
+    "ionos-cloud.biz",
+    "ionoscloud.biz",
+    "ionoscloud.ch",
+    "ionos-cloud.com",
+    "ionoscloud.com",
+    "ionos-cloud.co.uk",
+    "ionos-cloud.de",
+    "ionos-cloud.dk",
+    "ionoscloud.dk",
+    "ionos-cloud.es",
+    "ionos-cloud.eu",
+    "ionoscloud.eu",
+    "ionos-cloud.fr",
+    "ionoscloud.fr",
+    "ionos-cloud.info",
+    "ionoscloud.info",
+    "ionos-cloud.it",
+    "ionoscloud.it",
+    "ionos-cloud.me",
+    "ionoscloud.me",
+    "ionos-cloud.net",
+    "ionoscloud.net",
+    "ionos-cloud.nl",
+    "ionoscloud.nl",
+    "ionos-cloud.org",
+    "ionoscloud.org",
+    "ionos-cloud.pl",
+    "ionoscloud.pl",
+    "ionos-cloud.pt",
+    "ionoscloud.pt",
+    "ionos-cloud.ro",
+    "ionoscloud.ro",
+    "ionos-cloud.se",
+    "ionoscloud.se",
+    "ionos-cloud.uk",
+    "ionoscloud.uk",
+    "ionos-cloud.us",
+    "ionoscloud.us",
+
+    "alturo.de",
+    "banner.de",
+    "mi-web.es",
+    "mywebsite.it",
+    "phptools.de",
+    "puretec.de",
+    "puretech.de",
+    "purtec.de",
+    "schlund.com",
+    "schlund.de",
+    "schlund.info",
+    "schlund.net",
+    "votre-domaine.fr",
+    "votredomaine.fr",
+
+    "mail.com",
+    "ui-portal.com",
+    "ui-portal.de",
+    "web.de",
+
+    "1u1s.de",
+    "static-1and1.com",
+    "uicdn.com",
+    "uicdn.net",
+    "uimserv.net",
+  ],
   ["vanguard.com", "investornews.vanguard", "vanguardblog.com", "vanguardcanada.ca", "vanguardinvestor.co.uk", "vgcontent.info"],
   [
     "verizonmedia.com",
@@ -3696,6 +4357,7 @@ let multiDomainFirstPartiesArray = [
     "overture.com",
     "techcrunch.com",
     "yahoo.com",
+    "yahoo-leisure.hk",
 
     "huffpost.com",
     "huffingtonpost.ca",
@@ -3716,9 +4378,65 @@ let multiDomainFirstPartiesArray = [
     "huffpostbrasil.com",
     "huffpostmaghreb.com",
 
+    "buzzfeed.com",
+    "buzzfeed.bio",
+    "buzzfeed.io",
+    "buzzfeednews.com",
+    "bzfd.bio",
+    "contagiousmedia.com",
+    "hasbritainlefttheeu.com",
+    "tasty.co",
+    "worthitweek.com",
+
+    "yahoo.com.tw",
+
     "yahooapis.com",
     "yimg.com",
   ],
+  [
+    "viacomcbs.com",
+
+    "cbs.com",
+    "cbsi.com",
+    "cbsig.net",
+    "cbsimg.net",
+    "cbsinteractive.com",
+    "cbsistatic.com",
+    "cbslocal.com",
+    "cbsnews.com",
+    "cbssports.com",
+    "cbsstatic.com",
+    "chow.com",
+    "chowhound.com",
+    "chowmagazine.com",
+    "chowstatic.com",
+    "cnet.com",
+    "cnetcontent.com",
+    "cnettv.com",
+    "collegesports.com",
+    "com.com",
+    "comicvine.com",
+    "download.com",
+    "etonline.com",
+    "fansonly.com",
+    "gamespot.com",
+    "giantbomb.com",
+    "insideedition.com",
+    "last.fm",
+    "metacritic.com",
+    "news.com",
+    "paramountplus.com",
+    "scout.com",
+    "search.com",
+    "sho.com",
+    "sportsline.com",
+    "techrepublic.com",
+    "tv.com",
+    "tvgcdn.net",
+    "tvguide.com",
+    "upload.com",
+    "zdnet.com",
+  ],
   ["vimeo.com", "vimeocdn.com"],
   [
     "vinted.com",
@@ -3734,8 +4452,27 @@ let multiDomainFirstPartiesArray = [
     "vinted.nl",
     "vinted.pl",
   ],
+  ["vnexpress.net", "ngoisao.net", "vnecdn.net"],
   ["volvooceanrace.com", "virtualregatta.com"],
   ["vonage.com", "vonagebusiness.com"],
+  [
+    "voxmedia.com",
+
+    "curbed.com",
+    "eater.com",
+    "grubstreet.com",
+    "nymag.com",
+    "polygon.com",
+    "racked.com",
+    "recode.net",
+    "sbnation.com",
+    "thecut.com",
+    "theverge.com",
+    "vox.com",
+    "vulture.com",
+
+    "vox-cdn.com",
+  ],
   [
     "vrt.be",
 
@@ -3759,33 +4496,57 @@ let multiDomainFirstPartiesArray = [
     "abc7ny.com",
     "abc.com",
     "abcnews.com",
+    "goodmorningamerica.com",
 
     "go.com",
 
     "espn.com",
     "espncdn.com",
 
+    "espn.cl",
+    "espn.co.cr",
+    "espn.com.ar",
     "espn.com.au",
     "espn.com.br",
+    "espn.com.co",
+    "espn.com.do",
+    "espn.com.ec",
+    "espn.com.gt",
+    "espn.com.mx",
+    "espn.com.pa",
+    "espn.com.pe",
+    "espn.com.sg",
+    "espn.com.uy",
+    "espn.com.ve",
     "espn.co.uk",
+    "espn.es",
+    "espn.in",
+    "espn.nl",
 
     "espncricinfo.com",
+    "secsports.com",
 
     "espnfc.com",
     "espnfc.us",
 
     "fivethirtyeight.com",
+    "nationalgeographic.com",
 
     "babble.com",
+    "d23.com",
     "dadt.com",
+    "disneyaulani.com",
     "disneybaby.com",
     "disneyinteractive.com",
     "disneyinternationalhd.com",
+    "disneymovieinsiders.com",
     "disneymoviesanywhere.com",
     "disneyplus.com",
+    "disneyweddings.com",
     "ilm.com",
     "marvel.com",
     "readriordan.com",
+    "shopdisney.com",
     "skysound.com",
     "starwars.com",
 
@@ -3793,6 +4554,7 @@ let multiDomainFirstPartiesArray = [
     "disney.be",
     "disney.bg",
     "disney.co.il",
+    "disney.co.jp",
     "disney.com",
     "disney.com.au",
     "disney.com.br",
@@ -3827,6 +4589,7 @@ let multiDomainFirstPartiesArray = [
 
     "dilcdn.com",
     "disney.io",
+    "disney-plus.net",
   ],
   [
     "wargaming.com",
@@ -3868,6 +4631,7 @@ let multiDomainFirstPartiesArray = [
     "cnnmoney.ch",
     "cnn.net",
     "d2c-ott.com",
+    "dccomics.com",
     "d-league.com",
     "e-league.com",
     "eleague.com",
@@ -3910,11 +4674,13 @@ let multiDomainFirstPartiesArray = [
     "thealienist.com",
     "thesuspensecollection.com",
     "ti-platform.com",
+    "tmz.com",
     "tntdrama.com",
     "tnt.tv",
     "trutv.com",
     "vgtf.net",
     "warnermediacdn.com",
+    "warnermedia.com",
     "warnermediafitnation.com",
     "warnermediaready.com",
     "warnermediasupplierdiversity.com",
@@ -3949,6 +4715,50 @@ let multiDomainFirstPartiesArray = [
 
     "medscapestatic.com",
   ],
+  [
+    "webnode.com",
+
+    "webnode.at",
+    "webnode.be",
+    "webnode.bo",
+    "webnode.cl",
+    "webnode.com.ar",
+    "webnode.com.br",
+    "webnode.com.co",
+    "webnode.com.py",
+    "webnode.com.tr",
+    "webnode.com.ua",
+    "webnode.com.uy",
+    "webnode.com.ve",
+    "webnode.co.uk",
+    "webnode.cr",
+    "webnode.cz",
+    "webnode.dk",
+    "webnode.do",
+    "webnode.ec",
+    "webnode.es",
+    "webnode.fi",
+    "webnode.fr",
+    "webnode.gr",
+    "webnode.hr",
+    "webnode.hu",
+    "webnode.in",
+    "webnode.it",
+    "webnode.jp",
+    "webnode.kr",
+    "webnode.lv",
+    "webnode.mx",
+    "webnode.nl",
+    "webnode.no",
+    "webnode.pe",
+    "webnode.pt",
+    "webnode.ro",
+    "webnode.ru",
+    "webnode.se",
+    "webnode.sk",
+    "webnode.tw",
+    "webnode.vn",
+  ],
   ["weebly.com", "editmysite.com"],
   [
     "weibo.com",
@@ -3976,8 +4786,18 @@ let multiDomainFirstPartiesArray = [
     "wikiversity.org", "mediawiki.org", "wikidata.org", "wikivoyage.org",
     "wmfusercontent.org", "tools.wmflabs.org"],
   ["wisconsin.gov", "wi.gov"],
-  ["wix.com", "wixapps.net", "wixstatic.com", "parastorage.com"],
-  ["wordpress.com", "wp.com"],
+  [
+    "wix.com",
+
+    "deviantart.com",
+    "deviantart.net",
+    "editorx.com",
+
+    "parastorage.com",
+    "wixapps.net",
+    "wixmp.com",
+    "wixstatic.com",
+  ],
   [
     "wp.pl",
 
@@ -4074,6 +4894,7 @@ let multiDomainFirstPartiesArray = [
 
     "zoho.com.au",
     "zoho.eu",
+    "zoho.in",
 
     "zohositescontent.com",
     "zohositescontent.com.au",
diff --git a/src/js/options.js b/src/js/options.js
index 7ca70080..194b8542 100644
--- a/src/js/options.js
+++ b/src/js/options.js
@@ -1,18 +1,21 @@
 /*
- * This file is part of Adblock Plus <http://adblockplus.org/>,
+ * This file is part of Privacy Badger <https://privacybadger.org/>
+ * Copyright (C) 2014 Electronic Frontier Foundation
+ *
+ * Derived from Adblock Plus
  * Copyright (C) 2006-2013 Eyeo GmbH
  *
- * Adblock Plus is free software: you can redistribute it and/or modify
+ * Privacy Badger is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 3 as
  * published by the Free Software Foundation.
  *
- * Adblock Plus is distributed in the hope that it will be useful,
+ * Privacy Badger is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>.
+ * along with Privacy Badger.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 window.OPTIONS_INITIALIZED = false;
@@ -49,23 +52,7 @@ function loadOptions() {
   $('#exportTrackers').on("click", exportUserData);
   $('#resetData').on("click", resetData);
   $('#removeAllData').on("click", removeAllData);
-
-  if (OPTIONS_DATA.settings.showTrackingDomains) {
-    $('#tracking-domains-overlay').hide();
-  } else {
-    $('#blockedResourcesContainer').hide();
-
-    $('#show-tracking-domains-checkbox').on("click", () => {
-      $('#tracking-domains-overlay').hide();
-      $('#blockedResourcesContainer').show();
-      chrome.runtime.sendMessage({
-        type: "updateSettings",
-        data: {
-          showTrackingDomains: true
-        }
-      });
-    });
-  }
+  $('#widget-site-exceptions-remove-button').on("click", removeWidgetSiteExceptions);
 
   // Set up input for searching through tracking domains.
   $("#trackingDomainSearch").on("input", filterTrackingDomains);
@@ -110,19 +97,46 @@ function loadOptions() {
   $("#show_counter_checkbox").prop("checked", OPTIONS_DATA.settings.showCounter);
   $("#replace-widgets-checkbox")
     .on("click", updateWidgetReplacement)
-    .prop("checked", OPTIONS_DATA.isWidgetReplacementEnabled);
+    .prop("checked", OPTIONS_DATA.settings.socialWidgetReplacementEnabled);
   $("#enable_dnt_checkbox").on("click", updateDNTCheckboxClicked);
   $("#enable_dnt_checkbox").prop("checked", OPTIONS_DATA.settings.sendDNTSignal);
   $("#check_dnt_policy_checkbox").on("click", updateCheckingDNTPolicy);
   $("#check_dnt_policy_checkbox").prop("checked", OPTIONS_DATA.settings.checkForDNTPolicy).prop("disabled", !OPTIONS_DATA.settings.sendDNTSignal);
 
+  // only show the networkPredictionEnabled override when the browser supports it
+  if (chrome.privacy && chrome.privacy.network && chrome.privacy.network.networkPredictionEnabled) {
+    $("#privacy-settings-header").show();
+    $("#disable-network-prediction").show();
+    $('#disable-network-prediction-checkbox')
+      .prop("checked", OPTIONS_DATA.settings.disableNetworkPrediction)
+      .on("click", function () {
+        updatePrivacyOverride(
+          "disableNetworkPrediction",
+          $("#disable-network-prediction-checkbox").prop("checked")
+        );
+      });
+    // use a different help link in Firefox
+    if (chrome.runtime.getBrowserInfo) {
+      chrome.runtime.getBrowserInfo((info) => {
+        if (info.name == "Firefox" || info.name == "Waterfox") {
+          $('#disable-network-prediction-help-link')[0].href = "https://developer.mozilla.org/en-US/docs/Web/HTTP/Link_prefetching_FAQ";
+        }
+      });
+    }
+  }
+
   // only show the alternateErrorPagesEnabled override if browser supports it
   if (chrome.privacy && chrome.privacy.services && chrome.privacy.services.alternateErrorPagesEnabled) {
     $("#privacy-settings-header").show();
     $("#disable-google-nav-error-service").show();
     $('#disable-google-nav-error-service-checkbox')
       .prop("checked", OPTIONS_DATA.settings.disableGoogleNavErrorService)
-      .on("click", overrideAlternateErrorPagesSetting);
+      .on("click", function () {
+        updatePrivacyOverride(
+          "disableGoogleNavErrorService",
+          $("#disable-google-nav-error-service-checkbox").prop("checked")
+        );
+      });
   }
 
   // only show the hyperlinkAuditingEnabled override if browser supports it
@@ -131,19 +145,39 @@ function loadOptions() {
     $("#disable-hyperlink-auditing").show();
     $("#disable-hyperlink-auditing-checkbox")
       .prop("checked", OPTIONS_DATA.settings.disableHyperlinkAuditing)
-      .on("click", overrideHyperlinkAuditingSetting);
+      .on("click", function () {
+        updatePrivacyOverride(
+          "disableHyperlinkAuditing",
+          $("#disable-hyperlink-auditing-checkbox").prop("checked")
+        );
+      });
   }
 
-  if (OPTIONS_DATA.webRTCAvailable) {
-    $("#webRTCToggle").show();
-    $("#toggle_webrtc_mode").on("click", toggleWebRTCIPProtection);
+  // only show the FLoC override if browser supports it
+  if (document.interestCohort) {
+    $("#disable-floc").show();
+    $("#disable-floc-checkbox")
+      .prop("checked", OPTIONS_DATA.settings.disableFloc)
+      .on("click", function () {
+        const disableFloc = $("#disable-floc-checkbox").prop("checked");
 
-    chrome.privacy.network.webRTCIPHandlingPolicy.get({}, result => {
-      // auto check the option box if ip leak is already protected at diff levels, via pb or another extension
-      if (result.value == "default_public_interface_only" || result.value == "disable_non_proxied_udp") {
-        $("#toggle_webrtc_mode").prop("checked", true);
-      }
-    });
+        chrome.runtime.sendMessage({
+          type: "updateSettings",
+          data: { disableFloc }
+        });
+      });
+  }
+
+  if (OPTIONS_DATA.webRTCAvailable && OPTIONS_DATA.legacyWebRtcProtectionUser) {
+    $("#webRTCToggle").show();
+    $("#toggle_webrtc_mode")
+      .prop("checked", OPTIONS_DATA.settings.preventWebRTCIPLeak)
+      .on("click", function () {
+        updatePrivacyOverride(
+          "preventWebRTCIPLeak",
+          $("#toggle_webrtc_mode").prop("checked")
+        );
+      });
   }
 
   $('#local-learning-checkbox')
@@ -208,32 +242,42 @@ function loadOptions() {
       });
     });
 
-  const widgetSelector = $("#hide-widgets-select");
-  widgetSelector.prop("disabled",
-    OPTIONS_DATA.isWidgetReplacementEnabled ? false : "disabled");
+  const $widgetExceptions = $("#hide-widgets-select");
 
-  $("#replace-widgets-checkbox").change(function () {
-    if ($(this).is(":checked")) {
-      widgetSelector.prop("disabled", false);
+  // disable Widget Replacement form elements when widget replacement is off
+  function _disable_widget_forms(enable) {
+    if (enable) {
+      $widgetExceptions.prop("disabled", false);
+      $("#widget-site-exceptions-select").prop("disabled", false);
+      $('#widget-site-exceptions-remove-button').button("option", "disabled", false);
     } else {
-      widgetSelector.prop("disabled", "disabled");
+      $widgetExceptions.prop("disabled", "disabled");
+      $("#widget-site-exceptions-select").prop("disabled", "disabled");
+      $('#widget-site-exceptions-remove-button').button("option", "disabled", true);
     }
+  }
+  _disable_widget_forms(OPTIONS_DATA.settings.socialWidgetReplacementEnabled);
+  $("#replace-widgets-checkbox").on("change", function () {
+    _disable_widget_forms($(this).is(":checked"));
   });
 
   // Initialize Select2 and populate options
-  widgetSelector.select2();
+  $widgetExceptions.select2({
+    width: '100%'
+  });
   OPTIONS_DATA.widgets.forEach(function (key) {
     const isSelected = OPTIONS_DATA.settings.widgetReplacementExceptions.includes(key);
     const option = new Option(key, key, false, isSelected);
-    widgetSelector.append(option).trigger("change");
+    $widgetExceptions.append(option).trigger("change");
   });
 
-  widgetSelector.on('select2:select', updateWidgetReplacementExceptions);
-  widgetSelector.on('select2:unselect', updateWidgetReplacementExceptions);
-  widgetSelector.on('select2:clear', updateWidgetReplacementExceptions);
+  $widgetExceptions.on('select2:select', updateWidgetReplacementExceptions);
+  $widgetExceptions.on('select2:unselect', updateWidgetReplacementExceptions);
+  $widgetExceptions.on('select2:clear', updateWidgetReplacementExceptions);
 
   reloadDisabledSites();
   reloadTrackingDomainsTab();
+  reloadWidgetSiteExceptions();
 
   $('html').css({
     overflow: 'visible',
@@ -266,8 +310,7 @@ function importTrackerList() {
       parseUserDataFile(e.target.result);
     };
   } else {
-    var selectFile = i18n.getMessage("import_select_file");
-    confirm(selectFile);
+    alert(i18n.getMessage("import_select_file"));
   }
 
   document.getElementById("importTrackers").value = '';
@@ -284,45 +327,25 @@ function parseUserDataFile(storageMapsList) {
   try {
     lists = JSON.parse(storageMapsList);
   } catch (e) {
-    return confirm(i18n.getMessage("invalid_json"));
+    return alert(i18n.getMessage("invalid_json"));
   }
 
   // validate by checking we have the same keys in the import as in the export
-  if (!_.isEqual(
-    Object.keys(lists).sort(),
-    USER_DATA_EXPORT_KEYS.sort()
-  )) {
-    return confirm(i18n.getMessage("invalid_json"));
-  }
-
-  // check for webrtc setting in the imported settings map
-  if (lists.settings_map.preventWebRTCIPLeak) {
-    // verify that the user hasn't already enabled this option
-    if (!$("#toggle_webrtc_mode").prop("checked")) {
-      toggleWebRTCIPProtection();
-    }
-    // this browser-controlled setting doesn't belong in Badger's settings object
-    delete lists.settings_map.preventWebRTCIPLeak;
+  if (JSON.stringify(Object.keys(lists).sort()) != JSON.stringify(USER_DATA_EXPORT_KEYS.sort())) {
+    return alert(i18n.getMessage("invalid_json"));
   }
 
   chrome.runtime.sendMessage({
     type: "mergeUserData",
     data: lists
-  }, (response) => {
-    OPTIONS_DATA.settings.disabledSites = response.disabledSites;
-    OPTIONS_DATA.origins = response.origins;
-
-    reloadDisabledSites();
-    reloadTrackingDomainsTab();
-    // TODO general settings are not updated
-
-    confirm(i18n.getMessage("import_successful"));
+  }, () => {
+    alert(i18n.getMessage("import_successful"));
+    location.reload();
   });
 }
 
 function resetData() {
-  var resetWarn = i18n.getMessage("reset_data_confirm");
-  if (confirm(resetWarn)) {
+  if (confirm(i18n.getMessage("reset_data_confirm"))) {
     chrome.runtime.sendMessage({type: "resetData"}, () => {
       // reload page to refresh tracker list
       location.reload();
@@ -331,8 +354,7 @@ function resetData() {
 }
 
 function removeAllData() {
-  var removeWarn = i18n.getMessage("remove_all_data_confirm");
-  if (confirm(removeWarn)) {
+  if (confirm(i18n.getMessage("remove_all_data_confirm"))) {
     chrome.runtime.sendMessage({type: "removeAllData"}, () => {
       location.reload();
     });
@@ -379,12 +401,6 @@ function uploadCloud() {
  */
 function exportUserData() {
   chrome.storage.local.get(USER_DATA_EXPORT_KEYS, function (maps) {
-
-    // exports the user's prevent webrtc leak setting if it's checked
-    if ($("#toggle_webrtc_mode").prop("checked")) {
-      maps.settings_map.preventWebRTCIPLeak = true;
-    }
-
     let mapJSON = JSON.stringify(maps);
 
     // Append the formatted date to the exported file name
@@ -533,7 +549,7 @@ function addDisabledSite(event) {
   );
 
   if (!domain) {
-    return confirm(i18n.getMessage("invalid_domain"));
+    return alert(i18n.getMessage("invalid_domain"));
   }
 
   chrome.runtime.sendMessage({
@@ -564,6 +580,36 @@ function removeDisabledSite(event) {
   });
 }
 
+/**
+ * Updates the Site Exceptions form on the Widget Replacement tab.
+ */
+function reloadWidgetSiteExceptions() {
+  let sites = Object.keys(OPTIONS_DATA.settings.widgetSiteAllowlist),
+    $select = $('#widget-site-exceptions-select');
+
+  // sort widget exemptions sites the same way other options page domains lists are
+  sites = htmlUtils.sortDomains(sites);
+
+  $select.empty();
+  for (let domain of sites) {
+    // list allowed widget types alongside the domain they belong to
+    let display_text = domain + " (" + OPTIONS_DATA.settings.widgetSiteAllowlist[domain].join(', ') + ")";
+    $('<option>').text(display_text).val(domain).appendTo($select);
+  }
+}
+
+function removeWidgetSiteExceptions(event) {
+  event.preventDefault();
+
+  chrome.runtime.sendMessage({
+    type: "removeWidgetSiteExceptions",
+    domains: $("#widget-site-exceptions-select").val()
+  }, (response) => {
+    OPTIONS_DATA.settings.widgetSiteAllowlist = response.widgetSiteAllowlist;
+    reloadWidgetSiteExceptions();
+  });
+}
+
 // Tracking Domains slider functions
 
 /**
@@ -616,12 +662,12 @@ function updateSummary() {
   $("#tracking-domains-div").show();
 
   // count unique (cookie)blocked tracking base domains
-  let blockedDomains = getOriginsArray(OPTIONS_DATA.origins, null, null, null, false);
+  let blockedDomains = getOriginsArray(OPTIONS_DATA.origins, null, "-dnt", null, false);
   let baseDomains = new Set(blockedDomains.map(d => window.getBaseDomain(d)));
   $("#options_domain_list_trackers").html(i18n.getMessage(
     "options_domain_list_trackers", [
       baseDomains.size,
-      "<a target='_blank' title='" + _.escape(i18n.getMessage("what_is_a_tracker")) + "' class='tooltip' href='https://privacybadger.org/#What-is-a-third-party-tracker'>"
+      "<a target='_blank' title='" + htmlUtils.escape(i18n.getMessage("what_is_a_tracker")) + "' class='tooltip' href='https://privacybadger.org/#What-is-a-third-party-tracker'>"
     ]
   )).show();
 }
@@ -722,7 +768,7 @@ function showTrackingDomains(domains, cb) {
     if (action) {
       let show_breakage_warning = (
         action == constants.USER_BLOCK &&
-        OPTIONS_DATA.cookieblocked.hasOwnProperty(domain)
+        utils.hasOwn(OPTIONS_DATA.cookieblocked, domain)
       );
       out.push(htmlUtils.getOriginHtml(domain, action, show_breakage_warning));
     }
@@ -763,74 +809,21 @@ function showTrackingDomains(domains, cb) {
 }
 
 /**
- * https://tools.ietf.org/html/draft-ietf-rtcweb-ip-handling-01#page-5
- *
- * Toggle WebRTC IP address leak protection setting.
- *
- * When enabled, policy is set to Mode 3 (default_public_interface_only).
+ * Updates privacy overrides in Badger storage and in browser settings.
  */
-function toggleWebRTCIPProtection() {
-  // Return early with non-supporting browsers
-  if (!OPTIONS_DATA.webRTCAvailable) {
-    return;
-  }
-
-  let cpn = chrome.privacy.network;
-
-  cpn.webRTCIPHandlingPolicy.get({}, function (result) {
-    // Update new value to be opposite of current browser setting
-    if (result.value == 'default_public_interface_only') {
-      cpn.webRTCIPHandlingPolicy.clear({});
-    } else {
-      cpn.webRTCIPHandlingPolicy.set({
-        value: 'default_public_interface_only'
-      });
-    }
-  });
-}
-
-// handles overriding the alternateErrorPagesEnabled setting
-function overrideAlternateErrorPagesSetting() {
-  const checked = $("#disable-google-nav-error-service-checkbox").prop("checked");
-
-  // update Badger settings so that we know to reapply the browser setting on startup
+function updatePrivacyOverride(setting_name, setting_value) {
+  // update Badger settings
   chrome.runtime.sendMessage({
     type: "updateSettings",
     data: {
-      disableGoogleNavErrorService: checked
+      [setting_name]: setting_value
     }
-  });
-
-  // update the browser setting
-  if (checked) {
-    chrome.privacy.services.alternateErrorPagesEnabled.set({
-      value: false
+  }, () => {
+    // update the underlying browser setting
+    chrome.runtime.sendMessage({
+      type: "setPrivacyOverrides"
     });
-  } else {
-    chrome.privacy.services.alternateErrorPagesEnabled.clear({});
-  }
-}
-
-// handles overriding the hyperlinkAuditingEnabled setting
-function overrideHyperlinkAuditingSetting() {
-  const checked = $("#disable-hyperlink-auditing-checkbox").prop("checked");
-
-  // update Badger settings so that we know to reapply the browser setting on startup
-  chrome.runtime.sendMessage({
-    type: "updateSettings",
-    data: {
-      disableHyperlinkAuditing: checked
-    }
   });
-
-  // update the browser setting
-  if (checked) {
-    chrome.privacy.websites.hyperlinkAuditingEnabled.set({
-      value: false
-    });
-  } else {
-    chrome.privacy.websites.hyperlinkAuditingEnabled.clear({});
-  }
 }
 
 /**
@@ -850,7 +843,7 @@ function updateOrigin(origin, action, userset) {
 
   let show_breakage_warning = (
     action == constants.BLOCK &&
-    OPTIONS_DATA.cookieblocked.hasOwnProperty(origin)
+    utils.hasOwn(OPTIONS_DATA.cookieblocked, origin)
   );
 
   htmlUtils.toggleBlockedStatus($clicker, userset, show_breakage_warning);
@@ -953,8 +946,7 @@ function removeOrigin(event) {
 }
 
 /**
- * Update which widgets should be blocked instead of replaced
- * @param {Event} event The DOM event triggered by selecting an option
+ * Update which widgets should not get replaced
  */
 function updateWidgetReplacementExceptions() {
   const widgetReplacementExceptions = $('#hide-widgets-select').select2('data').map(({ id }) => id);
diff --git a/src/js/popup.js b/src/js/popup.js
index 7e02e237..874a1fbf 100644
--- a/src/js/popup.js
+++ b/src/js/popup.js
@@ -1,6 +1,7 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2014 Electronic Frontier Foundation
+ *
  * Derived from Adblock Plus
  * Copyright (C) 2006-2013 Eyeo GmbH
  *
@@ -20,9 +21,10 @@
 window.POPUP_INITIALIZED = false;
 window.SLIDERS_DONE = false;
 
-var constants = require("constants");
-var FirefoxAndroid = require("firefoxandroid");
-var htmlUtils = require("htmlutils").htmlUtils;
+let constants = require("constants");
+let FirefoxAndroid = require("firefoxandroid");
+let htmlUtils = require("htmlutils").htmlUtils;
+let utils = require("utils");
 
 let POPUP_DATA = {};
 
@@ -44,6 +46,13 @@ function showNagMaybe() {
     }, cb);
   }
 
+  function _setSeenWebRtcDeprecation(cb) {
+    chrome.runtime.sendMessage({
+      type: "seenWebRtcDeprecation",
+      tabId: POPUP_DATA.tabId
+    }, cb);
+  }
+
   function _hideNag() {
     $nag.fadeOut();
     $outer.fadeOut();
@@ -82,8 +91,9 @@ function showNagMaybe() {
   function _showError(error_text) {
     $('#instruction-text').hide();
     $('#error-text').show().find('a')
-      .attr('id', 'critical-error-link')
+      .addClass('cta-button')
       .css({
+        borderRadius: '3px',
         padding: '5px',
         display: 'inline-block',
         width: 'auto',
@@ -123,10 +133,28 @@ function showNagMaybe() {
     $outer.show();
   }
 
-  if (POPUP_DATA.showLearningPrompt) {
+  function _showWebRtcDeprecationPrompt() {
+    $('#instruction-text').hide();
+
+    $("#webrtc-deprecation-ack-btn").on("click", function () {
+      _setSeenWebRtcDeprecation(function () {
+        _hideNag();
+      });
+    });
+
+    $('#webrtc-deprecation-div').show();
+    $('#fittslaw').hide();
+    $nag.show();
+    $outer.show();
+  }
+
+  if (POPUP_DATA.showWebRtcDeprecation) {
+    _showWebRtcDeprecationPrompt();
+
+  } else if (POPUP_DATA.showLearningPrompt) {
     _showLearningPrompt();
 
-  } else if (!POPUP_DATA.seenComic) {
+  } else if (!POPUP_DATA.settings.seenComic) {
     chrome.tabs.query({active: true, currentWindow: true}, function (focusedTab) {
       // Show the popup instruction if the active tab is not firstRun.html page
       if (!focusedTab[0].url.startsWith(intro_page_url)) {
@@ -147,11 +175,6 @@ function init() {
 
   $("#activate_site_btn").on("click", activateOnSite);
   $("#deactivate_site_btn").on("click", deactivateOnSite);
-  $("#donate").on("click", function() {
-    chrome.tabs.create({
-      url: "https://supporters.eff.org/donate/support-privacy-badger"
-    });
-  });
 
   $('#error_input').on('input propertychange', function() {
     // No easy way of sending message on popup close, send message for every change
@@ -162,15 +185,15 @@ function init() {
     });
   });
 
-  let overlay = $('#overlay');
+  let $overlay = $('#overlay');
 
   // show error layout if the user was writing an error report
-  if (POPUP_DATA.hasOwnProperty('errorText') && POPUP_DATA.errorText) {
-    overlay.toggleClass('active');
+  if (utils.hasOwn(POPUP_DATA, 'errorText') && POPUP_DATA.errorText) {
+    $overlay.toggleClass('active');
   }
 
   $("#error").on("click", function() {
-    overlay.toggleClass('active');
+    $overlay.toggleClass('active');
   });
   $("#report-cancel").on("click", function() {
     clearSavedErrorText();
@@ -193,6 +216,18 @@ function init() {
     chrome.i18n.getMessage("version", chrome.runtime.getManifest().version)
   );
 
+  // add event listeners for click-to-expand blocked resources popup section
+  $('#tracker-list-header').on('click', toggleBlockedResourcesHandler);
+
+  // add event listeners for click-to-expand first party protections popup section
+  $('#firstparty-protections-header').on('click', toggleFirstPartyInfoHandler);
+
+  // show firstparty protections message if current tab is in our content scripts
+  if (POPUP_DATA.enabled && POPUP_DATA.isOnFirstParty) {
+    $("#firstparty-protections-container").show();
+    $('#expand-firstparty-popup').show();
+  }
+
   // improve on Firefox's built-in options opening logic
   if (typeof browser == "object" && typeof browser.runtime.getBrowserInfo == "function") {
     browser.runtime.getBrowserInfo().then(function (info) {
@@ -355,9 +390,7 @@ function send_error(message) {
  * activate PB for site event handler
  */
 function activateOnSite() {
-  $("#activate_site_btn").toggle();
-  $("#deactivate_site_btn").toggle();
-  $("#blockedResourcesContainer").show();
+  $("#activate_site_btn").prop("disabled", true);
 
   chrome.runtime.sendMessage({
     type: "activateOnSite",
@@ -365,6 +398,7 @@ function activateOnSite() {
     tabId: POPUP_DATA.tabId,
     tabUrl: POPUP_DATA.tabUrl
   }, () => {
+    // reload tab and close popup
     chrome.tabs.reload(POPUP_DATA.tabId);
     window.close();
   });
@@ -374,9 +408,7 @@ function activateOnSite() {
  * de-activate PB for site event handler
  */
 function deactivateOnSite() {
-  $("#activate_site_btn").toggle();
-  $("#deactivate_site_btn").toggle();
-  $("#blockedResourcesContainer").hide();
+  $("#deactivate_site_btn").prop("disabled", true);
 
   chrome.runtime.sendMessage({
     type: "deactivateOnSite",
@@ -384,6 +416,7 @@ function deactivateOnSite() {
     tabId: POPUP_DATA.tabId,
     tabUrl: POPUP_DATA.tabUrl
   }, () => {
+    // reload tab and close popup
     chrome.tabs.reload(POPUP_DATA.tabId);
     window.close();
   });
@@ -435,6 +468,48 @@ function share() {
   $("#share_output").val(share_msg);
 }
 
+/**
+ * Click handlers for showing/hiding the blocked resources section
+ */
+function toggleBlockedResourcesHandler(e) {
+  if (e.target.nodeName.toLowerCase() == 'a') {
+    // don't toggle contents when clicking links in the header
+    return;
+  }
+  if ($("#expand-blocked-resources").is(":visible")) {
+    $("#collapse-blocked-resources").show();
+    $("#expand-blocked-resources").hide();
+    $("#blockedResources").slideDown();
+    chrome.runtime.sendMessage({
+      type: "updateSettings",
+      data: { showExpandedTrackingSection: true }
+    });
+  } else {
+    $("#collapse-blocked-resources").hide();
+    $("#expand-blocked-resources").show();
+    $("#blockedResources").slideUp();
+    chrome.runtime.sendMessage({
+      type: "updateSettings",
+      data: { showExpandedTrackingSection: false }
+    });
+  }
+}
+
+/**
+ * Click handler for showing/hiding the firstparty popup info text
+ */
+function toggleFirstPartyInfoHandler() {
+  if ($('#collapse-firstparty-popup').is(":visible")) {
+    $("#collapse-firstparty-popup").hide();
+    $("#expand-firstparty-popup").show();
+    $("#instructions-firstparty-description").slideUp();
+  } else {
+    $("#collapse-firstparty-popup").show();
+    $("#expand-firstparty-popup").hide();
+    $("#instructions-firstparty-description").slideDown();
+  }
+}
+
 /**
  * Handler to undo user selection for a tracker
  */
@@ -495,10 +570,26 @@ function refreshPopup() {
   }
 
   // if there is any saved error text, fill the error input with it
-  if (POPUP_DATA.hasOwnProperty('errorText')) {
+  if (utils.hasOwn(POPUP_DATA, 'errorText')) {
     $("#error_input").val(POPUP_DATA.errorText);
   }
 
+  // show sliders when sliders were shown last
+  // or when there is at least one breakage warning
+  if (POPUP_DATA.settings.showExpandedTrackingSection || (
+    POPUP_DATA.cookieblocked && Object.keys(POPUP_DATA.cookieblocked).some(
+      d => POPUP_DATA.origins[d] == constants.USER_BLOCK)
+  )) {
+    $('#expand-blocked-resources').hide();
+    $('#collapse-blocked-resources').show();
+    $('#blockedResources').show();
+
+  } else {
+    $('#expand-blocked-resources').show();
+    $('#collapse-blocked-resources').hide();
+    $('#blockedResources').hide();
+  }
+
   let origins = POPUP_DATA.origins;
   let originsArr = [];
   if (origins) {
@@ -506,14 +597,10 @@ function refreshPopup() {
   }
 
   if (!originsArr.length) {
-    // hide the number of trackers and slider instructions message
-    // if no sliders will be displayed
-    $("#instructions-many-trackers").hide();
-
     // show "no trackers" message
     $("#instructions-no-trackers").show();
 
-    if (POPUP_DATA.learnLocally && POPUP_DATA.showNonTrackingDomains) {
+    if (POPUP_DATA.settings.learnLocally && POPUP_DATA.settings.showNonTrackingDomains) {
       // show the "no third party resources on this site" message
       $("#no-third-parties").show();
     }
@@ -526,7 +613,8 @@ function refreshPopup() {
     return;
   }
 
-  let printable = [];
+  let printable = [],
+    printableWarningSliders = [];
   let unblockedTrackers = [];
   let nonTracking = [];
   originsArr = htmlUtils.sortDomains(originsArr);
@@ -541,15 +629,21 @@ function refreshPopup() {
     } else {
       let show_breakage_warning = (
         action == constants.USER_BLOCK &&
-        POPUP_DATA.cookieblocked.hasOwnProperty(origin)
-      );
-      printable.push(
-        htmlUtils.getOriginHtml(origin, action, show_breakage_warning)
+        utils.hasOwn(POPUP_DATA.cookieblocked, origin)
       );
+      let slider_html = htmlUtils.getOriginHtml(origin, action, show_breakage_warning);
+      if (show_breakage_warning) {
+        printableWarningSliders.push(slider_html);
+      } else {
+        printable.push(slider_html);
+      }
     }
   }
 
-  if (POPUP_DATA.learnLocally && unblockedTrackers.length) {
+  // show breakage warning sliders at the top of the list
+  printable = printableWarningSliders.concat(printable);
+
+  if (POPUP_DATA.settings.learnLocally && unblockedTrackers.length) {
     printable.push(
       '<div class="clicker tooltip" id="not-yet-blocked-header" title="' +
       chrome.i18n.getMessage("intro_not_an_adblocker_paragraph") +
@@ -562,12 +656,9 @@ function refreshPopup() {
         htmlUtils.getOriginHtml(domain, constants.ALLOW)
       );
     });
-
-    // reduce margin if we have hasn't-decided-yet-to-block domains to show
-    $("#instructions-no-trackers").css("margin", "10px 0");
   }
 
-  if (POPUP_DATA.learnLocally && POPUP_DATA.showNonTrackingDomains && nonTracking.length) {
+  if (POPUP_DATA.settings.learnLocally && POPUP_DATA.settings.showNonTrackingDomains && nonTracking.length) {
     printable.push(
       '<div class="clicker tooltip" id="non-trackers-header" title="' +
       chrome.i18n.getMessage("non_tracker_tip") +
@@ -580,9 +671,6 @@ function refreshPopup() {
         htmlUtils.getOriginHtml(nonTracking[i], constants.NO_TRACKING)
       );
     }
-
-    // reduce margin if we have non-tracking domains to show
-    $("#instructions-no-trackers").css("margin", "10px 0");
   }
 
   if (printable.length) {
@@ -594,17 +682,21 @@ function refreshPopup() {
   $('.tooltip').tooltipster();
 
   if (POPUP_DATA.trackerCount === 0) {
-    // hide multiple trackers message
-    $("#instructions-many-trackers").hide();
-
     // show "no trackers" message
     $("#instructions-no-trackers").show();
 
+    if (printable.length) {
+      // make sure to show domain list
+      // (there is no toggle button when nothing was blocked)
+      $('#blockedResources').show();
+    }
+
   } else {
+    $('#tracker-list-header').show();
     $('#instructions-many-trackers').html(chrome.i18n.getMessage(
       "popup_instructions", [
         POPUP_DATA.trackerCount,
-        "<a target='_blank' title='" + _.escape(chrome.i18n.getMessage("what_is_a_tracker")) + "' class='tooltip' href='https://privacybadger.org/#What-is-a-third-party-tracker'>"
+        "<a target='_blank' title='" + htmlUtils.escape(chrome.i18n.getMessage("what_is_a_tracker")) + "' class='tooltip' href='https://privacybadger.org/#What-is-a-third-party-tracker'>"
       ]
     )).find(".tooltip").tooltipster();
   }
@@ -662,7 +754,7 @@ function updateOrigin() {
     origin = $clicker.data('origin'),
     show_breakage_warning = (
       action == constants.BLOCK &&
-      POPUP_DATA.cookieblocked.hasOwnProperty(origin)
+      utils.hasOwn(POPUP_DATA.cookieblocked, origin)
     );
 
   htmlUtils.toggleBlockedStatus($clicker, true, show_breakage_warning);
diff --git a/src/js/socialwidgetloader.js b/src/js/socialwidgetloader.js
index 11f9bceb..75b2a84e 100644
--- a/src/js/socialwidgetloader.js
+++ b/src/js/socialwidgetloader.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2014 Electronic Frontier Foundation
  * Derived from ShareMeNot
  * Copyright (C) 2011-2014 University of Washington
diff --git a/src/js/storage.js b/src/js/storage.js
index 9074a41d..07560fca 100644
--- a/src/js/storage.js
+++ b/src/js/storage.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2014 Electronic Frontier Foundation
  *
  * Privacy Badger is free software: you can redistribute it and/or modify
@@ -17,41 +17,16 @@
 
 /* globals badger:false, log:false */
 
-var constants = require("constants");
-var utils = require("utils");
-
-require.scopes.storage = (function() {
+require.scopes.storage = (function () {
 
+let constants = require("constants");
+let utils = require("utils");
 
 /**
- * # Storage Objects
- *
- * snitch_map is our collection of potential tracking base_domains.
- * The key is a base domain (ETLD+1) and the value is an array of first
- * party domains on which this tracker has been seen.
- * it looks like this:
- * {
- *   "third-party.com": ["a.com", "b.com", "c.com"],
- *   "eviltracker.net": ["eff.org", "a.com"]
- * }
- *
- * action_map is where we store the action for each domain that we have
- * decided on an action for. Each subdomain gets its own entry. For example:
- * {
- *   "google.com": { heuristicAction: "block", dnt: false, userAction: ""}
- *   "fonts.google.com": { heuristicAction: "cookieblock", dnt: false, userAction: ""}
- *   "apis.google.com": { heuristicAction: "cookieblock", dnt: false, userAction: "user_block"}
- *   "widget.eff.org": { heuristicAction: "block", dnt: true, userAction: ""}
- * }
- *
- * cookieblock_list is where we store the current yellowlist as
- * downloaded from eff.org. The keys are the domains which should be "cookieblocked".
- * The values are simply 'true'. For example:
- * {
- *   "maps.google.com": true,
- *   "creativecommons.org": true,
- * }
+ * See the following link for documentation of
+ * Privacy Badger's data objects in extension storage:
  *
+ * https://github.com/EFForg/privacybadger/blob/master/doc/DESIGN-AND-ROADMAP.md#data-structures
  */
 
 function BadgerPen(callback) {
@@ -64,7 +39,7 @@ function BadgerPen(callback) {
   // initialize from extension local storage
   chrome.storage.local.get(self.KEYS, function (store) {
     self.KEYS.forEach(key => {
-      if (store.hasOwnProperty(key)) {
+      if (utils.hasOwn(store, key)) {
         self[key] = new BadgerStorage(key, store[key]);
       } else {
         let storageObj = new BadgerStorage(key, {});
@@ -84,10 +59,10 @@ function BadgerPen(callback) {
         // ignore "Managed storage manifest not found" errors in Firefox
       }
 
-      if (_.isObject(managedStore)) {
+      if (utils.isObject(managedStore)) {
         let settings = {};
         for (let key in badger.defaultSettings) {
-          if (managedStore.hasOwnProperty(key)) {
+          if (utils.hasOwn(managedStore, key)) {
             settings[key] = managedStore[key];
           }
         }
@@ -110,7 +85,7 @@ BadgerPen.prototype = {
   ],
 
   getStore: function (key) {
-    if (this.hasOwnProperty(key)) {
+    if (utils.hasOwn(this, key)) {
       return this[key];
     }
     console.error("Can't initialize cache from getStore. You are using this API improperly");
@@ -140,7 +115,7 @@ BadgerPen.prototype = {
       ignoreDNT = true;
     }
 
-    if (_.isString(domain)) {
+    if (utils.isString(domain)) {
       domain = this.getStore('action_map').getItem(domain) || {};
     }
     if (domain.userAction) { return domain.userAction; }
@@ -176,23 +151,8 @@ BadgerPen.prototype = {
       ylistStorage = self.getStore('cookieblock_list'),
       oldDomains = ylistStorage.keys();
 
-    let addedDomains = _.difference(newDomains, oldDomains),
-      removedDomains = _.difference(oldDomains, newDomains);
-
-    log('removing from cookie blocklist:', removedDomains);
-    removedDomains.forEach(function (domain) {
-      ylistStorage.deleteItem(domain);
-
-      const base = window.getBaseDomain(domain);
-      // "subdomains" include the domain itself
-      for (const subdomain of actionMap.keys()) {
-        if (window.getBaseDomain(subdomain) == base) {
-          if (self.getAction(subdomain) != constants.NO_TRACKING) {
-            badger.heuristicBlocking.blocklistOrigin(base, subdomain);
-          }
-        }
-      }
-    });
+    let addedDomains = utils.difference(newDomains, oldDomains),
+      removedDomains = utils.difference(oldDomains, newDomains);
 
     log('adding to cookie blocklist:', addedDomains);
     addedDomains.forEach(function (domain) {
@@ -208,6 +168,21 @@ BadgerPen.prototype = {
         }
       }
     });
+
+    log('removing from cookie blocklist:', removedDomains);
+    removedDomains.forEach(function (domain) {
+      ylistStorage.deleteItem(domain);
+
+      const base = window.getBaseDomain(domain);
+      // "subdomains" include the domain itself
+      for (const subdomain of actionMap.keys()) {
+        if (window.getBaseDomain(subdomain) == base) {
+          if (self.getAction(subdomain) != constants.NO_TRACKING) {
+            badger.heuristicBlocking.blocklistOrigin(base, subdomain);
+          }
+        }
+      }
+    });
   },
 
   /**
@@ -215,7 +190,7 @@ BadgerPen.prototype = {
    */
   updateDntHashes: function (hashes) {
     var dnt_hashes = this.getStore('dnt_hashes');
-    dnt_hashes.updateObject(_.invert(hashes));
+    dnt_hashes.updateObject(utils.invert(hashes));
   },
 
   /**
@@ -254,9 +229,10 @@ BadgerPen.prototype = {
    * @returns {String} the best action for the FQDN
    */
   getBestAction: function (fqdn) {
-    let best_action = constants.NO_TRACKING;
-    let subdomains = utils.explodeSubdomains(fqdn);
-    let action_map = this.getStore('action_map');
+    let self = this,
+      action_map = self.getStore('action_map'),
+      best_action = constants.NO_TRACKING,
+      subdomains = utils.explodeSubdomains(fqdn);
 
     function getScore(action) {
       switch (action) {
@@ -280,10 +256,10 @@ BadgerPen.prototype = {
     // Loop through each subdomain we have a rule for
     // from least (base domain) to most (FQDN) specific
     // and keep the one which has the best score.
-    for (let i = subdomains.length; i >= 0; i--) {
+    for (let i = subdomains.length - 1; i >= 0; i--) {
       let domain = subdomains[i];
       if (action_map.hasItem(domain)) {
-        let action = this.getAction(
+        let action = self.getAction(
           action_map.getItem(domain),
           // ignore DNT unless it's directly on the FQDN being checked
           domain != fqdn
@@ -457,27 +433,8 @@ var _newActionMapObject = function() {
 };
 
 /**
- * Privacy Badger Storage Object. Has methods for getting, setting and deleting
- * should be used for all storage needs, transparently handles data presistence
- * syncing and private browsing.
- * Usage:
- * example_map = getStore('example_map');
- * # instance of BadgerStorage
- * example_map.setItem('foo', 'bar')
- * # null
- * example_map
- * # { foo: "bar" }
- * example_map.hasItem('foo')
- * # true
- * example_map.getItem('foo');
- * # 'bar'
- * example_map.getItem('not_real');
- * # undefined
- * example_map.deleteItem('foo');
- * # null
- * example_map.hasItem('foo');
- * # false
- *
+ * Privacy Badger Storage Object.
+ * Should be used for all storage needs.
  */
 
 /**
@@ -500,7 +457,7 @@ BadgerStorage.prototype = {
    */
   hasItem: function(key) {
     var self = this;
-    return self._store.hasOwnProperty(key);
+    return utils.hasOwn(self._store, key);
   },
 
   /**
@@ -593,14 +550,14 @@ BadgerStorage.prototype = {
       for (let prop in mapData) {
         // combine array settings via intersection/union
         if (prop == "disabledSites" || prop == "widgetReplacementExceptions") {
-          self._store[prop] = _.union(self._store[prop], mapData[prop]);
+          self._store[prop] = utils.concatUniq(self._store[prop], mapData[prop]);
 
         // string/array map
         } else if (prop == "widgetSiteAllowlist") {
           // for every site host in the import
           for (let site in mapData[prop]) {
             // combine exception arrays
-            self._store[prop][site] = _.union(
+            self._store[prop][site] = utils.concatUniq(
               self._store[prop][site],
               mapData[prop][site]
             );
@@ -608,8 +565,10 @@ BadgerStorage.prototype = {
 
         // default: overwrite existing setting with setting from import
         } else {
-          if (prop != "isFirstRun") {
+          if (utils.hasOwn(badger.defaultSettings, prop)) {
             self._store[prop] = mapData[prop];
+          } else {
+            console.error("Unknown Badger setting:", prop);
           }
         }
       }
@@ -620,7 +579,7 @@ BadgerStorage.prototype = {
 
         // Copy over any user settings from the merged-in data
         if (action.userAction) {
-          if (self._store.hasOwnProperty(domain)) {
+          if (utils.hasOwn(self._store, domain)) {
             self._store[domain].userAction = action.userAction;
           } else {
             self._store[domain] = Object.assign(_newActionMapObject(), action);
@@ -628,7 +587,7 @@ BadgerStorage.prototype = {
         }
 
         // handle Do Not Track
-        if (self._store.hasOwnProperty(domain)) {
+        if (utils.hasOwn(self._store, domain)) {
           // Merge DNT settings if the imported data has a more recent update
           if (action.nextUpdateTime > self._store[domain].nextUpdateTime) {
             self._store[domain].nextUpdateTime = action.nextUpdateTime;
@@ -643,14 +602,11 @@ BadgerStorage.prototype = {
       }
 
     } else if (self.name == "snitch_map") {
-      for (let tracker_origin in mapData) {
-        let firstPartyOrigins = mapData[tracker_origin];
-        for (let i = 0; i < firstPartyOrigins.length; i++) {
+      for (let tracker_base in mapData) {
+        let siteBases = mapData[tracker_base];
+        for (let siteBase of siteBases) {
           badger.heuristicBlocking.updateTrackerPrevalence(
-            tracker_origin,
-            tracker_origin,
-            firstPartyOrigins[i]
-          );
+            tracker_base, tracker_base, siteBase);
         }
       }
     }
@@ -687,9 +643,9 @@ var _syncStorage = (function () {
   // Creates debounced versions of "sync" function,
   // one for each distinct badgerStorage value.
   return function (badgerStorage) {
-    if (!debouncedFuncs.hasOwnProperty(badgerStorage.name)) {
+    if (!utils.hasOwn(debouncedFuncs, badgerStorage.name)) {
       // call sync at most once every two seconds
-      debouncedFuncs[badgerStorage.name] = _.debounce(function () {
+      debouncedFuncs[badgerStorage.name] = utils.debounce(function () {
         sync(badgerStorage);
       }, 2000);
     }
@@ -698,10 +654,10 @@ var _syncStorage = (function () {
 }());
 
 /************************************** exports */
-var exports = {};
-
-exports.BadgerPen = BadgerPen;
-
+let exports = {
+  BadgerPen,
+};
 return exports;
 /************************************** exports */
+
 }());
diff --git a/src/js/surrogates.js b/src/js/surrogates.js
index 5389afd8..29c56d64 100644
--- a/src/js/surrogates.js
+++ b/src/js/surrogates.js
@@ -1,6 +1,5 @@
 /*
- *
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2016 Electronic Frontier Foundation
  *
  * Privacy Badger is free software: you can redistribute it and/or modify
@@ -16,9 +15,23 @@
  * along with Privacy Badger.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-require.scopes.surrogates = (function() {
+require.scopes.surrogates = (function () {
+
+const db = require('surrogatedb'),
+  utils = require('utils');
+
+const WIDGET_SURROGATES = utils.filter(db.hostnames, item => !!item.widgetName);
+
+function _match_prefix(url, hostname, tokens) {
+  let path_onwards = url.slice(url.indexOf(hostname) + hostname.length);
+  for (const token of tokens) {
+    if (path_onwards.startsWith(token)) {
+      return db.surrogates[token];
+    }
+  }
 
-const db = require('surrogatedb');
+  return false;
+}
 
 /**
  * Blocking tracking scripts (trackers) can cause parts of webpages to break.
@@ -34,29 +47,32 @@ const db = require('surrogatedb');
  * parameter. This is an optimization: the calling context should already have
  * this information.
  *
- * @return {(String|Boolean)} The surrogate script as a data URI when there is a
- * match, or boolean false when there is no match.
+ * @return {(String|Boolean)} Extension URL to the surrogate script
+ * when there is a match; boolean false otherwise.
  */
-function getSurrogateURI(script_url, script_hostname) {
+function getSurrogateUri(script_url, script_hostname) {
   // do we have an entry for the script hostname?
-  if (db.hostnames.hasOwnProperty(script_hostname)) {
-    const tokens = db.hostnames[script_hostname];
-
-    // it's a wildcard token
-    if (_.isString(tokens)) {
-      if (db.surrogates.hasOwnProperty(tokens)) {
-        // return the surrogate code
-        return 'data:application/javascript;base64,' + btoa(db.surrogates[tokens]);
-      }
-    }
+  if (!utils.hasOwn(db.hostnames, script_hostname)) {
+    return false;
+  }
+
+  const conf = db.hostnames[script_hostname];
 
-    // must be an array of suffix tokens
+  switch (conf.match) {
+
+  // wildcard token:
+  // matches any script URL for the hostname
+  case db.MATCH_ANY: {
+    return db.surrogates[conf.token];
+  }
+
+  // one or more suffix tokens:
+  // does the script URL (querystring excluded) end with one of these tokens?
+  case db.MATCH_SUFFIX: {
     const qs_start = script_url.indexOf('?');
 
-    for (let i = 0; i < tokens.length; i++) {
+    for (const token of conf.tokens) {
       // do any of the suffix tokens match the script URL?
-      const token = tokens[i];
-
       let match = false;
 
       if (qs_start == -1) {
@@ -69,19 +85,58 @@ function getSurrogateURI(script_url, script_hostname) {
         }
       }
 
+      // there is a match, return the surrogate code
       if (match) {
-        // there is a match, return the surrogate code
-        return 'data:application/javascript;base64,' + btoa(db.surrogates[token]);
+        return db.surrogates[token];
       }
     }
+
+    return false;
+  }
+
+  // one or more prefix tokens:
+  // does the script URL's path component begin with one of these tokens?
+  case db.MATCH_PREFIX: {
+    return _match_prefix(script_url, script_hostname, conf.tokens);
+  }
+
+  // MATCH_PREFIX with querystring parameter matching
+  case db.MATCH_PREFIX_WITH_PARAMS: {
+    let surl = _match_prefix(script_url, script_hostname, conf.tokens);
+
+    if (!surl) {
+      return false;
+    }
+
+    // check every key/value pair in conf.params against the querystring
+    let qs = (new URL(script_url)).searchParams;
+    for (let [key, value] of Object.entries(conf.params)) {
+      // is the key present?
+      if (value === true) {
+        if (!qs.get(key)) {
+          return false;
+        }
+      // is the key present and do the values match?
+      } else if (utils.isString(value)) {
+        if (qs.get(key) !== value) {
+          return false;
+        }
+      }
+    }
+
+    return surl;
+  }
+
   }
 
   return false;
 }
 
 const exports = {
-  getSurrogateURI: getSurrogateURI,
+  getSurrogateUri,
+  WIDGET_SURROGATES
 };
 
 return exports;
-})();
+
+}());
diff --git a/src/js/utils.js b/src/js/utils.js
index 10729353..e125ff3f 100644
--- a/src/js/utils.js
+++ b/src/js/utils.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2014 Electronic Frontier Foundation
  *
  * Derived from Adblock Plus
@@ -20,10 +20,16 @@
 
 /* globals URI:false */
 
-require.scopes.utils = (function() {
+require.scopes.utils = (function () {
 
 let mdfp = require("multiDomainFP");
 
+// TODO replace with Object.hasOwn() eventually
+// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwn
+function hasOwn(obj, prop) {
+  return Object.prototype.hasOwnProperty.call(obj, prop);
+}
+
 /**
  * Generic interface to make an XHR request
  *
@@ -43,7 +49,7 @@ function xhrRequest(url, callback, method, opts) {
   let xhr = new XMLHttpRequest();
 
   for (let key in opts) {
-    if (opts.hasOwnProperty(key)) {
+    if (hasOwn(opts, key)) {
       xhr[key] = opts[key];
     }
   }
@@ -224,6 +230,49 @@ function oneDayFromNow() {
   return nDaysFromNow(1);
 }
 
+function random(min, max) {
+  if (max == null) {
+    max = min;
+    min = 0;
+  }
+  return min + Math.floor(Math.random() * (max - min + 1));
+}
+
+// from Underscore v1.6.0
+// also lives in js/contentscripts/fingerprinting.js
+function debounce(func, wait, immediate) {
+  var timeout, args, context, timestamp, result;
+
+  var later = function () {
+    var last = Date.now() - timestamp;
+    if (last < wait) {
+      timeout = setTimeout(later, wait - last);
+    } else {
+      timeout = null;
+      if (!immediate) {
+        result = func.apply(context, args);
+        context = args = null;
+      }
+    }
+  };
+
+  return function () {
+    context = this; // eslint-disable-line consistent-this
+    args = arguments;
+    timestamp = Date.now();
+    var callNow = immediate && !timeout;
+    if (!timeout) {
+      timeout = setTimeout(later, wait);
+    }
+    if (callNow) {
+      result = func.apply(context, args);
+      context = args = null;
+    }
+
+    return result;
+  };
+}
+
 /**
  * Creates a rate-limited function that delays invoking `fn` until after
  * `interval` milliseconds have elapsed since the last time the rate-limited
@@ -360,7 +409,7 @@ function parseCookie(str, opts) {
       }
     }
 
-    if (!opts.noOverwrite || !parsed.hasOwnProperty(name)) {
+    if (!opts.noOverwrite || !hasOwn(parsed, name)) {
       parsed[name] = value;
     }
   }
@@ -403,6 +452,50 @@ function isThirdPartyDomain(domain1, domain2) {
   return false;
 }
 
+/**
+ * Checks whether a given site hostname matches
+ * any first party protections content scripts.
+ *
+ * @param {String} tab_host
+ * @return {Boolean}
+ */
+let firstPartyProtectionsEnabled = (function () {
+  let firstPartiesList;
+
+  function getFirstParties() {
+    let manifestJson = chrome.runtime.getManifest();
+    let firstParties = [];
+
+    for (let contentScriptObj of manifestJson.content_scripts) {
+      // only include parts from content scripts that have firstparties entries
+      if (contentScriptObj.js[0].includes("/firstparties/")) {
+        let extractedUrls = [];
+        for (let match of contentScriptObj.matches) {
+          extractedUrls.push(window.extractHostFromURL(match));
+        }
+        firstParties.push(extractedUrls);
+      }
+    }
+    return [].concat.apply([], firstParties);
+  }
+
+  return function (tab_host) {
+    if (!firstPartiesList) {
+      firstPartiesList = getFirstParties();
+    }
+
+    for (let url_pattern of firstPartiesList) {
+      if (url_pattern.startsWith("*")) {
+        if (tab_host.endsWith(url_pattern.slice(1))) {
+          return true;
+        }
+      } else if (url_pattern == tab_host) {
+        return true;
+      }
+    }
+    return false;
+  };
+})();
 
 /**
  * Checks whether a given URL is a special browser page.
@@ -421,12 +514,60 @@ function isRestrictedUrl(url) {
   );
 }
 
+function difference(arr1, arr2) {
+  arr1 = arr1 || [];
+  arr2 = arr2 || [];
+  return arr1.filter(x => !arr2.includes(x));
+}
+
+/**
+ * @returns {Array} items from arr1
+ * followed by items from arr2 that were not already present in arr1
+ */
+function concatUniq(arr1, arr2) {
+  arr1 = arr1 || [];
+  arr2 = arr2 || [];
+  return arr1.concat(arr2.filter(x => !arr1.includes(x)));
+}
+
+function invert(obj) {
+  let result = {};
+  let keys = Object.keys(obj);
+  for (let i = 0, length = keys.length; i < length; i++) {
+    result[obj[keys[i]]] = keys[i];
+  }
+  return result;
+}
+
+/**
+ * Array.prototype.filter() for objects.
+ *
+ * @param {Object} obj
+ * @param {Function} cb receives two arguments: current value, current key
+ */
+function filter(obj, cb) {
+  let memo = {};
+  for (let [key, value] of Object.entries(obj)) {
+    if (cb(value, key)) {
+      memo[key] = value;
+    }
+  }
+  return memo;
+}
+
 /************************************** exports */
 let exports = {
   arrayBufferToBase64,
+  concatUniq,
+  debounce,
+  difference,
   estimateMaxEntropy,
   explodeSubdomains,
+  filter,
+  firstPartyProtectionsEnabled,
   getHostFromDomainInput,
+  hasOwn,
+  invert,
   isRestrictedUrl,
   isThirdPartyDomain,
   nDaysFromNow,
@@ -436,10 +577,24 @@ let exports = {
   oneMinute,
   oneSecond,
   parseCookie,
+  random,
   rateLimit,
   sha1,
   xhrRequest,
 };
+
+exports.isObject = function (obj) {
+  let type = typeof obj;
+  return type === 'function' || type === 'object' && !!obj;
+};
+
+// isFunction(), isString(), etc.
+for (let name of ['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet']) {
+  exports['is' + name] = function (x) {
+    return toString.call(x) === '[object ' + name + ']';
+  };
+}
+
 return exports;
 /************************************** exports */
 })(); //require scopes
diff --git a/src/js/webrequest.js b/src/js/webrequest.js
index bb7469bf..995767fb 100644
--- a/src/js/webrequest.js
+++ b/src/js/webrequest.js
@@ -1,6 +1,5 @@
 /*
- *
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2016 Electronic Frontier Foundation
  *
  * Derived from Adblock Plus
@@ -29,12 +28,13 @@ require.scopes.webrequest = (function () {
 /*********************** webrequest scope **/
 
 let constants = require("constants"),
-  getSurrogateURI = require("surrogates").getSurrogateURI,
   incognito = require("incognito"),
+  surrogates = require("surrogates"),
   utils = require("utils");
 
 /************ Local Variables *****************/
-let tempAllowlist = {};
+let tempAllowlist = {},
+  tempAllowedWidgets = {};
 
 /***************** Blocking Listener Functions **************/
 
@@ -55,7 +55,7 @@ function onBeforeRequest(details) {
       is_reload = oldTabData && oldTabData.url == url;
     forgetTab(tab_id, is_reload);
     badger.recordFrame(tab_id, frame_id, url);
-    initializeAllowedWidgets(tab_id, badger.getFrameData(tab_id).host);
+    initAllowedWidgets(tab_id, badger.getFrameData(tab_id).host);
     return {};
   }
 
@@ -77,6 +77,11 @@ function onBeforeRequest(details) {
   let tab_host = getHostForTab(tab_id);
   let request_host = window.extractHostFromURL(url);
 
+  // CNAME uncloaking
+  if (utils.hasOwn(badger.cnameDomains, request_host)) {
+    request_host = badger.cnameDomains[request_host];
+  }
+
   if (!utils.isThirdPartyDomain(request_host, tab_host)) {
     return {};
   }
@@ -97,16 +102,31 @@ function onBeforeRequest(details) {
   }
 
   if (type == 'script') {
-    let surrogate = getSurrogateURI(url, request_host);
+    let surrogate;
+
+    if (utils.hasOwn(surrogates.WIDGET_SURROGATES, request_host)) {
+      let settings = badger.getSettings();
+      if (settings.getItem("socialWidgetReplacementEnabled") && !settings.getItem('widgetReplacementExceptions').includes(surrogates.WIDGET_SURROGATES[request_host].widgetName)) {
+        surrogate = surrogates.getSurrogateUri(url, request_host);
+      }
+
+    } else {
+      surrogate = surrogates.getSurrogateUri(url, request_host);
+    }
+
     if (surrogate) {
-      return {redirectUrl: surrogate};
+      let secret = getWarSecret(tab_id, frame_id, surrogate);
+      return {
+        redirectUrl: surrogate + '?key=' + secret
+      };
     }
   }
 
   // notify the widget replacement content script
   chrome.tabs.sendMessage(tab_id, {
-    replaceWidget: true,
-    trackerDomain: request_host
+    type: "replaceWidget",
+    trackerDomain: request_host,
+    frameId: (type == 'sub_frame' ? details.parentFrameId : frame_id)
   });
 
   // if this is a heuristically- (not user-) blocked domain
@@ -126,6 +146,61 @@ function onBeforeRequest(details) {
   return {cancel: true};
 }
 
+/**
+ * Generates a token for a given tab ID/frame ID/resource URL combination.
+ *
+ * @param {Integer} tab_id
+ * @param {Integer} frame_id
+ * @param {String} url
+ *
+ * @returns {String}
+ */
+function getWarSecret(tab_id, frame_id, url) {
+  let secret = (+(("" + Math.random()).slice(2))).toString(16),
+    frameData = badger.getFrameData(tab_id, frame_id),
+    tokens = frameData.warAccessTokens;
+
+  if (!tokens) {
+    tokens = {};
+    frameData.warAccessTokens = tokens;
+  }
+
+  tokens[url] = secret;
+
+  return secret;
+}
+
+/**
+ * Guards against web_accessible_resources abuse.
+ *
+ * Checks whether there is a previously saved token
+ * for a given tab ID/frame ID/resource URL combination,
+ * and whether the full request URL contains this token.
+ *
+ * @param {Object} details webRequest request details object
+ *
+ * @returns {Object|undefined} Can cancel requests
+ */
+function filterWarRequests(details) {
+  let url = details.url,
+    frameData = badger.getFrameData(details.tabId, details.frameId),
+    tokens = frameData && frameData.warAccessTokens;
+
+  if (!tokens) {
+    return { cancel: true };
+  }
+
+  let qs_start = url.indexOf('?'),
+    url_no_qs = qs_start && url.slice(0, qs_start),
+    secret = url_no_qs && tokens[url_no_qs];
+
+  if (!secret || url != `${url_no_qs}?key=${secret}`) {
+    return { cancel: true };
+  }
+
+  delete tokens[url_no_qs];
+}
+
 /**
  * Filters outgoing cookies and referer
  * Injects DNT
@@ -161,11 +236,20 @@ function onBeforeSendHeaders(details) {
   let tab_host = getHostForTab(tab_id);
   let request_host = window.extractHostFromURL(url);
 
+  // CNAME uncloaking
+  if (utils.hasOwn(badger.cnameDomains, request_host)) {
+    request_host = badger.cnameDomains[request_host];
+  }
+
   if (!utils.isThirdPartyDomain(request_host, tab_host)) {
     if (badger.isPrivacyBadgerEnabled(tab_host)) {
       // Still sending Do Not Track even if HTTP and cookie blocking are disabled
       if (badger.isDNTSignalEnabled()) {
-        details.requestHeaders.push({name: "DNT", value: "1"}, {name: "Sec-GPC", value: "1"});
+        if (tab_host == 'www.costco.com') {
+          details.requestHeaders.push({name: "Sec-GPC", value: "1"});
+        } else {
+          details.requestHeaders.push({name: "DNT", value: "1"}, {name: "Sec-GPC", value: "1"});
+        }
       }
       return {requestHeaders: details.requestHeaders};
     } else {
@@ -260,9 +344,23 @@ function onHeadersReceived(details) {
     return {};
   }
 
+  if (details.type == 'main_frame' && badger.isFlocOverwriteEnabled()) {
+    let responseHeaders = details.responseHeaders || [];
+    responseHeaders.push({
+      name: 'permissions-policy',
+      value: 'interest-cohort=()'
+    });
+    return { responseHeaders };
+  }
+
   let tab_host = getHostForTab(tab_id);
   let response_host = window.extractHostFromURL(url);
 
+  // CNAME uncloaking
+  if (utils.hasOwn(badger.cnameDomains, response_host)) {
+    response_host = badger.cnameDomains[response_host];
+  }
+
   if (!utils.isThirdPartyDomain(response_host, tab_host)) {
     return {};
   }
@@ -337,7 +435,7 @@ function onNavigate(details) {
 
   let tab_host = badger.getFrameData(tab_id).host;
 
-  initializeAllowedWidgets(tab_id, tab_host);
+  initAllowedWidgets(tab_id, tab_host);
 
   // initialize tab data bookkeeping used by heuristicBlockingAccounting()
   // to avoid missing or misattributing learning
@@ -363,7 +461,7 @@ function hideBlockedFrame(tab_id, parent_frame_id, frame_url, frame_host) {
   }
 
   // don't hide widget frames
-  if (badger.isWidgetReplacementEnabled()) {
+  if (badger.getSettings().getItem("socialWidgetReplacementEnabled")) {
     let exceptions = badger.getSettings().getItem('widgetReplacementExceptions');
     for (let widget of badger.widgetList) {
       if (exceptions.includes(widget.name)) {
@@ -399,7 +497,7 @@ function hideBlockedFrame(tab_id, parent_frame_id, frame_url, frame_host) {
     // record frame_url and parent_frame_id
     // for when content script becomes ready
     let tabData = badger.tabData[tab_id];
-    if (!tabData.blockedFrameUrls.hasOwnProperty(parent_frame_id)) {
+    if (!utils.hasOwn(tabData.blockedFrameUrls, parent_frame_id)) {
       tabData.blockedFrameUrls[parent_frame_id] = [];
     }
     tabData.blockedFrameUrls[parent_frame_id].push(frame_url);
@@ -440,34 +538,44 @@ function recordSupercookie(tab_id, frame_url) {
   const frame_host = window.extractHostFromURL(frame_url),
     page_host = badger.getFrameData(tab_id).host;
 
-  if (!utils.isThirdPartyDomain(frame_host, page_host)) {
-    // Only happens on the start page for google.com
-    return;
-  }
-
   badger.heuristicBlocking.updateTrackerPrevalence(
     frame_host,
     window.getBaseDomain(frame_host),
     window.getBaseDomain(page_host)
   );
+
+  // log for popup
+  let action = checkAction(tab_id, frame_host);
+  if (action) {
+    badger.logThirdPartyOriginOnTab(tab_id, frame_host, action);
+  }
 }
 
 /**
  * Record canvas fingerprinting
  *
- * @param {Integer} tabId the tab ID
+ * @param {Integer} tab_id the tab ID
  * @param {Object} msg specific fingerprinting data
  */
-function recordFingerprinting(tabId, msg) {
-  // Abort if we failed to determine the originating script's URL
-  // TODO find and fix where this happens
+function recordFingerprinting(tab_id, msg) {
+  // exit if we failed to determine the originating script's URL
   if (!msg.scriptUrl) {
+    // TODO find and fix where this happens
+    return;
+  } else if (msg.scriptUrl.startsWith("data:")) {
+    // TODO find initiator for script data URLs
     return;
   }
 
-  // Ignore first-party scripts
-  let script_host = window.extractHostFromURL(msg.scriptUrl),
-    document_host = badger.getFrameData(tabId).host;
+  let document_host = badger.getFrameData(tab_id).host,
+    script_host = window.extractHostFromURL(msg.scriptUrl);
+
+  // CNAME uncloaking
+  if (utils.hasOwn(badger.cnameDomains, script_host)) {
+    script_host = badger.cnameDomains[script_host];
+  }
+
+  // ignore first-party scripts
   if (!utils.isThirdPartyDomain(script_host, document_host)) {
     return;
   }
@@ -481,24 +589,24 @@ function recordFingerprinting(tabId, msg) {
     toDataURL: true
   };
 
-  if (!badger.tabData[tabId].hasOwnProperty('fpData')) {
-    badger.tabData[tabId].fpData = {};
+  if (!utils.hasOwn(badger.tabData[tab_id], 'fpData')) {
+    badger.tabData[tab_id].fpData = {};
   }
 
-  let script_origin = window.getBaseDomain(script_host);
+  let script_base = window.getBaseDomain(script_host);
 
   // Initialize script TLD-level data
-  if (!badger.tabData[tabId].fpData.hasOwnProperty(script_origin)) {
-    badger.tabData[tabId].fpData[script_origin] = {
+  if (!utils.hasOwn(badger.tabData[tab_id].fpData, script_base)) {
+    badger.tabData[tab_id].fpData[script_base] = {
       canvas: {
         fingerprinting: false,
         write: false
       }
     };
   }
-  let scriptData = badger.tabData[tabId].fpData[script_origin];
+  let scriptData = badger.tabData[tab_id].fpData[script_base];
 
-  if (msg.extra.hasOwnProperty('canvas')) {
+  if (utils.hasOwn(msg.extra, 'canvas')) {
     if (scriptData.canvas.fingerprinting) {
       return;
     }
@@ -506,20 +614,26 @@ function recordFingerprinting(tabId, msg) {
     // If this script already had a canvas write...
     if (scriptData.canvas.write) {
       // ...and if this is a canvas read...
-      if (CANVAS_READ.hasOwnProperty(msg.prop)) {
+      if (utils.hasOwn(CANVAS_READ, msg.prop)) {
         // ...and it got enough data...
         if (msg.extra.width > 16 && msg.extra.height > 16) {
           // ...we will classify it as fingerprinting
           scriptData.canvas.fingerprinting = true;
           log(script_host, 'caught fingerprinting on', document_host);
 
-          // Mark this as a strike
+          // mark this as a strike
           badger.heuristicBlocking.updateTrackerPrevalence(
-            script_host, script_origin, window.getBaseDomain(document_host));
+            script_host, script_base, window.getBaseDomain(document_host));
+
+          // log for popup
+          let action = checkAction(tab_id, script_host);
+          if (action) {
+            badger.logThirdPartyOriginOnTab(tab_id, script_host, action);
+          }
         }
       }
       // This is a canvas write
-    } else if (CANVAS_WRITE.hasOwnProperty(msg.prop)) {
+    } else if (utils.hasOwn(CANVAS_WRITE, msg.prop)) {
       scriptData.canvas.write = true;
     }
   }
@@ -535,6 +649,7 @@ function forgetTab(tab_id, is_reload) {
   delete badger.tabData[tab_id];
   if (!is_reload) {
     delete tempAllowlist[tab_id];
+    delete tempAllowedWidgets[tab_id];
   }
 }
 
@@ -616,7 +731,7 @@ let getWidgetList = (function () {
     },
     {
       key: "widget_placeholder_pb_has_replaced",
-      placeholders: ["XXX"]
+      placeholders: ["XXX", "YYY", "ZZZ"]
     },
     { key: "allow_once" },
     { key: "allow_on_site" },
@@ -653,6 +768,16 @@ let getWidgetList = (function () {
 
       widgetList.push(widget);
 
+      // replace only if we haven't already allowed this widget for the tab/site
+      // so that sites that dynamically insert nested frames with widgets
+      // like Tumblr do the right thing after a widget is allowed
+      // (but the page hasn't yet been reloaded)
+      // and don't keep replacing an already allowed widget type in those frames
+      if (utils.hasOwn(tempAllowedWidgets, tab_id) &&
+          tempAllowedWidgets[tab_id].includes(widget.name)) {
+        continue;
+      }
+
       // replace only if at least one of the associated domains was blocked
       if (!tabOrigins || !tabOrigins.length) {
         continue;
@@ -676,7 +801,7 @@ let getWidgetList = (function () {
         }
 
         // regular, non-leading wildcard domain
-        if (!tabData.origins.hasOwnProperty(domain)) {
+        if (!utils.hasOwn(tabData.origins, domain)) {
           return false;
         }
         const action = tabData.origins[domain];
@@ -716,7 +841,7 @@ let getWidgetList = (function () {
  * @returns {Boolean} true if FQDN is on the temporary allow list
  */
 function allowedOnTab(tab_id, request_host, frame_id) {
-  if (!tempAllowlist.hasOwnProperty(tab_id)) {
+  if (!utils.hasOwn(tempAllowlist, tab_id)) {
     return false;
   }
 
@@ -764,7 +889,7 @@ function getWidgetDomains(widget_name) {
     widget => widget.name == widget_name);
 
   if (!widgetData ||
-      !widgetData.hasOwnProperty("replacementButton") ||
+      !utils.hasOwn(widgetData, "replacementButton") ||
       !widgetData.replacementButton.unblockDomains) {
     return false;
   }
@@ -777,9 +902,10 @@ function getWidgetDomains(widget_name) {
  *
  * @param {Integer} tab_id the ID of the tab
  * @param {Array} domains the domains
+ * @param {String} widget_name the name (ID) of the widget
  */
-function allowOnTab(tab_id, domains) {
-  if (!tempAllowlist.hasOwnProperty(tab_id)) {
+function allowOnTab(tab_id, domains, widget_name) {
+  if (!utils.hasOwn(tempAllowlist, tab_id)) {
     tempAllowlist[tab_id] = [];
   }
   for (let domain of domains) {
@@ -787,24 +913,102 @@ function allowOnTab(tab_id, domains) {
       tempAllowlist[tab_id].push(domain);
     }
   }
+
+  if (!utils.hasOwn(tempAllowedWidgets, tab_id)) {
+    tempAllowedWidgets[tab_id] = [];
+  }
+  tempAllowedWidgets[tab_id].push(widget_name);
 }
 
 /**
  * Called upon navigation to prepopulate the temporary allowlist
  * with domains for widgets marked as always allowed on a given site.
  */
-function initializeAllowedWidgets(tab_id, tab_host) {
+function initAllowedWidgets(tab_id, tab_host) {
   let allowedWidgets = badger.getSettings().getItem('widgetSiteAllowlist');
-  if (allowedWidgets.hasOwnProperty(tab_host)) {
+  if (utils.hasOwn(allowedWidgets, tab_host)) {
     for (let widget_name of allowedWidgets[tab_host]) {
       let widgetDomains = getWidgetDomains(widget_name);
       if (widgetDomains) {
-        allowOnTab(tab_id, widgetDomains);
+        allowOnTab(tab_id, widgetDomains, widget_name);
       }
     }
   }
 }
 
+/**
+ * Generates widget objects for surrogate-initiated widgets.
+ *
+ * @param {String} name UNTRUSTED widget name
+ * @param {Object} data UNTRUSTED widget-specific data
+ * @param {String} frame_url containing frame URL, used by some widgets
+ *
+ * @returns {Object|false}
+ */
+function getSurrogateWidget(name, data, frame_url) {
+  const OK = /^[A-Za-z0-9_-]+$/;
+
+  if (name == "Rumble Video Player") {
+    // validate
+    if (!data || !data.args || data.args[0] != "play") {
+      return false;
+    }
+
+    let pub_code = data.pubCode,
+      { video, div } = data.args[1];
+
+    if (!OK.test(pub_code) || !OK.test(video) || !OK.test(div)) {
+      return false;
+    }
+
+    let argsParam = [ "play", { video, div } ];
+
+    let script_url = `https://rumble.com/embedJS/${encodeURIComponent(pub_code)}.${encodeURIComponent(video)}/?url=${encodeURIComponent(frame_url)}&args=${encodeURIComponent(JSON.stringify(argsParam))}`;
+
+    return {
+      name,
+      buttonSelectors: ["div#" + div],
+      scriptSelectors: [`script[src='${CSS.escape(script_url)}']`],
+      replacementButton: {
+        "unblockDomains": ["rumble.com"],
+        "type": 4
+      },
+      directLinkUrl: `https://rumble.com/embed/${encodeURIComponent(pub_code)}.${encodeURIComponent(video)}/`
+    };
+  }
+
+  if (name == "Google reCAPTCHA") {
+    const KNOWN_GRECAPTCHA_SCRIPTS = [
+      "https://www.google.com/recaptcha/",
+      "https://www.recaptcha.net/recaptcha/",
+    ];
+
+    // validate
+    if (!data || !data.domId || !data.scriptUrl) {
+      return false;
+    }
+
+    let dom_id = data.domId,
+      script_url = data.scriptUrl;
+
+    if (!OK.test(dom_id) || !KNOWN_GRECAPTCHA_SCRIPTS.some(s => script_url.startsWith(s))) {
+      return false;
+    }
+
+    return {
+      name,
+      buttonSelectors: ["#" + dom_id],
+      scriptSelectors: [`script[src='${CSS.escape(script_url)}']`],
+      replacementButton: {
+        "unblockDomains": ["www.google.com"],
+        "type": 4
+      }
+    };
+  }
+
+  return false;
+}
+
 // NOTE: sender.tab is available for content script (not popup) messages only
 function dispatcher(request, sender, sendResponse) {
 
@@ -816,6 +1020,7 @@ function dispatcher(request, sender, sendResponse) {
       "allowWidgetOnSite",
       "checkDNT",
       "checkEnabled",
+      "checkFloc",
       "checkLocation",
       "checkWidgetReplacementEnabled",
       "detectFingerprinting",
@@ -825,6 +1030,8 @@ function dispatcher(request, sender, sendResponse) {
       "inspectLocalStorage",
       "supercookieReport",
       "unblockWidget",
+      "widgetFromSurrogate",
+      "widgetReplacementReady",
     ];
     if (!KNOWN_CONTENT_SCRIPT_MESSAGES.includes(request.type)) {
       console.error("Rejected unknown message %o from %s", request, sender.url);
@@ -855,6 +1062,11 @@ function dispatcher(request, sender, sendResponse) {
     let frame_host = window.extractHostFromURL(request.frameUrl),
       tab_host = window.extractHostFromURL(sender.tab.url);
 
+    // CNAME uncloaking
+    if (utils.hasOwn(badger.cnameDomains, frame_host)) {
+      frame_host = badger.cnameDomains[frame_host];
+    }
+
     // Ignore requests that aren't from a third party.
     if (!frame_host || !utils.isThirdPartyDomain(frame_host, tab_host)) {
       return sendResponse();
@@ -872,9 +1084,9 @@ function dispatcher(request, sender, sendResponse) {
     }
     let tab_id = sender.tab.id,
       frame_id = sender.frameId,
-      tabData = badger.tabData.hasOwnProperty(tab_id) && badger.tabData[tab_id],
+      tabData = utils.hasOwn(badger.tabData, tab_id) && badger.tabData[tab_id],
       blockedFrameUrls = tabData &&
-        tabData.blockedFrameUrls.hasOwnProperty(frame_id) &&
+        utils.hasOwn(tabData.blockedFrameUrls, frame_id) &&
         tabData.blockedFrameUrls[frame_id];
     sendResponse(blockedFrameUrls);
     break;
@@ -885,7 +1097,7 @@ function dispatcher(request, sender, sendResponse) {
     if (!widgetDomains) {
       return sendResponse();
     }
-    allowOnTab(sender.tab.id, widgetDomains);
+    allowOnTab(sender.tab.id, widgetDomains, request.widgetName);
     sendResponse();
     break;
   }
@@ -894,7 +1106,7 @@ function dispatcher(request, sender, sendResponse) {
     // record that we always want to activate this widget on this site
     let tab_host = window.extractHostFromURL(sender.tab.url),
       allowedWidgets = badger.getSettings().getItem('widgetSiteAllowlist');
-    if (!allowedWidgets.hasOwnProperty(tab_host)) {
+    if (!utils.hasOwn(allowedWidgets, tab_host)) {
       allowedWidgets[tab_host] = [];
     }
     if (!allowedWidgets[tab_host].includes(request.widgetName)) {
@@ -909,7 +1121,7 @@ function dispatcher(request, sender, sendResponse) {
     let widgetData = badger.widgetList.find(
       widget => widget.name == request.widgetName);
     if (!widgetData ||
-        !widgetData.hasOwnProperty("replacementButton") ||
+        !utils.hasOwn(widgetData, "replacementButton") ||
         !widgetData.replacementButton.imagePath) {
       return sendResponse();
     }
@@ -943,14 +1155,9 @@ function dispatcher(request, sender, sendResponse) {
   }
 
   case "fpReport": {
-    if (Array.isArray(request.data)) {
-      request.data.forEach(function (msg) {
-        recordFingerprinting(sender.tab.id, msg);
-      });
-    } else {
-      recordFingerprinting(sender.tab.id, request.data);
-    }
-
+    request.data.forEach(function (msg) {
+      recordFingerprinting(sender.tab.id, msg);
+    });
     break;
   }
 
@@ -965,6 +1172,11 @@ function dispatcher(request, sender, sendResponse) {
     let tab_host = window.extractHostFromURL(sender.tab.url),
       frame_host = window.extractHostFromURL(request.frameUrl);
 
+    // CNAME uncloaking
+    if (utils.hasOwn(badger.cnameDomains, frame_host)) {
+      frame_host = badger.cnameDomains[frame_host];
+    }
+
     sendResponse(frame_host &&
       badger.isLearningEnabled(sender.tab.id) &&
       badger.isPrivacyBadgerEnabled(tab_host) &&
@@ -988,8 +1200,9 @@ function dispatcher(request, sender, sendResponse) {
       tab_host = window.extractHostFromURL(sender.tab.url);
 
     if (badger.isPrivacyBadgerEnabled(tab_host) &&
-        badger.isWidgetReplacementEnabled()) {
+        badger.getSettings().getItem("socialWidgetReplacementEnabled")) {
       response = getWidgetList(sender.tab.id);
+      response.frameId = sender.frameId;
     }
 
     sendResponse(response);
@@ -1000,11 +1213,11 @@ function dispatcher(request, sender, sendResponse) {
   case "getPopupData": {
     let tab_id = request.tabId;
 
-    if (!badger.tabData.hasOwnProperty(tab_id)) {
+    if (!utils.hasOwn(badger.tabData, tab_id)) {
       sendResponse({
         criticalError: badger.criticalError,
         noTabData: true,
-        seenComic: true,
+        settings: { seenComic: true },
       });
       break;
     }
@@ -1025,12 +1238,12 @@ function dispatcher(request, sender, sendResponse) {
       criticalError: badger.criticalError,
       enabled: badger.isPrivacyBadgerEnabled(tab_host),
       errorText: badger.tabData[tab_id].errorText,
-      learnLocally: badger.getSettings().getItem("learnLocally"),
+      isOnFirstParty: utils.firstPartyProtectionsEnabled(tab_host),
       noTabData: false,
       origins,
-      seenComic: badger.getSettings().getItem("seenComic"),
+      settings: badger.getSettings().getItemClones(),
       showLearningPrompt: badger.getPrivateSettings().getItem("showLearningPrompt"),
-      showNonTrackingDomains: badger.getSettings().getItem("showNonTrackingDomains"),
+      showWebRtcDeprecation: !!badger.getPrivateSettings().getItem("showWebRtcDeprecation"),
       tabHost: tab_host,
       tabId: tab_id,
       tabUrl: request.tabUrl,
@@ -1053,7 +1266,7 @@ function dispatcher(request, sender, sendResponse) {
 
     sendResponse({
       cookieblocked,
-      isWidgetReplacementEnabled: badger.isWidgetReplacementEnabled(),
+      legacyWebRtcProtectionUser: badger.getPrivateSettings().getItem("legacyWebRtcProtectionUser"),
       origins,
       settings: badger.getSettings().getItemClones(),
       webRTCAvailable: badger.webRTCAvailable,
@@ -1070,6 +1283,7 @@ function dispatcher(request, sender, sendResponse) {
         console.error(err);
       }
       badger.blockWidgetDomains();
+      badger.blockPanopticlickDomains();
       sendResponse();
     });
     // indicate this is an async response to chrome.runtime.onMessage
@@ -1094,6 +1308,13 @@ function dispatcher(request, sender, sendResponse) {
     break;
   }
 
+  case "seenWebRtcDeprecation": {
+    badger.getPrivateSettings().setItem("showWebRtcDeprecation", false);
+    badger.updateBadge(request.tabId);
+    sendResponse();
+    break;
+  }
+
   case "activateOnSite": {
     badger.enablePrivacyBadgerForOrigin(request.tabHost);
     badger.updateIcon(request.tabId, request.tabUrl);
@@ -1120,8 +1341,8 @@ function dispatcher(request, sender, sendResponse) {
     chrome.storage.sync.get("disabledSites", function (store) {
       if (chrome.runtime.lastError) {
         sendResponse({success: false, message: chrome.runtime.lastError.message});
-      } else if (store.hasOwnProperty("disabledSites")) {
-        let disabledSites = _.union(
+      } else if (utils.hasOwn(store, "disabledSites")) {
+        let disabledSites = utils.concatUniq(
           badger.getDisabledSites(),
           store.disabledSites
         );
@@ -1168,8 +1389,8 @@ function dispatcher(request, sender, sendResponse) {
     break;
   }
 
+  // called when the user manually sets a slider on the options page
   case "saveOptionsToggle": {
-    // called when the user manually sets a slider on the options page
     badger.saveAction(request.action, request.origin);
     sendResponse({
       origins: badger.storage.getTrackingDomains()
@@ -1177,21 +1398,25 @@ function dispatcher(request, sender, sendResponse) {
     break;
   }
 
+  // called when a user imports data exported from another Badger instance
   case "mergeUserData": {
-    // called when a user uploads data exported from another Badger instance
     badger.mergeUserData(request.data);
     badger.blockWidgetDomains();
-    sendResponse({
-      disabledSites: badger.getDisabledSites(),
-      origins: badger.storage.getTrackingDomains(),
-    });
+    badger.setPrivacyOverrides();
+    badger.initDeprecations();
+
+    // for exports from older Privacy Badger versions:
+    // fix yellowlist getting out of sync, remove non-tracking domains, etc.
+    badger.runMigrations();
+
+    sendResponse();
     break;
   }
 
   case "updateSettings": {
     const settings = badger.getSettings();
     for (let key in request.data) {
-      if (badger.defaultSettings.hasOwnProperty(key)) {
+      if (utils.hasOwn(badger.defaultSettings, key)) {
         settings.setItem(key, request.data[key]);
       } else {
         console.error("Unknown Badger setting:", key);
@@ -1201,6 +1426,12 @@ function dispatcher(request, sender, sendResponse) {
     break;
   }
 
+  case "setPrivacyOverrides": {
+    badger.setPrivacyOverrides();
+    sendResponse();
+    break;
+  }
+
   case "updateBadge": {
     let tab_id = request.tab_id;
     badger.updateBadge(tab_id);
@@ -1226,6 +1457,23 @@ function dispatcher(request, sender, sendResponse) {
     break;
   }
 
+  case "removeWidgetSiteExceptions": {
+    let settings = badger.getSettings(),
+      allowedWidgets = settings.getItem("widgetSiteAllowlist");
+
+    for (let domain of request.domains) {
+      delete allowedWidgets[domain];
+    }
+
+    settings.setItem("widgetSiteAllowlist", allowedWidgets);
+
+    sendResponse({
+      widgetSiteAllowlist: allowedWidgets
+    });
+
+    break;
+  }
+
   case "removeOrigin": {
     badger.storage.getStore("snitch_map").deleteItem(request.origin);
     badger.storage.getStore("action_map").deleteItem(request.origin);
@@ -1247,8 +1495,9 @@ function dispatcher(request, sender, sendResponse) {
     break;
   }
 
+  // called from contentscripts/dnt.js
+  // to check if it should set DNT on Navigator
   case "checkDNT": {
-    // called from contentscripts/dnt.js to check if we should enable it
     sendResponse(
       badger.isDNTSignalEnabled()
       && badger.isPrivacyBadgerEnabled(
@@ -1258,6 +1507,73 @@ function dispatcher(request, sender, sendResponse) {
     break;
   }
 
+  // called from contentscripts/floc.js
+  // to check if we should disable document.interestCohort
+  case "checkFloc": {
+    sendResponse(badger.isFlocOverwriteEnabled());
+    break;
+  }
+
+  // proxies surrogate script-initiated widget replacement messages
+  // from one content script to another
+  case "widgetFromSurrogate": {
+    let tab_host = window.extractHostFromURL(sender.tab.url);
+    if (!badger.isPrivacyBadgerEnabled(tab_host)) {
+      break;
+    }
+
+    // NOTE: request.name and request.data are not to be trusted
+    // https://github.com/w3c/webextensions/issues/57#issuecomment-914491167
+    // https://github.com/w3c/webextensions/issues/78#issuecomment-921058071
+    let widget = getSurrogateWidget(request.name, request.data, request.frameUrl);
+
+    if (!widget) {
+      break;
+    }
+
+    let frameData = badger.getFrameData(sender.tab.id, sender.frameId);
+
+    if (frameData.widgetReplacementReady) {
+      // message the content script if it's ready for messages
+      chrome.tabs.sendMessage(sender.tab.id, {
+        type: "replaceWidgetFromSurrogate",
+        frameId: sender.frameId,
+        widget
+      });
+    } else {
+      // save the message for later otherwise
+      if (!utils.hasOwn(frameData, "widgetQueue")) {
+        frameData.widgetQueue = [];
+      }
+      frameData.widgetQueue.push(widget);
+    }
+
+    break;
+  }
+
+  // marks the widget replacement script in a certain tab/frame
+  // ready for messages; sends any previously saved messages
+  case "widgetReplacementReady": {
+    let frameData = badger.getFrameData(sender.tab.id, sender.frameId);
+    if (!frameData) {
+      break;
+    }
+
+    frameData.widgetReplacementReady = true;
+    if (frameData.widgetQueue) {
+      for (let widget of frameData.widgetQueue) {
+        chrome.tabs.sendMessage(sender.tab.id, {
+          type: "replaceWidgetFromSurrogate",
+          frameId: sender.frameId,
+          widget
+        });
+      }
+      delete frameData.widgetQueue;
+    }
+
+    break;
+  }
+
   }
 }
 
@@ -1267,14 +1583,19 @@ function startListeners() {
 
   chrome.webRequest.onBeforeRequest.addListener(onBeforeRequest, {urls: ["http://*/*", "https://*/*"]}, ["blocking"]);
 
+  chrome.webRequest.onBeforeRequest.addListener(filterWarRequests, {
+    urls: chrome.runtime.getManifest().web_accessible_resources.map(
+      path => chrome.runtime.getURL(path))
+  }, ["blocking"]);
+
   let extraInfoSpec = ['requestHeaders', 'blocking'];
-  if (chrome.webRequest.OnBeforeSendHeadersOptions.hasOwnProperty('EXTRA_HEADERS')) {
+  if (utils.hasOwn(chrome.webRequest.OnBeforeSendHeadersOptions, 'EXTRA_HEADERS')) {
     extraInfoSpec.push('extraHeaders');
   }
   chrome.webRequest.onBeforeSendHeaders.addListener(onBeforeSendHeaders, {urls: ["http://*/*", "https://*/*"]}, extraInfoSpec);
 
   extraInfoSpec = ['responseHeaders', 'blocking'];
-  if (chrome.webRequest.OnHeadersReceivedOptions.hasOwnProperty('EXTRA_HEADERS')) {
+  if (utils.hasOwn(chrome.webRequest.OnHeadersReceivedOptions, 'EXTRA_HEADERS')) {
     extraInfoSpec.push('extraHeaders');
   }
   chrome.webRequest.onHeadersReceived.addListener(onHeadersReceived, {urls: ["<all_urls>"]}, extraInfoSpec);
diff --git a/src/lib/basedomain.js b/src/lib/basedomain.js
index 32e87686..763bd8eb 100644
--- a/src/lib/basedomain.js
+++ b/src/lib/basedomain.js
@@ -4,7 +4,7 @@
  * Available under MIT license <http://mths.be/mit>
  */
 
-/* globals punycode:false */
+(function () {
 
 const RE_V4 = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|0x[0-9a-f][0-9a-f]?|0[0-7]{3})\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|0x[0-9a-f][0-9a-f]?|0[0-7]{3})$/i;
 const RE_V4_HEX = /^0x([0-9a-f]{8})$/i;
@@ -14,6 +14,10 @@ const RE_V4inV6 = /(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2
 const RE_BAD_CHARACTERS = /([^0-9a-f:])/i;
 const RE_BAD_ADDRESS = /([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]$)/i;
 
+function hasOwn(obj, prop) {
+  return Object.prototype.hasOwnProperty.call(obj, prop);
+}
+
 function isIPv4(address) {
   if (RE_V4.test(address)) {
     return true;
@@ -71,50 +75,47 @@ function isIPv6(address) {
 /**
  * Returns base domain for specified host based on Public Suffix List.
  * @param {String} hostname The name of the host to get the base domain for
+ * @returns {String} The base domain
  */
-function getBaseDomain(/**String*/ hostname) /**String*/ {
-  // remove trailing dot(s)
-  hostname = hostname.replace(/\.+$/, '');
+function getBaseDomain(hostname) {
+  // remove trailing dot
+  if (hostname.charAt(hostname.length - 1) == ".") {
+    hostname = hostname.slice(0, -1);
+  }
 
   // return IP address untouched
   if (isIPv6(hostname) || isIPv4(hostname)) {
     return hostname;
   }
 
-  // decode punycode if exists
-  if (hostname.indexOf('xn--') >= 0) {
-    hostname = punycode.toUnicode(hostname);
-  }
-
   // search through PSL
-  var prevDomains = [];
-  var curDomain = hostname;
-  var nextDot = curDomain.indexOf('.');
-  var tld = 0;
+  let tld = 0,
+    prevDomains = [],
+    cur_domain = hostname,
+    next_dot = cur_domain.indexOf('.');
 
   for (;;) {
-    var suffix = window.publicSuffixes[curDomain];
-    if (typeof suffix != 'undefined') {
-      tld = suffix;
+    if (hasOwn(window.publicSuffixes, cur_domain)) {
+      tld = window.publicSuffixes[cur_domain];
       break;
     }
 
-    if (nextDot < 0) {
+    if (next_dot < 0) {
       tld = 1;
       break;
     }
 
-    prevDomains.push(curDomain.substring(0,nextDot));
-    curDomain = curDomain.substring(nextDot+1);
-    nextDot = curDomain.indexOf('.');
+    prevDomains.push(cur_domain.slice(0, next_dot));
+    cur_domain = cur_domain.slice(next_dot + 1);
+    next_dot = cur_domain.indexOf('.');
   }
 
   while (tld > 0 && prevDomains.length > 0) {
-    curDomain = prevDomains.pop() + '.' + curDomain;
+    cur_domain = prevDomains.pop() + '.' + cur_domain;
     tld--;
   }
 
-  return curDomain;
+  return cur_domain;
 }
 
 /**
@@ -155,7 +156,7 @@ function ipAddressToNumber(ip) {
  * @param {String} domain The domain to check
  * @returns {Boolean}
  */
-function isPrivateDomain(domain) { // eslint-disable-line no-unused-vars
+function isPrivateDomain(domain) {
   // Check for localhost match.
   if (domain === "localhost") {
     return true;
@@ -171,7 +172,7 @@ function isPrivateDomain(domain) { // eslint-disable-line no-unused-vars
   };
   for (var ip in privateIpMasks) {
     // Ignore object properties.
-    if (!privateIpMasks.hasOwnProperty(ip)) {
+    if (!hasOwn(privateIpMasks, ip)) {
       continue;
     }
 
@@ -193,27 +194,42 @@ function isPrivateDomain(domain) { // eslint-disable-line no-unused-vars
  * Checks whether a request is third party for the given document, uses
  * information from the public suffix list to determine the effective domain
  * name for the document.
- * @param {String} requestHost The host of the 3rd party request
- * @param {String} documentHost The host of the document
+ *
+ * @param {String} request_host The request host
+ * @param {String} site_host The document (first-party) host
+ *
+ * @returns {Boolean}
  */
-function isThirdParty(/**String*/ requestHost, /**String*/ documentHost) { // eslint-disable-line no-unused-vars
-  // Remove trailing dots
-  requestHost = requestHost.replace(/\.+$/, "");
-  documentHost = documentHost.replace(/\.+$/, "");
+function isThirdParty(request_host, site_host) {
+  if (!request_host || !site_host) {
+    return true;
+  }
+
+  // remove trailing dot
+  if (request_host.charAt(request_host.length - 1) == ".") {
+    request_host = request_host.slice(0, -1);
+  }
+  if (site_host.charAt(site_host.length - 1) == ".") {
+    site_host = site_host.slice(0, -1);
+  }
+
+  if (request_host == site_host) {
+    return false;
+  }
 
   // Extract domain name - leave IP addresses unchanged, otherwise leave only base domain
-  var documentDomain = getBaseDomain(documentHost);
-  if (requestHost.length > documentDomain.length) {
-    return (requestHost.substr(requestHost.length - documentDomain.length - 1) != "." + documentDomain);
+  let site_base = getBaseDomain(site_host);
+  if (request_host.length > site_base.length) {
+    return !request_host.endsWith("." + site_base);
   } else {
-    return (requestHost != documentDomain);
+    return (request_host != site_base);
   }
 }
 
 /**
  * Extracts host name from a URL.
  */
-function extractHostFromURL(/**String*/ url) { // eslint-disable-line no-unused-vars
+function extractHostFromURL(url) {
   if (url && extractHostFromURL._lastURL == url) {
     return extractHostFromURL._lastDomain;
   }
@@ -222,6 +238,7 @@ function extractHostFromURL(/**String*/ url) { // eslint-disable-line no-unused-
   try {
     host = new URI(url).host;
   } catch (e) {
+    console.error("Failed to extract host from %s\n", url, e);
     // Keep the empty string for invalid URIs.
   }
 
@@ -236,7 +253,7 @@ function extractHostFromURL(/**String*/ url) { // eslint-disable-line no-unused-
  * TODO: Make sure the parsing actually works the same as nsStandardURL.
  * @constructor
  */
-function URI(/**String*/ spec) {
+function URI(spec) {
   this.spec = spec;
   this._schemeEnd = spec.indexOf(":");
   if (this._schemeEnd < 0) {
@@ -292,14 +309,6 @@ URI.prototype = {
   get host() {
     return this.spec.substring(this._hostStart, this._hostEnd);
   },
-  get asciiHost() {
-    var host = this.host;
-    if (/^[\x00-\x7F]+$/.test(host)) { // eslint-disable-line no-control-regex
-      return host;
-    } else {
-      return punycode.toASCII(host);
-    }
-  },
   get hostPort() {
     return this.spec.substring(this._hostPortStart, this._hostPortEnd);
   },
@@ -317,3 +326,15 @@ URI.prototype = {
     return this.spec.substring(0, this._hostPortEnd);
   }
 };
+
+// "exports"
+window.extractHostFromURL = extractHostFromURL;
+window.getBaseDomain = getBaseDomain;
+window.ipAddressToNumber = ipAddressToNumber;
+window.isIPv4 = isIPv4;
+window.isIPv6 = isIPv6;
+window.isPrivateDomain = isPrivateDomain;
+window.isThirdParty = isThirdParty;
+window.URI = URI;
+
+}());
diff --git a/src/lib/i18n.js b/src/lib/i18n.js
index 11ef67c6..65ec6bba 100644
--- a/src/lib/i18n.js
+++ b/src/lib/i18n.js
@@ -1,18 +1,21 @@
 /*
- * This file is part of Adblock Plus <http://adblockplus.org/>,
+ * This file is part of Privacy Badger <https://privacybadger.org/>
+ * Copyright (C) 2014 Electronic Frontier Foundation
+ *
+ * Derived from Adblock Plus
  * Copyright (C) 2006-2013 Eyeo GmbH
  *
- * Adblock Plus is free software: you can redistribute it and/or modify
+ * Privacy Badger is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 3 as
  * published by the Free Software Foundation.
  *
- * Adblock Plus is distributed in the hope that it will be useful,
+ * Privacy Badger is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>.
+ * along with Privacy Badger.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 (function () {
@@ -40,7 +43,7 @@ function setTextDirection() {
   }
 
   // https://www.w3.org/International/questions/qa-scripts#examples
-  // https://developer.chrome.com/webstore/i18n?csw=1#localeTable
+  // https://developer.chrome.com/docs/webstore/i18n/?csw=1#choosing-locales-to-support
   // TODO duplicated in src/js/webrequest.js
   const RTL_LOCALES = ['ar', 'he', 'fa'];
   if (!RTL_LOCALES.includes(LOCALE)) {
@@ -53,7 +56,7 @@ function setTextDirection() {
   // popup page
   if (ON_POPUP) {
     // fix floats
-    ['#privacyBadgerHeader img', '#header-image-stack', '#version'].forEach((selector) => {
+    ['#badger-header-logo', '#header-image-stack', '#header-image-stack a', '#header-image-stack img'].forEach((selector) => {
       toggle_css_value(selector, "float", "left", "right");
     });
     ['#fittslaw', '#options', '#help', '#share', '.overlay_close'].forEach((selector) => {
@@ -75,7 +78,7 @@ function setTextDirection() {
     document.body.appendChild(css);
 
     // fix floats
-    ['.btn-silo', '.btn-silo div', '#allowlist-form > div > div > div'].forEach((selector) => {
+    ['.btn-silo', '.btn-silo div', '#allowlist-form > div > div > div', '#widget-site-exceptions-select-div', '#widget-site-exceptions-remove-button'].forEach((selector) => {
       toggle_css_value(selector, "float", "left", "right");
     });
   }
@@ -100,11 +103,12 @@ function loadI18nStrings() {
     el[prop] = chrome.i18n.getMessage(key, placeholders);
   }
 
-  // also replace alt, placeholder and title attributes
+  // also replace alt, placeholder, title and aria-label attributes
   const ATTRS = [
     'alt',
     'placeholder',
     'title',
+    'aria-label',
   ];
 
   // get all the elements that contain one or more of these attributes
diff --git a/src/lib/options.js b/src/lib/options.js
index 8e6bec74..f8fd0122 100644
--- a/src/lib/options.js
+++ b/src/lib/options.js
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2018 Electronic Frontier Foundation
  *
  * Privacy Badger is free software: you can redistribute it and/or modify
@@ -57,8 +57,12 @@ function getOriginsArray(origins, filter_text, type_filter, status_filter, show_
         if (!value.startsWith("user")) {
           return false;
         }
-      } else {
-        if (value != type_filter) {
+      } else if (type_filter == "dnt") {
+        if (value != "dnt") {
+          return false;
+        }
+      } else if (type_filter == "-dnt") {
+        if (value == "dnt") {
           return false;
         }
       }
diff --git a/src/lib/publicSuffixList.js b/src/lib/publicSuffixList.js
index 548b7688..8748a66b 100644
--- a/src/lib/publicSuffixList.js
+++ b/src/lib/publicSuffixList.js
@@ -107,6 +107,7 @@ window.publicSuffixes = {
   "act.edu.au": 1,
   "ad.jp": 1,
   "adachi.tokyo.jp": 1,
+  "adimo.co.uk": 1,
   "adm.br": 1,
   "adobeaemcloud.com": 1,
   "adobeaemcloud.net": 1,
@@ -124,6 +125,7 @@ window.publicSuffixes = {
   "aeroclub.aero": 1,
   "aerodrome.aero": 1,
   "aeroport.fr": 1,
+  "affinitylottery.org.uk": 1,
   "afjord.no": 1,
   "africa.com": 1,
   "ag.it": 1,
@@ -137,7 +139,6 @@ window.publicSuffixes = {
   "agric.za": 1,
   "agriculture.museum": 1,
   "agrigento.it": 1,
-  "agrinet.tn": 1,
   "agro.bo": 1,
   "agro.pl": 1,
   "aguni.okinawa.jp": 1,
@@ -195,7 +196,7 @@ window.publicSuffixes = {
   "alessandria.it": 1,
   "alesund.no": 1,
   "algard.no": 1,
-  "algorithmia.com": 2,
+  "alp1.ae.flow.ch": 1,
   "alpha-myqnapcloud.com": 1,
   "alpha.bounty-full.com": 1,
   "alstahaug.no": 1,
@@ -224,6 +225,7 @@ window.publicSuffixes = {
   "ami.ibaraki.jp": 1,
   "amli.no": 1,
   "amot.no": 1,
+  "amscompute.com": 1,
   "amsterdam.museum": 1,
   "amsw.nl": 1,
   "amusement.aero": 1,
@@ -243,7 +245,6 @@ window.publicSuffixes = {
   "andria-trani-barletta.it": 1,
   "andriabarlettatrani.it": 1,
   "andriatranibarletta.it": 1,
-  "and\u00f8y.no": 1,
   "anjo.aichi.jp": 1,
   "ann-arbor.mi.us": 1,
   "annaka.gunma.jp": 1,
@@ -284,12 +285,13 @@ window.publicSuffixes = {
   "app.render.com": 1,
   "appchizi.com": 1,
   "appengine.flow.ch": 1,
-  "applicationcloud.io": 1,
   "applinzi.com": 1,
   "apps.fbsbx.com": 1,
   "apps.lair.io": 1,
+  "appspacehosted.com": 1,
+  "appspaceusercontent.com": 1,
   "appspot.com": 1,
-  "aprendemas.cl": 1,
+  "appudo.net": 1,
   "aq.it": 1,
   "aquarium.museum": 1,
   "aquila.it": 1,
@@ -362,7 +364,6 @@ window.publicSuffixes = {
   "askim.no": 1,
   "askoy.no": 1,
   "askvoll.no": 1,
-  "ask\u00f8y.no": 1,
   "asmatart.museum": 1,
   "asn.au": 1,
   "asn.lv": 1,
@@ -396,6 +397,7 @@ window.publicSuffixes = {
   "at.vg": 1,
   "atami.shizuoka.jp": 1,
   "ath.cx": 1,
+  "atl.jelastic.vps-host.net": 1,
   "atlanta.museum": 1,
   "atm.pl": 1,
   "ato.br": 1,
@@ -408,12 +410,13 @@ window.publicSuffixes = {
   "aure.no": 1,
   "aurland.no": 1,
   "aurskog-holand.no": 1,
-  "aurskog-h\u00f8land.no": 1,
   "aus.basketball": 1,
   "austevoll.no": 1,
   "austin.museum": 1,
   "australia.museum": 1,
   "austrheim.no": 1,
+  "authgear-staging.com": 1,
+  "authgearapps.com": 1,
   "author.aero": 1,
   "auto.pl": 1,
   "automotive.museum": 1,
@@ -421,13 +424,13 @@ window.publicSuffixes = {
   "av.tr": 1,
   "avellino.it": 1,
   "averoy.no": 1,
-  "aver\u00f8y.no": 1,
   "aviation.museum": 1,
   "avocat.fr": 1,
   "avocat.pro": 1,
   "avoues.fr": 1,
   "awaji.hyogo.jp": 1,
   "awdev.ca": 2,
+  "awsglobalaccelerator.com": 1,
   "awsmppl.com": 1,
   "axis.museum": 1,
   "aya.miyazaki.jp": 1,
@@ -440,8 +443,8 @@ window.publicSuffixes = {
   "azumino.nagano.jp": 1,
   "azure-mobile.net": 1,
   "azurecontainer.io": 2,
+  "azurestaticapps.net": 1,
   "azurewebsites.net": 1,
-  "a\u00e9roport.ci": 1,
   "b-data.io": 1,
   "b.bg": 1,
   "b.br": 1,
@@ -470,7 +473,6 @@ window.publicSuffixes = {
   "ballooning.aero": 1,
   "balsan-sudtirol.it": 1,
   "balsan-suedtirol.it": 1,
-  "balsan-s\u00fcdtirol.it": 1,
   "balsan.it": 1,
   "balsfjord.no": 1,
   "baltimore.museum": 1,
@@ -507,6 +509,7 @@ window.publicSuffixes = {
   "barsy.org": 1,
   "barsy.pro": 1,
   "barsy.pub": 1,
+  "barsy.ro": 1,
   "barsy.shop": 1,
   "barsy.site": 1,
   "barsy.support": 1,
@@ -537,7 +540,6 @@ window.publicSuffixes = {
   "be.eu.org": 1,
   "be.gy": 1,
   "bearalvahki.no": 1,
-  "bearalv\u00e1hki.no": 1,
   "beardu.no": 1,
   "beauxarts.museum": 1,
   "bedzin.pl": 1,
@@ -557,11 +559,12 @@ window.publicSuffixes = {
   "bergen.no": 1,
   "berkeley.museum": 1,
   "berlevag.no": 1,
-  "berlev\u00e5g.no": 1,
   "berlin.museum": 1,
   "bern.museum": 1,
   "beskidy.pl": 1,
+  "bet.ar": 1,
   "beta.bounty-full.com": 1,
+  "beta.tailscale.net": 1,
   "betainabox.com": 1,
   "better-than.tv": 1,
   "bg.eu.org": 1,
@@ -571,6 +574,7 @@ window.publicSuffixes = {
   "bialowieza.pl": 1,
   "bialystok.pl": 1,
   "bib.br": 1,
+  "bib.ve": 1,
   "bibai.hokkaido.jp": 1,
   "bible.museum": 1,
   "biei.hokkaido.jp": 1,
@@ -578,7 +582,6 @@ window.publicSuffixes = {
   "biella.it": 1,
   "bieszczady.pl": 1,
   "bievat.no": 1,
-  "biev\u00e1t.no": 1,
   "bifuka.hokkaido.jp": 1,
   "bihoro.hokkaido.jp": 1,
   "bilbao.museum": 1,
@@ -592,6 +595,7 @@ window.publicSuffixes = {
   "birkenes.no": 1,
   "birthplace.museum": 1,
   "bitbridge.net": 1,
+  "bitbucket.io": 1,
   "biz.at": 1,
   "biz.az": 1,
   "biz.bb": 1,
@@ -605,6 +609,7 @@ window.publicSuffixes = {
   "biz.ls": 1,
   "biz.mv": 1,
   "biz.mw": 1,
+  "biz.my": 1,
   "biz.ni": 1,
   "biz.nr": 1,
   "biz.pk": 1,
@@ -620,7 +625,6 @@ window.publicSuffixes = {
   "bizen.okayama.jp": 1,
   "bj.cn": 1,
   "bjarkoy.no": 1,
-  "bjark\u00f8y.no": 1,
   "bjerkreim.no": 1,
   "bjugn.no": 1,
   "bl.it": 1,
@@ -633,6 +637,7 @@ window.publicSuffixes = {
   "blogdns.com": 1,
   "blogdns.net": 1,
   "blogdns.org": 1,
+  "bloger.id": 1,
   "blogsite.org": 1,
   "blogsite.xyz": 1,
   "blogspot.ae": 1,
@@ -711,6 +716,7 @@ window.publicSuffixes = {
   "blogspot.vn": 1,
   "blogsyte.com": 1,
   "bloxcms.com": 1,
+  "bluebite.io": 1,
   "bmd.br": 1,
   "bmoattachments.org": 1,
   "bn.it": 1,
@@ -720,7 +726,6 @@ window.publicSuffixes = {
   "bo.telemark.no": 1,
   "boavista.br": 1,
   "bodo.no": 1,
-  "bod\u00f8.no": 1,
   "bokn.no": 1,
   "boldlygoingnowhere.org": 1,
   "boleslawiec.pl": 1,
@@ -731,6 +736,7 @@ window.publicSuffixes = {
   "bolzano.it": 1,
   "bomlo.no": 1,
   "bonn.museum": 1,
+  "bookonline.app": 1,
   "boomla.net": 1,
   "boston.museum": 1,
   "botanical.museum": 1,
@@ -739,12 +745,11 @@ window.publicSuffixes = {
   "botany.museum": 1,
   "bounceme.net": 1,
   "bounty-full.com": 1,
+  "boutir.com": 1,
   "boxfuse.io": 1,
   "bozen-sudtirol.it": 1,
   "bozen-suedtirol.it": 1,
-  "bozen-s\u00fcdtirol.it": 1,
   "bozen.it": 1,
-  "bpl.biz": 1,
   "bplaced.com": 1,
   "bplaced.de": 1,
   "bplaced.net": 1,
@@ -773,8 +778,6 @@ window.publicSuffixes = {
   "bruxelles.museum": 1,
   "bryansk.su": 1,
   "bryne.no": 1,
-  "br\u00f8nn\u00f8y.no": 1,
-  "br\u00f8nn\u00f8ysund.no": 1,
   "bs.it": 1,
   "bsb.br": 1,
   "bss.design": 1,
@@ -786,7 +789,6 @@ window.publicSuffixes = {
   "bukhara.su": 1,
   "bulsan-sudtirol.it": 1,
   "bulsan-suedtirol.it": 1,
-  "bulsan-s\u00fcdtirol.it": 1,
   "bulsan.it": 1,
   "bungoono.oita.jp": 1,
   "bungotakada.oita.jp": 1,
@@ -804,17 +806,6 @@ window.publicSuffixes = {
   "bytom.pl": 1,
   "bz.it": 1,
   "bzz.dapps.earth": 2,
-  "b\u00e1hcavuotna.no": 1,
-  "b\u00e1hccavuotna.no": 1,
-  "b\u00e1id\u00e1r.no": 1,
-  "b\u00e1jddar.no": 1,
-  "b\u00e1l\u00e1t.no": 1,
-  "b\u00e5d\u00e5ddj\u00e5.no": 1,
-  "b\u00e5tsfjord.no": 1,
-  "b\u00e6rum.no": 1,
-  "b\u00f8.nordland.no": 1,
-  "b\u00f8.telemark.no": 1,
-  "b\u00f8mlo.no": 1,
   "c.bg": 1,
   "c.cdn77.org": 1,
   "c.la": 1,
@@ -824,11 +815,13 @@ window.publicSuffixes = {
   "ca.eu.org": 1,
   "ca.it": 1,
   "ca.na": 1,
+  "ca.reclaim.cloud": 1,
   "ca.us": 1,
   "caa.aero": 1,
   "caa.li": 1,
   "cable-modem.org": 1,
   "cadaques.museum": 1,
+  "cafjs.com": 1,
   "cagliari.it": 1,
   "cahcesuolo.no": 1,
   "cal.it": 1,
@@ -847,6 +840,7 @@ window.publicSuffixes = {
   "can.museum": 1,
   "canada.museum": 1,
   "capebreton.museum": 1,
+  "caracal.mythic-beasts.com": 1,
   "carbonia-iglesias.it": 1,
   "carboniaiglesias.it": 1,
   "cargo.aero": 1,
@@ -929,6 +923,8 @@ window.publicSuffixes = {
   "cc.wy.us": 1,
   "cci.fr": 1,
   "cd.eu.org": 1,
+  "cdn-edges.net": 1,
+  "cdn.prod.atlassian-dev.net": 1,
   "cdn77-ssl.net": 1,
   "ce.gov.br": 1,
   "ce.it": 1,
@@ -936,15 +932,15 @@ window.publicSuffixes = {
   "cechire.com": 1,
   "celtic.museum": 1,
   "center.museum": 1,
+  "centralus.azurestaticapps.net": 1,
   "certification.aero": 1,
   "certmgr.org": 1,
   "cesena-forli.it": 1,
-  "cesena-forl\u00ec.it": 1,
   "cesenaforli.it": 1,
-  "cesenaforl\u00ec.it": 1,
   "ch.eu.org": 1,
   "ch.it": 1,
   "ch.tc": 1,
+  "ch.trendhosting.cloud": 1,
   "chambagri.fr": 1,
   "championship.aero": 1,
   "channelsdvr.net": 1,
@@ -1028,12 +1024,18 @@ window.publicSuffixes = {
   "ck.ua": 1,
   "cl.it": 1,
   "clan.rip": 1,
+  "clerk.app": 1,
+  "clerkstage.app": 1,
   "cleverapps.io": 1,
-  "clic2000.net": 1,
+  "clicketcloud.com": 1,
+  "clickrising.net": 1,
   "clinton.museum": 1,
   "clock.museum": 1,
+  "cloud-fr1.unispace.io": 1,
   "cloud.fedoraproject.org": 1,
   "cloud.goog": 1,
+  "cloud.interhostsolutions.be": 1,
+  "cloud.jelastic.open.tim.it": 1,
   "cloud.metacentrum.cz": 2,
   "cloud66.ws": 1,
   "cloud66.zone": 1,
@@ -1043,8 +1045,7 @@ window.publicSuffixes = {
   "cloudapps.digital": 1,
   "cloudcontrolapp.com": 1,
   "cloudcontrolled.com": 1,
-  "cloudeity.net": 1,
-  "cloudera.site": 1,
+  "cloudera.site": 2,
   "cloudfront.net": 1,
   "cloudfunctions.net": 1,
   "cloudjiffy.net": 1,
@@ -1059,6 +1060,7 @@ window.publicSuffixes = {
   "cloudns.pro": 1,
   "cloudns.pw": 1,
   "cloudns.us": 1,
+  "cloudsite.builders": 1,
   "cloudycluster.net": 1,
   "club.aero": 1,
   "club.tw": 1,
@@ -1151,6 +1153,7 @@ window.publicSuffixes = {
   "co.zw": 1,
   "coal.museum": 1,
   "coastaldefence.museum": 1,
+  "code.run": 2,
   "codespot.com": 1,
   "cody.museum": 1,
   "cog.mi.us": 1,
@@ -1189,6 +1192,7 @@ window.publicSuffixes = {
   "com.cn": 1,
   "com.co": 1,
   "com.cu": 1,
+  "com.cv": 1,
   "com.cw": 1,
   "com.cy": 1,
   "com.de": 1,
@@ -1298,6 +1302,7 @@ window.publicSuffixes = {
   "com.vn": 1,
   "com.vu": 1,
   "com.ws": 1,
+  "com.ye": 1,
   "com.zm": 1,
   "commune.am": 1,
   "communication.museum": 1,
@@ -1312,7 +1317,6 @@ window.publicSuffixes = {
   "compute.estate": 2,
   "computer.museum": 1,
   "computerhistory.museum": 1,
-  "comunica\u00e7\u00f5es.museum": 1,
   "conf.au": 1,
   "conf.lv": 1,
   "conf.se": 1,
@@ -1326,6 +1330,7 @@ window.publicSuffixes = {
   "contemporaryart.museum": 1,
   "control.aero": 1,
   "convent.museum": 1,
+  "coop.ar": 1,
   "coop.br": 1,
   "coop.ht": 1,
   "coop.km": 1,
@@ -1338,7 +1343,6 @@ window.publicSuffixes = {
   "copenhagen.museum": 1,
   "copro.uk": 1,
   "corporation.museum": 1,
-  "correios-e-telecomunica\u00e7\u00f5es.museum": 1,
   "corvette.museum": 1,
   "cosenza.it": 1,
   "costume.museum": 1,
@@ -1365,6 +1369,7 @@ window.publicSuffixes = {
   "crotone.it": 1,
   "cryptonomic.net": 2,
   "cs.it": 1,
+  "cs.keliweb.cloud": 1,
   "csx.cc": 1,
   "ct.it": 1,
   "ct.us": 1,
@@ -1383,7 +1388,6 @@ window.publicSuffixes = {
   "cust.testing.thingdust.io": 1,
   "custom.metacentrum.cz": 1,
   "customer-oci.com": 2,
-  "customer.enonic.io": 1,
   "customer.mythic-beasts.com": 1,
   "customer.speedpartner.de": 1,
   "cv.ua": 1,
@@ -1423,13 +1427,13 @@ window.publicSuffixes = {
   "dattorelay.com": 1,
   "dattoweb.com": 1,
   "davvenjarga.no": 1,
-  "davvenj\u00e1rga.no": 1,
   "davvesiida.no": 1,
   "dazaifu.fukuoka.jp": 1,
   "dc.us": 1,
   "dd-dns.de": 1,
   "ddns.me": 1,
   "ddns.net": 1,
+  "ddns5.com": 1,
   "ddnsfree.com": 1,
   "ddnsgeek.com": 1,
   "ddnsking.com": 1,
@@ -1443,23 +1447,27 @@ window.publicSuffixes = {
   "de.gt": 1,
   "de.ls": 1,
   "de.md": 1,
+  "de.trendhosting.cloud": 1,
   "de.us": 1,
   "deatnu.no": 1,
   "debian.net": 1,
   "decorativearts.museum": 1,
   "dedyn.io": 1,
   "def.br": 1,
-  "defense.tn": 1,
   "definima.io": 1,
   "definima.net": 1,
   "delaware.museum": 1,
   "dell-ogliastra.it": 1,
   "dellogliastra.it": 1,
   "delmenhorst.museum": 1,
+  "demo.datacenter.fi": 1,
+  "demo.datadetect.com": 1,
   "demo.jelastic.com": 1,
   "democracia.bo": 1,
   "demon.nl": 1,
   "denmark.museum": 1,
+  "deno-staging.dev": 1,
+  "deno.dev": 1,
   "dep.no": 1,
   "deporte.bo": 1,
   "depot.museum": 1,
@@ -1474,13 +1482,18 @@ window.publicSuffixes = {
   "dev.br": 1,
   "dev.static.land": 1,
   "dev.vu": 1,
+  "devcdnaccesso.com": 2,
+  "developer.app": 2,
   "development.run": 1,
   "devices.resinstaging.io": 1,
   "df.gov.br": 1,
   "df.leg.br": 1,
   "dgca.aero": 1,
   "dh.bytemark.co.uk": 1,
+  "diadem.cloud": 1,
   "dielddanuorri.no": 1,
+  "digitaloceanspaces.com": 2,
+  "diher.solutions": 2,
   "dinosaur.museum": 1,
   "direct.quickconnect.to": 1,
   "discourse.group": 1,
@@ -1537,9 +1550,9 @@ window.publicSuffixes = {
   "draydns.de": 1,
   "dreamhosters.com": 1,
   "drobak.no": 1,
+  "drr.ac": 1,
   "drud.io": 1,
   "drud.us": 1,
-  "dr\u00f8bak.no": 1,
   "dscloud.biz": 1,
   "dscloud.me": 1,
   "dscloud.mobi": 1,
@@ -1595,8 +1608,6 @@ window.publicSuffixes = {
   "dynv6.net": 1,
   "dynvpn.de": 1,
   "dyroy.no": 1,
-  "dyr\u00f8y.no": 1,
-  "d\u00f8nna.no": 1,
   "e.bg": 1,
   "e.se": 1,
   "e12.ve": 1,
@@ -1604,7 +1615,9 @@ window.publicSuffixes = {
   "e4.cz": 1,
   "east-kazakhstan.su": 1,
   "eastafrica.museum": 1,
+  "eastasia.azurestaticapps.net": 1,
   "eastcoast.museum": 1,
+  "eastus2.azurestaticapps.net": 1,
   "eating-organic.net": 1,
   "eaton.mi.us": 1,
   "ebetsu.hokkaido.jp": 1,
@@ -1615,6 +1628,7 @@ window.publicSuffixes = {
   "ecn.br": 1,
   "eco.br": 1,
   "ecologia.bo": 1,
+  "ecommerce-shop.pl": 1,
   "economia.bo": 1,
   "ed.ao": 1,
   "ed.ci": 1,
@@ -1622,7 +1636,9 @@ window.publicSuffixes = {
   "ed.jp": 1,
   "ed.pw": 1,
   "edgeapp.net": 1,
+  "edgecompute.app": 1,
   "edgestack.me": 1,
+  "editorx.io": 1,
   "edogawa.tokyo.jp": 1,
   "edu.ac": 1,
   "edu.af": 1,
@@ -1645,6 +1661,7 @@ window.publicSuffixes = {
   "edu.cn": 1,
   "edu.co": 1,
   "edu.cu": 1,
+  "edu.cv": 1,
   "edu.cw": 1,
   "edu.dm": 1,
   "edu.do": 1,
@@ -1726,6 +1743,7 @@ window.publicSuffixes = {
   "edu.sa": 1,
   "edu.sb": 1,
   "edu.sc": 1,
+  "edu.scot": 1,
   "edu.sd": 1,
   "edu.sg": 1,
   "edu.sl": 1,
@@ -1748,14 +1766,16 @@ window.publicSuffixes = {
   "edu.vn": 1,
   "edu.vu": 1,
   "edu.ws": 1,
+  "edu.ye": 1,
   "edu.za": 1,
   "edu.zm": 1,
   "education.museum": 1,
   "educational.museum": 1,
   "educator.aero": 1,
   "edugit.org": 1,
-  "edunet.tn": 1,
   "ee.eu.org": 1,
+  "eero-stage.online": 1,
+  "eero.online": 1,
   "egersund.no": 1,
   "egyptian.museum": 1,
   "ehime.jp": 1,
@@ -1773,6 +1793,8 @@ window.publicSuffixes = {
   "elb.amazonaws.com.cn": 2,
   "elblag.pl": 1,
   "elburg.museum": 1,
+  "elementor.cloud": 1,
+  "elementor.cool": 1,
   "elk.pl": 1,
   "elvendrell.museum": 1,
   "elverum.no": 1,
@@ -1803,8 +1825,8 @@ window.publicSuffixes = {
   "england.museum": 1,
   "eniwa.hokkaido.jp": 1,
   "enna.it": 1,
-  "enonic.io": 1,
   "ens.tn": 1,
+  "enscaled.sg": 1,
   "ent.platform.sh": 1,
   "enterprisecloud.nu": 1,
   "entertainment.aero": 1,
@@ -1817,6 +1839,7 @@ window.publicSuffixes = {
   "erimo.hokkaido.jp": 1,
   "erotica.hu": 1,
   "erotika.hu": 1,
+  "es-1.axarnet.cloud": 1,
   "es.ax": 1,
   "es.eu.org": 1,
   "es.gov.br": 1,
@@ -1852,10 +1875,11 @@ window.publicSuffixes = {
   "eu.meteorapp.com": 1,
   "eu.org": 1,
   "eu.platform.sh": 1,
+  "eu.pythonanywhere.com": 1,
   "eun.eg": 1,
+  "eurodir.ru": 1,
   "evenassi.no": 1,
   "evenes.no": 1,
-  "even\u00e1\u0161\u0161i.no": 1,
   "evje-og-hornnes.no": 1,
   "ex.futurecms.at": 2,
   "ex.ortsinfo.at": 2,
@@ -1865,6 +1889,7 @@ window.publicSuffixes = {
   "exnet.su": 1,
   "experts-comptables.fr": 1,
   "express.aero": 1,
+  "ezproxy.kuleuven.be": 1,
   "f.bg": 1,
   "f.se": 1,
   "fam.pk": 1,
@@ -1879,8 +1904,10 @@ window.publicSuffixes = {
   "farmers.museum": 1,
   "farmstead.museum": 1,
   "farsund.no": 1,
+  "fastblog.net": 1,
   "fastly-terrarium.com": 1,
   "fastlylb.net": 1,
+  "faststacks.net": 1,
   "fastvps-server.com": 1,
   "fastvps.host": 1,
   "fastvps.site": 1,
@@ -1895,14 +1922,15 @@ window.publicSuffixes = {
   "fedorainfracloud.org": 1,
   "fedorapeople.org": 1,
   "feira.br": 1,
+  "fentiger.mythic-beasts.com": 1,
   "fermo.it": 1,
   "ferrara.it": 1,
   "feste-ip.net": 1,
   "fet.no": 1,
   "fetsund.no": 1,
   "fg.it": 1,
+  "fh-muenster.io": 1,
   "fh.se": 1,
-  "fhapp.xyz": 1,
   "fhs.no": 1,
   "fhsk.se": 1,
   "fhv.se": 1,
@@ -1930,13 +1958,13 @@ window.publicSuffixes = {
   "finearts.museum": 1,
   "finland.museum": 1,
   "finnoy.no": 1,
-  "finn\u00f8y.no": 1,
   "firebaseapp.com": 1,
   "firenet.ch": 2,
   "firenze.it": 1,
   "firewall-gateway.com": 1,
   "firewall-gateway.de": 1,
   "firewall-gateway.net": 1,
+  "fireweb.app": 1,
   "firm.co": 1,
   "firm.dk": 1,
   "firm.ht": 1,
@@ -1954,7 +1982,9 @@ window.publicSuffixes = {
   "fla.no": 1,
   "flakstad.no": 1,
   "flanders.museum": 1,
+  "flap.id": 1,
   "flatanger.no": 1,
+  "fldrv.com": 1,
   "flekkefjord.no": 1,
   "flesberg.no": 1,
   "flight.aero": 1,
@@ -1964,11 +1994,9 @@ window.publicSuffixes = {
   "florida.museum": 1,
   "floripa.br": 1,
   "floro.no": 1,
-  "flor\u00f8.no": 1,
   "flt.cloud.muni.cz": 1,
   "fly.dev": 1,
   "flynnhosting.net": 1,
-  "fl\u00e5.no": 1,
   "fm.br": 1,
   "fm.it": 1,
   "fm.no": 1,
@@ -1989,12 +2017,11 @@ window.publicSuffixes = {
   "for.sale": 1,
   "force.museum": 1,
   "forde.no": 1,
+  "forgeblocks.com": 1,
   "forgot.her.name": 1,
   "forgot.his.name": 1,
   "forli-cesena.it": 1,
   "forlicesena.it": 1,
-  "forl\u00ec-cesena.it": 1,
-  "forl\u00eccesena.it": 1,
   "forsand.no": 1,
   "fortal.br": 1,
   "forte.id": 1,
@@ -2006,8 +2033,12 @@ window.publicSuffixes = {
   "fot.br": 1,
   "foundation.museum": 1,
   "foz.br": 1,
+  "fr-1.paas.massivegrid.net": 1,
   "fr.eu.org": 1,
   "fr.it": 1,
+  "fra1-de.cloudjiffy.net": 1,
+  "framer.app": 1,
+  "framercanvas.com": 1,
   "frana.no": 1,
   "francaise.museum": 1,
   "frankfurt.museum": 1,
@@ -2022,6 +2053,7 @@ window.publicSuffixes = {
   "freeddns.us": 1,
   "freedesktop.org": 1,
   "freemasonry.museum": 1,
+  "freemyip.com": 1,
   "freesite.host": 1,
   "freetls.fastly.net": 1,
   "frei.no": 1,
@@ -2095,11 +2127,12 @@ window.publicSuffixes = {
   "from-wv.com": 1,
   "from-wy.com": 1,
   "from.hr": 1,
+  "from.marketing": 1,
+  "from.work": 1,
   "frosinone.it": 1,
   "frosta.no": 1,
   "froya.no": 1,
-  "fr\u00e6na.no": 1,
-  "fr\u00f8ya.no": 1,
+  "frusky.de": 2,
   "fst.br": 1,
   "ftpaccess.cc": 1,
   "fuchu.hiroshima.jp": 1,
@@ -2163,7 +2196,6 @@ window.publicSuffixes = {
   "fvg.it": 1,
   "fylkesbibl.no": 1,
   "fyresdal.no": 1,
-  "f\u00f8rde.no": 1,
   "g.bg": 1,
   "g.se": 1,
   "g.vbrplsbx.io": 1,
@@ -2182,10 +2214,10 @@ window.publicSuffixes = {
   "gangaviika.no": 1,
   "gangwon.kr": 1,
   "garden.museum": 1,
+  "gateway.dev": 2,
   "gateway.museum": 1,
   "gaular.no": 1,
   "gausdal.no": 1,
-  "gb.com": 1,
   "gb.net": 1,
   "gc.ca": 1,
   "gd.cn": 1,
@@ -2218,13 +2250,13 @@ window.publicSuffixes = {
   "gets-it.net": 1,
   "gg.ax": 1,
   "ggf.br": 1,
+  "ghost.io": 1,
   "giehtavuoatna.no": 1,
   "giessen.museum": 1,
   "gifu.gifu.jp": 1,
   "gifu.jp": 1,
   "giize.com": 1,
   "gildeskal.no": 1,
-  "gildesk\u00e5l.no": 1,
   "ginan.gifu.jp": 1,
   "ginowan.okinawa.jp": 1,
   "ginoza.okinawa.jp": 1,
@@ -2233,6 +2265,7 @@ window.publicSuffixes = {
   "git-repos.de": 1,
   "gitapp.si": 1,
   "github.io": 1,
+  "githubpreview.dev": 1,
   "githubusercontent.com": 1,
   "gitlab.io": 1,
   "gitpage.si": 1,
@@ -2241,7 +2274,6 @@ window.publicSuffixes = {
   "gjerstad.no": 1,
   "gjesdal.no": 1,
   "gjovik.no": 1,
-  "gj\u00f8vik.no": 1,
   "glas.museum": 1,
   "glass.museum": 1,
   "gleeze.com": 1,
@@ -2313,6 +2345,7 @@ window.publicSuffixes = {
   "goto.nagasaki.jp": 1,
   "gotpantheon.com": 1,
   "gotsu.shimane.jp": 1,
+  "goupile.fr": 1,
   "gouv.bj": 1,
   "gouv.ci": 1,
   "gouv.fr": 1,
@@ -2429,7 +2462,6 @@ window.publicSuffixes = {
   "gov.sl": 1,
   "gov.so": 1,
   "gov.ss": 1,
-  "gov.st": 1,
   "gov.sx": 1,
   "gov.sy": 1,
   "gov.tj": 1,
@@ -2446,6 +2478,7 @@ window.publicSuffixes = {
   "gov.ve": 1,
   "gov.vn": 1,
   "gov.ws": 1,
+  "gov.ye": 1,
   "gov.za": 1,
   "gov.zm": 1,
   "gov.zw": 1,
@@ -2522,9 +2555,6 @@ window.publicSuffixes = {
   "gyeongnam.kr": 1,
   "gyokuto.kumamoto.jp": 1,
   "gz.cn": 1,
-  "g\u00e1ivuotna.no": 1,
-  "g\u00e1ls\u00e1.no": 1,
-  "g\u00e1\u014bgaviika.no": 1,
   "h.bg": 1,
   "h.se": 1,
   "ha.cn": 1,
@@ -2624,8 +2654,6 @@ window.publicSuffixes = {
   "herokussl.com": 1,
   "heroy.more-og-romsdal.no": 1,
   "heroy.nordland.no": 1,
-  "her\u00f8y.m\u00f8re-og-romsdal.no": 1,
-  "her\u00f8y.nordland.no": 1,
   "hi.cn": 1,
   "hi.us": 1,
   "hicam.net": 1,
@@ -2714,12 +2742,14 @@ window.publicSuffixes = {
   "hk.org": 1,
   "hl.cn": 1,
   "hl.no": 1,
+  "hlx.live": 1,
+  "hlx.page": 1,
+  "hlx3.page": 1,
   "hm.no": 1,
   "hn.cn": 1,
   "hobby-site.com": 1,
   "hobby-site.org": 1,
   "hobol.no": 1,
-  "hob\u00f8l.no": 1,
   "hof.no": 1,
   "hofu.yamaguchi.jp": 1,
   "hokkaido.jp": 1,
@@ -2731,7 +2761,6 @@ window.publicSuffixes = {
   "hole.no": 1,
   "holmestrand.no": 1,
   "holtalen.no": 1,
-  "holt\u00e5len.no": 1,
   "home-webserver.de": 1,
   "home.dyndns.org": 1,
   "homebuilt.aero": 1,
@@ -2746,6 +2775,7 @@ window.publicSuffixes = {
   "homeoffice.gov.uk": 1,
   "homesecuritymac.com": 1,
   "homesecuritypc.com": 1,
+  "homesklep.pl": 1,
   "homeunix.com": 1,
   "homeunix.net": 1,
   "homeunix.org": 1,
@@ -2763,20 +2793,25 @@ window.publicSuffixes = {
   "horology.museum": 1,
   "horonobe.hokkaido.jp": 1,
   "horten.no": 1,
+  "hosp.uk": 1,
   "hostedpi.com": 1,
   "hosting-cluster.nl": 1,
   "hosting.myjino.ru": 2,
+  "hosting.ovh.net": 2,
   "hostyhosting.io": 1,
   "hotel.hu": 1,
   "hotel.lk": 1,
   "hotel.tz": 1,
+  "hotelwithflight.com": 1,
   "house.museum": 1,
   "hoyanger.no": 1,
   "hoylandet.no": 1,
   "hr.eu.org": 1,
+  "hra.health": 1,
   "hs.kr": 1,
   "hs.run": 1,
   "hs.zone": 1,
+  "httpbin.org": 1,
   "hu.com": 1,
   "hu.eu.org": 1,
   "hu.net": 1,
@@ -2789,15 +2824,6 @@ window.publicSuffixes = {
   "hyogo.jp": 1,
   "hyuga.miyazaki.jp": 1,
   "hzc.io": 1,
-  "h\u00e1bmer.no": 1,
-  "h\u00e1mm\u00e1rfeasta.no": 1,
-  "h\u00e1pmir.no": 1,
-  "h\u00e4kkinen.fi": 1,
-  "h\u00e5.no": 1,
-  "h\u00e6gebostad.no": 1,
-  "h\u00f8nefoss.no": 1,
-  "h\u00f8yanger.no": 1,
-  "h\u00f8ylandet.no": 1,
   "i.bg": 1,
   "i.ng": 1,
   "i.ph": 1,
@@ -2823,12 +2849,15 @@ window.publicSuffixes = {
   "ichinomiya.chiba.jp": 1,
   "ichinoseki.iwate.jp": 1,
   "id.au": 1,
+  "id.forgerock.io": 1,
   "id.ir": 1,
   "id.lv": 1,
   "id.ly": 1,
+  "id.repl.co": 1,
   "id.us": 1,
   "ide.kyoto.jp": 1,
   "idf.il": 1,
+  "idnblogger.com": 1,
   "idrett.no": 1,
   "idv.hk": 1,
   "idv.tw": 1,
@@ -2912,13 +2941,13 @@ window.publicSuffixes = {
   "ind.kw": 1,
   "ind.tn": 1,
   "inderoy.no": 1,
-  "inder\u00f8y.no": 1,
   "indian.museum": 1,
   "indiana.museum": 1,
   "indianapolis.museum": 1,
   "indianmarket.museum": 1,
   "indie.porn": 1,
   "indigena.bo": 1,
+  "indowapblog.com": 1,
   "industria.bo": 1,
   "ine.kyoto.jp": 1,
   "inf.br": 1,
@@ -2962,6 +2991,8 @@ window.publicSuffixes = {
   "ing.pa": 1,
   "ingatlan.hu": 1,
   "ino.kochi.jp": 1,
+  "instance.datadetect.com": 1,
+  "instances.spawn.cc": 1,
   "instantcloud.cn": 1,
   "insurance.aero": 1,
   "int.ar": 1,
@@ -2969,6 +3000,7 @@ window.publicSuffixes = {
   "int.bo": 1,
   "int.ci": 1,
   "int.co": 1,
+  "int.cv": 1,
   "int.eu.org": 1,
   "int.is": 1,
   "int.la": 1,
@@ -2990,6 +3022,8 @@ window.publicSuffixes = {
   "inzai.chiba.jp": 1,
   "io.kg": 1,
   "iobb.net": 1,
+  "iopsys.se": 1,
+  "ip.linodeusercontent.com": 1,
   "ip6.arpa": 1,
   "ipifony.net": 1,
   "iraq.museum": 1,
@@ -3102,12 +3136,15 @@ window.publicSuffixes = {
   "isumi.chiba.jp": 1,
   "it.ao": 1,
   "it.eu.org": 1,
+  "it1.eur.aruba.jenv-aruba.cloud": 1,
+  "it1.jenv-aruba.cloud": 1,
   "itabashi.tokyo.jp": 1,
   "itako.ibaraki.jp": 1,
   "itakura.gunma.jp": 1,
   "itami.hyogo.jp": 1,
   "itano.tokushima.jp": 1,
   "itayanagi.aomori.jp": 1,
+  "itcouldbewor.se": 1,
   "ito.shizuoka.jp": 1,
   "itoigawa.niigata.jp": 1,
   "itoman.okinawa.jp": 1,
@@ -3146,21 +3183,27 @@ window.publicSuffixes = {
   "j.bg": 1,
   "j.layershift.co.uk": 1,
   "j.scaleforce.com.cy": 1,
+  "j.scaleforce.net": 1,
   "jab.br": 1,
   "jambyl.su": 1,
   "jamison.museum": 1,
   "jampa.br": 1,
   "jan-mayen.no": 1,
   "jaworzno.pl": 1,
+  "jc.neen.it": 1,
+  "jcloud-ver-jpc.ik-server.com": 1,
   "jcloud.ik-server.com": 1,
+  "jcloud.kz": 1,
   "jdevcloud.com": 1,
   "jdf.br": 1,
+  "jed.wafaicloud.com": 1,
   "jefferson.museum": 1,
   "jeju.kr": 1,
   "jelastic.dogado.eu": 1,
   "jelastic.regruhosting.ru": 1,
   "jelastic.saveincloud.net": 1,
   "jelastic.team": 1,
+  "jelastic.tsukaeru.net": 1,
   "jele.cloud": 1,
   "jele.club": 1,
   "jele.host": 1,
@@ -3180,6 +3223,8 @@ window.publicSuffixes = {
   "jinsekikogen.hiroshima.jp": 1,
   "jl.cn": 1,
   "jls-sto1.elastx.net": 1,
+  "jls-sto2.elastx.net": 1,
+  "jls-sto3.elastx.net": 1,
   "jm": 2,
   "joboji.iwate.jp": 1,
   "jobs.tt": 1,
@@ -3192,6 +3237,7 @@ window.publicSuffixes = {
   "jor.br": 1,
   "jorpeland.no": 1,
   "joso.ibaraki.jp": 1,
+  "jotelulu.cloud": 1,
   "journal.aero": 1,
   "journalism.museum": 1,
   "journalist.aero": 1,
@@ -3205,6 +3251,7 @@ window.publicSuffixes = {
   "js.cn": 1,
   "js.org": 1,
   "js.wpenginepowered.com": 1,
+  "ju.mp": 1,
   "judaica.museum": 1,
   "judygarland.museum": 1,
   "juedisches.museum": 1,
@@ -3212,8 +3259,6 @@ window.publicSuffixes = {
   "jur.pro": 1,
   "jus.br": 1,
   "jx.cn": 1,
-  "j\u00f8lster.no": 1,
-  "j\u00f8rpeland.no": 1,
   "k.bg": 1,
   "k.se": 1,
   "k12.ak.us": 1,
@@ -3361,7 +3406,6 @@ window.publicSuffixes = {
   "kariya.aichi.jp": 1,
   "karlsoy.no": 1,
   "karmoy.no": 1,
-  "karm\u00f8y.no": 1,
   "karpacz.pl": 1,
   "kartuzy.pl": 1,
   "karuizawa.nagano.jp": 1,
@@ -3427,6 +3471,7 @@ window.publicSuffixes = {
   "kazo.saitama.jp": 1,
   "kazuno.akita.jp": 1,
   "keisen.fukuoka.jp": 1,
+  "keliweb.cloud": 1,
   "kembuchi.hokkaido.jp": 1,
   "kep.tr": 1,
   "kepno.pl": 1,
@@ -3454,6 +3499,7 @@ window.publicSuffixes = {
   "kikonai.hokkaido.jp": 1,
   "kikuchi.kumamoto.jp": 1,
   "kikugawa.shizuoka.jp": 1,
+  "kilatiron.com": 1,
   "kimino.wakayama.jp": 1,
   "kimitsu.chiba.jp": 1,
   "kimobetsu.hokkaido.jp": 1,
@@ -3503,7 +3549,6 @@ window.publicSuffixes = {
   "klabu.no": 1,
   "klepp.no": 1,
   "klodzko.pl": 1,
-  "kl\u00e6bu.no": 1,
   "km.ua": 1,
   "kmpsp.gov.pl": 1,
   "knightpoint.systems": 1,
@@ -3577,17 +3622,15 @@ window.publicSuffixes = {
   "kr.ua": 1,
   "kraanghke.no": 1,
   "kragero.no": 1,
-  "krager\u00f8.no": 1,
   "krakow.pl": 1,
   "krasnik.pl": 1,
   "krasnodar.su": 1,
+  "krellian.net": 1,
   "kristiansand.no": 1,
   "kristiansund.no": 1,
   "krodsherad.no": 1,
   "krokstadelva.no": 1,
   "krym.ua": 1,
-  "kr\u00e5anghke.no": 1,
-  "kr\u00f8dsherad.no": 1,
   "ks.ua": 1,
   "ks.us": 1,
   "kuchinotsu.nagasaki.jp": 1,
@@ -3598,6 +3641,7 @@ window.publicSuffixes = {
   "kuju.oita.jp": 1,
   "kujukuri.chiba.jp": 1,
   "kuki.saitama.jp": 1,
+  "kuleuven.cloud": 1,
   "kumagaya.saitama.jp": 1,
   "kumakogen.ehime.jp": 1,
   "kumamoto.jp": 1,
@@ -3652,9 +3696,6 @@ window.publicSuffixes = {
   "kvinnherad.no": 1,
   "kviteseid.no": 1,
   "kvitsoy.no": 1,
-  "kvits\u00f8y.no": 1,
-  "kv\u00e6fjord.no": 1,
-  "kv\u00e6nangen.no": 1,
   "kwp.gov.pl": 1,
   "kwpsp.gov.pl": 1,
   "ky.us": 1,
@@ -3667,8 +3708,6 @@ window.publicSuffixes = {
   "kyowa.akita.jp": 1,
   "kyowa.hokkaido.jp": 1,
   "kyuragi.saga.jp": 1,
-  "k\u00e1r\u00e1\u0161johka.no": 1,
-  "k\u00e5fjord.no": 1,
   "l-o-g-i-n.de": 1,
   "l.bg": 1,
   "l.se": 1,
@@ -3687,7 +3726,6 @@ window.publicSuffixes = {
   "landes.museum": 1,
   "landing.myjino.ru": 2,
   "langevag.no": 1,
-  "langev\u00e5g.no": 1,
   "lans.museum": 1,
   "lapy.pl": 1,
   "laquila.it": 1,
@@ -3704,12 +3742,12 @@ window.publicSuffixes = {
   "lazio.it": 1,
   "lc.it": 1,
   "lcl.dev": 2,
+  "lclstage.dev": 2,
   "lcube-server.de": 1,
   "le.it": 1,
   "leadpages.co": 1,
   "leangaviika.no": 1,
   "leasing.aero": 1,
-  "lea\u014bgaviika.no": 1,
   "lebesby.no": 1,
   "lebork.pl": 1,
   "lebtimnetz.de": 1,
@@ -3808,8 +3846,6 @@ window.publicSuffixes = {
   "lincoln.museum": 1,
   "lindas.no": 1,
   "lindesnes.no": 1,
-  "lind\u00e5s.no": 1,
-  "linkitools.space": 1,
   "linkyard-cloud.ch": 1,
   "linkyard.cloud": 1,
   "linodeobjects.com": 2,
@@ -3817,10 +3853,10 @@ window.publicSuffixes = {
   "living.museum": 1,
   "livinghistory.museum": 1,
   "livorno.it": 1,
+  "lk3.ru": 1,
   "ln.cn": 1,
   "lo.it": 1,
   "loabat.no": 1,
-  "loab\u00e1t.no": 1,
   "localhistory.museum": 1,
   "localhost.daplie.me": 1,
   "localzone.xyz": 1,
@@ -3836,12 +3872,16 @@ window.publicSuffixes = {
   "logistics.aero": 1,
   "logoip.com": 1,
   "logoip.de": 1,
+  "lohmus.me": 1,
   "lolipop.io": 1,
   "lom.it": 1,
   "lom.no": 1,
   "lombardia.it": 1,
   "lombardy.it": 1,
   "lomza.pl": 1,
+  "lon-1.paas.massivegrid.net": 1,
+  "lon-2.paas.massivegrid.net": 1,
+  "lon.wafaicloud.com": 1,
   "london.cloudapps.digital": 1,
   "london.museum": 1,
   "londrina.br": 1,
@@ -3881,7 +3921,6 @@ window.publicSuffixes = {
   "lund.no": 1,
   "lunner.no": 1,
   "luroy.no": 1,
-  "lur\u00f8y.no": 1,
   "luster.no": 1,
   "lutsk.ua": 1,
   "luxembourg.museum": 1,
@@ -3892,12 +3931,6 @@ window.publicSuffixes = {
   "lyngdal.no": 1,
   "lyngen.no": 1,
   "lynx.mythic-beasts.com": 1,
-  "l\u00e1hppi.no": 1,
-  "l\u00e4ns.museum": 1,
-  "l\u00e6rdal.no": 1,
-  "l\u00f8dingen.no": 1,
-  "l\u00f8renskog.no": 1,
-  "l\u00f8ten.no": 1,
   "m.bg": 1,
   "m.se": 1,
   "ma.gov.br": 1,
@@ -3912,6 +3945,7 @@ window.publicSuffixes = {
   "maebashi.gunma.jp": 1,
   "magazine.aero": 1,
   "magentosite.cloud": 2,
+  "magnet.page": 1,
   "maibara.shiga.jp": 1,
   "mail.pl": 1,
   "maintenance.aero": 1,
@@ -3981,6 +4015,7 @@ window.publicSuffixes = {
   "matta-varjjat.no": 1,
   "mayfirst.info": 1,
   "mayfirst.org": 1,
+  "mazeplay.com": 1,
   "mazowsze.pl": 1,
   "mazury.pl": 1,
   "mb.ca": 1,
@@ -3988,14 +4023,17 @@ window.publicSuffixes = {
   "mc.ax": 1,
   "mc.eu.org": 1,
   "mc.it": 1,
+  "mcdir.me": 1,
   "mcdir.ru": 1,
   "mcpe.me": 1,
+  "mcpre.ru": 1,
   "md.ci": 1,
   "md.us": 1,
   "me.eu.org": 1,
   "me.it": 1,
   "me.ke": 1,
   "me.so": 1,
+  "me.ss": 1,
   "me.tc": 1,
   "me.tz": 1,
   "me.uk": 1,
@@ -4018,6 +4056,8 @@ window.publicSuffixes = {
   "media.hu": 1,
   "media.museum": 1,
   "media.pl": 1,
+  "mediatech.by": 1,
+  "mediatech.dev": 1,
   "medical.museum": 1,
   "medicina.bo": 1,
   "medio-campidano.it": 1,
@@ -4030,17 +4070,16 @@ window.publicSuffixes = {
   "meinforum.net": 1,
   "meiwa.gunma.jp": 1,
   "meiwa.mie.jp": 1,
+  "mel.cloudlets.com.au": 1,
   "meland.no": 1,
   "meldal.no": 1,
   "melhus.no": 1,
   "meloy.no": 1,
-  "mel\u00f8y.no": 1,
   "members.linode.com": 1,
   "memorial.museum": 1,
   "memset.net": 1,
   "meraker.no": 1,
   "merseine.nu": 1,
-  "mer\u00e5ker.no": 1,
   "mesaverde.museum": 1,
   "messina.it": 1,
   "meteorapp.com": 1,
@@ -4132,6 +4171,7 @@ window.publicSuffixes = {
   "mil.uy": 1,
   "mil.vc": 1,
   "mil.ve": 1,
+  "mil.ye": 1,
   "mil.za": 1,
   "mil.zm": 1,
   "mil.zw": 1,
@@ -4171,6 +4211,7 @@ window.publicSuffixes = {
   "miners.museum": 1,
   "mining.museum": 1,
   "miniserver.com": 1,
+  "minisite.ms": 1,
   "minnesota.museum": 1,
   "mino.gifu.jp": 1,
   "minobu.yamanashi.jp": 1,
@@ -4179,6 +4220,8 @@ window.publicSuffixes = {
   "minowa.nagano.jp": 1,
   "mintere.site": 1,
   "mircloud.host": 1,
+  "mircloud.ru": 1,
+  "mircloud.us": 1,
   "misaki.okayama.jp": 1,
   "misaki.osaka.jp": 1,
   "misasa.tottori.jp": 1,
@@ -4226,7 +4269,6 @@ window.publicSuffixes = {
   "mizunami.gifu.jp": 1,
   "mizusawa.iwate.jp": 1,
   "mjondalen.no": 1,
-  "mj\u00f8ndalen.no": 1,
   "mk.eu.org": 1,
   "mk.ua": 1,
   "mlbfan.org": 1,
@@ -4248,6 +4290,7 @@ window.publicSuffixes = {
   "mobi.tt": 1,
   "mobi.tz": 1,
   "mochizuki.nagano.jp": 1,
+  "mock.pstmn.io": 1,
   "mod.gi": 1,
   "modalen.no": 1,
   "modelling.aero": 1,
@@ -4286,7 +4329,6 @@ window.publicSuffixes = {
   "moscow.museum": 1,
   "moseushi.hokkaido.jp": 1,
   "mosjoen.no": 1,
-  "mosj\u00f8en.no": 1,
   "moskenes.no": 1,
   "moss.no": 1,
   "mosvik.no": 1,
@@ -4297,7 +4339,6 @@ window.publicSuffixes = {
   "motoyama.kochi.jp": 1,
   "movimiento.bo": 1,
   "mozilla-iot.org": 1,
-  "mo\u00e5reke.no": 1,
   "mp.br": 1,
   "mr.no": 1,
   "mragowo.pl": 1,
@@ -4324,7 +4365,6 @@ window.publicSuffixes = {
   "muncie.museum": 1,
   "muni.il": 1,
   "muosat.no": 1,
-  "muos\u00e1t.no": 1,
   "mup.gov.pl": 1,
   "murakami.niigata.jp": 1,
   "murata.miyagi.jp": 1,
@@ -4349,6 +4389,7 @@ window.publicSuffixes = {
   "musica.bo": 1,
   "mutsu.aomori.jp": 1,
   "mutsuzawa.chiba.jp": 1,
+  "mutual.ar": 1,
   "mw.gov.pl": 1,
   "mx.na": 1,
   "my-firewall.org": 1,
@@ -4361,6 +4402,7 @@ window.publicSuffixes = {
   "myactivedirectory.com": 1,
   "myasustor.com": 1,
   "mycd.eu": 1,
+  "mycloud.by": 1,
   "mydatto.com": 1,
   "mydatto.net": 1,
   "myddns.rocks": 1,
@@ -4394,15 +4436,30 @@ window.publicSuffixes = {
   "mysecuritycamera.net": 1,
   "mysecuritycamera.org": 1,
   "myshopblocks.com": 1,
+  "myshopify.com": 1,
+  "myspreadshop.at": 1,
+  "myspreadshop.be": 1,
+  "myspreadshop.ca": 1,
+  "myspreadshop.ch": 1,
+  "myspreadshop.co.uk": 1,
+  "myspreadshop.com": 1,
+  "myspreadshop.com.au": 1,
+  "myspreadshop.de": 1,
+  "myspreadshop.dk": 1,
+  "myspreadshop.es": 1,
+  "myspreadshop.fi": 1,
+  "myspreadshop.fr": 1,
+  "myspreadshop.ie": 1,
+  "myspreadshop.it": 1,
+  "myspreadshop.net": 1,
+  "myspreadshop.nl": 1,
+  "myspreadshop.no": 1,
+  "myspreadshop.pl": 1,
+  "myspreadshop.se": 1,
   "mytis.ru": 1,
   "mytuleap.com": 1,
   "myvnc.com": 1,
   "mywire.org": 1,
-  "m\u00e1latvuopmi.no": 1,
-  "m\u00e1tta-v\u00e1rjjat.no": 1,
-  "m\u00e5lselv.no": 1,
-  "m\u00e5s\u00f8y.no": 1,
-  "m\u0101ori.nz": 1,
   "n.bg": 1,
   "n.se": 1,
   "n4t.co": 1,
@@ -4538,7 +4595,6 @@ window.publicSuffixes = {
   "nb.ca": 1,
   "nc.tr": 1,
   "nc.us": 1,
-  "nctu.me": 1,
   "nd.us": 1,
   "ne.jp": 1,
   "ne.ke": 1,
@@ -4694,6 +4750,7 @@ window.publicSuffixes = {
   "net.vn": 1,
   "net.vu": 1,
   "net.ws": 1,
+  "net.ye": 1,
   "net.za": 1,
   "net.zm": 1,
   "netlify.app": 1,
@@ -4709,10 +4766,7 @@ window.publicSuffixes = {
   "nf.ca": 1,
   "nflfan.org": 1,
   "nfshost.com": 1,
-  "ng.city": 1,
   "ng.eu.org": 1,
-  "ng.ink": 1,
-  "ng.school": 1,
   "ngo.lk": 1,
   "ngo.ng": 1,
   "ngo.ph": 1,
@@ -4771,6 +4825,7 @@ window.publicSuffixes = {
   "nittedal.no": 1,
   "niyodogawa.kochi.jp": 1,
   "nj.us": 1,
+  "njs.jelastic.vps-host.net": 1,
   "nl.ca": 1,
   "nl.ci": 1,
   "nl.eu.org": 1,
@@ -4793,6 +4848,7 @@ window.publicSuffixes = {
   "nodebalancer.linode.com": 2,
   "nodum.co": 1,
   "nodum.io": 1,
+  "nog.community": 1,
   "nogata.fukuoka.jp": 1,
   "nogi.tochigi.jp": 1,
   "noheji.aomori.jp": 1,
@@ -4801,57 +4857,34 @@ window.publicSuffixes = {
   "noip.me": 1,
   "noip.us": 1,
   "nom.ad": 1,
-  "nom.ae": 1,
-  "nom.af": 1,
   "nom.ag": 1,
-  "nom.ai": 1,
-  "nom.al": 1,
   "nom.br": 2,
-  "nom.bz": 1,
-  "nom.cl": 1,
   "nom.co": 1,
   "nom.es": 1,
   "nom.fr": 1,
-  "nom.gd": 1,
-  "nom.ge": 1,
-  "nom.gl": 1,
-  "nom.gt": 1,
-  "nom.hn": 1,
-  "nom.im": 1,
-  "nom.ke": 1,
   "nom.km": 1,
-  "nom.li": 1,
-  "nom.lv": 1,
   "nom.mg": 1,
-  "nom.mk": 1,
   "nom.nc": 1,
   "nom.ni": 1,
-  "nom.nu": 1,
   "nom.pa": 1,
   "nom.pe": 1,
   "nom.pl": 1,
-  "nom.pw": 1,
-  "nom.qa": 1,
   "nom.re": 1,
   "nom.ro": 1,
-  "nom.rs": 1,
-  "nom.si": 1,
-  "nom.st": 1,
-  "nom.tj": 1,
   "nom.tm": 1,
-  "nom.ug": 1,
-  "nom.uy": 1,
-  "nom.vc": 1,
-  "nom.vg": 1,
+  "nom.ve": 1,
   "nom.za": 1,
   "nombre.bo": 1,
+  "nome.cv": 1,
   "nome.pt": 1,
   "nomi.ishikawa.jp": 1,
   "nonoichi.ishikawa.jp": 1,
+  "noop.app": 1,
   "nord-aurdal.no": 1,
   "nord-fron.no": 1,
   "nord-odal.no": 1,
   "norddal.no": 1,
+  "nordeste-idc.saveincloud.net": 1,
   "nordkapp.no": 1,
   "nordre-land.no": 1,
   "nordreisa.no": 1,
@@ -4859,12 +4892,14 @@ window.publicSuffixes = {
   "norfolk.museum": 1,
   "north-kazakhstan.su": 1,
   "north.museum": 1,
+  "northflank.app": 2,
   "nose.osaka.jp": 1,
   "nosegawa.nara.jp": 1,
   "noshiro.akita.jp": 1,
   "not.br": 1,
   "notaires.fr": 1,
   "notaires.km": 1,
+  "noticeable.news": 1,
   "noticias.bo": 1,
   "noto.ishikawa.jp": 1,
   "notodden.no": 1,
@@ -4873,6 +4908,7 @@ window.publicSuffixes = {
   "nov.ru": 1,
   "nov.su": 1,
   "novara.it": 1,
+  "novecore.site": 1,
   "now-dns.net": 1,
   "now-dns.org": 1,
   "now-dns.top": 1,
@@ -4901,44 +4937,18 @@ window.publicSuffixes = {
   "nuoro.it": 1,
   "nv.us": 1,
   "nx.cn": 1,
+  "ny-1.paas.massivegrid.net": 1,
+  "ny-2.paas.massivegrid.net": 1,
   "ny.us": 1,
   "nyaa.am": 1,
   "nyan.to": 1,
   "nyc.mn": 1,
   "nyc.museum": 1,
-  "nym.by": 1,
-  "nym.bz": 1,
-  "nym.ec": 1,
-  "nym.gr": 1,
-  "nym.gy": 1,
-  "nym.hk": 1,
-  "nym.ie": 1,
-  "nym.kz": 1,
-  "nym.la": 1,
-  "nym.lc": 1,
-  "nym.li": 1,
-  "nym.lt": 1,
-  "nym.lu": 1,
-  "nym.me": 1,
-  "nym.mn": 1,
-  "nym.mx": 1,
-  "nym.nz": 1,
-  "nym.pe": 1,
-  "nym.pt": 1,
-  "nym.ro": 1,
-  "nym.sk": 1,
-  "nym.su": 1,
-  "nym.sx": 1,
-  "nym.tw": 1,
   "nyny.museum": 1,
   "nysa.pl": 1,
   "nyuzen.toyama.jp": 1,
   "nz.basketball": 1,
   "nz.eu.org": 1,
-  "n\u00e1vuotna.no": 1,
-  "n\u00e5\u00e5mesjevuemie.no": 1,
-  "n\u00e6r\u00f8y.no": 1,
-  "n\u00f8tter\u00f8y.no": 1,
   "o.bg": 1,
   "o.se": 1,
   "oamishirasato.chiba.jp": 1,
@@ -4968,10 +4978,9 @@ window.publicSuffixes = {
   "oe.yamagata.jp": 1,
   "of.by": 1,
   "of.fashion": 1,
-  "of.football": 1,
+  "of.je": 1,
   "of.london": 1,
   "of.no": 1,
-  "of.work": 1,
   "off.ai": 1,
   "office-on-the.net": 1,
   "official.academy": 1,
@@ -5063,9 +5072,12 @@ window.publicSuffixes = {
   "on-the-web.tv": 1,
   "on-web.fr": 1,
   "on.ca": 1,
-  "on.fashion": 1,
   "onagawa.miyagi.jp": 1,
+  "onavstack.net": 1,
+  "oncilla.mythic-beasts.com": 1,
+  "ondigitalocean.app": 1,
   "onfabrica.com": 1,
+  "onflashdrive.app": 1,
   "ong.br": 1,
   "onga.fukuoka.jp": 1,
   "onjuku.chiba.jp": 1,
@@ -5093,7 +5105,6 @@ window.publicSuffixes = {
   "opole.pl": 1,
   "oppdal.no": 1,
   "oppegard.no": 1,
-  "oppeg\u00e5rd.no": 1,
   "or.at": 1,
   "or.bi": 1,
   "or.ci": 1,
@@ -5111,6 +5122,7 @@ window.publicSuffixes = {
   "or.ug": 1,
   "or.us": 1,
   "ora.gunma.jp": 1,
+  "orangecloud.tn": 1,
   "oregon.museum": 1,
   "oregontrail.museum": 1,
   "org.ac": 1,
@@ -5139,6 +5151,7 @@ window.publicSuffixes = {
   "org.cn": 1,
   "org.co": 1,
   "org.cu": 1,
+  "org.cv": 1,
   "org.cw": 1,
   "org.cy": 1,
   "org.dm": 1,
@@ -5260,6 +5273,8 @@ window.publicSuffixes = {
   "org.vn": 1,
   "org.vu": 1,
   "org.ws": 1,
+  "org.ye": 1,
+  "org.yt": 1,
   "org.za": 1,
   "org.zm": 1,
   "org.zw": 1,
@@ -5267,6 +5282,7 @@ window.publicSuffixes = {
   "orkanger.no": 1,
   "orkdal.no": 1,
   "orland.no": 1,
+  "orsites.com": 1,
   "orskog.no": 1,
   "orsta.no": 1,
   "orx.biz": 1,
@@ -5286,13 +5302,11 @@ window.publicSuffixes = {
   "oslo.no": 1,
   "osoyro.no": 1,
   "osteroy.no": 1,
-  "oster\u00f8y.no": 1,
   "ostre-toten.no": 1,
   "ostroda.pl": 1,
   "ostroleka.pl": 1,
   "ostrowiec.pl": 1,
   "ostrowwlkp.pl": 1,
-  "os\u00f8yro.no": 1,
   "ot.it": 1,
   "ota.gunma.jp": 1,
   "ota.tokyo.jp": 1,
@@ -5329,6 +5343,7 @@ window.publicSuffixes = {
   "ownprovider.com": 1,
   "owo.codes": 2,
   "ox.rs": 1,
+  "oxa.cloud": 1,
   "oxford.museum": 1,
   "oy.lc": 1,
   "oya.to": 1,
@@ -5350,7 +5365,9 @@ window.publicSuffixes = {
   "pa.it": 1,
   "pa.leg.br": 1,
   "pa.us": 1,
+  "paas.beebyte.io": 1,
   "paas.datacenter.fi": 1,
+  "paas.hosted-by-previder.com": 1,
   "paas.massivegrid.com": 1,
   "pacific.museum": 1,
   "paderborn.museum": 1,
@@ -5358,6 +5375,8 @@ window.publicSuffixes = {
   "padua.it": 1,
   "pagefrontapp.com": 1,
   "pages.dev": 1,
+  "pages.it.hs-heilbronn.de": 1,
+  "pages.torproject.net": 1,
   "pages.wiardweb.com": 1,
   "pagespeedmobilizer.com": 1,
   "pagexl.com": 1,
@@ -5382,6 +5401,7 @@ window.publicSuffixes = {
   "passenger-association.aero": 1,
   "patria.bo": 1,
   "pavia.it": 1,
+  "paywhirl.com": 2,
   "pb.ao": 1,
   "pb.gov.br": 1,
   "pb.leg.br": 1,
@@ -5419,6 +5439,7 @@ window.publicSuffixes = {
   "philately.museum": 1,
   "phoenix.museum": 1,
   "photography.museum": 1,
+  "phx.enscaled.us": 1,
   "pi.gov.br": 1,
   "pi.it": 1,
   "pi.leg.br": 1,
@@ -5485,11 +5506,11 @@ window.publicSuffixes = {
   "porsanger.no": 1,
   "porsangu.no": 1,
   "porsgrunn.no": 1,
-  "pors\u00e1\u014bgu.no": 1,
   "port.fr": 1,
   "portal.museum": 1,
   "portland.museum": 1,
   "portlligat.museum": 1,
+  "postman-echo.com": 1,
   "posts-and-telecommunications.museum": 1,
   "potager.org": 1,
   "potenza.it": 1,
@@ -5508,6 +5529,7 @@ window.publicSuffixes = {
   "prd.fr": 1,
   "prd.km": 1,
   "prd.mg": 1,
+  "prequalifyme.today": 1,
   "preservation.museum": 1,
   "presidio.museum": 1,
   "press.aero": 1,
@@ -5519,6 +5541,7 @@ window.publicSuffixes = {
   "presse.km": 1,
   "presse.ml": 1,
   "pri.ee": 1,
+  "primetel.cloud": 1,
   "principe.st": 1,
   "priv.at": 1,
   "priv.hu": 1,
@@ -5551,9 +5574,9 @@ window.publicSuffixes = {
   "psi.br": 1,
   "psp.gov.pl": 1,
   "psse.gov.pl": 1,
+  "pstmn.io": 1,
   "pt.eu.org": 1,
   "pt.it": 1,
-  "ptplus.fit": 1,
   "pu.it": 1,
   "pub.sa": 1,
   "publ.pt": 1,
@@ -5572,6 +5595,7 @@ window.publicSuffixes = {
   "pvt.k12.ma.us": 1,
   "pyatigorsk.ru": 1,
   "pymnt.uk": 1,
+  "pythonanywhere.com": 1,
   "pz.it": 1,
   "q-a.eu.org": 1,
   "q.bg": 1,
@@ -5584,6 +5608,7 @@ window.publicSuffixes = {
   "qld.au": 1,
   "qld.edu.au": 1,
   "qld.gov.au": 1,
+  "qoto.io": 1,
   "qsl.br": 1,
   "qualifioapp.com": 1,
   "quebec.museum": 1,
@@ -5602,7 +5627,9 @@ window.publicSuffixes = {
   "radio.fm": 1,
   "radom.pl": 1,
   "radoy.no": 1,
-  "rad\u00f8y.no": 1,
+  "raffleentry.org.uk": 1,
+  "rag-cloud-ch.hosteur.com": 1,
+  "rag-cloud.hosteur.com": 1,
   "ragusa.it": 1,
   "rahkkeravju.no": 1,
   "raholt.no": 1,
@@ -5615,12 +5642,14 @@ window.publicSuffixes = {
   "randaberg.no": 1,
   "rankoshi.hokkaido.jp": 1,
   "ranzan.saitama.jp": 1,
+  "rar.ve": 1,
   "ras.ru": 1,
   "rauma.no": 1,
   "ravendb.community": 1,
   "ravendb.me": 1,
   "ravendb.run": 1,
   "ravenna.it": 1,
+  "ravpage.co.il": 1,
   "rawa-maz.pl": 1,
   "rc.it": 1,
   "rdv.to": 1,
@@ -5654,9 +5683,9 @@ window.publicSuffixes = {
   "rendalen.no": 1,
   "rennebu.no": 1,
   "rennesoy.no": 1,
-  "rennes\u00f8y.no": 1,
   "rep.br": 1,
   "rep.kp": 1,
+  "repair.men": 1,
   "repbody.aero": 1,
   "repl.co": 1,
   "repl.run": 1,
@@ -5664,6 +5693,12 @@ window.publicSuffixes = {
   "res.in": 1,
   "research.aero": 1,
   "research.museum": 1,
+  "reservd.com": 1,
+  "reservd.dev.thingdust.io": 1,
+  "reservd.disrec.thingdust.io": 1,
+  "reservd.testing.thingdust.io": 1,
+  "reserve-online.com": 1,
+  "reserve-online.net": 1,
   "resindevice.io": 1,
   "resistance.museum": 1,
   "revista.bo": 1,
@@ -5672,6 +5707,7 @@ window.publicSuffixes = {
   "ri.it": 1,
   "ri.us": 1,
   "ribeirao.br": 1,
+  "ric.jelastic.vps-host.net": 1,
   "rieti.it": 1,
   "rifu.miyagi.jp": 1,
   "riik.ee": 1,
@@ -5690,7 +5726,6 @@ window.publicSuffixes = {
   "rishirifuji.hokkaido.jp": 1,
   "risor.no": 1,
   "rissa.no": 1,
-  "ris\u00f8r.no": 1,
   "ritto.shiga.jp": 1,
   "rivne.ua": 1,
   "rj.gov.br": 1,
@@ -5700,9 +5735,6 @@ window.publicSuffixes = {
   "rn.gov.br": 1,
   "rn.it": 1,
   "rn.leg.br": 1,
-  "rnrt.tn": 1,
-  "rns.tn": 1,
-  "rnu.tn": 1,
   "ro.eu.org": 1,
   "ro.gov.br": 1,
   "ro.im": 1,
@@ -5729,9 +5761,11 @@ window.publicSuffixes = {
   "royrvik.no": 1,
   "rr.gov.br": 1,
   "rr.leg.br": 1,
+  "rs.ba": 1,
   "rs.gov.br": 1,
   "rs.leg.br": 1,
   "rsc.cdn77.org": 1,
+  "rss.my.id": 2,
   "ru.com": 1,
   "ru.eu.org": 1,
   "ru.net": 1,
@@ -5740,23 +5774,13 @@ window.publicSuffixes = {
   "russia.museum": 1,
   "rv.ua": 1,
   "rybnik.pl": 1,
+  "ryd.wafaicloud.com": 1,
   "rygge.no": 1,
   "ryokami.saitama.jp": 1,
   "ryugasaki.ibaraki.jp": 1,
   "ryuoh.shiga.jp": 1,
   "rzeszow.pl": 1,
   "rzgw.gov.pl": 1,
-  "r\u00e1hkker\u00e1vju.no": 1,
-  "r\u00e1isa.no": 1,
-  "r\u00e5de.no": 1,
-  "r\u00e5holt.no": 1,
-  "r\u00e6lingen.no": 1,
-  "r\u00f8d\u00f8y.no": 1,
-  "r\u00f8mskog.no": 1,
-  "r\u00f8ros.no": 1,
-  "r\u00f8st.no": 1,
-  "r\u00f8yken.no": 1,
-  "r\u00f8yrvik.no": 1,
   "s.bg": 1,
   "s.se": 1,
   "s3-ap-northeast-1.amazonaws.com": 1,
@@ -5874,15 +5898,13 @@ window.publicSuffixes = {
   "sanda.hyogo.jp": 1,
   "sandcats.io": 1,
   "sande.more-og-romsdal.no": 1,
-  "sande.m\u00f8re-og-romsdal.no": 1,
   "sande.vestfold.no": 1,
+  "sande.xn--mre-og-romsdal-qqb.no": 1,
   "sandefjord.no": 1,
   "sandiego.museum": 1,
   "sandnes.no": 1,
   "sandnessjoen.no": 1,
-  "sandnessj\u00f8en.no": 1,
   "sandoy.no": 1,
-  "sand\u00f8y.no": 1,
   "sanfrancisco.museum": 1,
   "sango.nara.jp": 1,
   "sanjo.niigata.jp": 1,
@@ -5933,7 +5955,6 @@ window.publicSuffixes = {
   "sc.tz": 1,
   "sc.ug": 1,
   "sc.us": 1,
-  "scapp.io": 1,
   "sch.ae": 1,
   "sch.id": 1,
   "sch.ir": 1,
@@ -5944,6 +5965,7 @@ window.publicSuffixes = {
   "sch.qa": 1,
   "sch.sa": 1,
   "sch.so": 1,
+  "sch.ss": 1,
   "sch.uk": 2,
   "sch.zm": 1,
   "schlesisches.museum": 1,
@@ -5975,6 +5997,7 @@ window.publicSuffixes = {
   "sd.cn": 1,
   "sd.us": 1,
   "sdn.gov.pl": 1,
+  "sdscloud.pl": 1,
   "se.eu.org": 1,
   "se.gov.br": 1,
   "se.leg.br": 1,
@@ -5982,6 +6005,7 @@ window.publicSuffixes = {
   "seaport.museum": 1,
   "sebastopol.ua": 1,
   "sec.ps": 1,
+  "secaas.hk": 1,
   "securitytactics.com": 1,
   "seg.br": 1,
   "seidat.net": 1,
@@ -5991,6 +6015,7 @@ window.publicSuffixes = {
   "seirou.niigata.jp": 1,
   "seiyo.ehime.jp": 1,
   "sejny.pl": 1,
+  "sekd1.beebyteapp.io": 1,
   "seki.gifu.jp": 1,
   "sekigahara.gifu.jp": 1,
   "sekikawa.niigata.jp": 1,
@@ -6003,12 +6028,14 @@ window.publicSuffixes = {
   "selfip.org": 1,
   "selje.no": 1,
   "seljord.no": 1,
+  "sellfy.store": 1,
   "sells-for-less.com": 1,
   "sells-for-u.com": 1,
   "sells-it.net": 1,
   "sellsyourhome.org": 1,
   "semboku.akita.jp": 1,
   "semine.miyagi.jp": 1,
+  "senasa.ar": 1,
   "sendai.jp": 2,
   "sennan.osaka.jp": 1,
   "senseering.net": 1,
@@ -6037,8 +6064,11 @@ window.publicSuffixes = {
   "servep2p.com": 1,
   "servepics.com": 1,
   "servequake.com": 1,
+  "servers.run": 1,
   "servesarcasm.com": 1,
+  "service.gov.scot": 1,
   "service.gov.uk": 1,
+  "service.one": 1,
   "services.aero": 1,
   "setagaya.tokyo.jp": 1,
   "seto.aichi.jp": 1,
@@ -6050,6 +6080,7 @@ window.publicSuffixes = {
   "sex.hu": 1,
   "sex.pl": 1,
   "sf.no": 1,
+  "sg-1.paas.massivegrid.net": 1,
   "sh.cn": 1,
   "shacknet.nu": 1,
   "shakotan.hokkaido.jp": 1,
@@ -6064,6 +6095,8 @@ window.publicSuffixes = {
   "shibuya.tokyo.jp": 1,
   "shichikashuku.miyagi.jp": 1,
   "shichinohe.aomori.jp": 1,
+  "shiftcrypto.dev": 1,
+  "shiftcrypto.io": 1,
   "shiftedit.io": 1,
   "shiga.jp": 1,
   "shiiba.miyazaki.jp": 1,
@@ -6144,11 +6177,13 @@ window.publicSuffixes = {
   "shonai.fukuoka.jp": 1,
   "shonai.yamagata.jp": 1,
   "shoo.okayama.jp": 1,
+  "shop.brendly.rs": 1,
   "shop.ht": 1,
   "shop.hu": 1,
   "shop.pl": 1,
   "shop.ro": 1,
   "shop.th": 1,
+  "shoparena.pl": 1,
   "shopitsite.com": 1,
   "shopware.store": 1,
   "show.aero": 1,
@@ -6166,6 +6201,7 @@ window.publicSuffixes = {
   "siellak.no": 1,
   "siena.it": 1,
   "sigdal.no": 1,
+  "siiites.com": 1,
   "siljan.no": 1,
   "silk.museum": 1,
   "simple-url.com": 1,
@@ -6186,12 +6222,9 @@ window.publicSuffixes = {
   "ski.no": 1,
   "skien.no": 1,
   "skierva.no": 1,
-  "skierv\u00e1.no": 1,
   "skiptvet.no": 1,
   "skjak.no": 1,
   "skjervoy.no": 1,
-  "skjerv\u00f8y.no": 1,
-  "skj\u00e5k.no": 1,
   "sklep.pl": 1,
   "sko.gov.pl": 1,
   "skoczow.pl": 1,
@@ -6199,8 +6232,6 @@ window.publicSuffixes = {
   "skole.museum": 1,
   "skydiving.aero": 1,
   "skygearapp.com": 1,
-  "sk\u00e1nit.no": 1,
-  "sk\u00e5nland.no": 1,
   "slask.pl": 1,
   "slattum.no": 1,
   "sld.do": 1,
@@ -6211,14 +6242,12 @@ window.publicSuffixes = {
   "sm.ua": 1,
   "small-web.org": 1,
   "smola.no": 1,
-  "sm\u00f8la.no": 1,
+  "smushcdn.com": 1,
   "sn.cn": 1,
   "snaase.no": 1,
   "snasa.no": 1,
   "snillfjord.no": 1,
   "snoasa.no": 1,
-  "sn\u00e5ase.no": 1,
-  "sn\u00e5sa.no": 1,
   "so.gov.pl": 1,
   "so.it": 1,
   "sobetsu.hokkaido.jp": 1,
@@ -6286,6 +6315,7 @@ window.publicSuffixes = {
   "square7.net": 1,
   "sr.gov.pl": 1,
   "sr.it": 1,
+  "srht.site": 1,
   "srv.br": 1,
   "ss.it": 1,
   "ssl.origin.cdn77-secure.org": 1,
@@ -6317,12 +6347,11 @@ window.publicSuffixes = {
   "steigen.no": 1,
   "steinkjer.no": 1,
   "stg.dev": 2,
+  "stgstage.dev": 2,
   "sth.ac.at": 1,
   "stjohn.museum": 1,
   "stjordal.no": 1,
   "stjordalshalsen.no": 1,
-  "stj\u00f8rdal.no": 1,
-  "stj\u00f8rdalshalsen.no": 1,
   "stockholm.museum": 1,
   "stokke.no": 1,
   "stolos.io": 2,
@@ -6336,6 +6365,7 @@ window.publicSuffixes = {
   "store.ro": 1,
   "store.st": 1,
   "store.ve": 1,
+  "storebase.store": 1,
   "storfjord.no": 1,
   "storj.farm": 1,
   "stpetersburg.museum": 1,
@@ -6347,6 +6377,7 @@ window.publicSuffixes = {
   "stuff-4-sale.us": 1,
   "stufftoread.com": 1,
   "stuttgart.museum": 1,
+  "su.paba.se": 1,
   "sue.fukuoka.jp": 1,
   "suedtirol.it": 1,
   "suginami.tokyo.jp": 1,
@@ -6367,6 +6398,9 @@ window.publicSuffixes = {
   "sunagawa.hokkaido.jp": 1,
   "sund.no": 1,
   "sunndal.no": 1,
+  "supabase.co": 1,
+  "supabase.in": 1,
+  "supabase.net": 1,
   "surgeonshall.museum": 1,
   "surnadal.no": 1,
   "surrey.museum": 1,
@@ -6404,25 +6438,13 @@ window.publicSuffixes = {
   "szczytno.pl": 1,
   "szex.hu": 1,
   "szkola.pl": 1,
-  "s\u00e1lat.no": 1,
-  "s\u00e1l\u00e1t.no": 1,
-  "s\u00f8gne.no": 1,
-  "s\u00f8mna.no": 1,
-  "s\u00f8ndre-land.no": 1,
-  "s\u00f8r-aurdal.no": 1,
-  "s\u00f8r-fron.no": 1,
-  "s\u00f8r-odal.no": 1,
-  "s\u00f8r-varanger.no": 1,
-  "s\u00f8rfold.no": 1,
-  "s\u00f8rreisa.no": 1,
-  "s\u00f8rum.no": 1,
-  "s\u00fcdtirol.it": 1,
   "t.bg": 1,
   "t.se": 1,
   "t3l3p0rt.net": 1,
   "ta.it": 1,
   "taa.it": 1,
   "tabayama.yamanashi.jp": 1,
+  "tabitorder.co.il": 1,
   "tabuse.yamaguchi.jp": 1,
   "tachiarai.fukuoka.jp": 1,
   "tachikawa.tokyo.jp": 1,
@@ -6518,13 +6540,13 @@ window.publicSuffixes = {
   "tatsuno.nagano.jp": 1,
   "tawaramoto.nara.jp": 1,
   "taxi.br": 1,
+  "tbits.me": 1,
   "tc.br": 1,
   "tcm.museum": 1,
   "tcp4.me": 1,
   "te.it": 1,
   "te.ua": 1,
   "teaches-yoga.com": 1,
-  "teams.algorithmia.com": 0,
   "tec.br": 1,
   "tec.mi.us": 1,
   "tec.ve": 1,
@@ -6540,6 +6562,7 @@ window.publicSuffixes = {
   "temp-dns.com": 1,
   "tempio-olbia.it": 1,
   "tempioolbia.it": 1,
+  "tempurl.host": 1,
   "tendo.yamagata.jp": 1,
   "tenei.fukushima.jp": 1,
   "tenkawa.nara.jp": 1,
@@ -6551,17 +6574,18 @@ window.publicSuffixes = {
   "ternopil.ua": 1,
   "teshikaga.hokkaido.jp": 1,
   "test-iserv.de": 1,
-  "test.algorithmia.com": 0,
   "test.ru": 1,
   "test.tj": 1,
   "texas.museum": 1,
   "textile.museum": 1,
   "tgory.pl": 1,
+  "that.win": 1,
   "the.br": 1,
   "theater.museum": 1,
   "theworkpc.com": 1,
   "thingdustdata.com": 1,
   "thruhere.net": 1,
+  "tickets.io": 1,
   "time.museum": 1,
   "time.no": 1,
   "timekeeping.museum": 1,
@@ -6570,8 +6594,8 @@ window.publicSuffixes = {
   "tj.cn": 1,
   "tjeldsund.no": 1,
   "tjome.no": 1,
-  "tj\u00f8me.no": 1,
   "tksat.bo": 1,
+  "tlon.network": 1,
   "tm.cy": 1,
   "tm.dz": 1,
   "tm.fr": 1,
@@ -6586,6 +6610,7 @@ window.publicSuffixes = {
   "tm.za": 1,
   "tmp.br": 1,
   "tn.it": 1,
+  "tn.oxa.cloud": 1,
   "tn.us": 1,
   "to.gov.br": 1,
   "to.gt": 1,
@@ -6650,6 +6675,7 @@ window.publicSuffixes = {
   "toride.ibaraki.jp": 1,
   "torino.it": 1,
   "torino.museum": 1,
+  "torproject.net": 1,
   "torsken.no": 1,
   "tos.it": 1,
   "tosa.kochi.jp": 1,
@@ -6708,7 +6734,6 @@ window.publicSuffixes = {
   "transurl.be": 2,
   "transurl.eu": 2,
   "transurl.nl": 2,
-  "tran\u00f8y.no": 1,
   "trapani.it": 1,
   "travel.pl": 1,
   "travel.tt": 1,
@@ -6718,8 +6743,6 @@ window.publicSuffixes = {
   "trentin-sudtirol.it": 1,
   "trentin-sued-tirol.it": 1,
   "trentin-suedtirol.it": 1,
-  "trentin-s\u00fcd-tirol.it": 1,
-  "trentin-s\u00fcdtirol.it": 1,
   "trentino-a-adige.it": 1,
   "trentino-aadige.it": 1,
   "trentino-alto-adige.it": 1,
@@ -6730,8 +6753,6 @@ window.publicSuffixes = {
   "trentino-sudtirol.it": 1,
   "trentino-sued-tirol.it": 1,
   "trentino-suedtirol.it": 1,
-  "trentino-s\u00fcd-tirol.it": 1,
-  "trentino-s\u00fcdtirol.it": 1,
   "trentino.it": 1,
   "trentinoa-adige.it": 1,
   "trentinoaadige.it": 1,
@@ -6743,14 +6764,10 @@ window.publicSuffixes = {
   "trentinosudtirol.it": 1,
   "trentinosued-tirol.it": 1,
   "trentinosuedtirol.it": 1,
-  "trentinos\u00fcd-tirol.it": 1,
-  "trentinos\u00fcdtirol.it": 1,
   "trentinsud-tirol.it": 1,
   "trentinsudtirol.it": 1,
   "trentinsued-tirol.it": 1,
   "trentinsuedtirol.it": 1,
-  "trentins\u00fcd-tirol.it": 1,
-  "trentins\u00fcdtirol.it": 1,
   "trento.it": 1,
   "treviso.it": 1,
   "trieste.it": 1,
@@ -6761,17 +6778,17 @@ window.publicSuffixes = {
   "trolley.museum": 1,
   "tromsa.no": 1,
   "tromso.no": 1,
-  "troms\u00f8.no": 1,
   "trondheim.no": 1,
   "trust.museum": 1,
   "trustee.museum": 1,
+  "try-snowplow.com": 1,
   "trycloudflare.com": 1,
   "trysil.no": 1,
-  "tr\u00e6na.no": 1,
-  "tr\u00f8gstad.no": 1,
   "ts.it": 1,
+  "ts.net": 1,
   "tselinograd.su": 1,
   "tsk.tr": 1,
+  "tst.site": 2,
   "tsu.mie.jp": 1,
   "tsubame.niigata.jp": 1,
   "tsubata.ishikawa.jp": 1,
@@ -6801,11 +6818,11 @@ window.publicSuffixes = {
   "tsuyama.okayama.jp": 1,
   "tt.im": 1,
   "tula.su": 1,
+  "tuleap-partners.com": 1,
   "tunk.org": 1,
   "tur.ar": 1,
   "tur.br": 1,
   "turek.pl": 1,
-  "turen.tn": 1,
   "turin.it": 1,
   "turystyka.pl": 1,
   "tuscany.it": 1,
@@ -6833,8 +6850,6 @@ window.publicSuffixes = {
   "tysfjord.no": 1,
   "tysnes.no": 1,
   "tysvar.no": 1,
-  "tysv\u00e6r.no": 1,
-  "t\u00f8nsberg.no": 1,
   "u.bg": 1,
   "u.channelsdvr.net": 1,
   "u.se": 1,
@@ -6868,11 +6883,13 @@ window.publicSuffixes = {
   "uk.eu.org": 1,
   "uk.kg": 1,
   "uk.net": 1,
+  "uk.oxa.cloud": 1,
+  "uk.primetel.cloud": 1,
+  "uk.reclaim.cloud": 1,
   "uk0.bigv.io": 1,
   "ukco.me": 1,
   "uki.kumamoto.jp": 1,
   "ukiha.fukuoka.jp": 1,
-  "uklugs.org": 1,
   "ullensaker.no": 1,
   "ullensvang.no": 1,
   "ulm.museum": 1,
@@ -6885,18 +6902,21 @@ window.publicSuffixes = {
   "umi.fukuoka.jp": 1,
   "umig.gov.pl": 1,
   "unazuki.toyama.jp": 1,
+  "under.one": 1,
   "undersea.museum": 1,
   "uni5.net": 1,
+  "unicloud.pl": 1,
   "union.aero": 1,
   "univ.sn": 1,
   "university.museum": 1,
   "unjarga.no": 1,
-  "unj\u00e1rga.no": 1,
   "unnan.shimane.jp": 1,
   "unusualperson.com": 1,
   "unzen.nagasaki.jp": 1,
   "uonuma.niigata.jp": 1,
   "uozu.toyama.jp": 1,
+  "upaas.kazteleport.kz": 1,
+  "upli.io": 1,
   "upow.gov.pl": 1,
   "uppo.gov.pl": 1,
   "urakawa.hokkaido.jp": 1,
@@ -6931,6 +6951,7 @@ window.publicSuffixes = {
   "us.na": 1,
   "us.org": 1,
   "us.platform.sh": 1,
+  "us.reclaim.cloud": 1,
   "usa.museum": 1,
   "usa.oita.jp": 1,
   "usantiques.museum": 1,
@@ -6941,7 +6962,9 @@ window.publicSuffixes = {
   "user.aseinet.ne.jp": 1,
   "user.party.eus": 1,
   "user.srcf.net": 1,
+  "usercontent.goog": 2,
   "usercontent.jp": 1,
+  "users.scale.virtualcloud.com.br": 1,
   "usgarden.museum": 1,
   "ushiku.ibaraki.jp": 1,
   "ushistory.museum": 1,
@@ -6964,7 +6987,6 @@ window.publicSuffixes = {
   "uw.gov.pl": 1,
   "uwajima.ehime.jp": 1,
   "uwu.ai": 1,
-  "uwu.nu": 1,
   "uy.com": 1,
   "uz.ua": 1,
   "uzhgorod.ua": 1,
@@ -6977,7 +6999,6 @@ window.publicSuffixes = {
   "va.us": 1,
   "vaapste.no": 1,
   "vadso.no": 1,
-  "vads\u00f8.no": 1,
   "vaga.no": 1,
   "vagan.no": 1,
   "vagsoy.no": 1,
@@ -7000,10 +7021,6 @@ window.publicSuffixes = {
   "valleeaoste.it": 1,
   "valleedaoste.it": 1,
   "valley.museum": 1,
-  "vall\u00e9e-aoste.it": 1,
-  "vall\u00e9e-d-aoste.it": 1,
-  "vall\u00e9eaoste.it": 1,
-  "vall\u00e9edaoste.it": 1,
   "vang.no": 1,
   "vantaa.museum": 1,
   "vanylven.no": 1,
@@ -7011,7 +7028,6 @@ window.publicSuffixes = {
   "vapor.cloud": 1,
   "vaporcloud.io": 1,
   "vardo.no": 1,
-  "vard\u00f8.no": 1,
   "varese.it": 1,
   "varggat.no": 1,
   "varoy.no": 1,
@@ -7022,7 +7038,6 @@ window.publicSuffixes = {
   "vefsn.no": 1,
   "vega.no": 1,
   "vegarshei.no": 1,
-  "veg\u00e5rshei.no": 1,
   "ven.it": 1,
   "veneto.it": 1,
   "venezia.it": 1,
@@ -7041,7 +7056,6 @@ window.publicSuffixes = {
   "vestre-slidre.no": 1,
   "vestre-toten.no": 1,
   "vestvagoy.no": 1,
-  "vestv\u00e5g\u00f8y.no": 1,
   "vet.br": 1,
   "veterinaire.fr": 1,
   "veterinaire.km": 1,
@@ -7091,8 +7105,10 @@ window.publicSuffixes = {
   "voorloper.cloud": 1,
   "voss.no": 1,
   "vossevangen.no": 1,
+  "vp4.me": 1,
   "vpndns.net": 1,
   "vpnplus.to": 1,
+  "vps-host.net": 1,
   "vps.mcdir.ru": 1,
   "vps.myjino.ru": 2,
   "vr.it": 1,
@@ -7102,13 +7118,6 @@ window.publicSuffixes = {
   "vt.us": 1,
   "vv.it": 1,
   "vxl.sh": 1,
-  "v\u00e1rgg\u00e1t.no": 1,
-  "v\u00e5gan.no": 1,
-  "v\u00e5gs\u00f8y.no": 1,
-  "v\u00e5g\u00e5.no": 1,
-  "v\u00e5ler.hedmark.no": 1,
-  "v\u00e5ler.\u00f8stfold.no": 1,
-  "v\u00e6r\u00f8y.no": 1,
   "w.bg": 1,
   "w.se": 1,
   "wa.au": 1,
@@ -7143,6 +7152,8 @@ window.publicSuffixes = {
   "watchandclock.museum": 1,
   "waw.pl": 1,
   "wazuka.kyoto.jp": 1,
+  "wblog.id": 1,
+  "wbq.me": 1,
   "we.bs": 1,
   "we.tc": 1,
   "web.app": 1,
@@ -7167,17 +7178,23 @@ window.publicSuffixes = {
   "webhop.net": 1,
   "webhop.org": 1,
   "webhosting.be": 1,
+  "webpaas.ovh.net": 2,
   "webredirect.org": 1,
   "website.yandexcloud.net": 1,
   "webspace.rocks": 1,
+  "webthings.io": 1,
   "wedeploy.io": 1,
   "wedeploy.me": 1,
   "wedeploy.sh": 1,
+  "weeklylottery.org.uk": 1,
   "wegrow.pl": 1,
   "wellbeingzone.co.uk": 1,
   "wellbeingzone.eu": 1,
+  "west1-us.cloudjiffy.net": 1,
   "western.museum": 1,
+  "westeurope.azurestaticapps.net": 1,
   "westfalen.museum": 1,
+  "westus2.azurestaticapps.net": 1,
   "whaling.museum": 1,
   "wi.us": 1,
   "wielun.pl": 1,
@@ -7192,9 +7209,11 @@ window.publicSuffixes = {
   "windmill.museum": 1,
   "wios.gov.pl": 1,
   "witd.gov.pl": 1,
+  "with.marketing": 1,
   "withgoogle.com": 1,
   "withyoutube.com": 1,
   "wiw.gov.pl": 1,
+  "wixsite.com": 1,
   "wlocl.pl": 1,
   "wloclawek.pl": 1,
   "wmcloud.org": 1,
@@ -7202,6 +7221,7 @@ window.publicSuffixes = {
   "wnext.app": 1,
   "wodzislaw.pl": 1,
   "wolomin.pl": 1,
+  "woltlab-demo.com": 1,
   "workers.dev": 1,
   "workinggroup.aero": 1,
   "workisboring.com": 1,
@@ -7210,6 +7230,9 @@ window.publicSuffixes = {
   "worse-than.tv": 1,
   "wpdevcloud.com": 1,
   "wpenginepowered.com": 1,
+  "wphostedmail.com": 1,
+  "wpmucdn.com": 1,
+  "wpmudev.host": 1,
   "writesthisblog.com": 1,
   "wroc.pl": 1,
   "wroclaw.pl": 1,
@@ -7227,8 +7250,307 @@ window.publicSuffixes = {
   "x.se": 1,
   "x443.pw": 1,
   "xen.prgmr.com": 1,
-  "xenapponazure.com": 1,
   "xj.cn": 1,
+  "xn--0trq7p7nn.jp": 1,
+  "xn--12c1fe0br.xn--o3cw4h": 1,
+  "xn--12cfi8ixb8l.xn--o3cw4h": 1,
+  "xn--12co0c3b4eva.xn--o3cw4h": 1,
+  "xn--1ctwo.jp": 1,
+  "xn--1lqs03n.jp": 1,
+  "xn--1lqs71d.jp": 1,
+  "xn--2m4a15e.jp": 1,
+  "xn--32vp30h.jp": 1,
+  "xn--41a.xn--p1acf": 1,
+  "xn--4it168d.jp": 1,
+  "xn--4it797k.jp": 1,
+  "xn--4pvxs.jp": 1,
+  "xn--55qx5d.cn": 1,
+  "xn--55qx5d.hk": 1,
+  "xn--55qx5d.xn--j6w193g": 1,
+  "xn--5js045d.jp": 1,
+  "xn--5rtp49c.jp": 1,
+  "xn--5rtq34k.jp": 1,
+  "xn--6btw5a.jp": 1,
+  "xn--6orx2r.jp": 1,
+  "xn--7t0a264c.jp": 1,
+  "xn--80aaa0cvac.xn--p1acf": 1,
+  "xn--80au.xn--90a3ac": 1,
+  "xn--8ltr62k.jp": 1,
+  "xn--8pvr4u.jp": 1,
+  "xn--90a1af.xn--p1acf": 1,
+  "xn--90amc.xn--p1acf": 1,
+  "xn--90azh.xn--90a3ac": 1,
+  "xn--9dbhblg6di.museum": 1,
+  "xn--andy-ira.no": 1,
+  "xn--aroport-bya.ci": 1,
+  "xn--asky-ira.no": 1,
+  "xn--aurskog-hland-jnb.no": 1,
+  "xn--avery-yua.no": 1,
+  "xn--b-5ga.nordland.no": 1,
+  "xn--b-5ga.telemark.no": 1,
+  "xn--balsan-sdtirol-nsb.it": 1,
+  "xn--bdddj-mrabd.no": 1,
+  "xn--bearalvhki-y4a.no": 1,
+  "xn--berlevg-jxa.no": 1,
+  "xn--bhcavuotna-s4a.no": 1,
+  "xn--bhccavuotna-k7a.no": 1,
+  "xn--bidr-5nac.no": 1,
+  "xn--bievt-0qa.no": 1,
+  "xn--bjarky-fya.no": 1,
+  "xn--bjddar-pta.no": 1,
+  "xn--blt-elab.no": 1,
+  "xn--bmlo-gra.no": 1,
+  "xn--bod-2na.no": 1,
+  "xn--bozen-sdtirol-2ob.it": 1,
+  "xn--brnny-wuac.no": 1,
+  "xn--brnnysund-m8ac.no": 1,
+  "xn--brum-voa.no": 1,
+  "xn--btsfjord-9za.no": 1,
+  "xn--bulsan-sdtirol-nsb.it": 1,
+  "xn--c1avg.xn--90a3ac": 1,
+  "xn--c1avg.xn--p1acf": 1,
+  "xn--c3s14m.jp": 1,
+  "xn--cesena-forl-mcb.it": 1,
+  "xn--cesenaforl-i8a.it": 1,
+  "xn--ciqpn.hk": 1,
+  "xn--comunicaes-v6a2o.museum": 1,
+  "xn--correios-e-telecomunicaes-ghc29a.museum": 1,
+  "xn--czrw28b.tw": 1,
+  "xn--d1at.xn--90a3ac": 1,
+  "xn--d5qv7z876c.jp": 1,
+  "xn--davvenjrga-y4a.no": 1,
+  "xn--djrs72d6uy.jp": 1,
+  "xn--djty4k.jp": 1,
+  "xn--dnna-gra.no": 1,
+  "xn--drbak-wua.no": 1,
+  "xn--dyry-ira.no": 1,
+  "xn--efvn9s.jp": 1,
+  "xn--ehqz56n.jp": 1,
+  "xn--elqq16h.jp": 1,
+  "xn--eveni-0qa01ga.no": 1,
+  "xn--f6qx53a.jp": 1,
+  "xn--finny-yua.no": 1,
+  "xn--fjord-lra.no": 1,
+  "xn--fl-zia.no": 1,
+  "xn--flor-jra.no": 1,
+  "xn--forl-cesena-fcb.it": 1,
+  "xn--forlcesena-c8a.it": 1,
+  "xn--frde-gra.no": 1,
+  "xn--frna-woa.no": 1,
+  "xn--frya-hra.no": 1,
+  "xn--ggaviika-8ya47h.no": 1,
+  "xn--gildeskl-g0a.no": 1,
+  "xn--givuotna-8ya.no": 1,
+  "xn--gjvik-wua.no": 1,
+  "xn--gls-elac.no": 1,
+  "xn--gmq050i.hk": 1,
+  "xn--gmqw5a.hk": 1,
+  "xn--gmqw5a.xn--j6w193g": 1,
+  "xn--gnstigbestellen-zvb.de": 1,
+  "xn--gnstigliefern-wob.de": 1,
+  "xn--h-2fa.no": 1,
+  "xn--h1aegh.museum": 1,
+  "xn--h1ahn.xn--p1acf": 1,
+  "xn--h1aliz.xn--p1acf": 1,
+  "xn--h3cuzk1di.xn--o3cw4h": 1,
+  "xn--hbmer-xqa.no": 1,
+  "xn--hcesuolo-7ya35b.no": 1,
+  "xn--hery-ira.nordland.no": 1,
+  "xn--hery-ira.xn--mre-og-romsdal-qqb.no": 1,
+  "xn--hgebostad-g3a.no": 1,
+  "xn--hkkinen-5wa.fi": 1,
+  "xn--hmmrfeasta-s4ac.no": 1,
+  "xn--hnefoss-q1a.no": 1,
+  "xn--hobl-ira.no": 1,
+  "xn--holtlen-hxa.no": 1,
+  "xn--hpmir-xqa.no": 1,
+  "xn--hyanger-q1a.no": 1,
+  "xn--hylandet-54a.no": 1,
+  "xn--indery-fya.no": 1,
+  "xn--io0a7i.cn": 1,
+  "xn--io0a7i.hk": 1,
+  "xn--j1adp.xn--p1acf": 1,
+  "xn--j1aef.xn--p1acf": 1,
+  "xn--j1ael8b.xn--p1acf": 1,
+  "xn--jlster-bya.no": 1,
+  "xn--jrpeland-54a.no": 1,
+  "xn--k7yn95e.jp": 1,
+  "xn--karmy-yua.no": 1,
+  "xn--kbrq7o.jp": 1,
+  "xn--kfjord-iua.no": 1,
+  "xn--klbu-woa.no": 1,
+  "xn--klt787d.jp": 1,
+  "xn--kltp7d.jp": 1,
+  "xn--kltx9a.jp": 1,
+  "xn--klty5x.jp": 1,
+  "xn--koluokta-7ya57h.no": 1,
+  "xn--krager-gya.no": 1,
+  "xn--kranghke-b0a.no": 1,
+  "xn--krdsherad-m8a.no": 1,
+  "xn--krehamn-dxa.no": 1,
+  "xn--krjohka-hwab49j.no": 1,
+  "xn--ksnes-uua.no": 1,
+  "xn--kvfjord-nxa.no": 1,
+  "xn--kvitsy-fya.no": 1,
+  "xn--kvnangen-k0a.no": 1,
+  "xn--l-1fa.no": 1,
+  "xn--laheadju-7ya.no": 1,
+  "xn--langevg-jxa.no": 1,
+  "xn--lcvr32d.hk": 1,
+  "xn--ldingen-q1a.no": 1,
+  "xn--leagaviika-52b.no": 1,
+  "xn--lesund-hua.no": 1,
+  "xn--lgrd-poac.no": 1,
+  "xn--lhppi-xqa.no": 1,
+  "xn--linds-pra.no": 1,
+  "xn--lns-qla.museum": 1,
+  "xn--loabt-0qa.no": 1,
+  "xn--lrdal-sra.no": 1,
+  "xn--lrenskog-54a.no": 1,
+  "xn--lt-liac.no": 1,
+  "xn--lten-gra.no": 1,
+  "xn--lury-ira.no": 1,
+  "xn--m3ch0j3a.xn--o3cw4h": 1,
+  "xn--mely-ira.no": 1,
+  "xn--merker-kua.no": 1,
+  "xn--mgba3a4f16a.ir": 1,
+  "xn--mgba3a4fra.ir": 1,
+  "xn--mjndalen-64a.no": 1,
+  "xn--mk0axi.hk": 1,
+  "xn--mkru45i.jp": 1,
+  "xn--mlatvuopmi-s4a.no": 1,
+  "xn--mli-tla.no": 1,
+  "xn--mlselv-iua.no": 1,
+  "xn--moreke-jua.no": 1,
+  "xn--mori-qsa.nz": 1,
+  "xn--mosjen-eya.no": 1,
+  "xn--mot-tla.no": 1,
+  "xn--msy-ula0h.no": 1,
+  "xn--mtta-vrjjat-k7af.no": 1,
+  "xn--muost-0qa.no": 1,
+  "xn--mxtq1m.hk": 1,
+  "xn--mxtq1m.xn--j6w193g": 1,
+  "xn--nit225k.jp": 1,
+  "xn--nmesjevuemie-tcba.no": 1,
+  "xn--nry-yla5g.no": 1,
+  "xn--ntso0iqx3a.jp": 1,
+  "xn--ntsq17g.jp": 1,
+  "xn--nttery-byae.no": 1,
+  "xn--nvuotna-hwa.no": 1,
+  "xn--o1ac.xn--90a3ac": 1,
+  "xn--o1ach.xn--90a3ac": 1,
+  "xn--o3cyx2a.xn--o3cw4h": 1,
+  "xn--od0alg.cn": 1,
+  "xn--od0alg.hk": 1,
+  "xn--od0alg.xn--j6w193g": 1,
+  "xn--od0aq3b.hk": 1,
+  "xn--oppegrd-ixa.no": 1,
+  "xn--ostery-fya.no": 1,
+  "xn--osyro-wua.no": 1,
+  "xn--porsgu-sta26f.no": 1,
+  "xn--pssu33l.jp": 1,
+  "xn--qqqt11m.jp": 1,
+  "xn--rady-ira.no": 1,
+  "xn--rdal-poa.no": 1,
+  "xn--rde-ula.no": 1,
+  "xn--rdy-0nab.no": 1,
+  "xn--rennesy-v1a.no": 1,
+  "xn--rhkkervju-01af.no": 1,
+  "xn--rholt-mra.no": 1,
+  "xn--rht27z.jp": 1,
+  "xn--rht3d.jp": 1,
+  "xn--rht61e.jp": 1,
+  "xn--risa-5na.no": 1,
+  "xn--risr-ira.no": 1,
+  "xn--rland-uua.no": 1,
+  "xn--rlingen-mxa.no": 1,
+  "xn--rmskog-bya.no": 1,
+  "xn--rny31h.jp": 1,
+  "xn--rros-gra.no": 1,
+  "xn--rskog-uua.no": 1,
+  "xn--rst-0na.no": 1,
+  "xn--rsta-fra.no": 1,
+  "xn--ryken-vua.no": 1,
+  "xn--ryrvik-bya.no": 1,
+  "xn--s-1fa.no": 1,
+  "xn--sandnessjen-ogb.no": 1,
+  "xn--sandy-yua.no": 1,
+  "xn--sdtirol-n2a.it": 1,
+  "xn--seral-lra.no": 1,
+  "xn--sgne-gra.no": 1,
+  "xn--skierv-uta.no": 1,
+  "xn--skjervy-v1a.no": 1,
+  "xn--skjk-soa.no": 1,
+  "xn--sknit-yqa.no": 1,
+  "xn--sknland-fxa.no": 1,
+  "xn--slat-5na.no": 1,
+  "xn--slt-elab.no": 1,
+  "xn--smla-hra.no": 1,
+  "xn--smna-gra.no": 1,
+  "xn--snase-nra.no": 1,
+  "xn--sndre-land-0cb.no": 1,
+  "xn--snes-poa.no": 1,
+  "xn--snsa-roa.no": 1,
+  "xn--sr-aurdal-l8a.no": 1,
+  "xn--sr-fron-q1a.no": 1,
+  "xn--sr-odal-q1a.no": 1,
+  "xn--sr-varanger-ggb.no": 1,
+  "xn--srfold-bya.no": 1,
+  "xn--srreisa-q1a.no": 1,
+  "xn--srum-gra.no": 1,
+  "xn--stjrdal-s1a.no": 1,
+  "xn--stjrdalshalsen-sqb.no": 1,
+  "xn--stre-toten-zcb.no": 1,
+  "xn--tjme-hra.no": 1,
+  "xn--tn0ag.hk": 1,
+  "xn--tnsberg-q1a.no": 1,
+  "xn--tor131o.jp": 1,
+  "xn--trany-yua.no": 1,
+  "xn--trentin-sd-tirol-rzb.it": 1,
+  "xn--trentin-sdtirol-7vb.it": 1,
+  "xn--trentino-sd-tirol-c3b.it": 1,
+  "xn--trentino-sdtirol-szb.it": 1,
+  "xn--trentinosd-tirol-rzb.it": 1,
+  "xn--trentinosdtirol-7vb.it": 1,
+  "xn--trentinsd-tirol-6vb.it": 1,
+  "xn--trentinsdtirol-nsb.it": 1,
+  "xn--trgstad-r1a.no": 1,
+  "xn--trna-woa.no": 1,
+  "xn--troms-zua.no": 1,
+  "xn--tysvr-vra.no": 1,
+  "xn--uc0atv.hk": 1,
+  "xn--uc0atv.tw": 1,
+  "xn--uc0atv.xn--j6w193g": 1,
+  "xn--uc0ay4a.hk": 1,
+  "xn--uist22h.jp": 1,
+  "xn--uisz3g.jp": 1,
+  "xn--unjrga-rta.no": 1,
+  "xn--uuwu58a.jp": 1,
+  "xn--vads-jra.no": 1,
+  "xn--valle-aoste-ebb.it": 1,
+  "xn--valle-d-aoste-ehb.it": 1,
+  "xn--valleaoste-e7a.it": 1,
+  "xn--valledaoste-ebb.it": 1,
+  "xn--vard-jra.no": 1,
+  "xn--vegrshei-c0a.no": 1,
+  "xn--vestvgy-ixa6o.no": 1,
+  "xn--vg-yiab.no": 1,
+  "xn--vgan-qoa.no": 1,
+  "xn--vgsy-qoa0j.no": 1,
+  "xn--vgu402c.jp": 1,
+  "xn--vler-qoa.hedmark.no": 1,
+  "xn--vler-qoa.xn--stfold-9xa.no": 1,
+  "xn--vre-eiker-k8a.no": 1,
+  "xn--vrggt-xqad.no": 1,
+  "xn--vry-yla5g.no": 1,
+  "xn--wcvs22d.hk": 1,
+  "xn--wcvs22d.xn--j6w193g": 1,
+  "xn--yer-zna.no": 1,
+  "xn--ygarden-p1a.no": 1,
+  "xn--ystre-slidre-ujb.no": 1,
+  "xn--zbx025d.jp": 1,
+  "xn--zf0ao64a.tw": 1,
+  "xn--zf0avx.hk": 1,
   "xnbay.com": 1,
   "xs4all.space": 1,
   "xx.gl": 1,
@@ -7301,9 +7623,9 @@ window.publicSuffixes = {
   "ybo.review": 1,
   "ybo.science": 1,
   "ybo.trade": 1,
-  "ye": 2,
   "yk.ca": 1,
   "yn.cn": 1,
+  "ynh.fr": 1,
   "yoichi.hokkaido.jp": 1,
   "yoita.niigata.jp": 1,
   "yoka.hyogo.jp": 1,
@@ -7379,119 +7701,5 @@ window.publicSuffixes = {
   "zp.gov.pl": 1,
   "zp.ua": 1,
   "zt.ua": 1,
-  "zushi.kanagawa.jp": 1,
-  "\u00e1k\u014boluokta.no": 1,
-  "\u00e1laheadju.no": 1,
-  "\u00e1lt\u00e1.no": 1,
-  "\u00e5fjord.no": 1,
-  "\u00e5krehamn.no": 1,
-  "\u00e5l.no": 1,
-  "\u00e5lesund.no": 1,
-  "\u00e5lg\u00e5rd.no": 1,
-  "\u00e5mli.no": 1,
-  "\u00e5mot.no": 1,
-  "\u00e5rdal.no": 1,
-  "\u00e5s.no": 1,
-  "\u00e5seral.no": 1,
-  "\u00e5snes.no": 1,
-  "\u00f8ksnes.no": 1,
-  "\u00f8rland.no": 1,
-  "\u00f8rskog.no": 1,
-  "\u00f8rsta.no": 1,
-  "\u00f8stre-toten.no": 1,
-  "\u00f8vre-eiker.no": 1,
-  "\u00f8yer.no": 1,
-  "\u00f8ygarden.no": 1,
-  "\u00f8ystre-slidre.no": 1,
-  "\u010d\u00e1hcesuolo.no": 1,
-  "\u0430\u043a.\u0441\u0440\u0431": 1,
-  "\u0438\u043a\u043e\u043c.museum": 1,
-  "\u043e\u0431\u0440.\u0441\u0440\u0431": 1,
-  "\u043e\u0434.\u0441\u0440\u0431": 1,
-  "\u043e\u0440\u0433.\u0441\u0440\u0431": 1,
-  "\u043f\u0440.\u0441\u0440\u0431": 1,
-  "\u0443\u043f\u0440.\u0441\u0440\u0431": 1,
-  "\u05d9\u05e8\u05d5\u05e9\u05dc\u05d9\u05dd.museum": 1,
-  "\u0627\u064a\u0631\u0627\u0646.ir": 1,
-  "\u0627\u06cc\u0631\u0627\u0646.ir": 1,
-  "\u0e17\u0e2b\u0e32\u0e23.\u0e44\u0e17\u0e22": 1,
-  "\u0e18\u0e38\u0e23\u0e01\u0e34\u0e08.\u0e44\u0e17\u0e22": 1,
-  "\u0e23\u0e31\u0e10\u0e1a\u0e32\u0e25.\u0e44\u0e17\u0e22": 1,
-  "\u0e28\u0e36\u0e01\u0e29\u0e32.\u0e44\u0e17\u0e22": 1,
-  "\u0e2d\u0e07\u0e04\u0e4c\u0e01\u0e23.\u0e44\u0e17\u0e22": 1,
-  "\u0e40\u0e19\u0e47\u0e15.\u0e44\u0e17\u0e22": 1,
-  "\u4e09\u91cd.jp": 1,
-  "\u4e2a\u4eba.hk": 1,
-  "\u4eac\u90fd.jp": 1,
-  "\u4f50\u8cc0.jp": 1,
-  "\u500b\u4eba.hk": 1,
-  "\u500b\u4eba.\u9999\u6e2f": 1,
-  "\u516c\u53f8.cn": 1,
-  "\u516c\u53f8.hk": 1,
-  "\u516c\u53f8.\u9999\u6e2f": 1,
-  "\u5175\u5eab.jp": 1,
-  "\u5317\u6d77\u9053.jp": 1,
-  "\u5343\u8449.jp": 1,
-  "\u548c\u6b4c\u5c71.jp": 1,
-  "\u5546\u696d.tw": 1,
-  "\u57fc\u7389.jp": 1,
-  "\u5927\u5206.jp": 1,
-  "\u5927\u962a.jp": 1,
-  "\u5948\u826f.jp": 1,
-  "\u5bae\u57ce.jp": 1,
-  "\u5bae\u5d0e.jp": 1,
-  "\u5bcc\u5c71.jp": 1,
-  "\u5c71\u53e3.jp": 1,
-  "\u5c71\u5f62.jp": 1,
-  "\u5c71\u68a8.jp": 1,
-  "\u5c90\u961c.jp": 1,
-  "\u5ca1\u5c71.jp": 1,
-  "\u5ca9\u624b.jp": 1,
-  "\u5cf6\u6839.jp": 1,
-  "\u5e83\u5cf6.jp": 1,
-  "\u5fb3\u5cf6.jp": 1,
-  "\u611b\u5a9b.jp": 1,
-  "\u611b\u77e5.jp": 1,
-  "\u653f\u5e9c.hk": 1,
-  "\u653f\u5e9c.\u9999\u6e2f": 1,
-  "\u654e\u80b2.hk": 1,
-  "\u6559\u80b2.hk": 1,
-  "\u6559\u80b2.\u9999\u6e2f": 1,
-  "\u65b0\u6f5f.jp": 1,
-  "\u6771\u4eac.jp": 1,
-  "\u6803\u6728.jp": 1,
-  "\u6c96\u7e04.jp": 1,
-  "\u6ecb\u8cc0.jp": 1,
-  "\u718a\u672c.jp": 1,
-  "\u77f3\u5ddd.jp": 1,
-  "\u795e\u5948\u5ddd.jp": 1,
-  "\u798f\u4e95.jp": 1,
-  "\u798f\u5ca1.jp": 1,
-  "\u798f\u5cf6.jp": 1,
-  "\u79cb\u7530.jp": 1,
-  "\u7b87\u4eba.hk": 1,
-  "\u7d44\u7e54.hk": 1,
-  "\u7d44\u7e54.tw": 1,
-  "\u7d44\u7e54.\u9999\u6e2f": 1,
-  "\u7d44\u7ec7.hk": 1,
-  "\u7db2\u7d61.cn": 1,
-  "\u7db2\u7d61.hk": 1,
-  "\u7db2\u7d61.\u9999\u6e2f": 1,
-  "\u7db2\u7edc.hk": 1,
-  "\u7db2\u8def.tw": 1,
-  "\u7ec4\u7e54.hk": 1,
-  "\u7ec4\u7ec7.hk": 1,
-  "\u7f51\u7d61.hk": 1,
-  "\u7f51\u7edc.cn": 1,
-  "\u7f51\u7edc.hk": 1,
-  "\u7fa4\u99ac.jp": 1,
-  "\u8328\u57ce.jp": 1,
-  "\u9577\u5d0e.jp": 1,
-  "\u9577\u91ce.jp": 1,
-  "\u9752\u68ee.jp": 1,
-  "\u9759\u5ca1.jp": 1,
-  "\u9999\u5ddd.jp": 1,
-  "\u9ad8\u77e5.jp": 1,
-  "\u9ce5\u53d6.jp": 1,
-  "\u9e7f\u5150\u5cf6.jp": 1
+  "zushi.kanagawa.jp": 1
 };
diff --git a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_glass_55_fbf9ee_1x400.png b/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_glass_55_fbf9ee_1x400.png
deleted file mode 100644
index cd430014..00000000
Binary files a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_glass_55_fbf9ee_1x400.png and /dev/null differ
diff --git a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_glass_65_ffffff_1x400.png b/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_glass_65_ffffff_1x400.png
deleted file mode 100644
index e376256c..00000000
Binary files a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_glass_65_ffffff_1x400.png and /dev/null differ
diff --git a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_glass_75_dadada_1x400.png b/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_glass_75_dadada_1x400.png
deleted file mode 100644
index 4caff274..00000000
Binary files a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_glass_75_dadada_1x400.png and /dev/null differ
diff --git a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_glass_75_e6e6e6_1x400.png b/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_glass_75_e6e6e6_1x400.png
deleted file mode 100644
index ade4aea1..00000000
Binary files a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_glass_75_e6e6e6_1x400.png and /dev/null differ
diff --git a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_glass_95_fef1ec_1x400.png b/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_glass_95_fef1ec_1x400.png
deleted file mode 100644
index 7202e44c..00000000
Binary files a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_glass_95_fef1ec_1x400.png and /dev/null differ
diff --git a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_highlight-soft_75_cccccc_1x100.png
deleted file mode 100644
index e8987789..00000000
Binary files a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-bg_highlight-soft_75_cccccc_1x100.png and /dev/null differ
diff --git a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-icons_222222_256x240.png b/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-icons_222222_256x240.png
deleted file mode 100644
index e723e17c..00000000
Binary files a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-icons_222222_256x240.png and /dev/null differ
diff --git a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-icons_2e83ff_256x240.png b/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-icons_2e83ff_256x240.png
deleted file mode 100644
index 1f5f4975..00000000
Binary files a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-icons_2e83ff_256x240.png and /dev/null differ
diff --git a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-icons_454545_256x240.png b/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-icons_454545_256x240.png
deleted file mode 100644
index 618f5b0c..00000000
Binary files a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-icons_454545_256x240.png and /dev/null differ
diff --git a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-icons_888888_256x240.png b/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-icons_888888_256x240.png
deleted file mode 100644
index ee5e33f2..00000000
Binary files a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-icons_888888_256x240.png and /dev/null differ
diff --git a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-icons_cd0a0a_256x240.png b/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-icons_cd0a0a_256x240.png
deleted file mode 100644
index 7e8ebc18..00000000
Binary files a/src/lib/vendor/jquery-ui-1.12.1.custom/images/ui-icons_cd0a0a_256x240.png and /dev/null differ
diff --git a/src/lib/vendor/jquery-ui.custom/images/ui-bg_glass_55_fbf9ee_1x400.png b/src/lib/vendor/jquery-ui.custom/images/ui-bg_glass_55_fbf9ee_1x400.png
new file mode 100644
index 00000000..d5410fa7
Binary files /dev/null and b/src/lib/vendor/jquery-ui.custom/images/ui-bg_glass_55_fbf9ee_1x400.png differ
diff --git a/src/lib/vendor/jquery-ui.custom/images/ui-bg_glass_65_ffffff_1x400.png b/src/lib/vendor/jquery-ui.custom/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100644
index 00000000..11a7f5ed
Binary files /dev/null and b/src/lib/vendor/jquery-ui.custom/images/ui-bg_glass_65_ffffff_1x400.png differ
diff --git a/src/lib/vendor/jquery-ui.custom/images/ui-bg_glass_75_dadada_1x400.png b/src/lib/vendor/jquery-ui.custom/images/ui-bg_glass_75_dadada_1x400.png
new file mode 100644
index 00000000..92e7bd15
Binary files /dev/null and b/src/lib/vendor/jquery-ui.custom/images/ui-bg_glass_75_dadada_1x400.png differ
diff --git a/src/lib/vendor/jquery-ui.custom/images/ui-bg_glass_75_e6e6e6_1x400.png b/src/lib/vendor/jquery-ui.custom/images/ui-bg_glass_75_e6e6e6_1x400.png
new file mode 100644
index 00000000..fd885cd7
Binary files /dev/null and b/src/lib/vendor/jquery-ui.custom/images/ui-bg_glass_75_e6e6e6_1x400.png differ
diff --git a/src/lib/vendor/jquery-ui.custom/images/ui-bg_glass_95_fef1ec_1x400.png b/src/lib/vendor/jquery-ui.custom/images/ui-bg_glass_95_fef1ec_1x400.png
new file mode 100644
index 00000000..294d1738
Binary files /dev/null and b/src/lib/vendor/jquery-ui.custom/images/ui-bg_glass_95_fef1ec_1x400.png differ
diff --git a/src/lib/vendor/jquery-ui.custom/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/src/lib/vendor/jquery-ui.custom/images/ui-bg_highlight-soft_75_cccccc_1x100.png
new file mode 100644
index 00000000..80ff9a2a
Binary files /dev/null and b/src/lib/vendor/jquery-ui.custom/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ
diff --git a/src/lib/vendor/jquery-ui.custom/images/ui-icons_222222_256x240.png b/src/lib/vendor/jquery-ui.custom/images/ui-icons_222222_256x240.png
new file mode 100644
index 00000000..aeb5e76f
Binary files /dev/null and b/src/lib/vendor/jquery-ui.custom/images/ui-icons_222222_256x240.png differ
diff --git a/src/lib/vendor/jquery-ui.custom/images/ui-icons_2e83ff_256x240.png b/src/lib/vendor/jquery-ui.custom/images/ui-icons_2e83ff_256x240.png
new file mode 100644
index 00000000..028055f6
Binary files /dev/null and b/src/lib/vendor/jquery-ui.custom/images/ui-icons_2e83ff_256x240.png differ
diff --git a/src/lib/vendor/jquery-ui.custom/images/ui-icons_454545_256x240.png b/src/lib/vendor/jquery-ui.custom/images/ui-icons_454545_256x240.png
new file mode 100644
index 00000000..22b3fb3a
Binary files /dev/null and b/src/lib/vendor/jquery-ui.custom/images/ui-icons_454545_256x240.png differ
diff --git a/src/lib/vendor/jquery-ui.custom/images/ui-icons_888888_256x240.png b/src/lib/vendor/jquery-ui.custom/images/ui-icons_888888_256x240.png
new file mode 100644
index 00000000..ff408f8e
Binary files /dev/null and b/src/lib/vendor/jquery-ui.custom/images/ui-icons_888888_256x240.png differ
diff --git a/src/lib/vendor/jquery-ui.custom/images/ui-icons_cd0a0a_256x240.png b/src/lib/vendor/jquery-ui.custom/images/ui-icons_cd0a0a_256x240.png
new file mode 100644
index 00000000..0abff8ed
Binary files /dev/null and b/src/lib/vendor/jquery-ui.custom/images/ui-icons_cd0a0a_256x240.png differ
diff --git a/src/lib/vendor/jquery-ui-1.12.1.custom/jquery-ui.js b/src/lib/vendor/jquery-ui.custom/jquery-ui.js
similarity index 91%
rename from src/lib/vendor/jquery-ui-1.12.1.custom/jquery-ui.js
rename to src/lib/vendor/jquery-ui.custom/jquery-ui.js
index 2a4e76db..6626baa6 100644
--- a/src/lib/vendor/jquery-ui-1.12.1.custom/jquery-ui.js
+++ b/src/lib/vendor/jquery-ui.custom/jquery-ui.js
@@ -1,27 +1,30 @@
-/*! jQuery UI - v1.12.1 - 2020-06-16
+/*! jQuery UI - v1.13.0 - 2021-10-26
 * http://jqueryui.com
-* Includes: widget.js, form-reset-mixin.js, keycode.js, labels.js, unique-id.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/tabs.js
+* Includes: widget.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, unique-id.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/tabs.js
 * Copyright jQuery Foundation and other contributors; Licensed MIT */
 
-(function( factory ) {
+( function( factory ) {
+	"use strict";
+	
 	if ( typeof define === "function" && define.amd ) {
 
 		// AMD. Register as an anonymous module.
-		define([ "jquery" ], factory );
+		define( [ "jquery" ], factory );
 	} else {
 
 		// Browser globals
 		factory( jQuery );
 	}
-}(function( $ ) {
+} )( function( $ ) {
+"use strict";
 
 $.ui = $.ui || {};
 
-var version = $.ui.version = "1.12.1";
+var version = $.ui.version = "1.13.0";
 
 
 /*!
- * jQuery UI Widget 1.12.1
+ * jQuery UI Widget 1.13.0
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -36,24 +39,20 @@ var version = $.ui.version = "1.12.1";
 //>>demos: http://jqueryui.com/widget/
 
 
-
 var widgetUuid = 0;
+var widgetHasOwnProperty = Array.prototype.hasOwnProperty;
 var widgetSlice = Array.prototype.slice;
 
 $.cleanData = ( function( orig ) {
 	return function( elems ) {
 		var events, elem, i;
 		for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {
-			try {
-
-				// Only trigger remove when necessary to save time
-				events = $._data( elem, "events" );
-				if ( events && events.remove ) {
-					$( elem ).triggerHandler( "remove" );
-				}
 
-			// Http://bugs.jquery.com/ticket/8235
-			} catch ( e ) {}
+			// Only trigger remove when necessary to save time
+			events = $._data( elem, "events" );
+			if ( events && events.remove ) {
+				$( elem ).triggerHandler( "remove" );
+			}
 		}
 		orig( elems );
 	};
@@ -75,12 +74,12 @@ $.widget = function( name, base, prototype ) {
 		base = $.Widget;
 	}
 
-	if ( $.isArray( prototype ) ) {
+	if ( Array.isArray( prototype ) ) {
 		prototype = $.extend.apply( null, [ {} ].concat( prototype ) );
 	}
 
 	// Create selector for plugin
-	$.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
+	$.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {
 		return !!$.data( elem, fullName );
 	};
 
@@ -120,7 +119,7 @@ $.widget = function( name, base, prototype ) {
 	// inheriting from
 	basePrototype.options = $.widget.extend( {}, basePrototype.options );
 	$.each( prototype, function( prop, value ) {
-		if ( !$.isFunction( value ) ) {
+		if ( typeof value !== "function" ) {
 			proxiedPrototype[ prop ] = value;
 			return;
 		}
@@ -199,7 +198,7 @@ $.widget.extend = function( target ) {
 	for ( ; inputIndex < inputLength; inputIndex++ ) {
 		for ( key in input[ inputIndex ] ) {
 			value = input[ inputIndex ][ key ];
-			if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
+			if ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {
 
 				// Clone objects
 				if ( $.isPlainObject( value ) ) {
@@ -248,7 +247,8 @@ $.widget.bridge = function( name, object ) {
 							"attempted to call method '" + options + "'" );
 					}
 
-					if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) {
+					if ( typeof instance[ options ] !== "function" ||
+						options.charAt( 0 ) === "_" ) {
 						return $.error( "no such method '" + options + "' for " + name +
 							" widget instance" );
 					}
@@ -509,12 +509,30 @@ $.Widget.prototype = {
 			classes: this.options.classes || {}
 		}, options );
 
+		function bindRemoveEvent() {
+			options.element.each( function( _, element ) {
+				var isTracked = $.map( that.classesElementLookup, function( elements ) {
+					return elements;
+				} )
+					.some( function( elements ) {
+						return elements.is( element );
+					} );
+
+				if ( !isTracked ) {
+					that._on( $( element ), {
+						remove: "_untrackClassesElement"
+					} );
+				}
+			} );
+		}
+
 		function processClassString( classes, checkOption ) {
 			var current, i;
 			for ( i = 0; i < classes.length; i++ ) {
 				current = that.classesElementLookup[ classes[ i ] ] || $();
 				if ( options.add ) {
-					current = $( $.unique( current.get().concat( options.element.get() ) ) );
+					bindRemoveEvent();
+					current = $( $.uniqueSort( current.get().concat( options.element.get() ) ) );
 				} else {
 					current = $( current.not( options.element ).get() );
 				}
@@ -526,10 +544,6 @@ $.Widget.prototype = {
 			}
 		}
 
-		this._on( options.element, {
-			"remove": "_untrackClassesElement"
-		} );
-
 		if ( options.keys ) {
 			processClassString( options.keys.match( /\S+/g ) || [], true );
 		}
@@ -547,6 +561,8 @@ $.Widget.prototype = {
 				that.classesElementLookup[ key ] = $( value.not( event.target ).get() );
 			}
 		} );
+
+		this._off( $( event.target ) );
 	},
 
 	_removeClass: function( element, keys, extra ) {
@@ -627,7 +643,7 @@ $.Widget.prototype = {
 	_off: function( element, eventName ) {
 		eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) +
 			this.eventNamespace;
-		element.off( eventName ).off( eventName );
+		element.off( eventName );
 
 		// Clear the stack to avoid memory leaks (#10056)
 		this.bindings = $( this.bindings.not( element ).get() );
@@ -693,7 +709,7 @@ $.Widget.prototype = {
 		}
 
 		this.element.trigger( event, data );
-		return !( $.isFunction( callback ) &&
+		return !( typeof callback === "function" &&
 			callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||
 			event.isDefaultPrevented() );
 	}
@@ -715,6 +731,8 @@ $.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
 		options = options || {};
 		if ( typeof options === "number" ) {
 			options = { duration: options };
+		} else if ( options === true ) {
+			options = {};
 		}
 
 		hasOptions = !$.isEmptyObject( options );
@@ -744,17 +762,16 @@ var widget = $.widget;
 
 
 
-
 // Support: IE8 Only
 // IE8 does not support the form attribute and when it is supplied. It overwrites the form prop
 // with a string, so we need to find the proper form.
-var form = $.fn.form = function() {
+var form = $.fn._form = function() {
 	return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form );
 };
 
 
 /*!
- * jQuery UI Form Reset Mixin 1.12.1
+ * jQuery UI Form Reset Mixin 1.13.0
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -768,7 +785,6 @@ var form = $.fn.form = function() {
 //>>docs: http://api.jqueryui.com/form-reset-mixin/
 
 
-
 var formResetMixin = $.ui.formResetMixin = {
 	_formResetHandler: function() {
 		var form = $( this );
@@ -783,7 +799,7 @@ var formResetMixin = $.ui.formResetMixin = {
 	},
 
 	_bindFormResetHandler: function() {
-		this.form = this.element.form();
+		this.form = this.element._form();
 		if ( !this.form.length ) {
 			return;
 		}
@@ -817,7 +833,82 @@ var formResetMixin = $.ui.formResetMixin = {
 
 
 /*!
- * jQuery UI Keycode 1.12.1
+ * jQuery UI Support for jQuery core 1.8.x and newer 1.13.0
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ */
+
+//>>label: jQuery 1.8+ Support
+//>>group: Core
+//>>description: Support version 1.8.x and newer of jQuery core
+
+
+// Support: jQuery 1.9.x or older
+// $.expr[ ":" ] is deprecated.
+if ( !$.expr.pseudos ) {
+	$.expr.pseudos = $.expr[ ":" ];
+}
+
+// Support: jQuery 1.11.x or older
+// $.unique has been renamed to $.uniqueSort
+if ( !$.uniqueSort ) {
+	$.uniqueSort = $.unique;
+}
+
+// Support: jQuery 2.2.x or older.
+// This method has been defined in jQuery 3.0.0.
+// Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js
+if ( !$.escapeSelector ) {
+
+	// CSS string/identifier serialization
+	// https://drafts.csswg.org/cssom/#common-serializing-idioms
+	var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
+
+	var fcssescape = function( ch, asCodePoint ) {
+		if ( asCodePoint ) {
+
+			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+			if ( ch === "\0" ) {
+				return "\uFFFD";
+			}
+
+			// Control characters and (dependent upon position) numbers get escaped as code points
+			return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+		}
+
+		// Other potentially-special ASCII characters get backslash-escaped
+		return "\\" + ch;
+	};
+
+	$.escapeSelector = function( sel ) {
+		return ( sel + "" ).replace( rcssescape, fcssescape );
+	};
+}
+
+// Support: jQuery 3.4.x or older
+// These methods have been defined in jQuery 3.5.0.
+if ( !$.fn.even || !$.fn.odd ) {
+	$.fn.extend( {
+		even: function() {
+			return this.filter( function( i ) {
+				return i % 2 === 0;
+			} );
+		},
+		odd: function() {
+			return this.filter( function( i ) {
+				return i % 2 === 1;
+			} );
+		}
+	} );
+}
+
+;
+/*!
+ * jQuery UI Keycode 1.13.0
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -851,19 +942,8 @@ var keycode = $.ui.keyCode = {
 };
 
 
-
-
-// Internal use only
-var escapeSelector = $.ui.escapeSelector = ( function() {
-	var selectorEscape = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;
-	return function( selector ) {
-		return selector.replace( selectorEscape, "\\$1" );
-	};
-} )();
-
-
 /*!
- * jQuery UI Labels 1.12.1
+ * jQuery UI Labels 1.13.0
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -877,10 +957,13 @@ var escapeSelector = $.ui.escapeSelector = ( function() {
 //>>docs: http://api.jqueryui.com/labels/
 
 
-
 var labels = $.fn.labels = function() {
 	var ancestor, selector, id, labels, ancestors;
 
+	if ( !this.length ) {
+		return this.pushStack( [] );
+	}
+
 	// Check control.labels first
 	if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
 		return this.pushStack( this[ 0 ].labels );
@@ -903,7 +986,7 @@ var labels = $.fn.labels = function() {
 		ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
 
 		// Create a selector for the label based on the id
-		selector = "label[for='" + $.ui.escapeSelector( id ) + "']";
+		selector = "label[for='" + $.escapeSelector( id ) + "']";
 
 		labels = labels.add( ancestors.find( selector ).addBack( selector ) );
 
@@ -915,7 +998,7 @@ var labels = $.fn.labels = function() {
 
 
 /*!
- * jQuery UI Unique ID 1.12.1
+ * jQuery UI Unique ID 1.13.0
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -929,7 +1012,6 @@ var labels = $.fn.labels = function() {
 //>>docs: http://api.jqueryui.com/uniqueId/
 
 
-
 var uniqueId = $.fn.extend( {
 	uniqueId: ( function() {
 		var uuid = 0;
@@ -954,7 +1036,7 @@ var uniqueId = $.fn.extend( {
 
 
 /*!
- * jQuery UI Controlgroup 1.12.1
+ * jQuery UI Controlgroup 1.13.0
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -975,7 +1057,7 @@ var uniqueId = $.fn.extend( {
 var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;
 
 var widgetsControlgroup = $.widget( "ui.controlgroup", {
-	version: "1.12.1",
+	version: "1.13.0",
 	defaultElement: "<div>",
 	options: {
 		direction: "horizontal",
@@ -1092,7 +1174,7 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
 				} );
 		} );
 
-		this.childWidgets = $( $.unique( childWidgets ) );
+		this.childWidgets = $( $.uniqueSort( childWidgets ) );
 		this._addClass( this.childWidgets, "ui-controlgroup-item" );
 	},
 
@@ -1176,7 +1258,7 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
 		var result = {};
 		$.each( classes, function( key ) {
 			var current = instance.options.classes[ key ] || "";
-			current = $.trim( current.replace( controlgroupCornerRegex, "" ) );
+			current = String.prototype.trim.call( current.replace( controlgroupCornerRegex, "" ) );
 			result[ key ] = ( current + " " + classes[ key ] ).replace( /\s+/g, " " );
 		} );
 		return result;
@@ -1239,7 +1321,7 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
 } );
 
 /*!
- * jQuery UI Checkboxradio 1.12.1
+ * jQuery UI Checkboxradio 1.13.0
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -1258,9 +1340,8 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
 //>>css.theme: ../../themes/base/theme.css
 
 
-
 $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
-	version: "1.12.1",
+	version: "1.13.0",
 	options: {
 		disabled: null,
 		label: null,
@@ -1339,9 +1420,6 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
 
 		if ( checked ) {
 			this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" );
-			if ( this.icon ) {
-				this._addClass( this.icon, null, "ui-state-hover" );
-			}
 		}
 
 		this._on( {
@@ -1376,7 +1454,7 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
 	_getRadioGroup: function() {
 		var group;
 		var name = this.element[ 0 ].name;
-		var nameSelector = "input[name='" + $.ui.escapeSelector( name ) + "']";
+		var nameSelector = "input[name='" + $.escapeSelector( name ) + "']";
 
 		if ( !name ) {
 			return $( [] );
@@ -1388,7 +1466,7 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
 
 			// Not inside a form, check all inputs that also are not inside a form
 			group = $( nameSelector ).filter( function() {
-				return $( this ).form().length === 0;
+				return $( this )._form().length === 0;
 			} );
 		}
 
@@ -1509,7 +1587,7 @@ var widgetsCheckboxradio = $.ui.checkboxradio;
 
 
 /*!
- * jQuery UI Button 1.12.1
+ * jQuery UI Button 1.13.0
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -1527,9 +1605,8 @@ var widgetsCheckboxradio = $.ui.checkboxradio;
 //>>css.theme: ../../themes/base/theme.css
 
 
-
 $.widget( "ui.button", {
-	version: "1.12.1",
+	version: "1.13.0",
 	defaultElement: "<button>",
 	options: {
 		classes: {
@@ -1753,7 +1830,7 @@ $.widget( "ui.button", {
 			this._toggleClass( null, "ui-state-disabled", value );
 			this.element[ 0 ].disabled = value;
 			if ( value ) {
-				this.element.blur();
+				this.element.trigger( "blur" );
 			}
 		}
 	},
@@ -1832,22 +1909,82 @@ if ( $.uiBackCompat !== false ) {
 	} );
 
 	$.fn.button = ( function( orig ) {
-		return function() {
-			if ( !this.length || ( this.length && this[ 0 ].tagName !== "INPUT" ) ||
-					( this.length && this[ 0 ].tagName === "INPUT" && (
-						this.attr( "type" ) !== "checkbox" && this.attr( "type" ) !== "radio"
-					) ) ) {
-				return orig.apply( this, arguments );
-			}
-			if ( !$.ui.checkboxradio ) {
-				$.error( "Checkboxradio widget missing" );
-			}
-			if ( arguments.length === 0 ) {
-				return this.checkboxradio( {
-					"icon": false
+		return function( options ) {
+			var isMethodCall = typeof options === "string";
+			var args = Array.prototype.slice.call( arguments, 1 );
+			var returnValue = this;
+
+			if ( isMethodCall ) {
+
+				// If this is an empty collection, we need to have the instance method
+				// return undefined instead of the jQuery instance
+				if ( !this.length && options === "instance" ) {
+					returnValue = undefined;
+				} else {
+					this.each( function() {
+						var methodValue;
+						var type = $( this ).attr( "type" );
+						var name = type !== "checkbox" && type !== "radio" ?
+							"button" :
+							"checkboxradio";
+						var instance = $.data( this, "ui-" + name );
+
+						if ( options === "instance" ) {
+							returnValue = instance;
+							return false;
+						}
+
+						if ( !instance ) {
+							return $.error( "cannot call methods on button" +
+								" prior to initialization; " +
+								"attempted to call method '" + options + "'" );
+						}
+
+						if ( typeof instance[ options ] !== "function" ||
+							options.charAt( 0 ) === "_" ) {
+							return $.error( "no such method '" + options + "' for button" +
+								" widget instance" );
+						}
+
+						methodValue = instance[ options ].apply( instance, args );
+
+						if ( methodValue !== instance && methodValue !== undefined ) {
+							returnValue = methodValue && methodValue.jquery ?
+								returnValue.pushStack( methodValue.get() ) :
+								methodValue;
+							return false;
+						}
+					} );
+				}
+			} else {
+
+				// Allow multiple hashes to be passed on init
+				if ( args.length ) {
+					options = $.widget.extend.apply( null, [ options ].concat( args ) );
+				}
+
+				this.each( function() {
+					var type = $( this ).attr( "type" );
+					var name = type !== "checkbox" && type !== "radio" ? "button" : "checkboxradio";
+					var instance = $.data( this, "ui-" + name );
+
+					if ( instance ) {
+						instance.option( options || {} );
+						if ( instance._init ) {
+							instance._init();
+						}
+					} else {
+						if ( name === "button" ) {
+							orig.call( $( this ), options );
+							return;
+						}
+
+						$( this ).checkboxradio( $.extend( { icon: false }, options ) );
+					}
 				} );
 			}
-			return this.checkboxradio.apply( this, arguments );
+
+			return returnValue;
 		};
 	} )( $.fn.button );
 
@@ -1905,7 +2042,7 @@ var safeActiveElement = $.ui.safeActiveElement = function( document ) {
 
 
 /*!
- * jQuery UI Tabs 1.12.1
+ * jQuery UI Tabs 1.13.0
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -1923,9 +2060,8 @@ var safeActiveElement = $.ui.safeActiveElement = function( document ) {
 //>>css.theme: ../../themes/base/theme.css
 
 
-
 $.widget( "ui.tabs", {
-	version: "1.12.1",
+	version: "1.13.0",
 	delay: 300,
 	options: {
 		active: null,
@@ -1983,8 +2119,8 @@ $.widget( "ui.tabs", {
 
 		// Take disabling tabs via class attribute from HTML
 		// into account and update option properly.
-		if ( $.isArray( options.disabled ) ) {
-			options.disabled = $.unique( options.disabled.concat(
+		if ( Array.isArray( options.disabled ) ) {
+			options.disabled = $.uniqueSort( options.disabled.concat(
 				$.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
 					return that.tabs.index( li );
 				} )
@@ -2319,7 +2455,6 @@ $.widget( "ui.tabs", {
 			return $( "a", this )[ 0 ];
 		} )
 			.attr( {
-				role: "presentation",
 				tabIndex: -1
 			} );
 		this._addClass( this.anchors, "ui-tabs-anchor" );
@@ -2391,7 +2526,7 @@ $.widget( "ui.tabs", {
 	_setOptionDisabled: function( disabled ) {
 		var currentItem, li, i;
 
-		if ( $.isArray( disabled ) ) {
+		if ( Array.isArray( disabled ) ) {
 			if ( !disabled.length ) {
 				disabled = false;
 			} else if ( disabled.length === this.anchors.length ) {
@@ -2622,7 +2757,7 @@ $.widget( "ui.tabs", {
 		// meta-function to give users option to provide a href string instead of a numerical index.
 		if ( typeof index === "string" ) {
 			index = this.anchors.index( this.anchors.filter( "[href$='" +
-				$.ui.escapeSelector( index ) + "']" ) );
+				$.escapeSelector( index ) + "']" ) );
 		}
 
 		return index;
@@ -2679,7 +2814,7 @@ $.widget( "ui.tabs", {
 			disabled = false;
 		} else {
 			index = this._getIndex( index );
-			if ( $.isArray( disabled ) ) {
+			if ( Array.isArray( disabled ) ) {
 				disabled = $.map( disabled, function( num ) {
 					return num !== index ? num : null;
 				} );
@@ -2705,7 +2840,7 @@ $.widget( "ui.tabs", {
 			if ( $.inArray( index, disabled ) !== -1 ) {
 				return;
 			}
-			if ( $.isArray( disabled ) ) {
+			if ( Array.isArray( disabled ) ) {
 				disabled = $.merge( [ index ], disabled ).sort();
 			} else {
 				disabled = [ index ];
@@ -2812,4 +2947,4 @@ var widgetsTabs = $.ui.tabs;
 
 
 
-}));
\ No newline at end of file
+} );
\ No newline at end of file
diff --git a/src/lib/vendor/jquery-ui-1.12.1.custom/jquery-ui.structure.css b/src/lib/vendor/jquery-ui.custom/jquery-ui.structure.css
similarity index 98%
rename from src/lib/vendor/jquery-ui-1.12.1.custom/jquery-ui.structure.css
rename to src/lib/vendor/jquery-ui.custom/jquery-ui.structure.css
index b4e40563..715ed94c 100644
--- a/src/lib/vendor/jquery-ui-1.12.1.custom/jquery-ui.structure.css
+++ b/src/lib/vendor/jquery-ui.custom/jquery-ui.structure.css
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI CSS Framework 1.12.1
+ * jQuery UI CSS Framework 1.13.0
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -49,7 +49,7 @@
 	left: 0;
 	position: absolute;
 	opacity: 0;
-	filter:Alpha(Opacity=0); /* support: IE8 */
+	-ms-filter: "alpha(opacity=0)"; /* support: IE8 */
 }
 
 .ui-front {
diff --git a/src/lib/vendor/jquery-ui-1.12.1.custom/jquery-ui.theme.css b/src/lib/vendor/jquery-ui.custom/jquery-ui.theme.css
similarity index 97%
rename from src/lib/vendor/jquery-ui-1.12.1.custom/jquery-ui.theme.css
rename to src/lib/vendor/jquery-ui.custom/jquery-ui.theme.css
index 3c5908b9..dcc03e5a 100644
--- a/src/lib/vendor/jquery-ui-1.12.1.custom/jquery-ui.theme.css
+++ b/src/lib/vendor/jquery-ui.custom/jquery-ui.theme.css
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI CSS Framework 1.12.1
+ * jQuery UI CSS Framework 1.13.0
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -172,18 +172,18 @@ a.ui-button:active,
 .ui-widget-content .ui-priority-secondary,
 .ui-widget-header .ui-priority-secondary {
 	opacity: .7;
-	filter:Alpha(Opacity=70); /* support: IE8 */
+	-ms-filter: "alpha(opacity=70)"; /* support: IE8 */
 	font-weight: normal;
 }
 .ui-state-disabled,
 .ui-widget-content .ui-state-disabled,
 .ui-widget-header .ui-state-disabled {
 	opacity: .35;
-	filter:Alpha(Opacity=35); /* support: IE8 */
+	-ms-filter: "alpha(opacity=35)"; /* support: IE8 */
 	background-image: none;
 }
 .ui-state-disabled .ui-icon {
-	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
+	-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
 }
 
 /* Icons
@@ -224,7 +224,10 @@ a.ui-button:active,
 }
 
 /* positioning */
-.ui-icon-blank { background-position: 16px 16px; }
+/* Three classes needed to override `.ui-button:hover .ui-icon` */
+.ui-icon-blank.ui-icon-blank.ui-icon-blank {
+	background-image: none;
+}
 .ui-icon-caret-1-n { background-position: 0 0; }
 .ui-icon-caret-1-ne { background-position: -16px 0; }
 .ui-icon-caret-1-e { background-position: -32px 0; }
@@ -435,7 +438,7 @@ a.ui-button:active,
 .ui-widget-overlay {
 	background: #aaaaaa;
 	opacity: .3;
-	filter: Alpha(Opacity=30); /* support: IE8 */
+	-ms-filter: Alpha(Opacity=30); /* support: IE8 */
 }
 .ui-widget-shadow {
 	-webkit-box-shadow: -8px -8px 8px #aaaaaa;
diff --git a/src/lib/vendor/punycode-1.4.1.js b/src/lib/vendor/punycode-1.4.1.js
deleted file mode 100644
index 2c87f6cc..00000000
--- a/src/lib/vendor/punycode-1.4.1.js
+++ /dev/null
@@ -1,533 +0,0 @@
-/*! https://mths.be/punycode v1.4.1 by @mathias */
-;(function(root) {
-
-	/** Detect free variables */
-	var freeExports = typeof exports == 'object' && exports &&
-		!exports.nodeType && exports;
-	var freeModule = typeof module == 'object' && module &&
-		!module.nodeType && module;
-	var freeGlobal = typeof global == 'object' && global;
-	if (
-		freeGlobal.global === freeGlobal ||
-		freeGlobal.window === freeGlobal ||
-		freeGlobal.self === freeGlobal
-	) {
-		root = freeGlobal;
-	}
-
-	/**
-	 * The `punycode` object.
-	 * @name punycode
-	 * @type Object
-	 */
-	var punycode,
-
-	/** Highest positive signed 32-bit float value */
-	maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
-
-	/** Bootstring parameters */
-	base = 36,
-	tMin = 1,
-	tMax = 26,
-	skew = 38,
-	damp = 700,
-	initialBias = 72,
-	initialN = 128, // 0x80
-	delimiter = '-', // '\x2D'
-
-	/** Regular expressions */
-	regexPunycode = /^xn--/,
-	regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
-	regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
-
-	/** Error messages */
-	errors = {
-		'overflow': 'Overflow: input needs wider integers to process',
-		'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
-		'invalid-input': 'Invalid input'
-	},
-
-	/** Convenience shortcuts */
-	baseMinusTMin = base - tMin,
-	floor = Math.floor,
-	stringFromCharCode = String.fromCharCode,
-
-	/** Temporary variable */
-	key;
-
-	/*--------------------------------------------------------------------------*/
-
-	/**
-	 * A generic error utility function.
-	 * @private
-	 * @param {String} type The error type.
-	 * @returns {Error} Throws a `RangeError` with the applicable error message.
-	 */
-	function error(type) {
-		throw new RangeError(errors[type]);
-	}
-
-	/**
-	 * A generic `Array#map` utility function.
-	 * @private
-	 * @param {Array} array The array to iterate over.
-	 * @param {Function} callback The function that gets called for every array
-	 * item.
-	 * @returns {Array} A new array of values returned by the callback function.
-	 */
-	function map(array, fn) {
-		var length = array.length;
-		var result = [];
-		while (length--) {
-			result[length] = fn(array[length]);
-		}
-		return result;
-	}
-
-	/**
-	 * A simple `Array#map`-like wrapper to work with domain name strings or email
-	 * addresses.
-	 * @private
-	 * @param {String} domain The domain name or email address.
-	 * @param {Function} callback The function that gets called for every
-	 * character.
-	 * @returns {Array} A new string of characters returned by the callback
-	 * function.
-	 */
-	function mapDomain(string, fn) {
-		var parts = string.split('@');
-		var result = '';
-		if (parts.length > 1) {
-			// In email addresses, only the domain name should be punycoded. Leave
-			// the local part (i.e. everything up to `@`) intact.
-			result = parts[0] + '@';
-			string = parts[1];
-		}
-		// Avoid `split(regex)` for IE8 compatibility. See #17.
-		string = string.replace(regexSeparators, '\x2E');
-		var labels = string.split('.');
-		var encoded = map(labels, fn).join('.');
-		return result + encoded;
-	}
-
-	/**
-	 * Creates an array containing the numeric code points of each Unicode
-	 * character in the string. While JavaScript uses UCS-2 internally,
-	 * this function will convert a pair of surrogate halves (each of which
-	 * UCS-2 exposes as separate characters) into a single code point,
-	 * matching UTF-16.
-	 * @see `punycode.ucs2.encode`
-	 * @see <https://mathiasbynens.be/notes/javascript-encoding>
-	 * @memberOf punycode.ucs2
-	 * @name decode
-	 * @param {String} string The Unicode input string (UCS-2).
-	 * @returns {Array} The new array of code points.
-	 */
-	function ucs2decode(string) {
-		var output = [],
-		    counter = 0,
-		    length = string.length,
-		    value,
-		    extra;
-		while (counter < length) {
-			value = string.charCodeAt(counter++);
-			if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
-				// high surrogate, and there is a next character
-				extra = string.charCodeAt(counter++);
-				if ((extra & 0xFC00) == 0xDC00) { // low surrogate
-					output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
-				} else {
-					// unmatched surrogate; only append this code unit, in case the next
-					// code unit is the high surrogate of a surrogate pair
-					output.push(value);
-					counter--;
-				}
-			} else {
-				output.push(value);
-			}
-		}
-		return output;
-	}
-
-	/**
-	 * Creates a string based on an array of numeric code points.
-	 * @see `punycode.ucs2.decode`
-	 * @memberOf punycode.ucs2
-	 * @name encode
-	 * @param {Array} codePoints The array of numeric code points.
-	 * @returns {String} The new Unicode string (UCS-2).
-	 */
-	function ucs2encode(array) {
-		return map(array, function(value) {
-			var output = '';
-			if (value > 0xFFFF) {
-				value -= 0x10000;
-				output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
-				value = 0xDC00 | value & 0x3FF;
-			}
-			output += stringFromCharCode(value);
-			return output;
-		}).join('');
-	}
-
-	/**
-	 * Converts a basic code point into a digit/integer.
-	 * @see `digitToBasic()`
-	 * @private
-	 * @param {Number} codePoint The basic numeric code point value.
-	 * @returns {Number} The numeric value of a basic code point (for use in
-	 * representing integers) in the range `0` to `base - 1`, or `base` if
-	 * the code point does not represent a value.
-	 */
-	function basicToDigit(codePoint) {
-		if (codePoint - 48 < 10) {
-			return codePoint - 22;
-		}
-		if (codePoint - 65 < 26) {
-			return codePoint - 65;
-		}
-		if (codePoint - 97 < 26) {
-			return codePoint - 97;
-		}
-		return base;
-	}
-
-	/**
-	 * Converts a digit/integer into a basic code point.
-	 * @see `basicToDigit()`
-	 * @private
-	 * @param {Number} digit The numeric value of a basic code point.
-	 * @returns {Number} The basic code point whose value (when used for
-	 * representing integers) is `digit`, which needs to be in the range
-	 * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
-	 * used; else, the lowercase form is used. The behavior is undefined
-	 * if `flag` is non-zero and `digit` has no uppercase form.
-	 */
-	function digitToBasic(digit, flag) {
-		//  0..25 map to ASCII a..z or A..Z
-		// 26..35 map to ASCII 0..9
-		return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
-	}
-
-	/**
-	 * Bias adaptation function as per section 3.4 of RFC 3492.
-	 * https://tools.ietf.org/html/rfc3492#section-3.4
-	 * @private
-	 */
-	function adapt(delta, numPoints, firstTime) {
-		var k = 0;
-		delta = firstTime ? floor(delta / damp) : delta >> 1;
-		delta += floor(delta / numPoints);
-		for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
-			delta = floor(delta / baseMinusTMin);
-		}
-		return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
-	}
-
-	/**
-	 * Converts a Punycode string of ASCII-only symbols to a string of Unicode
-	 * symbols.
-	 * @memberOf punycode
-	 * @param {String} input The Punycode string of ASCII-only symbols.
-	 * @returns {String} The resulting string of Unicode symbols.
-	 */
-	function decode(input) {
-		// Don't use UCS-2
-		var output = [],
-		    inputLength = input.length,
-		    out,
-		    i = 0,
-		    n = initialN,
-		    bias = initialBias,
-		    basic,
-		    j,
-		    index,
-		    oldi,
-		    w,
-		    k,
-		    digit,
-		    t,
-		    /** Cached calculation results */
-		    baseMinusT;
-
-		// Handle the basic code points: let `basic` be the number of input code
-		// points before the last delimiter, or `0` if there is none, then copy
-		// the first basic code points to the output.
-
-		basic = input.lastIndexOf(delimiter);
-		if (basic < 0) {
-			basic = 0;
-		}
-
-		for (j = 0; j < basic; ++j) {
-			// if it's not a basic code point
-			if (input.charCodeAt(j) >= 0x80) {
-				error('not-basic');
-			}
-			output.push(input.charCodeAt(j));
-		}
-
-		// Main decoding loop: start just after the last delimiter if any basic code
-		// points were copied; start at the beginning otherwise.
-
-		for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
-
-			// `index` is the index of the next character to be consumed.
-			// Decode a generalized variable-length integer into `delta`,
-			// which gets added to `i`. The overflow checking is easier
-			// if we increase `i` as we go, then subtract off its starting
-			// value at the end to obtain `delta`.
-			for (oldi = i, w = 1, k = base; /* no condition */; k += base) {
-
-				if (index >= inputLength) {
-					error('invalid-input');
-				}
-
-				digit = basicToDigit(input.charCodeAt(index++));
-
-				if (digit >= base || digit > floor((maxInt - i) / w)) {
-					error('overflow');
-				}
-
-				i += digit * w;
-				t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
-
-				if (digit < t) {
-					break;
-				}
-
-				baseMinusT = base - t;
-				if (w > floor(maxInt / baseMinusT)) {
-					error('overflow');
-				}
-
-				w *= baseMinusT;
-
-			}
-
-			out = output.length + 1;
-			bias = adapt(i - oldi, out, oldi == 0);
-
-			// `i` was supposed to wrap around from `out` to `0`,
-			// incrementing `n` each time, so we'll fix that now:
-			if (floor(i / out) > maxInt - n) {
-				error('overflow');
-			}
-
-			n += floor(i / out);
-			i %= out;
-
-			// Insert `n` at position `i` of the output
-			output.splice(i++, 0, n);
-
-		}
-
-		return ucs2encode(output);
-	}
-
-	/**
-	 * Converts a string of Unicode symbols (e.g. a domain name label) to a
-	 * Punycode string of ASCII-only symbols.
-	 * @memberOf punycode
-	 * @param {String} input The string of Unicode symbols.
-	 * @returns {String} The resulting Punycode string of ASCII-only symbols.
-	 */
-	function encode(input) {
-		var n,
-		    delta,
-		    handledCPCount,
-		    basicLength,
-		    bias,
-		    j,
-		    m,
-		    q,
-		    k,
-		    t,
-		    currentValue,
-		    output = [],
-		    /** `inputLength` will hold the number of code points in `input`. */
-		    inputLength,
-		    /** Cached calculation results */
-		    handledCPCountPlusOne,
-		    baseMinusT,
-		    qMinusT;
-
-		// Convert the input in UCS-2 to Unicode
-		input = ucs2decode(input);
-
-		// Cache the length
-		inputLength = input.length;
-
-		// Initialize the state
-		n = initialN;
-		delta = 0;
-		bias = initialBias;
-
-		// Handle the basic code points
-		for (j = 0; j < inputLength; ++j) {
-			currentValue = input[j];
-			if (currentValue < 0x80) {
-				output.push(stringFromCharCode(currentValue));
-			}
-		}
-
-		handledCPCount = basicLength = output.length;
-
-		// `handledCPCount` is the number of code points that have been handled;
-		// `basicLength` is the number of basic code points.
-
-		// Finish the basic string - if it is not empty - with a delimiter
-		if (basicLength) {
-			output.push(delimiter);
-		}
-
-		// Main encoding loop:
-		while (handledCPCount < inputLength) {
-
-			// All non-basic code points < n have been handled already. Find the next
-			// larger one:
-			for (m = maxInt, j = 0; j < inputLength; ++j) {
-				currentValue = input[j];
-				if (currentValue >= n && currentValue < m) {
-					m = currentValue;
-				}
-			}
-
-			// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
-			// but guard against overflow
-			handledCPCountPlusOne = handledCPCount + 1;
-			if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
-				error('overflow');
-			}
-
-			delta += (m - n) * handledCPCountPlusOne;
-			n = m;
-
-			for (j = 0; j < inputLength; ++j) {
-				currentValue = input[j];
-
-				if (currentValue < n && ++delta > maxInt) {
-					error('overflow');
-				}
-
-				if (currentValue == n) {
-					// Represent delta as a generalized variable-length integer
-					for (q = delta, k = base; /* no condition */; k += base) {
-						t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
-						if (q < t) {
-							break;
-						}
-						qMinusT = q - t;
-						baseMinusT = base - t;
-						output.push(
-							stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
-						);
-						q = floor(qMinusT / baseMinusT);
-					}
-
-					output.push(stringFromCharCode(digitToBasic(q, 0)));
-					bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
-					delta = 0;
-					++handledCPCount;
-				}
-			}
-
-			++delta;
-			++n;
-
-		}
-		return output.join('');
-	}
-
-	/**
-	 * Converts a Punycode string representing a domain name or an email address
-	 * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
-	 * it doesn't matter if you call it on a string that has already been
-	 * converted to Unicode.
-	 * @memberOf punycode
-	 * @param {String} input The Punycoded domain name or email address to
-	 * convert to Unicode.
-	 * @returns {String} The Unicode representation of the given Punycode
-	 * string.
-	 */
-	function toUnicode(input) {
-		return mapDomain(input, function(string) {
-			return regexPunycode.test(string)
-				? decode(string.slice(4).toLowerCase())
-				: string;
-		});
-	}
-
-	/**
-	 * Converts a Unicode string representing a domain name or an email address to
-	 * Punycode. Only the non-ASCII parts of the domain name will be converted,
-	 * i.e. it doesn't matter if you call it with a domain that's already in
-	 * ASCII.
-	 * @memberOf punycode
-	 * @param {String} input The domain name or email address to convert, as a
-	 * Unicode string.
-	 * @returns {String} The Punycode representation of the given domain name or
-	 * email address.
-	 */
-	function toASCII(input) {
-		return mapDomain(input, function(string) {
-			return regexNonASCII.test(string)
-				? 'xn--' + encode(string)
-				: string;
-		});
-	}
-
-	/*--------------------------------------------------------------------------*/
-
-	/** Define the public API */
-	punycode = {
-		/**
-		 * A string representing the current Punycode.js version number.
-		 * @memberOf punycode
-		 * @type String
-		 */
-		'version': '1.4.1',
-		/**
-		 * An object of methods to convert from JavaScript's internal character
-		 * representation (UCS-2) to Unicode code points, and back.
-		 * @see <https://mathiasbynens.be/notes/javascript-encoding>
-		 * @memberOf punycode
-		 * @type Object
-		 */
-		'ucs2': {
-			'decode': ucs2decode,
-			'encode': ucs2encode
-		},
-		'decode': decode,
-		'encode': encode,
-		'toASCII': toASCII,
-		'toUnicode': toUnicode
-	};
-
-	/** Expose `punycode` */
-	// Some AMD build optimizers, like r.js, check for specific condition patterns
-	// like the following:
-	if (
-		typeof define == 'function' &&
-		typeof define.amd == 'object' &&
-		define.amd
-	) {
-		define('punycode', function() {
-			return punycode;
-		});
-	} else if (freeExports && freeModule) {
-		if (module.exports == freeExports) {
-			// in Node.js, io.js, or RingoJS v0.8.0+
-			freeModule.exports = punycode;
-		} else {
-			// in Narwhal or RingoJS v0.7.0-
-			for (key in punycode) {
-				punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);
-			}
-		}
-	} else {
-		// in Rhino or a web browser
-		root.punycode = punycode;
-	}
-
-}(this));
diff --git a/src/lib/vendor/underscore-1.9.1.js b/src/lib/vendor/underscore-1.9.1.js
deleted file mode 100644
index 8219dc50..00000000
--- a/src/lib/vendor/underscore-1.9.1.js
+++ /dev/null
@@ -1,1692 +0,0 @@
-//     Underscore.js 1.9.1
-//     http://underscorejs.org
-//     (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
-//     Underscore may be freely distributed under the MIT license.
-
-(function() {
-
-  // Baseline setup
-  // --------------
-
-  // Establish the root object, `window` (`self`) in the browser, `global`
-  // on the server, or `this` in some virtual machines. We use `self`
-  // instead of `window` for `WebWorker` support.
-  var root = typeof self == 'object' && self.self === self && self ||
-            typeof global == 'object' && global.global === global && global ||
-            this ||
-            {};
-
-  // Save the previous value of the `_` variable.
-  var previousUnderscore = root._;
-
-  // Save bytes in the minified (but not gzipped) version:
-  var ArrayProto = Array.prototype, ObjProto = Object.prototype;
-  var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;
-
-  // Create quick reference variables for speed access to core prototypes.
-  var push = ArrayProto.push,
-      slice = ArrayProto.slice,
-      toString = ObjProto.toString,
-      hasOwnProperty = ObjProto.hasOwnProperty;
-
-  // All **ECMAScript 5** native function implementations that we hope to use
-  // are declared here.
-  var nativeIsArray = Array.isArray,
-      nativeKeys = Object.keys,
-      nativeCreate = Object.create;
-
-  // Naked function reference for surrogate-prototype-swapping.
-  var Ctor = function(){};
-
-  // Create a safe reference to the Underscore object for use below.
-  var _ = function(obj) {
-    if (obj instanceof _) return obj;
-    if (!(this instanceof _)) return new _(obj);
-    this._wrapped = obj;
-  };
-
-  // Export the Underscore object for **Node.js**, with
-  // backwards-compatibility for their old module API. If we're in
-  // the browser, add `_` as a global object.
-  // (`nodeType` is checked to ensure that `module`
-  // and `exports` are not HTML elements.)
-  if (typeof exports != 'undefined' && !exports.nodeType) {
-    if (typeof module != 'undefined' && !module.nodeType && module.exports) {
-      exports = module.exports = _;
-    }
-    exports._ = _;
-  } else {
-    root._ = _;
-  }
-
-  // Current version.
-  _.VERSION = '1.9.1';
-
-  // Internal function that returns an efficient (for current engines) version
-  // of the passed-in callback, to be repeatedly applied in other Underscore
-  // functions.
-  var optimizeCb = function(func, context, argCount) {
-    if (context === void 0) return func;
-    switch (argCount == null ? 3 : argCount) {
-      case 1: return function(value) {
-        return func.call(context, value);
-      };
-      // The 2-argument case is omitted because we’re not using it.
-      case 3: return function(value, index, collection) {
-        return func.call(context, value, index, collection);
-      };
-      case 4: return function(accumulator, value, index, collection) {
-        return func.call(context, accumulator, value, index, collection);
-      };
-    }
-    return function() {
-      return func.apply(context, arguments);
-    };
-  };
-
-  var builtinIteratee;
-
-  // An internal function to generate callbacks that can be applied to each
-  // element in a collection, returning the desired result — either `identity`,
-  // an arbitrary callback, a property matcher, or a property accessor.
-  var cb = function(value, context, argCount) {
-    if (_.iteratee !== builtinIteratee) return _.iteratee(value, context);
-    if (value == null) return _.identity;
-    if (_.isFunction(value)) return optimizeCb(value, context, argCount);
-    if (_.isObject(value) && !_.isArray(value)) return _.matcher(value);
-    return _.property(value);
-  };
-
-  // External wrapper for our callback generator. Users may customize
-  // `_.iteratee` if they want additional predicate/iteratee shorthand styles.
-  // This abstraction hides the internal-only argCount argument.
-  _.iteratee = builtinIteratee = function(value, context) {
-    return cb(value, context, Infinity);
-  };
-
-  // Some functions take a variable number of arguments, or a few expected
-  // arguments at the beginning and then a variable number of values to operate
-  // on. This helper accumulates all remaining arguments past the function’s
-  // argument length (or an explicit `startIndex`), into an array that becomes
-  // the last argument. Similar to ES6’s "rest parameter".
-  var restArguments = function(func, startIndex) {
-    startIndex = startIndex == null ? func.length - 1 : +startIndex;
-    return function() {
-      var length = Math.max(arguments.length - startIndex, 0),
-          rest = Array(length),
-          index = 0;
-      for (; index < length; index++) {
-        rest[index] = arguments[index + startIndex];
-      }
-      switch (startIndex) {
-        case 0: return func.call(this, rest);
-        case 1: return func.call(this, arguments[0], rest);
-        case 2: return func.call(this, arguments[0], arguments[1], rest);
-      }
-      var args = Array(startIndex + 1);
-      for (index = 0; index < startIndex; index++) {
-        args[index] = arguments[index];
-      }
-      args[startIndex] = rest;
-      return func.apply(this, args);
-    };
-  };
-
-  // An internal function for creating a new object that inherits from another.
-  var baseCreate = function(prototype) {
-    if (!_.isObject(prototype)) return {};
-    if (nativeCreate) return nativeCreate(prototype);
-    Ctor.prototype = prototype;
-    var result = new Ctor;
-    Ctor.prototype = null;
-    return result;
-  };
-
-  var shallowProperty = function(key) {
-    return function(obj) {
-      return obj == null ? void 0 : obj[key];
-    };
-  };
-
-  var has = function(obj, path) {
-    return obj != null && hasOwnProperty.call(obj, path);
-  }
-
-  var deepGet = function(obj, path) {
-    var length = path.length;
-    for (var i = 0; i < length; i++) {
-      if (obj == null) return void 0;
-      obj = obj[path[i]];
-    }
-    return length ? obj : void 0;
-  };
-
-  // Helper for collection methods to determine whether a collection
-  // should be iterated as an array or as an object.
-  // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength
-  // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094
-  var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;
-  var getLength = shallowProperty('length');
-  var isArrayLike = function(collection) {
-    var length = getLength(collection);
-    return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;
-  };
-
-  // Collection Functions
-  // --------------------
-
-  // The cornerstone, an `each` implementation, aka `forEach`.
-  // Handles raw objects in addition to array-likes. Treats all
-  // sparse array-likes as if they were dense.
-  _.each = _.forEach = function(obj, iteratee, context) {
-    iteratee = optimizeCb(iteratee, context);
-    var i, length;
-    if (isArrayLike(obj)) {
-      for (i = 0, length = obj.length; i < length; i++) {
-        iteratee(obj[i], i, obj);
-      }
-    } else {
-      var keys = _.keys(obj);
-      for (i = 0, length = keys.length; i < length; i++) {
-        iteratee(obj[keys[i]], keys[i], obj);
-      }
-    }
-    return obj;
-  };
-
-  // Return the results of applying the iteratee to each element.
-  _.map = _.collect = function(obj, iteratee, context) {
-    iteratee = cb(iteratee, context);
-    var keys = !isArrayLike(obj) && _.keys(obj),
-        length = (keys || obj).length,
-        results = Array(length);
-    for (var index = 0; index < length; index++) {
-      var currentKey = keys ? keys[index] : index;
-      results[index] = iteratee(obj[currentKey], currentKey, obj);
-    }
-    return results;
-  };
-
-  // Create a reducing function iterating left or right.
-  var createReduce = function(dir) {
-    // Wrap code that reassigns argument variables in a separate function than
-    // the one that accesses `arguments.length` to avoid a perf hit. (#1991)
-    var reducer = function(obj, iteratee, memo, initial) {
-      var keys = !isArrayLike(obj) && _.keys(obj),
-          length = (keys || obj).length,
-          index = dir > 0 ? 0 : length - 1;
-      if (!initial) {
-        memo = obj[keys ? keys[index] : index];
-        index += dir;
-      }
-      for (; index >= 0 && index < length; index += dir) {
-        var currentKey = keys ? keys[index] : index;
-        memo = iteratee(memo, obj[currentKey], currentKey, obj);
-      }
-      return memo;
-    };
-
-    return function(obj, iteratee, memo, context) {
-      var initial = arguments.length >= 3;
-      return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);
-    };
-  };
-
-  // **Reduce** builds up a single result from a list of values, aka `inject`,
-  // or `foldl`.
-  _.reduce = _.foldl = _.inject = createReduce(1);
-
-  // The right-associative version of reduce, also known as `foldr`.
-  _.reduceRight = _.foldr = createReduce(-1);
-
-  // Return the first value which passes a truth test. Aliased as `detect`.
-  _.find = _.detect = function(obj, predicate, context) {
-    var keyFinder = isArrayLike(obj) ? _.findIndex : _.findKey;
-    var key = keyFinder(obj, predicate, context);
-    if (key !== void 0 && key !== -1) return obj[key];
-  };
-
-  // Return all the elements that pass a truth test.
-  // Aliased as `select`.
-  _.filter = _.select = function(obj, predicate, context) {
-    var results = [];
-    predicate = cb(predicate, context);
-    _.each(obj, function(value, index, list) {
-      if (predicate(value, index, list)) results.push(value);
-    });
-    return results;
-  };
-
-  // Return all the elements for which a truth test fails.
-  _.reject = function(obj, predicate, context) {
-    return _.filter(obj, _.negate(cb(predicate)), context);
-  };
-
-  // Determine whether all of the elements match a truth test.
-  // Aliased as `all`.
-  _.every = _.all = function(obj, predicate, context) {
-    predicate = cb(predicate, context);
-    var keys = !isArrayLike(obj) && _.keys(obj),
-        length = (keys || obj).length;
-    for (var index = 0; index < length; index++) {
-      var currentKey = keys ? keys[index] : index;
-      if (!predicate(obj[currentKey], currentKey, obj)) return false;
-    }
-    return true;
-  };
-
-  // Determine if at least one element in the object matches a truth test.
-  // Aliased as `any`.
-  _.some = _.any = function(obj, predicate, context) {
-    predicate = cb(predicate, context);
-    var keys = !isArrayLike(obj) && _.keys(obj),
-        length = (keys || obj).length;
-    for (var index = 0; index < length; index++) {
-      var currentKey = keys ? keys[index] : index;
-      if (predicate(obj[currentKey], currentKey, obj)) return true;
-    }
-    return false;
-  };
-
-  // Determine if the array or object contains a given item (using `===`).
-  // Aliased as `includes` and `include`.
-  _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {
-    if (!isArrayLike(obj)) obj = _.values(obj);
-    if (typeof fromIndex != 'number' || guard) fromIndex = 0;
-    return _.indexOf(obj, item, fromIndex) >= 0;
-  };
-
-  // Invoke a method (with arguments) on every item in a collection.
-  _.invoke = restArguments(function(obj, path, args) {
-    var contextPath, func;
-    if (_.isFunction(path)) {
-      func = path;
-    } else if (_.isArray(path)) {
-      contextPath = path.slice(0, -1);
-      path = path[path.length - 1];
-    }
-    return _.map(obj, function(context) {
-      var method = func;
-      if (!method) {
-        if (contextPath && contextPath.length) {
-          context = deepGet(context, contextPath);
-        }
-        if (context == null) return void 0;
-        method = context[path];
-      }
-      return method == null ? method : method.apply(context, args);
-    });
-  });
-
-  // Convenience version of a common use case of `map`: fetching a property.
-  _.pluck = function(obj, key) {
-    return _.map(obj, _.property(key));
-  };
-
-  // Convenience version of a common use case of `filter`: selecting only objects
-  // containing specific `key:value` pairs.
-  _.where = function(obj, attrs) {
-    return _.filter(obj, _.matcher(attrs));
-  };
-
-  // Convenience version of a common use case of `find`: getting the first object
-  // containing specific `key:value` pairs.
-  _.findWhere = function(obj, attrs) {
-    return _.find(obj, _.matcher(attrs));
-  };
-
-  // Return the maximum element (or element-based computation).
-  _.max = function(obj, iteratee, context) {
-    var result = -Infinity, lastComputed = -Infinity,
-        value, computed;
-    if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {
-      obj = isArrayLike(obj) ? obj : _.values(obj);
-      for (var i = 0, length = obj.length; i < length; i++) {
-        value = obj[i];
-        if (value != null && value > result) {
-          result = value;
-        }
-      }
-    } else {
-      iteratee = cb(iteratee, context);
-      _.each(obj, function(v, index, list) {
-        computed = iteratee(v, index, list);
-        if (computed > lastComputed || computed === -Infinity && result === -Infinity) {
-          result = v;
-          lastComputed = computed;
-        }
-      });
-    }
-    return result;
-  };
-
-  // Return the minimum element (or element-based computation).
-  _.min = function(obj, iteratee, context) {
-    var result = Infinity, lastComputed = Infinity,
-        value, computed;
-    if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {
-      obj = isArrayLike(obj) ? obj : _.values(obj);
-      for (var i = 0, length = obj.length; i < length; i++) {
-        value = obj[i];
-        if (value != null && value < result) {
-          result = value;
-        }
-      }
-    } else {
-      iteratee = cb(iteratee, context);
-      _.each(obj, function(v, index, list) {
-        computed = iteratee(v, index, list);
-        if (computed < lastComputed || computed === Infinity && result === Infinity) {
-          result = v;
-          lastComputed = computed;
-        }
-      });
-    }
-    return result;
-  };
-
-  // Shuffle a collection.
-  _.shuffle = function(obj) {
-    return _.sample(obj, Infinity);
-  };
-
-  // Sample **n** random values from a collection using the modern version of the
-  // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).
-  // If **n** is not specified, returns a single random element.
-  // The internal `guard` argument allows it to work with `map`.
-  _.sample = function(obj, n, guard) {
-    if (n == null || guard) {
-      if (!isArrayLike(obj)) obj = _.values(obj);
-      return obj[_.random(obj.length - 1)];
-    }
-    var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj);
-    var length = getLength(sample);
-    n = Math.max(Math.min(n, length), 0);
-    var last = length - 1;
-    for (var index = 0; index < n; index++) {
-      var rand = _.random(index, last);
-      var temp = sample[index];
-      sample[index] = sample[rand];
-      sample[rand] = temp;
-    }
-    return sample.slice(0, n);
-  };
-
-  // Sort the object's values by a criterion produced by an iteratee.
-  _.sortBy = function(obj, iteratee, context) {
-    var index = 0;
-    iteratee = cb(iteratee, context);
-    return _.pluck(_.map(obj, function(value, key, list) {
-      return {
-        value: value,
-        index: index++,
-        criteria: iteratee(value, key, list)
-      };
-    }).sort(function(left, right) {
-      var a = left.criteria;
-      var b = right.criteria;
-      if (a !== b) {
-        if (a > b || a === void 0) return 1;
-        if (a < b || b === void 0) return -1;
-      }
-      return left.index - right.index;
-    }), 'value');
-  };
-
-  // An internal function used for aggregate "group by" operations.
-  var group = function(behavior, partition) {
-    return function(obj, iteratee, context) {
-      var result = partition ? [[], []] : {};
-      iteratee = cb(iteratee, context);
-      _.each(obj, function(value, index) {
-        var key = iteratee(value, index, obj);
-        behavior(result, value, key);
-      });
-      return result;
-    };
-  };
-
-  // Groups the object's values by a criterion. Pass either a string attribute
-  // to group by, or a function that returns the criterion.
-  _.groupBy = group(function(result, value, key) {
-    if (has(result, key)) result[key].push(value); else result[key] = [value];
-  });
-
-  // Indexes the object's values by a criterion, similar to `groupBy`, but for
-  // when you know that your index values will be unique.
-  _.indexBy = group(function(result, value, key) {
-    result[key] = value;
-  });
-
-  // Counts instances of an object that group by a certain criterion. Pass
-  // either a string attribute to count by, or a function that returns the
-  // criterion.
-  _.countBy = group(function(result, value, key) {
-    if (has(result, key)) result[key]++; else result[key] = 1;
-  });
-
-  var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;
-  // Safely create a real, live array from anything iterable.
-  _.toArray = function(obj) {
-    if (!obj) return [];
-    if (_.isArray(obj)) return slice.call(obj);
-    if (_.isString(obj)) {
-      // Keep surrogate pair characters together
-      return obj.match(reStrSymbol);
-    }
-    if (isArrayLike(obj)) return _.map(obj, _.identity);
-    return _.values(obj);
-  };
-
-  // Return the number of elements in an object.
-  _.size = function(obj) {
-    if (obj == null) return 0;
-    return isArrayLike(obj) ? obj.length : _.keys(obj).length;
-  };
-
-  // Split a collection into two arrays: one whose elements all satisfy the given
-  // predicate, and one whose elements all do not satisfy the predicate.
-  _.partition = group(function(result, value, pass) {
-    result[pass ? 0 : 1].push(value);
-  }, true);
-
-  // Array Functions
-  // ---------------
-
-  // Get the first element of an array. Passing **n** will return the first N
-  // values in the array. Aliased as `head` and `take`. The **guard** check
-  // allows it to work with `_.map`.
-  _.first = _.head = _.take = function(array, n, guard) {
-    if (array == null || array.length < 1) return n == null ? void 0 : [];
-    if (n == null || guard) return array[0];
-    return _.initial(array, array.length - n);
-  };
-
-  // Returns everything but the last entry of the array. Especially useful on
-  // the arguments object. Passing **n** will return all the values in
-  // the array, excluding the last N.
-  _.initial = function(array, n, guard) {
-    return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));
-  };
-
-  // Get the last element of an array. Passing **n** will return the last N
-  // values in the array.
-  _.last = function(array, n, guard) {
-    if (array == null || array.length < 1) return n == null ? void 0 : [];
-    if (n == null || guard) return array[array.length - 1];
-    return _.rest(array, Math.max(0, array.length - n));
-  };
-
-  // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.
-  // Especially useful on the arguments object. Passing an **n** will return
-  // the rest N values in the array.
-  _.rest = _.tail = _.drop = function(array, n, guard) {
-    return slice.call(array, n == null || guard ? 1 : n);
-  };
-
-  // Trim out all falsy values from an array.
-  _.compact = function(array) {
-    return _.filter(array, Boolean);
-  };
-
-  // Internal implementation of a recursive `flatten` function.
-  var flatten = function(input, shallow, strict, output) {
-    output = output || [];
-    var idx = output.length;
-    for (var i = 0, length = getLength(input); i < length; i++) {
-      var value = input[i];
-      if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {
-        // Flatten current level of array or arguments object.
-        if (shallow) {
-          var j = 0, len = value.length;
-          while (j < len) output[idx++] = value[j++];
-        } else {
-          flatten(value, shallow, strict, output);
-          idx = output.length;
-        }
-      } else if (!strict) {
-        output[idx++] = value;
-      }
-    }
-    return output;
-  };
-
-  // Flatten out an array, either recursively (by default), or just one level.
-  _.flatten = function(array, shallow) {
-    return flatten(array, shallow, false);
-  };
-
-  // Return a version of the array that does not contain the specified value(s).
-  _.without = restArguments(function(array, otherArrays) {
-    return _.difference(array, otherArrays);
-  });
-
-  // Produce a duplicate-free version of the array. If the array has already
-  // been sorted, you have the option of using a faster algorithm.
-  // The faster algorithm will not work with an iteratee if the iteratee
-  // is not a one-to-one function, so providing an iteratee will disable
-  // the faster algorithm.
-  // Aliased as `unique`.
-  _.uniq = _.unique = function(array, isSorted, iteratee, context) {
-    if (!_.isBoolean(isSorted)) {
-      context = iteratee;
-      iteratee = isSorted;
-      isSorted = false;
-    }
-    if (iteratee != null) iteratee = cb(iteratee, context);
-    var result = [];
-    var seen = [];
-    for (var i = 0, length = getLength(array); i < length; i++) {
-      var value = array[i],
-          computed = iteratee ? iteratee(value, i, array) : value;
-      if (isSorted && !iteratee) {
-        if (!i || seen !== computed) result.push(value);
-        seen = computed;
-      } else if (iteratee) {
-        if (!_.contains(seen, computed)) {
-          seen.push(computed);
-          result.push(value);
-        }
-      } else if (!_.contains(result, value)) {
-        result.push(value);
-      }
-    }
-    return result;
-  };
-
-  // Produce an array that contains the union: each distinct element from all of
-  // the passed-in arrays.
-  _.union = restArguments(function(arrays) {
-    return _.uniq(flatten(arrays, true, true));
-  });
-
-  // Produce an array that contains every item shared between all the
-  // passed-in arrays.
-  _.intersection = function(array) {
-    var result = [];
-    var argsLength = arguments.length;
-    for (var i = 0, length = getLength(array); i < length; i++) {
-      var item = array[i];
-      if (_.contains(result, item)) continue;
-      var j;
-      for (j = 1; j < argsLength; j++) {
-        if (!_.contains(arguments[j], item)) break;
-      }
-      if (j === argsLength) result.push(item);
-    }
-    return result;
-  };
-
-  // Take the difference between one array and a number of other arrays.
-  // Only the elements present in just the first array will remain.
-  _.difference = restArguments(function(array, rest) {
-    rest = flatten(rest, true, true);
-    return _.filter(array, function(value){
-      return !_.contains(rest, value);
-    });
-  });
-
-  // Complement of _.zip. Unzip accepts an array of arrays and groups
-  // each array's elements on shared indices.
-  _.unzip = function(array) {
-    var length = array && _.max(array, getLength).length || 0;
-    var result = Array(length);
-
-    for (var index = 0; index < length; index++) {
-      result[index] = _.pluck(array, index);
-    }
-    return result;
-  };
-
-  // Zip together multiple lists into a single array -- elements that share
-  // an index go together.
-  _.zip = restArguments(_.unzip);
-
-  // Converts lists into objects. Pass either a single array of `[key, value]`
-  // pairs, or two parallel arrays of the same length -- one of keys, and one of
-  // the corresponding values. Passing by pairs is the reverse of _.pairs.
-  _.object = function(list, values) {
-    var result = {};
-    for (var i = 0, length = getLength(list); i < length; i++) {
-      if (values) {
-        result[list[i]] = values[i];
-      } else {
-        result[list[i][0]] = list[i][1];
-      }
-    }
-    return result;
-  };
-
-  // Generator function to create the findIndex and findLastIndex functions.
-  var createPredicateIndexFinder = function(dir) {
-    return function(array, predicate, context) {
-      predicate = cb(predicate, context);
-      var length = getLength(array);
-      var index = dir > 0 ? 0 : length - 1;
-      for (; index >= 0 && index < length; index += dir) {
-        if (predicate(array[index], index, array)) return index;
-      }
-      return -1;
-    };
-  };
-
-  // Returns the first index on an array-like that passes a predicate test.
-  _.findIndex = createPredicateIndexFinder(1);
-  _.findLastIndex = createPredicateIndexFinder(-1);
-
-  // Use a comparator function to figure out the smallest index at which
-  // an object should be inserted so as to maintain order. Uses binary search.
-  _.sortedIndex = function(array, obj, iteratee, context) {
-    iteratee = cb(iteratee, context, 1);
-    var value = iteratee(obj);
-    var low = 0, high = getLength(array);
-    while (low < high) {
-      var mid = Math.floor((low + high) / 2);
-      if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;
-    }
-    return low;
-  };
-
-  // Generator function to create the indexOf and lastIndexOf functions.
-  var createIndexFinder = function(dir, predicateFind, sortedIndex) {
-    return function(array, item, idx) {
-      var i = 0, length = getLength(array);
-      if (typeof idx == 'number') {
-        if (dir > 0) {
-          i = idx >= 0 ? idx : Math.max(idx + length, i);
-        } else {
-          length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;
-        }
-      } else if (sortedIndex && idx && length) {
-        idx = sortedIndex(array, item);
-        return array[idx] === item ? idx : -1;
-      }
-      if (item !== item) {
-        idx = predicateFind(slice.call(array, i, length), _.isNaN);
-        return idx >= 0 ? idx + i : -1;
-      }
-      for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {
-        if (array[idx] === item) return idx;
-      }
-      return -1;
-    };
-  };
-
-  // Return the position of the first occurrence of an item in an array,
-  // or -1 if the item is not included in the array.
-  // If the array is large and already in sort order, pass `true`
-  // for **isSorted** to use binary search.
-  _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);
-  _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);
-
-  // Generate an integer Array containing an arithmetic progression. A port of
-  // the native Python `range()` function. See
-  // [the Python documentation](http://docs.python.org/library/functions.html#range).
-  _.range = function(start, stop, step) {
-    if (stop == null) {
-      stop = start || 0;
-      start = 0;
-    }
-    if (!step) {
-      step = stop < start ? -1 : 1;
-    }
-
-    var length = Math.max(Math.ceil((stop - start) / step), 0);
-    var range = Array(length);
-
-    for (var idx = 0; idx < length; idx++, start += step) {
-      range[idx] = start;
-    }
-
-    return range;
-  };
-
-  // Chunk a single array into multiple arrays, each containing `count` or fewer
-  // items.
-  _.chunk = function(array, count) {
-    if (count == null || count < 1) return [];
-    var result = [];
-    var i = 0, length = array.length;
-    while (i < length) {
-      result.push(slice.call(array, i, i += count));
-    }
-    return result;
-  };
-
-  // Function (ahem) Functions
-  // ------------------
-
-  // Determines whether to execute a function as a constructor
-  // or a normal function with the provided arguments.
-  var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {
-    if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);
-    var self = baseCreate(sourceFunc.prototype);
-    var result = sourceFunc.apply(self, args);
-    if (_.isObject(result)) return result;
-    return self;
-  };
-
-  // Create a function bound to a given object (assigning `this`, and arguments,
-  // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if
-  // available.
-  _.bind = restArguments(function(func, context, args) {
-    if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');
-    var bound = restArguments(function(callArgs) {
-      return executeBound(func, bound, context, this, args.concat(callArgs));
-    });
-    return bound;
-  });
-
-  // Partially apply a function by creating a version that has had some of its
-  // arguments pre-filled, without changing its dynamic `this` context. _ acts
-  // as a placeholder by default, allowing any combination of arguments to be
-  // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.
-  _.partial = restArguments(function(func, boundArgs) {
-    var placeholder = _.partial.placeholder;
-    var bound = function() {
-      var position = 0, length = boundArgs.length;
-      var args = Array(length);
-      for (var i = 0; i < length; i++) {
-        args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];
-      }
-      while (position < arguments.length) args.push(arguments[position++]);
-      return executeBound(func, bound, this, this, args);
-    };
-    return bound;
-  });
-
-  _.partial.placeholder = _;
-
-  // Bind a number of an object's methods to that object. Remaining arguments
-  // are the method names to be bound. Useful for ensuring that all callbacks
-  // defined on an object belong to it.
-  _.bindAll = restArguments(function(obj, keys) {
-    keys = flatten(keys, false, false);
-    var index = keys.length;
-    if (index < 1) throw new Error('bindAll must be passed function names');
-    while (index--) {
-      var key = keys[index];
-      obj[key] = _.bind(obj[key], obj);
-    }
-  });
-
-  // Memoize an expensive function by storing its results.
-  _.memoize = function(func, hasher) {
-    var memoize = function(key) {
-      var cache = memoize.cache;
-      var address = '' + (hasher ? hasher.apply(this, arguments) : key);
-      if (!has(cache, address)) cache[address] = func.apply(this, arguments);
-      return cache[address];
-    };
-    memoize.cache = {};
-    return memoize;
-  };
-
-  // Delays a function for the given number of milliseconds, and then calls
-  // it with the arguments supplied.
-  _.delay = restArguments(function(func, wait, args) {
-    return setTimeout(function() {
-      return func.apply(null, args);
-    }, wait);
-  });
-
-  // Defers a function, scheduling it to run after the current call stack has
-  // cleared.
-  _.defer = _.partial(_.delay, _, 1);
-
-  // Returns a function, that, when invoked, will only be triggered at most once
-  // during a given window of time. Normally, the throttled function will run
-  // as much as it can, without ever going more than once per `wait` duration;
-  // but if you'd like to disable the execution on the leading edge, pass
-  // `{leading: false}`. To disable execution on the trailing edge, ditto.
-  _.throttle = function(func, wait, options) {
-    var timeout, context, args, result;
-    var previous = 0;
-    if (!options) options = {};
-
-    var later = function() {
-      previous = options.leading === false ? 0 : _.now();
-      timeout = null;
-      result = func.apply(context, args);
-      if (!timeout) context = args = null;
-    };
-
-    var throttled = function() {
-      var now = _.now();
-      if (!previous && options.leading === false) previous = now;
-      var remaining = wait - (now - previous);
-      context = this;
-      args = arguments;
-      if (remaining <= 0 || remaining > wait) {
-        if (timeout) {
-          clearTimeout(timeout);
-          timeout = null;
-        }
-        previous = now;
-        result = func.apply(context, args);
-        if (!timeout) context = args = null;
-      } else if (!timeout && options.trailing !== false) {
-        timeout = setTimeout(later, remaining);
-      }
-      return result;
-    };
-
-    throttled.cancel = function() {
-      clearTimeout(timeout);
-      previous = 0;
-      timeout = context = args = null;
-    };
-
-    return throttled;
-  };
-
-  // Returns a function, that, as long as it continues to be invoked, will not
-  // be triggered. The function will be called after it stops being called for
-  // N milliseconds. If `immediate` is passed, trigger the function on the
-  // leading edge, instead of the trailing.
-  _.debounce = function(func, wait, immediate) {
-    var timeout, result;
-
-    var later = function(context, args) {
-      timeout = null;
-      if (args) result = func.apply(context, args);
-    };
-
-    var debounced = restArguments(function(args) {
-      if (timeout) clearTimeout(timeout);
-      if (immediate) {
-        var callNow = !timeout;
-        timeout = setTimeout(later, wait);
-        if (callNow) result = func.apply(this, args);
-      } else {
-        timeout = _.delay(later, wait, this, args);
-      }
-
-      return result;
-    });
-
-    debounced.cancel = function() {
-      clearTimeout(timeout);
-      timeout = null;
-    };
-
-    return debounced;
-  };
-
-  // Returns the first function passed as an argument to the second,
-  // allowing you to adjust arguments, run code before and after, and
-  // conditionally execute the original function.
-  _.wrap = function(func, wrapper) {
-    return _.partial(wrapper, func);
-  };
-
-  // Returns a negated version of the passed-in predicate.
-  _.negate = function(predicate) {
-    return function() {
-      return !predicate.apply(this, arguments);
-    };
-  };
-
-  // Returns a function that is the composition of a list of functions, each
-  // consuming the return value of the function that follows.
-  _.compose = function() {
-    var args = arguments;
-    var start = args.length - 1;
-    return function() {
-      var i = start;
-      var result = args[start].apply(this, arguments);
-      while (i--) result = args[i].call(this, result);
-      return result;
-    };
-  };
-
-  // Returns a function that will only be executed on and after the Nth call.
-  _.after = function(times, func) {
-    return function() {
-      if (--times < 1) {
-        return func.apply(this, arguments);
-      }
-    };
-  };
-
-  // Returns a function that will only be executed up to (but not including) the Nth call.
-  _.before = function(times, func) {
-    var memo;
-    return function() {
-      if (--times > 0) {
-        memo = func.apply(this, arguments);
-      }
-      if (times <= 1) func = null;
-      return memo;
-    };
-  };
-
-  // Returns a function that will be executed at most one time, no matter how
-  // often you call it. Useful for lazy initialization.
-  _.once = _.partial(_.before, 2);
-
-  _.restArguments = restArguments;
-
-  // Object Functions
-  // ----------------
-
-  // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.
-  var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');
-  var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',
-    'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];
-
-  var collectNonEnumProps = function(obj, keys) {
-    var nonEnumIdx = nonEnumerableProps.length;
-    var constructor = obj.constructor;
-    var proto = _.isFunction(constructor) && constructor.prototype || ObjProto;
-
-    // Constructor is a special case.
-    var prop = 'constructor';
-    if (has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);
-
-    while (nonEnumIdx--) {
-      prop = nonEnumerableProps[nonEnumIdx];
-      if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {
-        keys.push(prop);
-      }
-    }
-  };
-
-  // Retrieve the names of an object's own properties.
-  // Delegates to **ECMAScript 5**'s native `Object.keys`.
-  _.keys = function(obj) {
-    if (!_.isObject(obj)) return [];
-    if (nativeKeys) return nativeKeys(obj);
-    var keys = [];
-    for (var key in obj) if (has(obj, key)) keys.push(key);
-    // Ahem, IE < 9.
-    if (hasEnumBug) collectNonEnumProps(obj, keys);
-    return keys;
-  };
-
-  // Retrieve all the property names of an object.
-  _.allKeys = function(obj) {
-    if (!_.isObject(obj)) return [];
-    var keys = [];
-    for (var key in obj) keys.push(key);
-    // Ahem, IE < 9.
-    if (hasEnumBug) collectNonEnumProps(obj, keys);
-    return keys;
-  };
-
-  // Retrieve the values of an object's properties.
-  _.values = function(obj) {
-    var keys = _.keys(obj);
-    var length = keys.length;
-    var values = Array(length);
-    for (var i = 0; i < length; i++) {
-      values[i] = obj[keys[i]];
-    }
-    return values;
-  };
-
-  // Returns the results of applying the iteratee to each element of the object.
-  // In contrast to _.map it returns an object.
-  _.mapObject = function(obj, iteratee, context) {
-    iteratee = cb(iteratee, context);
-    var keys = _.keys(obj),
-        length = keys.length,
-        results = {};
-    for (var index = 0; index < length; index++) {
-      var currentKey = keys[index];
-      results[currentKey] = iteratee(obj[currentKey], currentKey, obj);
-    }
-    return results;
-  };
-
-  // Convert an object into a list of `[key, value]` pairs.
-  // The opposite of _.object.
-  _.pairs = function(obj) {
-    var keys = _.keys(obj);
-    var length = keys.length;
-    var pairs = Array(length);
-    for (var i = 0; i < length; i++) {
-      pairs[i] = [keys[i], obj[keys[i]]];
-    }
-    return pairs;
-  };
-
-  // Invert the keys and values of an object. The values must be serializable.
-  _.invert = function(obj) {
-    var result = {};
-    var keys = _.keys(obj);
-    for (var i = 0, length = keys.length; i < length; i++) {
-      result[obj[keys[i]]] = keys[i];
-    }
-    return result;
-  };
-
-  // Return a sorted list of the function names available on the object.
-  // Aliased as `methods`.
-  _.functions = _.methods = function(obj) {
-    var names = [];
-    for (var key in obj) {
-      if (_.isFunction(obj[key])) names.push(key);
-    }
-    return names.sort();
-  };
-
-  // An internal function for creating assigner functions.
-  var createAssigner = function(keysFunc, defaults) {
-    return function(obj) {
-      var length = arguments.length;
-      if (defaults) obj = Object(obj);
-      if (length < 2 || obj == null) return obj;
-      for (var index = 1; index < length; index++) {
-        var source = arguments[index],
-            keys = keysFunc(source),
-            l = keys.length;
-        for (var i = 0; i < l; i++) {
-          var key = keys[i];
-          if (!defaults || obj[key] === void 0) obj[key] = source[key];
-        }
-      }
-      return obj;
-    };
-  };
-
-  // Extend a given object with all the properties in passed-in object(s).
-  _.extend = createAssigner(_.allKeys);
-
-  // Assigns a given object with all the own properties in the passed-in object(s).
-  // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)
-  _.extendOwn = _.assign = createAssigner(_.keys);
-
-  // Returns the first key on an object that passes a predicate test.
-  _.findKey = function(obj, predicate, context) {
-    predicate = cb(predicate, context);
-    var keys = _.keys(obj), key;
-    for (var i = 0, length = keys.length; i < length; i++) {
-      key = keys[i];
-      if (predicate(obj[key], key, obj)) return key;
-    }
-  };
-
-  // Internal pick helper function to determine if `obj` has key `key`.
-  var keyInObj = function(value, key, obj) {
-    return key in obj;
-  };
-
-  // Return a copy of the object only containing the whitelisted properties.
-  _.pick = restArguments(function(obj, keys) {
-    var result = {}, iteratee = keys[0];
-    if (obj == null) return result;
-    if (_.isFunction(iteratee)) {
-      if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);
-      keys = _.allKeys(obj);
-    } else {
-      iteratee = keyInObj;
-      keys = flatten(keys, false, false);
-      obj = Object(obj);
-    }
-    for (var i = 0, length = keys.length; i < length; i++) {
-      var key = keys[i];
-      var value = obj[key];
-      if (iteratee(value, key, obj)) result[key] = value;
-    }
-    return result;
-  });
-
-  // Return a copy of the object without the blacklisted properties.
-  _.omit = restArguments(function(obj, keys) {
-    var iteratee = keys[0], context;
-    if (_.isFunction(iteratee)) {
-      iteratee = _.negate(iteratee);
-      if (keys.length > 1) context = keys[1];
-    } else {
-      keys = _.map(flatten(keys, false, false), String);
-      iteratee = function(value, key) {
-        return !_.contains(keys, key);
-      };
-    }
-    return _.pick(obj, iteratee, context);
-  });
-
-  // Fill in a given object with default properties.
-  _.defaults = createAssigner(_.allKeys, true);
-
-  // Creates an object that inherits from the given prototype object.
-  // If additional properties are provided then they will be added to the
-  // created object.
-  _.create = function(prototype, props) {
-    var result = baseCreate(prototype);
-    if (props) _.extendOwn(result, props);
-    return result;
-  };
-
-  // Create a (shallow-cloned) duplicate of an object.
-  _.clone = function(obj) {
-    if (!_.isObject(obj)) return obj;
-    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
-  };
-
-  // Invokes interceptor with the obj, and then returns obj.
-  // The primary purpose of this method is to "tap into" a method chain, in
-  // order to perform operations on intermediate results within the chain.
-  _.tap = function(obj, interceptor) {
-    interceptor(obj);
-    return obj;
-  };
-
-  // Returns whether an object has a given set of `key:value` pairs.
-  _.isMatch = function(object, attrs) {
-    var keys = _.keys(attrs), length = keys.length;
-    if (object == null) return !length;
-    var obj = Object(object);
-    for (var i = 0; i < length; i++) {
-      var key = keys[i];
-      if (attrs[key] !== obj[key] || !(key in obj)) return false;
-    }
-    return true;
-  };
-
-
-  // Internal recursive comparison function for `isEqual`.
-  var eq, deepEq;
-  eq = function(a, b, aStack, bStack) {
-    // Identical objects are equal. `0 === -0`, but they aren't identical.
-    // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).
-    if (a === b) return a !== 0 || 1 / a === 1 / b;
-    // `null` or `undefined` only equal to itself (strict comparison).
-    if (a == null || b == null) return false;
-    // `NaN`s are equivalent, but non-reflexive.
-    if (a !== a) return b !== b;
-    // Exhaust primitive checks
-    var type = typeof a;
-    if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;
-    return deepEq(a, b, aStack, bStack);
-  };
-
-  // Internal recursive comparison function for `isEqual`.
-  deepEq = function(a, b, aStack, bStack) {
-    // Unwrap any wrapped objects.
-    if (a instanceof _) a = a._wrapped;
-    if (b instanceof _) b = b._wrapped;
-    // Compare `[[Class]]` names.
-    var className = toString.call(a);
-    if (className !== toString.call(b)) return false;
-    switch (className) {
-      // Strings, numbers, regular expressions, dates, and booleans are compared by value.
-      case '[object RegExp]':
-      // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')
-      case '[object String]':
-        // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
-        // equivalent to `new String("5")`.
-        return '' + a === '' + b;
-      case '[object Number]':
-        // `NaN`s are equivalent, but non-reflexive.
-        // Object(NaN) is equivalent to NaN.
-        if (+a !== +a) return +b !== +b;
-        // An `egal` comparison is performed for other numeric values.
-        return +a === 0 ? 1 / +a === 1 / b : +a === +b;
-      case '[object Date]':
-      case '[object Boolean]':
-        // Coerce dates and booleans to numeric primitive values. Dates are compared by their
-        // millisecond representations. Note that invalid dates with millisecond representations
-        // of `NaN` are not equivalent.
-        return +a === +b;
-      case '[object Symbol]':
-        return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);
-    }
-
-    var areArrays = className === '[object Array]';
-    if (!areArrays) {
-      if (typeof a != 'object' || typeof b != 'object') return false;
-
-      // Objects with different constructors are not equivalent, but `Object`s or `Array`s
-      // from different frames are.
-      var aCtor = a.constructor, bCtor = b.constructor;
-      if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&
-                               _.isFunction(bCtor) && bCtor instanceof bCtor)
-                          && ('constructor' in a && 'constructor' in b)) {
-        return false;
-      }
-    }
-    // Assume equality for cyclic structures. The algorithm for detecting cyclic
-    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
-
-    // Initializing stack of traversed objects.
-    // It's done here since we only need them for objects and arrays comparison.
-    aStack = aStack || [];
-    bStack = bStack || [];
-    var length = aStack.length;
-    while (length--) {
-      // Linear search. Performance is inversely proportional to the number of
-      // unique nested structures.
-      if (aStack[length] === a) return bStack[length] === b;
-    }
-
-    // Add the first object to the stack of traversed objects.
-    aStack.push(a);
-    bStack.push(b);
-
-    // Recursively compare objects and arrays.
-    if (areArrays) {
-      // Compare array lengths to determine if a deep comparison is necessary.
-      length = a.length;
-      if (length !== b.length) return false;
-      // Deep compare the contents, ignoring non-numeric properties.
-      while (length--) {
-        if (!eq(a[length], b[length], aStack, bStack)) return false;
-      }
-    } else {
-      // Deep compare objects.
-      var keys = _.keys(a), key;
-      length = keys.length;
-      // Ensure that both objects contain the same number of properties before comparing deep equality.
-      if (_.keys(b).length !== length) return false;
-      while (length--) {
-        // Deep compare each member
-        key = keys[length];
-        if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;
-      }
-    }
-    // Remove the first object from the stack of traversed objects.
-    aStack.pop();
-    bStack.pop();
-    return true;
-  };
-
-  // Perform a deep comparison to check if two objects are equal.
-  _.isEqual = function(a, b) {
-    return eq(a, b);
-  };
-
-  // Is a given array, string, or object empty?
-  // An "empty" object has no enumerable own-properties.
-  _.isEmpty = function(obj) {
-    if (obj == null) return true;
-    if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;
-    return _.keys(obj).length === 0;
-  };
-
-  // Is a given value a DOM element?
-  _.isElement = function(obj) {
-    return !!(obj && obj.nodeType === 1);
-  };
-
-  // Is a given value an array?
-  // Delegates to ECMA5's native Array.isArray
-  _.isArray = nativeIsArray || function(obj) {
-    return toString.call(obj) === '[object Array]';
-  };
-
-  // Is a given variable an object?
-  _.isObject = function(obj) {
-    var type = typeof obj;
-    return type === 'function' || type === 'object' && !!obj;
-  };
-
-  // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet.
-  _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'], function(name) {
-    _['is' + name] = function(obj) {
-      return toString.call(obj) === '[object ' + name + ']';
-    };
-  });
-
-  // Define a fallback version of the method in browsers (ahem, IE < 9), where
-  // there isn't any inspectable "Arguments" type.
-  if (!_.isArguments(arguments)) {
-    _.isArguments = function(obj) {
-      return has(obj, 'callee');
-    };
-  }
-
-  // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,
-  // IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).
-  var nodelist = root.document && root.document.childNodes;
-  if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {
-    _.isFunction = function(obj) {
-      return typeof obj == 'function' || false;
-    };
-  }
-
-  // Is a given object a finite number?
-  _.isFinite = function(obj) {
-    return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj));
-  };
-
-  // Is the given value `NaN`?
-  _.isNaN = function(obj) {
-    return _.isNumber(obj) && isNaN(obj);
-  };
-
-  // Is a given value a boolean?
-  _.isBoolean = function(obj) {
-    return obj === true || obj === false || toString.call(obj) === '[object Boolean]';
-  };
-
-  // Is a given value equal to null?
-  _.isNull = function(obj) {
-    return obj === null;
-  };
-
-  // Is a given variable undefined?
-  _.isUndefined = function(obj) {
-    return obj === void 0;
-  };
-
-  // Shortcut function for checking if an object has a given property directly
-  // on itself (in other words, not on a prototype).
-  _.has = function(obj, path) {
-    if (!_.isArray(path)) {
-      return has(obj, path);
-    }
-    var length = path.length;
-    for (var i = 0; i < length; i++) {
-      var key = path[i];
-      if (obj == null || !hasOwnProperty.call(obj, key)) {
-        return false;
-      }
-      obj = obj[key];
-    }
-    return !!length;
-  };
-
-  // Utility Functions
-  // -----------------
-
-  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
-  // previous owner. Returns a reference to the Underscore object.
-  _.noConflict = function() {
-    root._ = previousUnderscore;
-    return this;
-  };
-
-  // Keep the identity function around for default iteratees.
-  _.identity = function(value) {
-    return value;
-  };
-
-  // Predicate-generating functions. Often useful outside of Underscore.
-  _.constant = function(value) {
-    return function() {
-      return value;
-    };
-  };
-
-  _.noop = function(){};
-
-  // Creates a function that, when passed an object, will traverse that object’s
-  // properties down the given `path`, specified as an array of keys or indexes.
-  _.property = function(path) {
-    if (!_.isArray(path)) {
-      return shallowProperty(path);
-    }
-    return function(obj) {
-      return deepGet(obj, path);
-    };
-  };
-
-  // Generates a function for a given object that returns a given property.
-  _.propertyOf = function(obj) {
-    if (obj == null) {
-      return function(){};
-    }
-    return function(path) {
-      return !_.isArray(path) ? obj[path] : deepGet(obj, path);
-    };
-  };
-
-  // Returns a predicate for checking whether an object has a given set of
-  // `key:value` pairs.
-  _.matcher = _.matches = function(attrs) {
-    attrs = _.extendOwn({}, attrs);
-    return function(obj) {
-      return _.isMatch(obj, attrs);
-    };
-  };
-
-  // Run a function **n** times.
-  _.times = function(n, iteratee, context) {
-    var accum = Array(Math.max(0, n));
-    iteratee = optimizeCb(iteratee, context, 1);
-    for (var i = 0; i < n; i++) accum[i] = iteratee(i);
-    return accum;
-  };
-
-  // Return a random integer between min and max (inclusive).
-  _.random = function(min, max) {
-    if (max == null) {
-      max = min;
-      min = 0;
-    }
-    return min + Math.floor(Math.random() * (max - min + 1));
-  };
-
-  // A (possibly faster) way to get the current timestamp as an integer.
-  _.now = Date.now || function() {
-    return new Date().getTime();
-  };
-
-  // List of HTML entities for escaping.
-  var escapeMap = {
-    '&': '&amp;',
-    '<': '&lt;',
-    '>': '&gt;',
-    '"': '&quot;',
-    "'": '&#x27;',
-    '`': '&#x60;'
-  };
-  var unescapeMap = _.invert(escapeMap);
-
-  // Functions for escaping and unescaping strings to/from HTML interpolation.
-  var createEscaper = function(map) {
-    var escaper = function(match) {
-      return map[match];
-    };
-    // Regexes for identifying a key that needs to be escaped.
-    var source = '(?:' + _.keys(map).join('|') + ')';
-    var testRegexp = RegExp(source);
-    var replaceRegexp = RegExp(source, 'g');
-    return function(string) {
-      string = string == null ? '' : '' + string;
-      return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;
-    };
-  };
-  _.escape = createEscaper(escapeMap);
-  _.unescape = createEscaper(unescapeMap);
-
-  // Traverses the children of `obj` along `path`. If a child is a function, it
-  // is invoked with its parent as context. Returns the value of the final
-  // child, or `fallback` if any child is undefined.
-  _.result = function(obj, path, fallback) {
-    if (!_.isArray(path)) path = [path];
-    var length = path.length;
-    if (!length) {
-      return _.isFunction(fallback) ? fallback.call(obj) : fallback;
-    }
-    for (var i = 0; i < length; i++) {
-      var prop = obj == null ? void 0 : obj[path[i]];
-      if (prop === void 0) {
-        prop = fallback;
-        i = length; // Ensure we don't continue iterating.
-      }
-      obj = _.isFunction(prop) ? prop.call(obj) : prop;
-    }
-    return obj;
-  };
-
-  // Generate a unique integer id (unique within the entire client session).
-  // Useful for temporary DOM ids.
-  var idCounter = 0;
-  _.uniqueId = function(prefix) {
-    var id = ++idCounter + '';
-    return prefix ? prefix + id : id;
-  };
-
-  // By default, Underscore uses ERB-style template delimiters, change the
-  // following template settings to use alternative delimiters.
-  _.templateSettings = {
-    evaluate: /<%([\s\S]+?)%>/g,
-    interpolate: /<%=([\s\S]+?)%>/g,
-    escape: /<%-([\s\S]+?)%>/g
-  };
-
-  // When customizing `templateSettings`, if you don't want to define an
-  // interpolation, evaluation or escaping regex, we need one that is
-  // guaranteed not to match.
-  var noMatch = /(.)^/;
-
-  // Certain characters need to be escaped so that they can be put into a
-  // string literal.
-  var escapes = {
-    "'": "'",
-    '\\': '\\',
-    '\r': 'r',
-    '\n': 'n',
-    '\u2028': 'u2028',
-    '\u2029': 'u2029'
-  };
-
-  var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g;
-
-  var escapeChar = function(match) {
-    return '\\' + escapes[match];
-  };
-
-  // JavaScript micro-templating, similar to John Resig's implementation.
-  // Underscore templating handles arbitrary delimiters, preserves whitespace,
-  // and correctly escapes quotes within interpolated code.
-  // NB: `oldSettings` only exists for backwards compatibility.
-  _.template = function(text, settings, oldSettings) {
-    if (!settings && oldSettings) settings = oldSettings;
-    settings = _.defaults({}, settings, _.templateSettings);
-
-    // Combine delimiters into one regular expression via alternation.
-    var matcher = RegExp([
-      (settings.escape || noMatch).source,
-      (settings.interpolate || noMatch).source,
-      (settings.evaluate || noMatch).source
-    ].join('|') + '|$', 'g');
-
-    // Compile the template source, escaping string literals appropriately.
-    var index = 0;
-    var source = "__p+='";
-    text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
-      source += text.slice(index, offset).replace(escapeRegExp, escapeChar);
-      index = offset + match.length;
-
-      if (escape) {
-        source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
-      } else if (interpolate) {
-        source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
-      } else if (evaluate) {
-        source += "';\n" + evaluate + "\n__p+='";
-      }
-
-      // Adobe VMs need the match returned to produce the correct offset.
-      return match;
-    });
-    source += "';\n";
-
-    // If a variable is not specified, place data values in local scope.
-    if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
-
-    source = "var __t,__p='',__j=Array.prototype.join," +
-      "print=function(){__p+=__j.call(arguments,'');};\n" +
-      source + 'return __p;\n';
-
-    var render;
-    try {
-      render = new Function(settings.variable || 'obj', '_', source);
-    } catch (e) {
-      e.source = source;
-      throw e;
-    }
-
-    var template = function(data) {
-      return render.call(this, data, _);
-    };
-
-    // Provide the compiled source as a convenience for precompilation.
-    var argument = settings.variable || 'obj';
-    template.source = 'function(' + argument + '){\n' + source + '}';
-
-    return template;
-  };
-
-  // Add a "chain" function. Start chaining a wrapped Underscore object.
-  _.chain = function(obj) {
-    var instance = _(obj);
-    instance._chain = true;
-    return instance;
-  };
-
-  // OOP
-  // ---------------
-  // If Underscore is called as a function, it returns a wrapped object that
-  // can be used OO-style. This wrapper holds altered versions of all the
-  // underscore functions. Wrapped objects may be chained.
-
-  // Helper function to continue chaining intermediate results.
-  var chainResult = function(instance, obj) {
-    return instance._chain ? _(obj).chain() : obj;
-  };
-
-  // Add your own custom functions to the Underscore object.
-  _.mixin = function(obj) {
-    _.each(_.functions(obj), function(name) {
-      var func = _[name] = obj[name];
-      _.prototype[name] = function() {
-        var args = [this._wrapped];
-        push.apply(args, arguments);
-        return chainResult(this, func.apply(_, args));
-      };
-    });
-    return _;
-  };
-
-  // Add all of the Underscore functions to the wrapper object.
-  _.mixin(_);
-
-  // Add all mutator Array functions to the wrapper.
-  _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
-    var method = ArrayProto[name];
-    _.prototype[name] = function() {
-      var obj = this._wrapped;
-      method.apply(obj, arguments);
-      if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];
-      return chainResult(this, obj);
-    };
-  });
-
-  // Add all accessor Array functions to the wrapper.
-  _.each(['concat', 'join', 'slice'], function(name) {
-    var method = ArrayProto[name];
-    _.prototype[name] = function() {
-      return chainResult(this, method.apply(this._wrapped, arguments));
-    };
-  });
-
-  // Extracts the result from a wrapped and chained object.
-  _.prototype.value = function() {
-    return this._wrapped;
-  };
-
-  // Provide unwrapping proxy for some methods used in engine operations
-  // such as arithmetic and JSON stringification.
-  _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;
-
-  _.prototype.toString = function() {
-    return String(this._wrapped);
-  };
-
-  // AMD registration happens at the end for compatibility with AMD loaders
-  // that may not enforce next-turn semantics on modules. Even though general
-  // practice for AMD registration is to be anonymous, underscore registers
-  // as a named module because, like jQuery, it is a base library that is
-  // popular enough to be bundled in a third party lib, but not be part of
-  // an AMD load request. Those cases could generate an error when an
-  // anonymous define() is called outside of a loader request.
-  if (typeof define == 'function' && define.amd) {
-    define('underscore', [], function() {
-      return _;
-    });
-  }
-}());
diff --git a/src/manifest.json b/src/manifest.json
index e9f34e38..cbc113f8 100644
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -1,5 +1,5 @@
 {
-  "version": "2020.10.7",
+  "version": "2021.11.23.1",
   "author": {
     "email": "eff.software.projects@gmail.com"
   },
@@ -18,23 +18,20 @@
     "webRequest",
     "webRequestBlocking",
     "storage",
-    "cookies",
     "privacy"
   ],
   "background": {
     "scripts": [
       "js/bootstrap.js",
-      "lib/vendor/punycode-1.4.1.js",
+      "js/constants.js",
       "lib/publicSuffixList.js",
       "lib/basedomain.js",
-      "lib/vendor/underscore-1.9.1.js",
       "data/surrogates.js",
-      "js/surrogates.js",
       "js/multiDomainFirstParties.js",
+      "js/utils.js",
+      "js/surrogates.js",
       "js/incognito.js",
-      "js/constants.js",
       "js/storage.js",
-      "js/utils.js",
       "js/heuristicblocking.js",
       "js/socialwidgetloader.js",
       "js/migrations.js",
@@ -467,7 +464,8 @@
         "js/contentscripts/clobbercookie.js",
         "js/contentscripts/clobberlocalstorage.js",
         "js/contentscripts/dnt.js",
-        "js/contentscripts/fingerprinting.js"
+        "js/contentscripts/fingerprinting.js",
+        "js/contentscripts/floc.js"
       ],
       "matches": [
         "<all_urls>"
@@ -501,7 +499,7 @@
     "128": "icons/badger-128.png"
   },
   "manifest_version": 2,
-  "minimum_chrome_version": "18.0",
+  "minimum_chrome_version": "55.0",
   "name": "__MSG_name__",
   "browser_action": {
     "default_icon": {
@@ -518,5 +516,8 @@
   "storage": {
     "managed_schema": "data/schema.json"
   },
-  "update_url": "https://clients2.google.com/service/update2/crx"
+  "update_url": "https://clients2.google.com/service/update2/crx",
+  "web_accessible_resources": [
+    "data/web_accessible_resources/*"
+  ]
 }
diff --git a/src/skin/css/firstRun.css b/src/skin/css/firstRun.css
index 28880a82..fc9cfca7 100644
--- a/src/skin/css/firstRun.css
+++ b/src/skin/css/firstRun.css
@@ -336,9 +336,9 @@ ul ul,ol ul,ul ol,ol ol {
   background-color:#F06A0A;
   color:#fefefe;
 }
-button:hover,.button:focus {
-  background-color:#cc5a09;
-  color:#fefefe;
+.button:hover, .button:focus {
+  background-color: #cc5a09;
+  color: #000;
 }
 
 .button.large {
@@ -404,6 +404,7 @@ header {
   background-color:#EC9329;
 }
 header img {
+  margin:1rem 0 0;
   width:7rem;
 }
 @media print, screen and (min-width: 40em) {
@@ -796,3 +797,36 @@ body {
     margin-bottom:5rem;
   }
 }
+
+@media (prefers-color-scheme: dark) {
+  :root {
+    color-scheme: dark;
+  }
+
+  body, #pb-privacy-policy {
+    background-color: #222;
+    color: #ddd;
+  }
+
+  a:hover, a:focus {
+    color: #ddd;
+  }
+
+  .button:hover, .button:focus {
+    color: #000;
+  }
+
+  #pb-settings {
+    background-image: linear-gradient(#EC9329, #EC9329 30%, #222 30%);
+  }
+
+  #pb-donate {
+    background-image: linear-gradient(#333, #333 45%, #222 45%);
+  }
+
+  .share-links > a span {
+    background-color: #555;
+    border-left: 0.4275rem solid #555;
+    color: #fff;
+  }
+}
diff --git a/src/skin/options-layout.css b/src/skin/options-layout.css
index 0776e6fb..61d9e339 100644
--- a/src/skin/options-layout.css
+++ b/src/skin/options-layout.css
@@ -14,13 +14,14 @@ body.options a:focus:not(.ui-tabs-anchor):not(.honeybadgerPowered):not(.removeOr
 }
 
 h1 {
-    font-size: 20px;
+    font-size: 17px;
     font-weight: bold;
-    margin: 10px 8px;
+    margin: 0 6px;
 }
 
-h3 {
+#tab-manage-data h3 {
     margin: 10px 0;
+    margin-inline-end: 10px;
 }
 
 h4 {
@@ -28,7 +29,7 @@ h4 {
     flex-direction: row;
     margin: 30px 0 15px 0;
 }
-h4:after {
+h4::after {
     content: "";
     flex: 1 1;
     border-bottom: 1px solid #d3d3d3;
@@ -202,13 +203,29 @@ p, #settingsForm {
     max-height: 400px; /* override popup.css */
 }
 
-#hide-widgets-row {
+label[for=hide-widgets-select] {
+    display: block;
+}
+
+#widget-site-exceptions-select-div {
+    float: left;
+    max-width: 420px;
     width: 100%;
-    margin-top: 5px;
+    margin-inline-end: 10px;
+    margin-bottom: 5px;
 }
 
-#hide-widgets-select {
-  width: 300px;
+#widget-site-exceptions-remove-button {
+    float: left;
+    margin-bottom: 10px;
+}
+
+#new-disabled-site-input, #allowlist-select, #widget-site-exceptions-select {
+    box-sizing: border-box;
+    width: 100%;
+}
+#new-disabled-site-input {
+    padding: 8px;
 }
 
 #tabs, header {
@@ -218,6 +235,9 @@ p, #settingsForm {
     margin: 0 auto;
     padding: 0;
 }
+header {
+    margin-top: 8px;
+}
 #tabs .ui-widget-header {
     background: transparent;
     border: none;
@@ -258,3 +278,130 @@ p, #settingsForm {
         padding: 0.5em 0;
     }
 }
+
+@media (prefers-color-scheme: dark) {
+    :root {
+        color-scheme: dark;
+    }
+    
+    h1 {
+        color: #f9f9f9;
+    }
+
+    h4::after, #tabs .ui-widget-header {
+        border-bottom: 1px solid #555;
+    }
+    .btn-silo + .btn-silo {
+        border-top: 1px solid #555;
+    }
+
+    input[type="text"],
+    #allowlist-select,
+    .select2-container--default .select2-selection--multiple,
+    .select2-dropdown,
+    #widget-site-exceptions-select {
+        background-color: #222;
+        border: 1px solid #555;
+        color: #ddd;
+    }
+
+    input[type="text"]:focus,
+    #allowlist-select:focus,
+    #widget-site-exceptions-select:focus {
+        border: 1px solid #f06a0a;
+        outline: none;
+    }
+
+    .ui-tabs-panel {
+        color: #ddd;
+    }
+
+    .ui-widget-content a {
+        color: #ddd;
+    }
+    .ui-widget-content a:hover {
+        color: #f06a0a;
+    }
+
+    #tabs .ui-tabs-nav .ui-state-default a {
+        color: #bbb;
+    }
+
+    #tabs .ui-tabs-nav .ui-state-hover a,
+    #tabs .ui-tabs-nav .ui-state-active a {
+        color: #f9f9f9;
+    }
+
+    #tracking-domains-filters {
+        color: #ddd;
+        border: 1px solid #555;
+    }
+
+    #resetData, #removeAllData {
+        background-color: #86151d;
+        background-image: none;
+        border: 1px solid #e02431;
+    }
+
+    #resetData:hover, #removeAllData:hover {
+        background-color: #9c1922;
+        background-image: none;
+        border: 1px solid #e64f5a;
+    }
+    #resetData:focus, #removeAllData:focus {
+        outline: auto;
+    }
+
+    .ui-button.ui-corner-all.ui-widget {
+        background-color: #555;
+        background-image: none;
+        border: 1px solid #777;
+        color: #f9f9f9;
+    }
+
+    .ui-button.ui-corner-all.ui-widget:hover {
+        background-color: #666;
+        border: 1px solid #bbb;
+    }
+    .ui-button.ui-corner-all.ui-widget:focus {
+        border: 1px solid #f06a0a;
+        outline: none;
+    }
+
+    .select2-container--default.select2-container--focus .select2-selection--multiple {
+        border: 1px solid #f06a0a;
+        color: #ddd;
+    }
+
+    .select2-container--default .select2-results__option[aria-selected=true] {
+        color: #333;
+        background-color: #bbb;
+    }
+
+    .select2-container--default .select2-results__option--highlighted[aria-selected] {
+        background-color: #f06a0a;
+    }
+
+    .select2-container--default .select2-selection--multiple .select2-selection__choice {
+        background-color: #333;
+        border: 1px solid #555;
+    }
+
+    .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
+        color: #ddd;
+    }
+
+    .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
+        color: #f96a0a;
+    }
+
+    .select2-container--default.select2-container--disabled .select2-selection--multiple     {
+        background-color: #222;
+        opacity: 0.5;
+        cursor: not-allowed;
+    }
+
+    .select2-container--default .select2-search--inline .select2-search__field {
+        color: #ddd;
+    }
+}
diff --git a/src/skin/options.html b/src/skin/options.html
index 428d0fbf..2f8bcb83 100644
--- a/src/skin/options.html
+++ b/src/skin/options.html
@@ -1,29 +1,32 @@
 <!DOCTYPE html>
 
 <!--
-  - This file is part of Adblock Plus <http://adblockplus.org/>,
-  - Copyright (C) 2006-2013 Eyeo GmbH
-  -
-  - Adblock Plus is free software: you can redistribute it and/or modify
-  - it under the terms of the GNU General Public License version 3 as
-  - published by the Free Software Foundation.
-  -
-  - Adblock Plus is distributed in the hope that it will be useful,
-  - but WITHOUT ANY WARRANTY; without even the implied warranty of
-  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  - GNU General Public License for more details.
-  -
-  - You should have received a copy of the GNU General Public License
-  - along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>.
-  -->
+ - This file is part of Privacy Badger <https://privacybadger.org/>
+ - Copyright (C) 2014 Electronic Frontier Foundation
+ -
+ - Derived from Adblock Plus
+ - Copyright (C) 2006-2013 Eyeo GmbH
+ -
+ - Privacy Badger is free software: you can redistribute it and/or modify
+ - it under the terms of the GNU General Public License version 3 as
+ - published by the Free Software Foundation.
+ -
+ - Privacy Badger is distributed in the hope that it will be useful,
+ - but WITHOUT ANY WARRANTY; without even the implied warranty of
+ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ - GNU General Public License for more details.
+ -
+ - You should have received a copy of the GNU General Public License
+ - along with Privacy Badger.  If not, see <http://www.gnu.org/licenses/>.
+ -->
 
 <html style="visibility:hidden; overflow:hidden">
 <head>
 <meta name="google" content="notranslate">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
-<link type="text/css" href="/lib/vendor/jquery-ui-1.12.1.custom/jquery-ui.structure.css" rel="stylesheet" />
-<link type="text/css" href="/lib/vendor/jquery-ui-1.12.1.custom/jquery-ui.theme.css" rel="stylesheet" />
+<link type="text/css" href="/lib/vendor/jquery-ui.custom/jquery-ui.structure.css" rel="stylesheet" />
+<link type="text/css" href="/lib/vendor/jquery-ui.custom/jquery-ui.theme.css" rel="stylesheet" />
 <link type="text/css" href="/lib/vendor/jquery-ui-iconfont-2.3.2/jquery-ui-1.12.icon-font.css" rel="stylesheet" />
 <link type="text/css" href="/lib/vendor/tooltipster-4.2.6/tooltipster.bundle.css" rel="stylesheet" />
 <link type="text/css" href="/lib/vendor/select2-4.0.11/select2-4.0.11.css" rel="stylesheet" />
@@ -32,13 +35,11 @@
 <link type="text/css" media="screen" href="/skin/options-layout.css" rel="stylesheet" />
 
 <script type="text/javascript" src="/lib/vendor/jquery-3.5.1.js"></script>
-<script type="text/javascript" src="/lib/vendor/jquery-ui-1.12.1.custom/jquery-ui.js"></script>
+<script type="text/javascript" src="/lib/vendor/jquery-ui.custom/jquery-ui.js"></script>
 <script type="text/javascript" src="/lib/vendor/tooltipster-4.2.6/tooltipster.bundle.js"></script>
-<script type="text/javascript" src="/lib/vendor/underscore-1.9.1.js"></script>
 <script type="text/javascript" src="/lib/vendor/select2-4.0.11/select2-4.0.11.js"></script>
 
 <!-- required because of window.getBaseDomain() in htmlutils.js -->
-<script type="text/javascript" src="/lib/vendor/punycode-1.4.1.js"></script>
 <script type="text/javascript" src="/lib/publicSuffixList.js"></script>
 <script type="text/javascript" src="/lib/basedomain.js"></script>
 
@@ -56,10 +57,10 @@
 <header>
   <table>
     <tr>
-      <td style="vertical-align:middle;">
-        <img src="/icons/badger-48.png" srcset="/icons/badger-128.png 2x" width="48" alt="">
+      <td style="vertical-align:middle">
+        <img src="/icons/badger-bw-noborder.svg" width="40" alt="">
       </td>
-      <td>
+      <td style="vertical-align:middle">
         <h1><span class="i18n_options_title"></span></h1>
       </td>
     </tr>
@@ -69,24 +70,13 @@
 <div id="tabs">
   <ul>
     <li><a href="#tab-general-settings"><span class="i18n_options_general_settings"></span></a></li>
-    <li><a href="#tab-allowlist"><span class="i18n_whitelisted_domains"></span></a></li>
+    <li><a href="#tab-allowlist"><span class="i18n_disabled_sites"></span></a></li>
     <li><a href="#tab-manage-widgets"><span class="i18n_options_widget_replacement_tab"></span></a></li>
     <li><a href="#tab-tracking-domains"><span class="i18n_options_domain_list_tab"></span></a></li>
     <li><a href="#tab-manage-data"><span class="i18n_data_settings"></span></a></li>
   </ul>
 
   <div id="tab-tracking-domains">
-    <div id="tracking-domains-overlay">
-        <p class="i18n_description"></p>
-        <p class="i18n_intro_not_an_adblocker_paragraph"></p>
-        <p class="i18n_show_tracking_domains_message"></p>
-        <p>
-        <label>
-          <input type="checkbox" id="show-tracking-domains-checkbox">
-          <span class="i18n_show_tracking_domains_acknowledgement"></span>
-        </label>
-        </p>
-    </div>
     <div id="blockedResourcesContainer">
       <p id="pbInstructions">
         <span id="options_domain_list_trackers"></span>
@@ -144,8 +134,8 @@
     <form id="allowlist-form" action="#">
       <div>
         <div>
-          <div style="float: left; max-width: 400px; width: 100%; margin-inline-end: 30px; padding-top: 5px">
-            <input type="text" value="" id="new-disabled-site-input" style="width:100%" placeholder="i18n_whitelist_form_domain_input_placeholder" autocomplete="off">
+          <div style="float: left; max-width: 420px; width: 100%; margin-inline-end: 10px; padding-top: 5px">
+            <input type="text" value="" id="new-disabled-site-input" placeholder="i18n_allowlist_domain_input_placeholder" autocomplete="off">
           </div>
           <div style="float: left; padding: 5px 0 10px">
             <button id="add-disabled-site" type="submit"><span class="i18n_add_domain_button"></span></button>
@@ -153,7 +143,7 @@
         </div>
         <div style="clear: both; overflow: hidden">
           <div style="float: left; max-width: 420px; width: 100%; margin-inline-end: 10px; padding-top: 5px">
-            <select id="allowlist-select" size="10" multiple style="width: 100%; background: white;"></select>
+            <select id="allowlist-select" size="10" multiple></select>
           </div>
           <div style="float: left; padding-top: 5px">
             <button id="remove-disabled-site"><span class="i18n_remove_button"></span></button>
@@ -196,6 +186,15 @@
           </span>
         </label>
       </div>
+      <div class="checkbox" id="disable-network-prediction" style="display:none">
+        <label>
+          <input type="checkbox" id="disable-network-prediction-checkbox">
+          <span>
+            <span class="i18n_options_disable_network_prediction"></span>
+            <a id="disable-network-prediction-help-link" href="https://www.google.com/intl/en/chrome/privacy/whitepaper.html#netpredict" target="_blank"><span class="ui-icon ui-icon-circle-b-help"></span></a>
+          </span>
+        </label>
+      </div>
       <div class="checkbox" id="disable-google-nav-error-service" style="display:none">
         <label>
           <input type="checkbox" id="disable-google-nav-error-service-checkbox">
@@ -205,6 +204,15 @@
           </span>
         </label>
       </div>
+      <div class="checkbox" id="disable-floc" style="display:none">
+        <label>
+          <input type="checkbox" id="disable-floc-checkbox">
+          <span>
+            <span class="i18n_options_disable_floc"></span>
+            <a href="https://www.eff.org/deeplinks/2021/03/googles-floc-terrible-idea" target="_blank"><span class="ui-icon ui-icon-circle-b-help"></span></a>
+          </span>
+        </label>
+      </div>
 
       <h4 class="i18n_options_advanced_settings"></h4>
 
@@ -256,12 +264,27 @@
       <span class="i18n_options_social_widgets_checkbox"></span>
     </label>
     </p>
-    <div id="hide-widgets-row" class="indent1">
+
+    <h4 class="i18n_options_widget_exceptions_header"></h4>
+
+    <div style="max-width: 420px">
       <label for="hide-widgets-select">
         <span class="i18n_options_hide_social_widgets"></span>
       </label>
       <select name="states[]" multiple="multiple" id="hide-widgets-select"></select>
     </div>
+
+    <h4 class="i18n_options_widget_site_exceptions_header"></h4>
+
+    <div>
+      <span class="i18n_options_widget_site_exceptions_label"></span>
+      <form action="#">
+        <div id="widget-site-exceptions-select-div">
+          <select id="widget-site-exceptions-select" size="10" multiple></select>
+        </div>
+        <button id="widget-site-exceptions-remove-button" class="i18n_remove_button"></button>
+      </form>
+    </div>
   </div>
 
   <div id="tab-manage-data">
diff --git a/src/skin/popup.css b/src/skin/popup.css
index 24d8832e..e7afb152 100644
--- a/src/skin/popup.css
+++ b/src/skin/popup.css
@@ -1,5 +1,5 @@
 /*
- * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * This file is part of Privacy Badger <https://privacybadger.org/>
  * Copyright (C) 2014 Electronic Frontier Foundation
  *
  * Privacy Badger is free software: you can redistribute it and/or modify
@@ -14,8 +14,6 @@
  * You should have received a copy of the GNU General Public License
  * along with Privacy Badger.  If not, see <http://www.gnu.org/licenses/>.
  */
- /*adjoining-classes:ignore*/
- /*csslint ids:ignore*/
 
 body {
   box-sizing: border-box;
@@ -30,7 +28,7 @@ body {
 
   min-width: 430px; /* Chrome */
   max-width: 100%;  /* FF android */
-  min-height: 270px;
+  min-height: 300px;
 }
 @media screen and (min--moz-device-pixel-ratio:0) {
     body {
@@ -39,6 +37,12 @@ body {
     }
 }
 
+/* popup only (not options page) */
+body#main {
+    display: flex;
+    flex-direction: column;
+}
+
 @font-face {
     font-family: "Chunk-Five";
     src: url("./fonts/Chunk.ttf");
@@ -48,14 +52,9 @@ a { text-decoration: none }
 
 a:hover { color: #ec9329 }
 
-.spacer {
-  height: 7px;
-  width: 5px;
-  display: block;
-  clear: both;
-}
-.clear {
-    clear: both;
+button {
+    /* needed for Firefox */
+    color: #333;
 }
 
 .clicker {
@@ -139,9 +138,10 @@ a:hover { color: #ec9329 }
     display: inline-block;
 }
 
-#privacyBadgerHeader{
-color: #505050;
-font-size: 16px;
+#privacyBadgerHeader {
+    color: #505050;
+    font-size: 16px;
+    margin-bottom: 5px;
 }
 
 #title {
@@ -150,11 +150,14 @@ font-size: 16px;
 
 #header-image-stack {
     display: table;
-    float: left;
     margin: 2px 10px 0 10px;
     line-height: 1.0;
 }
 
+#badger-header-logo, #header-image-stack, #header-image-stack a, #header-image-stack img {
+    float: left;
+}
+
 #privacyBadgerHeader h2{
   display: table-row;
   color: #000;
@@ -165,15 +168,18 @@ font-size: 16px;
   margin-top: 5px;
 }
 
-#privacyBadgerHeader img {
-    float: left;
+/* body#main to avoid applying this to options page */
+body#main #blockedResourcesContainer, #special-browser-page, #disabled-site-message {
+    flex: 1;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
 }
-
-#blockedResourcesContainer {
-    min-height: 70px;
+#special-browser-page, #disabled-site-message {
+    text-align: center;
 }
 
-#intro-reminder-btn, #critical-error-link, #learning-prompt-btn {
+button.cta-button, a.cta-button {
     background-color: #ff641c;
     border: 2px solid #ff641c;
     color: #fff;
@@ -184,18 +190,14 @@ font-size: 16px;
     transition: background-color 0.3s ease;
     width: 100%;
 }
-
-#critical-error-link {
-    border-radius: 3px;
-}
-
-#intro-reminder-btn:hover, #critical-error-link:hover, #learning-prompt-btn:hover {
+button.cta-button:hover, a.cta-button:hover {
     background-color: #f58728;
 }
+
 .clickerContainer {
     max-height: 290px;
     overflow-y: auto;
-    background-color: #E8E9EA;
+    background-color: #e8e9ea;
     position: relative;
     margin-top: 25px;
 }
@@ -204,8 +206,8 @@ font-size: 16px;
     position: relative;
 }
 .key {
-    position: absolute;
-    height: 25px;
+    position: relative;
+    height: 7px;
     left: 215px;
     right: 0;
     z-index: 30;
@@ -220,6 +222,7 @@ font-size: 16px;
 .flex-wrapper {
     display: flex;
     align-items: center;
+    overflow-wrap: anywhere;
 }
 
 #instruction-outer {
@@ -263,9 +266,12 @@ font-size: 16px;
 #instruction .flex-wrapper > div {
     padding-inline-end: 5px;
 }
-#intro-reminder-btn, #error-message, #learning-prompt-btn {
+#intro-reminder-btn, #error-message, #learning-prompt-btn, #webrtc-deprecation-ack-btn {
     margin-top: 1em;
 }
+#webrtc-deprecation-ack-btn {
+    padding: 10px;
+}
 #error-message {
     text-align: center;
 }
@@ -283,33 +289,29 @@ font-size: 16px;
 #options {
     margin-inline-end: 3px;
 }
-#pbInstructions, #special-browser-page, #disabled-site-message {
+#pbInstructions, #special-browser-page, #disabled-site-message, .toggle-header-title {
     color: #505050;
     font-size: 16px;
     margin: 0;
-    padding-top: 10px;
 }
-#pbInstructions :not(#options_domain_list_trackers):not(#options_domain_list_no_trackers) a {
+/* body#main to avoid applying this to options page */
+body#main #pbInstructions a, #firstparty-protections-container a, #webrtc-deprecation-div a, #donate a {
     text-decoration: underline;
     color: black;
     font-weight: bold;
 }
-#pbInstructions :not(#options_domain_list_trackers):not(#options_domain_list_no_trackers) a:hover {
-    color: #ec9329
-}
-#instructions-no-trackers, #special-browser-page, #disabled-site-message {
-    text-align: center;
-    margin: 45px 0;
-    padding: 0;
-}
-#instructions-many-trackers {
-    text-align: center;
-    margin: 10px 0;
+body#main #pbInstructions a:hover, #firstparty-protections-container a:hover, #webrtc-deprecation-div a:hover, #donate a:hover {
+    color: #ec9329;
 }
-#instructions-many-trackers, #instructions-no-trackers, #no-third-parties {
-    display: block;
+#instructions-firstparty-description {
+    font-size: 14px;
+    background-color: #e8e9ea;
+    color: #555;
+    padding: 8px;
+    font-size: 12px;
 }
 #no-third-parties {
+    display: block;
     font-size: 12px;
 }
 
@@ -317,26 +319,28 @@ font-size: 16px;
     display: flex;
     flex-wrap: wrap;
     justify-content: space-between;
-    margin-top: 5px;
     text-align: center;
 }
-button {
-    color: #333;
-}
 .pbButton {
     background-color: #fefefe;
     border: 2px solid;
     border-radius: 3px;
     cursor: pointer;
-    font-family: 'Lucida Grande', 'Segoe UI', Tahoma, 'DejaVu Sans', Arial, sans-serif;
-    font-size: 12px;
+    /* systemfontstack.com */
+    font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, helvetica neue, helvetica, Ubuntu, roboto, noto, segoe ui, arial, sans-serif;
+    font-size: 14px;
     font-weight: bold;
-    line-height: 16px;
+    /* fix overly bold text on macOS */
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
     margin-top: 8px;
     padding: 10px;
     text-align: center;
     width: 49%;
 }
+.pbButton:not(:disabled):active {
+    transform: translateY(1px);
+}
 .pbButton:hover:enabled {
     border: 2px solid #F06A0A;
 }
@@ -345,8 +349,8 @@ button {
     color: #666;
     cursor: auto;
 }
-#donate {
-    width: 100%;
+#deactivate_site_btn, #activate_site_btn, #error {
+    font-size: 16px;
 }
 
 #not-yet-blocked-header, #non-trackers-header {
@@ -436,11 +440,19 @@ div.overlay.active {
   font-size: 13px;
 }
 
-#version{
-  color: #707070;
-  font-size: 10px;
-  float: left;
+#version {
+    color: #707070;
+    font-size: 10px;
+    position: absolute;
+    bottom: 5px;
+}
+#donate {
+    font-size: 14px;
+    margin: 5px 0;
+    padding: 10px;
+    text-align: center;
 }
+
 .faded-bw-color-scheme {
     filter: grayscale(1) opacity(0.6);
 }
@@ -456,6 +468,52 @@ div.overlay.active {
     border: none;
 }
 
+#firstparty-protections-container {
+    border-bottom: 1px solid #d3d3d3;
+    margin: 10px 0;
+    padding-bottom: 5px;
+}
+.basic-header {
+    text-align: center;
+    margin: 15px 0;
+}
+.toggle-header {
+    display: flex;
+    align-items: center;
+    cursor: pointer;
+    transition: border 0.25s ease-out;
+    background-color: #fff;
+    border: 2px solid #fff;
+    border-radius: 3px;
+    padding: 0;
+    width: 100%;
+}
+.toggle-header:hover {
+    border: 2px solid #f06a0a;
+}
+.toggle-header:hover .toggle-header-title {
+    color: #000;
+}
+.toggle-header-title {
+    flex: 1;
+    transition: color 0.25s ease-out;
+    margin: 10px 0;
+}
+.toggle-header::before {
+    content: '';
+    font-size: 18px;
+    padding: 0 4px;
+    width: 1.2em;
+    visibility: hidden;
+}
+.toggle-header-icon {
+    margin-inline-end: auto;
+    padding: 0 4px;
+}
+.ui-icon.ui-icon-caret-d, .ui-icon.ui-icon-caret-u {
+    font-size: 18px;
+}
+
 @media screen and (max-width: 400px){
     .origin {
         max-width: 150px;
@@ -486,3 +544,91 @@ div.overlay.active {
         margin-right: 0px;
     }
 }
+
+@media (prefers-color-scheme: dark) {
+    :root {
+        color-scheme: dark;
+    }
+    
+    body, #instruction, .key {
+        background-color: #333;
+        color: #ddd;
+    }
+
+    #instruction {
+        box-shadow: none;
+    }
+    #instruction-outer {
+        opacity: 0.6;
+    }
+
+    button,
+    /* body#main to avoid applying this to options page */
+    body#main #pbInstructions a,
+    #firstparty-protections-container a,
+    #webrtc-deprecation-div a,
+    #donate a,
+    #pbInstructions,
+    .toggle-header-title,
+    #special-browser-page,
+    #disabled-site-message {
+        color: #ddd;
+    }
+
+    .toggle-header {
+        background-color: #333;
+        border: 2px solid #333;
+    }
+    .toggle-header:hover .toggle-header-title {
+        color: #fff;
+    }
+
+    #firstparty-protections-container {
+        border-bottom: 1px solid #555;
+    }
+
+    /* TODO:
+     *  - Add f06a0a color on hover
+     */
+    #fittslaw, #help, #options, #share {
+        filter: invert(0.85);
+    }
+
+    #privacyBadgerHeader h2 {
+        color: #f9f9f9;
+    }
+
+    textarea, #share_output {
+        background-color: #333;
+        border: solid 1px #555;
+        color: #ddd;
+    }
+
+    #version {
+        color: #bbb;
+    }
+
+    .clicker, .origin {
+        color: #ddd;
+    }
+    .clicker {
+        border-top: solid 1px #555;
+    }
+
+    .clickerContainer {
+        background-color: #3a3a3a;
+     }
+
+    #instructions-firstparty-description {
+        background-color: #3a3a3a;
+        color: #ddd;
+    }
+
+    .pbButton {
+        background-color: #333;
+        border: solid 2px #ddd;
+    }
+    .userset .honeybadgerPowered {
+        filter: invert(100%);
+    }
+}
diff --git a/src/skin/popup.html b/src/skin/popup.html
index c38fd60f..bc27eaa8 100644
--- a/src/skin/popup.html
+++ b/src/skin/popup.html
@@ -1,25 +1,24 @@
 <!DOCTYPE html>
 
 <!--
-  - This file was part of Adblock Plus <http://adblockplus.org/>,
-  - Copyright (C) 2006-2013 Eyeo GmbH
-
-  - Modified for Privacy Badger
-  - Copyright (C) 2013- Electronic Frontier Foundation & others
-
-  -
-  - Adblock Plus is free software: you can redistribute it and/or modify
-  - it under the terms of the GNU General Public License version 3 as
-  - published by the Free Software Foundation.
-  -
-  - Adblock Plus is distributed in the hope that it will be useful,
-  - but WITHOUT ANY WARRANTY; without even the implied warranty of
-  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  - GNU General Public License for more details.
-  -
-  - You should have received a copy of the GNU General Public License
-  - along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>.
-  -->
+ - This file is part of Privacy Badger <https://privacybadger.org/>
+ - Copyright (C) 2014 Electronic Frontier Foundation
+ -
+ - Derived from Adblock Plus
+ - Copyright (C) 2006-2013 Eyeo GmbH
+ -
+ - Privacy Badger is free software: you can redistribute it and/or modify
+ - it under the terms of the GNU General Public License version 3 as
+ - published by the Free Software Foundation.
+ -
+ - Privacy Badger is distributed in the hope that it will be useful,
+ - but WITHOUT ANY WARRANTY; without even the implied warranty of
+ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ - GNU General Public License for more details.
+ -
+ - You should have received a copy of the GNU General Public License
+ - along with Privacy Badger.  If not, see <http://www.gnu.org/licenses/>.
+ -->
 
 <html>
 <head>
@@ -32,16 +31,15 @@
 
 <script type="text/javascript" src="/lib/vendor/jquery-3.5.1.js"></script>
 <script type="text/javascript" src="/lib/vendor/tooltipster-4.2.6/tooltipster.bundle.js"></script>
-<script type="text/javascript" src="/lib/vendor/underscore-1.9.1.js"></script>
 
 <!-- required because of window.getBaseDomain() in htmlutils.js -->
-<script type="text/javascript" src="/lib/vendor/punycode-1.4.1.js"></script>
 <script type="text/javascript" src="/lib/publicSuffixList.js"></script>
 <script type="text/javascript" src="/lib/basedomain.js"></script>
 
 <script type="text/javascript" src="/lib/i18n.js"></script>
 <script type="text/javascript" src="/js/bootstrap.js"></script>
 <script type="text/javascript" src="/js/constants.js"></script>
+<script type="text/javascript" src="/js/utils.js"></script>
 <script type="text/javascript" src="/js/htmlutils.js"></script>
 <script type="text/javascript" src="/js/firefoxandroid.js"></script>
 <script type="text/javascript" src="/js/popup.js"></script>
@@ -50,7 +48,7 @@
   <div id="instruction-outer">
   </div>
   <div id="instruction">
-    <a href="" id="fittslaw"><svg width="26" height="22" fill="white">
+    <a href="" id="fittslaw" role="button" aria-label="i18n_report_close"><svg width="26" height="22" fill="white">
       <line x1="5" y1="5" x2="20" y2="20" style="stroke:rgb(22,22,22);stroke-width:3;fill:transparent"/>
       <line x1="5" y1="20" x2="20" y2="5" style="stroke:rgb(22,22,22);stroke-width:3;fill:transparent"/>
     </svg></a>
@@ -63,7 +61,7 @@
           <div class="i18n_intro_text2" style="margin-top:0.5em"></div>
         </div>
       </div>
-      <button id="intro-reminder-btn" class="i18n_first_run_text pbButton"></button>
+      <button id="intro-reminder-btn" class="i18n_first_run_text pbButton cta-button"></button>
     </div>
 
     <div id="error-text" style="display:none">
@@ -82,14 +80,27 @@
           <div class="i18n_learning_prompt_text2" style="margin-top:0.5em"></div>
         </div>
       </div>
-      <button id="learning-prompt-btn" class="i18n_learning_prompt_button pbButton"></button>
+      <button id="learning-prompt-btn" class="i18n_learning_prompt_button pbButton cta-button"></button>
+    </div>
+
+    <div id="webrtc-deprecation-div" style="display:none">
+      <div class="flex-wrapper">
+        <div>
+          <div class="i18n_deprecated_setting"></div>
+          <ul>
+            <li><span class="i18n_options_webrtc_setting"></span></li>
+          </ul>
+          <div class="i18n_learn_more_link" data-i18n_contents_placeholders="<a href='https://github.com/EFForg/privacybadger/issues/2782' target=_blank title='https://github.com/EFForg/privacybadger/issues/2782' class='tooltip'>https://git.io/badger-webrtc</a>"></div>
+        </div>
+      </div>
+      <button id="webrtc-deprecation-ack-btn" class="i18n_acknowledgement_action pbButton cta-button"></button>
     </div>
 
   </div><!-- end of div#instruction -->
 
   <div id="overlay" class="overlay">
     <h1 id="report_title" class="i18n_report_title overlay_title"></h1>
-    <a href="" id="report_close" class="i18n_report_close overlay_close"></a>
+    <a href="" id="report_close" class="i18n_report_close overlay_close" role="button"></a>
     <p id="report_text" class="i18n_report_text"></p>
     <label id="report_label" for="error_input" class="i18n_report_input_label"></label>
     <textarea id="error_input" name="error_input" maxlength="300" rows=3 placeholder="i18n_error_input"></textarea>
@@ -103,8 +114,8 @@
   </div>
   <div id="share_overlay" class="overlay">
     <h1 id="share_title" class="i18n_share_title overlay_title"></h1>
-    <a href="" id="share_close" class="i18n_report_close overlay_close"></a>
-    <textarea id="share_output" name="share_output"></textarea>
+    <a href="" id="share_close" class="i18n_report_close overlay_close" role="button"></a>
+    <textarea id="share_output" name="share_output" spellcheck="false"></textarea>
     <button id="copy-button" class="i18n_copy_button_initial pbButton"></button>
   </div>
 
@@ -119,19 +130,36 @@
       <h2 id="title-name"><span class="i18n_name"></span></h2>
     </div>
   </div>
-  <div class='clear'></div>
+</div>
+
+<div id="firstparty-protections-container" style="display:none">
+  <button class="toggle-header" id="firstparty-protections-header">
+    <div class="toggle-header-title">
+      <span class="i18n_popup_info_firstparty_protections popup_info"></span>
+    </div>
+    <span class="toggle-header-icon">
+      <span id="expand-firstparty-popup" class="ui-icon ui-icon-caret-d" style="display:none"></span>
+      <span id="collapse-firstparty-popup" class="ui-icon ui-icon-caret-u" style="display:none"></span>
+    </span>
+  </button>
+  <div id="instructions-firstparty-description" class="i18n_popup_info_firstparty_description" style="display:none"></div>
 </div>
 
 <div id="blockedResourcesContainer">
-  <p id="pbInstructions">
-    <span id="instructions-many-trackers"></span>
-    <span id="instructions-no-trackers" style="display:none">
+  <div id="pbInstructions">
+    <button class="toggle-header" id="tracker-list-header" style="display:none">
+      <span class="toggle-header-title" id="instructions-many-trackers"></span>
+      <span class="toggle-header-icon">
+        <span id="expand-blocked-resources" class="ui-icon ui-icon-caret-d" style="display:none"></span>
+        <span id="collapse-blocked-resources" class="ui-icon ui-icon-caret-u" style="display:none"></span>
+      </span>
+    </button>
+    <div class="basic-header" id="instructions-no-trackers" style="display:none">
       <span class="i18n_popup_instructions_no_trackers" data-i18n_contents_placeholders="<a target='_blank' title='i18n_what_is_a_tracker' class='tooltip' href='https://privacybadger.org/#What-is-a-third-party-tracker'>"></span>
       <span id="no-third-parties" class="i18n_popup_blocked" style="display:none"></span>
-    </span>
-  </p>
-  <div class="spacer"></div>
-  <div id="blockedResources"></div>
+    </div>
+  </div>
+  <div id="blockedResources" style="display:none"></div>
 </div>
 
 <div id="special-browser-page" style="display:none">
@@ -144,12 +172,16 @@
 </div>
 
 <div id="siteControls">
-    <button id="deactivate_site_btn" class="i18n_popup_disable_for_site pbButton"></button>
-    <button id="activate_site_btn" class="i18n_popup_enable_for_site pbButton" style="display:none"></button>
-    <button id="error" class="i18n_report_broken_site pbButton"></button>
-    <button id="donate" class="pbButton" target="_blank"><span class="ui-icon ui-icon-heart" style="color:#ec1e1e"></span> <span class="i18n_donate_to_eff"></span></button>
+    <button id="deactivate_site_btn" class="pbButton"><span class="ui-icon ui-icon-power"></span> <span class="i18n_popup_disable_for_site"></span></button>
+    <button id="activate_site_btn" class="pbButton" style="display:none"><span class="ui-icon ui-icon-power"></span> <span class="i18n_popup_enable_for_site"></span></button>
+    <button id="error" class="pbButton"><span class="ui-icon ui-icon-mail-send"></span> <span class="i18n_report_broken_site"></span></button>
 </div>
-<span id="version" class="i18n_version"></span>
-<div class='clear'></div>
+
+<footer>
+  <div id="donate">
+    <a href="https://supporters.eff.org/donate/support-privacy-badger" target="_blank"><span class="ui-icon ui-icon-heart" style="color:#ec1e1e"></span> <span class="i18n_donate_to_eff"></span></a>
+  </div>
+  <div id="version" class="i18n_version"></div>
+</footer>
 </body>
 </html>
diff --git a/src/tests/index.html b/src/tests/index.html
index 3adc2ec7..6a3e7629 100644
--- a/src/tests/index.html
+++ b/src/tests/index.html
@@ -1,6 +1,6 @@
 <!DOCTYPE html>
 <!--
- - This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ - This file is part of Privacy Badger <https://privacybadger.org/>
  - Copyright (C) 2014 Electronic Frontier Foundation
  -
  - Derived from Adblock Plus
@@ -33,24 +33,22 @@
     <div id="qunit-fixture"></div>
 
     <script src="../lib/vendor/jquery-3.5.1.js"></script>
-    <script src="../lib/vendor/underscore-1.9.1.js"></script>
 
     <script src="lib/vendor/qunit-2.9.2.js"></script>
     <script src="lib/qunit_config.js"></script>
     <script src="lib/vendor/sinon-2.0.0.js"></script>
 
     <script src="../js/bootstrap.js"></script>
+    <script src="../js/constants.js"></script>
+    <script src="../js/multiDomainFirstParties.js"></script>
+    <script src="../js/utils.js"></script>
     <script src="../data/surrogates.js"></script>
     <script src="../js/surrogates.js"></script>
-    <script src="../js/multiDomainFirstParties.js"></script>
     <script src="../js/storage.js"></script>
-    <script src="../js/utils.js"></script>
-    <script src="../js/constants.js"></script>
     <script src="../js/incognito.js"></script>
     <script src="../js/heuristicblocking.js"></script>
 
     <script src="../lib/publicSuffixList.js"></script>
-    <script src="../lib/vendor/punycode-1.4.1.js"></script>
     <script src="../lib/basedomain.js"></script>
 
     <script src="../lib/options.js"></script>
diff --git a/src/tests/lib/qunit_config.js b/src/tests/lib/qunit_config.js
index 36e58ae5..14d6c5be 100644
--- a/src/tests/lib/qunit_config.js
+++ b/src/tests/lib/qunit_config.js
@@ -20,6 +20,7 @@ chrome.storage.local.get = (keys, callback) => {
       // don't open the new user intro page or load seed data
       private_storage: {
         badgerVersion: chrome.runtime.getManifest().version,
+        firstRunTimerFinished: true,
       }
     });
   }, 0);
diff --git a/src/tests/tests/background.js b/src/tests/tests/background.js
index 149db426..9d4c72f7 100644
--- a/src/tests/tests/background.js
+++ b/src/tests/tests/background.js
@@ -14,7 +14,6 @@ const DNT_COMPLIANT_DOMAIN = 'eff.org',
 
 let utils = require('utils'),
   constants = require('constants'),
-  migrations = require('migrations').Migrations,
   mdfp = require('multiDomainFP');
 
 let clock,
@@ -359,16 +358,16 @@ QUnit.test("subdomains on the yellowlist are preserved", (assert) => {
   );
 });
 
-QUnit.test("forgetFirstPartySnitches migration properly handles snitch entries with no MDFP entries", (assert) => {
+QUnit.test("mergeUserData() preserves snitch map data when no MDFP", (assert) => {
   const actionMap = badger.storage.getStore('action_map'),
-    snitchMap = badger.storage.getStore('snitch_map');
+    snitchMap = badger.storage.getStore('snitch_map'),
+    TRACKER = 'amazon.com';
 
-  let snitchNoMDFP = {
-    'amazon.com': ['amazonads.com', 'amazing.com', 'amazonrainforest.com']
+  let snitch_map = {
+    [TRACKER]: ['amazonads.com', 'amazing.com', 'amazonrainforest.com']
   };
-
-  let actionNoMDFP = {
-    'amazon.com': {
+  let action_map = {
+    [TRACKER]: {
       heuristicAction: "cookieblock",
       userAction: "",
       dnt: false,
@@ -376,33 +375,33 @@ QUnit.test("forgetFirstPartySnitches migration properly handles snitch entries w
     }
   };
 
-  snitchMap.updateObject(snitchNoMDFP);
-  actionMap.updateObject(actionNoMDFP);
-  migrations.forgetFirstPartySnitches(badger);
+  assert.notOk(actionMap.getItem(TRACKER), "no data before test");
+  assert.notOk(snitchMap.getItem(TRACKER), "no data before test");
+
+  badger.mergeUserData({ action_map, snitch_map });
 
   assert.deepEqual(
-    actionMap.getItem('amazon.com'),
-    actionNoMDFP['amazon.com'],
+    actionMap.getItem(TRACKER),
+    action_map[TRACKER],
     "action map preserved for domain with no MDFP snitch entries"
   );
-
   assert.deepEqual(
-    snitchMap.getItem('amazon.com'),
-    snitchNoMDFP['amazon.com'],
+    snitchMap.getItem(TRACKER),
+    snitch_map[TRACKER],
     "snitch map entry with no MDFP domains remains the same after migration runs"
   );
 });
 
-QUnit.test("forgetFirstPartySnitches migration properly handles snitch entries with some MDFP entries", (assert) => {
+QUnit.test("mergeUserData() removes MDFP entries from snitch map", (assert) => {
   const actionMap = badger.storage.getStore('action_map'),
-    snitchMap = badger.storage.getStore('snitch_map');
+    snitchMap = badger.storage.getStore('snitch_map'),
+    TRACKER = 'amazon.com';
 
-  let snitchSomeMDFP = {
-    'amazon.com': ['amazon.ca', 'amazon.co.jp', 'amazing.com']
+  let snitch_map = {
+    [TRACKER]: ['amazon.ca', 'amazon.co.jp', 'amazing.com']
   };
-
-  let actionSomeMDFP = {
-    'amazon.com': {
+  let action_map = {
+    [TRACKER]: {
       heuristicAction: "cookieblock",
       userAction: "",
       dnt: false,
@@ -410,31 +409,33 @@ QUnit.test("forgetFirstPartySnitches migration properly handles snitch entries w
     }
   };
 
-  snitchMap.updateObject(snitchSomeMDFP);
-  actionMap.updateObject(actionSomeMDFP);
-  migrations.forgetFirstPartySnitches(badger);
+  assert.notOk(actionMap.getItem(TRACKER), "no data before test");
+  assert.notOk(snitchMap.getItem(TRACKER), "no data before test");
+
+  badger.mergeUserData({ action_map, snitch_map });
 
   assert.equal(
-    badger.storage.getAction('amazon.com'),
+    badger.storage.getAction(TRACKER),
     constants.ALLOW,
-    "Action downgraded for partial MDFP domain"
+    "action downgraded to not-yet-blocked for partial MDFP domain"
   );
-
-  assert.deepEqual(snitchMap.getItem('amazon.com'),
+  assert.deepEqual(
+    snitchMap.getItem(TRACKER),
     ["amazing.com"],
-    'forget first party migration properly removes MDFP domains and leaves regular domains');
+    "MDFP entries were removed, non-MDFP entries were left alone"
+  );
 });
 
-QUnit.test("forgetFirstPartySnitches migration properly handles snitch entries with all MDFP entries", (assert) => {
+QUnit.test("mergeUserData() clears snitch_map when all items are MDFP", (assert) => {
   const actionMap = badger.storage.getStore('action_map'),
-    snitchMap = badger.storage.getStore('snitch_map');
+    snitchMap = badger.storage.getStore('snitch_map'),
+    TRACKER = 'amazon.com';
 
-  let snitchAllMDFP = {
-    'amazon.com': ['amazon.ca', 'amazon.co.jp', 'amazon.es']
+  let snitch_map = {
+    [TRACKER]: ['amazon.ca', 'amazon.co.jp', 'amazon.es']
   };
-
-  let actionAllMDFP = {
-    'amazon.com': {
+  let action_map = {
+    [TRACKER]: {
       heuristicAction: "cookieblock",
       userAction: "",
       dnt: false,
@@ -442,26 +443,162 @@ QUnit.test("forgetFirstPartySnitches migration properly handles snitch entries w
     }
   };
 
+  assert.notOk(actionMap.getItem(TRACKER), "no data before test");
+  assert.notOk(snitchMap.getItem(TRACKER), "no data before test");
+
   // confirm all entries are MDFP
-  snitchAllMDFP["amazon.com"].forEach((domain) => {
+  snitch_map[TRACKER].forEach(domain => {
     assert.ok(
-      mdfp.isMultiDomainFirstParty('amazon.com', domain),
-      domain + " is indeed MDFP to amazon.com"
+      mdfp.isMultiDomainFirstParty(TRACKER, domain),
+      `${domain} is indeed MDFP to ${TRACKER}`
     );
   });
 
-  snitchMap.updateObject(snitchAllMDFP);
-  actionMap.updateObject(actionAllMDFP);
-  migrations.forgetFirstPartySnitches(badger);
-
-  assert.notOk(snitchMap.getItem('amazon.com'),
-    'forget first party migration properly removes a snitch map entry with all MDFP domains attributed to it');
+  badger.mergeUserData({ action_map, snitch_map });
 
   assert.equal(
-    badger.storage.getAction('amazon.com'),
+    badger.storage.getAction(TRACKER),
     constants.NO_TRACKING,
-    "Action downgraded for all MDFP domain"
+    "all MDFP domain is no longer known as a tracker"
+  );
+  assert.notOk(
+    snitchMap.getItem(TRACKER),
+    "all-MDFP snitch_map data was removed entirely"
   );
 });
 
+(function () {
+  let IS_UPDATE, LEARN_LOCALLY;
+
+  let newActionMap = {
+    "google-analytics.com": {
+      dnt: false,
+      heuristicAction: constants.BLOCK,
+      nextUpdateTime: 1602152953782,
+      userAction: ""
+    },
+    "youtube.com": {
+      dnt: false,
+      heuristicAction: constants.COOKIEBLOCK,
+      nextUpdateTime: 0,
+      userAction: ""
+    },
+  };
+  let newSnitchMap = {
+    "google-analytics.com": [
+      "linkedin.com",
+      "google.com",
+      "godaddy.com"
+    ],
+    "youtube.com": [
+      "apache.org",
+      "github.com",
+      "who.int",
+    ],
+  };
+
+  QUnit.module("updateTrackerData()", {
+    before: (/*assert*/) => {
+      IS_UPDATE = badger.isUpdate;
+      LEARN_LOCALLY = badger.getSettings().getItem("learnLocally");
+
+      badger.isUpdate = true;
+      badger.getSettings().setItem("learnLocally", false);
+
+      server = sinon.fakeServer.create({
+        respondImmediately: true
+      });
+    },
+
+    after: (/*assert*/) => {
+      server.restore();
+
+      badger.getSettings().setItem("learnLocally", LEARN_LOCALLY);
+      badger.isUpdate = IS_UPDATE;
+    }
+  });
+
+  QUnit.test("user-set sliders are preserved", async (assert) => {
+    const NUM_TESTS = 2;
+    let done = assert.async();
+    assert.expect(NUM_TESTS);
+
+    // initial state
+    ["youtube.com", "linkedin.com", "netflix.com"].forEach(site => {
+      badger.heuristicBlocking.updateTrackerPrevalence(
+        "doubleclick.net", "doubleclick.net", site);
+    });
+    badger.storage.setupUserAction("example.com", constants.USER_COOKIEBLOCK);
+    let customSliders = {
+      "example.com": badger.storage.getStore('action_map').getItem("example.com"),
+    };
+
+    // perform the update
+    server.respondWith(
+      "GET", (new URL(constants.SEED_DATA_LOCAL_URL)).pathname,
+      [200, {}, JSON.stringify({
+        action_map: newActionMap,
+        snitch_map: newSnitchMap
+      })]
+    );
+    await badger.updateTrackerData();
+
+    // check what happened
+    let expectedActionMap = Object.assign(customSliders, newActionMap);
+    assert.deepEqual(
+      badger.storage.getStore('action_map').getItemClones(),
+      expectedActionMap,
+      "action map was replaced but custom slider was kept"
+    );
+    assert.deepEqual(
+      badger.storage.getStore('snitch_map').getItemClones(),
+      newSnitchMap,
+      "snitch map was replaced"
+    );
+
+    done();
+  });
+
+  QUnit.test("user-set actions are added to heuristic actions", async (assert) => {
+    const NUM_TESTS = 2;
+    let done = assert.async();
+    assert.expect(NUM_TESTS);
+
+    // initial state
+    ["youtube.com", "linkedin.com", "netflix.com"].forEach(site => {
+      badger.heuristicBlocking.updateTrackerPrevalence(
+        "doubleclick.net", "doubleclick.net", site);
+    });
+    // youtube.com is also in the incoming action map
+    badger.storage.setupUserAction("youtube.com", constants.USER_BLOCK);
+
+    // perform the update
+    server.respondWith(
+      "GET", (new URL(constants.SEED_DATA_LOCAL_URL)).pathname,
+      [200, {}, JSON.stringify({
+        action_map: newActionMap,
+        snitch_map: newSnitchMap
+      })]
+    );
+    await badger.updateTrackerData();
+
+    // check what happened
+    let expectedActionMap = Object.assign({}, newActionMap);
+    expectedActionMap["youtube.com"].userAction = constants.USER_BLOCK;
+    assert.deepEqual(
+      badger.storage.getStore('action_map').getItemClones(),
+      expectedActionMap,
+      "action map was replaced and custom slider was merged in"
+    );
+    assert.deepEqual(
+      badger.storage.getStore('snitch_map').getItemClones(),
+      newSnitchMap,
+      "snitch map was replaced"
+    );
+
+    done();
+  });
+
+}());
+
 }());
diff --git a/src/tests/tests/baseDomain.js b/src/tests/tests/baseDomain.js
index b39d7571..e54c39ef 100644
--- a/src/tests/tests/baseDomain.js
+++ b/src/tests/tests/baseDomain.js
@@ -1,15 +1,21 @@
-/* * This file is part of Adblock Plus <http://adblockplus.org/>, * Copyright (C) 2006-2013 Eyeo GmbH *
- * Adblock Plus is free software: you can redistribute it and/or modify
+/*
+ * This file is part of Privacy Badger <https://privacybadger.org/>
+ * Copyright (C) 2014 Electronic Frontier Foundation
+ *
+ * Derived from Adblock Plus
+ * Copyright (C) 2006-2013 Eyeo GmbH
+ *
+ * Privacy Badger is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 3 as
  * published by the Free Software Foundation.
  *
- * Adblock Plus is distributed in the hope that it will be useful,
+ * Privacy Badger is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>.
+ * along with Privacy Badger.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* global
@@ -23,6 +29,8 @@ URI:false,
 
 (function () {
 
+let utils = require('utils');
+
 QUnit.module("URL/host tools");
 
 QUnit.test("Host name extraction", function (assert) {
@@ -63,7 +71,6 @@ QUnit.test("URI parsing", function (assert) {
     ["http://example.com/", {
       scheme: "http",
       host: "example.com",
-      asciiHost: "example.com",
       hostPort: "example.com",
       port: -1,
       path: "/",
@@ -72,7 +79,6 @@ QUnit.test("URI parsing", function (assert) {
     ["http://example.com:8000/", {
       scheme: "http",
       host: "example.com",
-      asciiHost: "example.com",
       hostPort: "example.com:8000",
       port: 8000,
       path: "/",
@@ -81,7 +87,6 @@ QUnit.test("URI parsing", function (assert) {
     ["http://foo:bar@\u0440\u043E\u0441\u0441\u0438\u044F.\u0440\u0444:8000/foo:bar/bas", {
       scheme: "http",
       host: "\u0440\u043E\u0441\u0441\u0438\u044F.\u0440\u0444",
-      asciiHost: "xn--h1alffa9f.xn--p1ai",
       hostPort: "\u0440\u043E\u0441\u0441\u0438\u044F.\u0440\u0444:8000",
       port: 8000,
       path: "/foo:bar/bas",
@@ -90,7 +95,6 @@ QUnit.test("URI parsing", function (assert) {
     ["ftp://m\xFCller.de/", {
       scheme: "ftp",
       host: "m\xFCller.de",
-      asciiHost: "xn--mller-kva.de",
       hostPort: "m\xFCller.de",
       port: -1,
       path: "/",
@@ -99,7 +103,6 @@ QUnit.test("URI parsing", function (assert) {
     ["http://1.2.3.4:8000/", {
       scheme: "http",
       host: "1.2.3.4",
-      asciiHost: "1.2.3.4",
       hostPort: "1.2.3.4:8000",
       port: 8000,
       path: "/",
@@ -108,7 +111,6 @@ QUnit.test("URI parsing", function (assert) {
     ["http://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]/", {
       scheme: "http",
       host: "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
-      asciiHost: "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
       hostPort: "[2001:0db8:85a3:0000:0000:8a2e:0370:7334]",
       port: -1,
       path: "/",
@@ -117,7 +119,6 @@ QUnit.test("URI parsing", function (assert) {
     ["http://[2001::7334]:8000/test@foo.example.com/bar", {
       scheme: "http",
       host: "2001::7334",
-      asciiHost: "2001::7334",
       hostPort: "[2001::7334]:8000",
       port: 8000,
       path: "/test@foo.example.com/bar",
@@ -126,7 +127,6 @@ QUnit.test("URI parsing", function (assert) {
     ["filesystem:http://example.com/temporary/myfile.png", {
       scheme: "filesystem:http",
       host: "example.com",
-      asciiHost: "example.com",
       hostPort: "example.com",
       port: -1,
       path: "/temporary/myfile.png",
@@ -135,7 +135,6 @@ QUnit.test("URI parsing", function (assert) {
     ["blob:https://www.daringgourmet.com/69587cd0-01e1-417b-819d-8e2ecbefc1f9", {
       scheme: "blob:https",
       host: "www.daringgourmet.com",
-      asciiHost: "www.daringgourmet.com",
       hostPort: "www.daringgourmet.com",
       port: -1,
       path: "/69587cd0-01e1-417b-819d-8e2ecbefc1f9",
@@ -173,7 +172,7 @@ QUnit.test("Determining base domain", function (assert) {
     ["2001::7334", "2001::7334"],
     ["::ffff:1.2.3.4", "::ffff:1.2.3.4"],
     ["foo.bar.2001::7334", "bar.2001::7334"],
-    ["test.xn--e1aybc.xn--p1ai", "тест.рф"],
+    ["test.xn--e1aybc.xn--p1ai", "xn--e1aybc.xn--p1ai"],
   ];
 
   for (var i = 0; i < tests.length; i++) {
@@ -192,7 +191,7 @@ QUnit.test("Converting IP address to number checks", function (assert) {
 
   for (var ip in testResults) {
     // Ignore object properties.
-    if (!testResults.hasOwnProperty(ip)) {
+    if (!utils.hasOwn(testResults, ip)) {
       continue;
     }
 
@@ -225,7 +224,7 @@ QUnit.test("Private domain checks", function (assert) {
 
   for (var domain in testResults) {
     // Ignore object properties.
-    if (!testResults.hasOwnProperty(domain)) {
+    if (!utils.hasOwn(testResults, domain)) {
       continue;
     }
 
@@ -245,6 +244,13 @@ QUnit.test("Third party checks", function (assert) {
     ["foo.co.uk", "bar.co.uk", true],
     ["foo.example.co.uk", "bar.example.co.uk", false],
     ["1.2.3.4", "2.2.3.4", true],
+    [null, "example.com", true],
+    [undefined, "example.com", true],
+    [null, null, true],
+    ["example.com", null, true],
+    ["example.com", undefined, true],
+    ["example.com.", "example.com", false], // first param has trailing dot
+    ["example.com", "example.com.", false], // second param has trailing dot
   ];
 
   for (var i = 0; i < tests.length; i++) {
diff --git a/src/tests/tests/heuristic.js b/src/tests/tests/heuristic.js
index 0eed2bba..8f12c556 100644
--- a/src/tests/tests/heuristic.js
+++ b/src/tests/tests/heuristic.js
@@ -146,19 +146,19 @@ QUnit.test("Cookie attributes shouldn't add to entropy", (assert) => {
   }
 });
 
-QUnit.test("CloudFlare cookies should get ignored", (assert) => {
+QUnit.test("Cloudflare cookies should get ignored", (assert) => {
   let CLOUDFLARE_COOKIES = [
-    '__cfduid=d3c728f97e01b1ab6969828f24b42ab111493693758',
-    '__cfduid=d9758e8613dd4acbba3248dde15e74f8d1493774432; expires=Thu, 03-May-18 01:20:32 GMT; path=/; domain=.medium.com; HttpOnly',
-    '__cfduid=de8a1734f91060dba20e2833705018b911493771353; expires=Thu, 03-May-18 02:25:53 GMT; path=/; domain=.fightforthefuture.org; HttpOnly',
-    '__cfduid=d712bcfe8e20469cc4b9129a4ab89b7501576598707; expires=Thu, 16-Jan-20 16:05:07 GMT; path=/; domain=.githack.com; HttpOnly; SameSite=Lax',
+    '__cf_bm=41291dab3ea0acac77440ce5179210efc952648e-1620759670-1800-Aai2i10uB7h69qQam38pgAnnI3AZjZaDKW6gctNbD54bmvINWrAa5PlZJP08vfwnznDXKj89Dv+KAACkN2jj/kG/U5wE7cuCdPt+aFsQpRS2',
+    '__cf_bm=aaf43ab6670e26b12c22d578ece2f2fb13f8f16a-1620759670-1800-ARWywN+AW1wPUXy0o5WE0I11Wr84t0AwEiiI3A4/6DAaLj89DPXyLTfqr8Tu0Yof93032kduEoWnqLyRO8bATfFHAh7ze/hn/HbNyaTU+fvF; expires=Thu, 11-May-21 20:41:10 GMT; path=/; domain=.medium.com; HttpOnly',
+    '__cf_bm=7b3426417a79710cae6510def4e67bababf351db-1631527211-1800-Ae1jafJ7L1dzUj+vT3WIvmxqU+bb9mUyAYGy2L5p8gXVFV2s7I5nPrk+Ja7N6OZEoDdrmax+szcLUsFy01jc758eGVUvVSqzTSvYhanpHFfI; expires=Thu, 13-Sep-21 11:30:11 GMT; path=/; domain=.fightforthefuture.org; HttpOnly; Secure',
+    '__cf_bm=0614c3dee2253c9d32da8b43147adec4834b250e-1648770070-1800-AcXvXDfb4xwdDwz/mOdGKjAC0b3A+TnGWgY2ladNaW+TGrAdgp6s0XIXeLorlA4DcRTf5PLFprDYkcQ1BCv8u3dYCWAf3l3C6ELOHu9pKVQi; expires=Thu, 01-Apr-22 01:11:10 GMT; path=/; domain=.githack.com; HttpOnly; Secure; SameSite=None',
   ];
 
   let details = JSON.parse(JSON.stringify(chromeDetails));
   for (let i = 0; i < CLOUDFLARE_COOKIES.length; i++) {
     details.requestHeaders[CHROME_COOKIE_INDEX].value = CLOUDFLARE_COOKIES[i];
     assert.notOk(hb.hasCookieTracking(details),
-      "CloudFlare cookie test #" + i);
+      "Cloudflare cookie test #" + i);
   }
 });
 
diff --git a/src/tests/tests/options.js b/src/tests/tests/options.js
index 2abeba8b..af436c9a 100644
--- a/src/tests/tests/options.js
+++ b/src/tests/tests/options.js
@@ -15,13 +15,15 @@ QUnit.test("getOriginsArray", (assert) => {
     "dntDomain.co.uk": "dnt",
     "another.allowed.domain.example": "allow",
   };
-  const originsSansAllowed = _.reduce(
-    origins, (memo, val, key) => {
-      if (val != "allow") {
-        memo[key] = val;
-      }
-      return memo;
-    }, {}
+  const originsSansAllowed = Object.fromEntries(
+    Object.entries(origins).filter(
+      ([, val]) => val != "allow"
+    )
+  );
+  const originsSansAllowedSansDnt = Object.fromEntries(
+    Object.entries(originsSansAllowed).filter(
+      ([, val]) => val != "dnt"
+    )
   );
 
   const tests = [
@@ -41,10 +43,20 @@ QUnit.test("getOriginsArray", (assert) => {
       expected: Object.keys(origins)
     },
     {
-      msg: "Type filter",
+      msg: "Type filter (user-controlled)",
       args: [origins, "", "user"],
       expected: ["UserAllowed.net", "uuuserblocked.nyc"]
     },
+    {
+      msg: "Type filter (DNT)",
+      args: [origins, "", "dnt"],
+      expected: ["dntDomain.co.uk"]
+    },
+    {
+      msg: "Type filter (non-DNT)",
+      args: [origins, "", "-dnt"],
+      expected: Object.keys(originsSansAllowedSansDnt)
+    },
     {
       msg: "Status filter",
       args: [origins, "", "", "allow"],
diff --git a/src/tests/tests/storage.js b/src/tests/tests/storage.js
index cb4042dd..82153f43 100644
--- a/src/tests/tests/storage.js
+++ b/src/tests/tests/storage.js
@@ -2,6 +2,8 @@
 
 (function () {
 
+let utils = require('utils');
+
 const DOMAIN = "example.com",
   SUBDOMAIN = "widgets." + DOMAIN,
   SUBSUBDOMAIN = "cdn." + SUBDOMAIN;
@@ -50,15 +52,47 @@ QUnit.test("test user override of default action for domain", function (assert)
 QUnit.test("settings map merging", (assert) => {
   let settings_map = storage.getStore('settings_map');
 
-  // overwrite settings with test values
+  function merge() {
+    settings_map.merge({
+      disabledSites: ['www.nytimes.com', 'example.com'],
+      widgetSiteAllowlist: {
+        "example.com": ["Disqus"],
+        "nytimes.com": ["Facebook Like", "YouTube"],
+      },
+      showCounter: false,
+    });
+  }
+
+  assert.ok(settings_map.getItem('showCounter'), "showCounter is enabled by default");
+
+  merge();
+
+  // verify
+  assert.deepEqual(
+    settings_map.getItem('disabledSites'),
+    ['www.nytimes.com', 'example.com'],
+    "disabled site lists are imported"
+  );
+  assert.deepEqual(
+    settings_map.getItem('widgetSiteAllowlist'),
+    {
+      "example.com": ["Disqus"],
+      "nytimes.com": ["Facebook Like", "YouTube"],
+    },
+    "widget site exceptions are imported"
+  );
+  assert.ok(!settings_map.getItem('showCounter'), "showCounter was disabled");
+
+  // overwrite settings with test values to test combining
   settings_map.setItem('disabledSites', ['example.com']);
+  settings_map.setItem('widgetSiteAllowlist', {
+    "nytimes.com": ["YouTube"],
+    "example.biz": ["Twitter"],
+  });
   settings_map.setItem('showCounter', true);
 
   // merge settings
-  settings_map.merge({
-    disabledSites: ['www.nytimes.com'],
-    showCounter: false,
-  });
+  merge();
 
   // verify
   assert.deepEqual(
@@ -66,6 +100,15 @@ QUnit.test("settings map merging", (assert) => {
     ['example.com', 'www.nytimes.com'],
     "disabled site lists are combined when merging settings"
   );
+  assert.deepEqual(
+    settings_map.getItem('widgetSiteAllowlist'),
+    {
+      "example.com": ["Disqus"],
+      "nytimes.com": ["YouTube", "Facebook Like"],
+      "example.biz": ["Twitter"],
+    },
+    "widget site exceptions are combined, discarding duplicate widgets"
+  );
   assert.ok(!settings_map.getItem('showCounter'), "other settings are overwritten");
 });
 
@@ -167,7 +210,7 @@ QUnit.test("action map merge handles missing nextUpdateTime", (assert) => {
     userAction: ''
   };
 
-  assert.notOk(newValue.hasOwnProperty('nextUpdateTime'),
+  assert.notOk(utils.hasOwn(newValue, 'nextUpdateTime'),
     "nextUpdateTime is indeed missing from the import");
 
   // new DNT domain should be imported
@@ -252,6 +295,31 @@ QUnit.test("snitch map merging", (assert) => {
   assert.equal(actionMap.getItem(DOMAIN).heuristicAction, "block");
 });
 
+QUnit.test("unknown domains are reported as non-tracking", (assert) => {
+  const UHOST = "thisdomainshouldnotbepresentinprivacybadgerstorage.com";
+
+  let done = assert.async();
+
+  assert.notOk(actionMap.getItem(UHOST));
+  assert.notOk(snitchMap.getItem(UHOST));
+  assert.equal(
+    storage.getBestAction(UHOST),
+    constants.NO_TRACKING,
+    "best action for unknown domain is 'no tracking'"
+  );
+
+  badger.loadSeedData(function () {
+    assert.notOk(actionMap.getItem(UHOST));
+    assert.notOk(snitchMap.getItem(UHOST));
+    assert.equal(
+      storage.getBestAction(UHOST),
+      constants.NO_TRACKING,
+      "best action for unknown domain is still 'no tracking'"
+    );
+    done();
+  });
+});
+
 QUnit.test("blocking cascades", (assert) => {
   // mark domain for blocking
   storage.setupHeuristicAction(DOMAIN, constants.BLOCK);
diff --git a/src/tests/tests/utils.js b/src/tests/tests/utils.js
index c884374a..df55e79f 100644
--- a/src/tests/tests/utils.js
+++ b/src/tests/tests/utils.js
@@ -1,11 +1,12 @@
 /* globals badger:false */
 
-(function() {
+(function () {
 
 QUnit.module("Utils");
 
-var utils = require('utils');
-var getSurrogateURI = require('surrogates').getSurrogateURI;
+let utils = require('utils'),
+  surrogatedb = require('surrogatedb'),
+  getSurrogateUri = require('surrogates').getSurrogateUri;
 
 QUnit.test("explodeSubdomains", function (assert) {
   var fqdn = "test.what.yea.eff.org";
@@ -98,73 +99,286 @@ QUnit.test("disable/enable privacy badger for origin", function (assert) {
   assert.ok(parsed().length == origLength, "one less disabled site");
 });
 
-QUnit.test("surrogate script URL lookups", function (assert) {
-  const NOOP = function () {};
-  const surrogatedb = require('surrogatedb');
-  const SURROGATE_PREFIX = 'data:application/javascript;base64,';
-  const GA_JS_TESTS = [
+QUnit.test("getSurrogateUri() suffix tokens", function (assert) {
+  const TEST_FQDN = 'www.google-analytics.com',
+    TEST_TOKEN = '/ga.js';
+
+  const TESTS = [
+    {
+      url: `http://${TEST_FQDN}${TEST_TOKEN}`,
+      expected: true,
+      msg: "ga.js http URL should match"
+    },
     {
-      url: 'http://www.google-analytics.com/ga.js',
-      msg: "Google Analytics ga.js http URL should match"
+      url: `https://${TEST_FQDN}${TEST_TOKEN}`,
+      expected: true,
+      msg: "ga.js https URL should match"
     },
     {
-      url: 'https://www.google-analytics.com/ga.js',
-      msg: "Google Analytics ga.js https URL should match"
+      url: `https://${TEST_FQDN}${TEST_TOKEN}?foo=bar`,
+      expected: true,
+      msg: "ga.js URL with querystring should still match"
     },
     {
-      url: 'https://www.google-analytics.com/ga.js?foo=bar',
-      msg: "Google Analytics ga.js querystring URL should match"
+      url: `https://${TEST_FQDN}/script${TEST_TOKEN}?foo=bar`,
+      expected: true,
+      msg: "ga.js URL with some stuff before the match token should still match"
+    },
+    {
+      url: `https://${TEST_FQDN}${TEST_TOKEN}/more/path`,
+      expected: false,
+      msg: "should not match (token in path but not at end)"
+    },
+    {
+      url: `https://${TEST_FQDN}/?${TEST_TOKEN}`,
+      expected: false,
+      msg: "should not match (token in querystring)"
     },
   ];
-  const NYT_SCRIPT_PATH = '/assets/homepage/20160920-111441/js/foundation/lib/framework.js';
-  const NYT_URL = 'https://a1.nyt.com' + NYT_SCRIPT_PATH;
-
-  let ga_js_surrogate;
 
-  for (let i = 0; i < GA_JS_TESTS.length; i++) {
-    ga_js_surrogate = getSurrogateURI(
-      GA_JS_TESTS[i].url,
-      'www.google-analytics.com'
-    );
-    assert.ok(ga_js_surrogate, GA_JS_TESTS[i].msg);
+  for (let test of TESTS) {
+    let surrogate = getSurrogateUri(
+      test.url, window.extractHostFromURL(test.url));
+    if (test.expected) {
+      assert.ok(surrogate, test.msg);
+      if (surrogate) {
+        assert.equal(
+          surrogate,
+          surrogatedb.surrogates[TEST_TOKEN],
+          "got the GA surrogate extension URL"
+        );
+      }
+    } else {
+      assert.notOk(surrogate, test.msg);
+    }
   }
 
-  assert.ok(
-    ga_js_surrogate.startsWith(SURROGATE_PREFIX),
-    "The returned ga.js surrogate is a base64-encoded JavaScript data URI"
-  );
+  const NYT_SCRIPT_PATH = '/assets/homepage/20160920-111441/js/foundation/lib/framework.js',
+    NYT_URL = 'https://a1.nyt.com' + NYT_SCRIPT_PATH;
 
   // test negative match
   assert.notOk(
-    getSurrogateURI(NYT_URL, window.extractHostFromURL(NYT_URL)),
+    getSurrogateUri(NYT_URL, window.extractHostFromURL(NYT_URL)),
     "New York Times script URL should not match any surrogates"
   );
 
   // test surrogate suffix token response contents
-  surrogatedb.hostnames[window.extractHostFromURL(NYT_URL)] = [
-    NYT_SCRIPT_PATH
-  ];
-  surrogatedb.surrogates[NYT_SCRIPT_PATH] = NOOP;
+  surrogatedb.hostnames[window.extractHostFromURL(NYT_URL)] = {
+    match: surrogatedb.MATCH_SUFFIX,
+    tokens: [
+      NYT_SCRIPT_PATH
+    ]
+  };
+  surrogatedb.surrogates[NYT_SCRIPT_PATH] = surrogatedb.surrogates.noopjs;
   assert.equal(
-    getSurrogateURI(NYT_URL, window.extractHostFromURL(NYT_URL)),
-    SURROGATE_PREFIX + btoa(NOOP),
+    getSurrogateUri(NYT_URL, window.extractHostFromURL(NYT_URL)),
+    surrogatedb.surrogates.noopjs,
     "New York Times script URL should now match the noop surrogate"
   );
+});
+
+QUnit.test("getSurrogateUri() prefix tokens", function (assert) {
+  const TEST_FQDN = "www.example.com",
+    TEST_TOKEN = "/foo";
+
+  const TESTS = [
+    {
+      url: `https://${TEST_FQDN}${TEST_TOKEN}?bar`,
+      expected: true,
+      msg: "token at start of path should match"
+    },
+    {
+      url: `https://${window.getBaseDomain(TEST_FQDN)}${TEST_TOKEN}`,
+      expected: false,
+      msg: "should not match (same base domain, but different FQDN)"
+    },
+    {
+      url: `https://${TEST_FQDN}/bar${TEST_TOKEN}/bar`,
+      expected: false,
+      msg: "should not match (token in path but not at start)"
+    },
+    {
+      url: `https://${TEST_FQDN}/bar${TEST_TOKEN}`,
+      expected: false,
+      msg: "should not match (token in path but at end)"
+    },
+    {
+      url: `https://${TEST_FQDN}/?${TEST_TOKEN}`,
+      expected: false,
+      msg: "should not match (token in querystring)"
+    },
+  ];
+
+  // set up test data for prefix token tests
+  surrogatedb.hostnames[TEST_FQDN] = {
+    match: surrogatedb.MATCH_PREFIX,
+    tokens: [TEST_TOKEN]
+  };
+  surrogatedb.surrogates[TEST_TOKEN] = surrogatedb.surrogates.noopjs;
+
+  for (let test of TESTS) {
+    let surrogate = getSurrogateUri(test.url,
+      window.extractHostFromURL(test.url));
+    if (test.expected) {
+      assert.ok(surrogate, test.msg);
+      if (surrogate) {
+        assert.equal(surrogate, surrogatedb.surrogates.noopjs,
+          "got the noop surrogate extension URL");
+      }
+    } else {
+      assert.notOk(surrogate, test.msg);
+    }
+  }
+});
+
+QUnit.test("getSurrogateUri() prefix tokens with querystring parameters", function (assert) {
+  const TEST_FQDN = "www.example.com",
+    TEST_TOKEN = "/foo";
+
+  const TESTS = [
+    {
+      url: `https://${TEST_FQDN}${TEST_TOKEN}?foo=bar`,
+      params: {
+        foo: true
+      },
+      expected: true,
+      msg: "foo is present"
+    },
+    {
+      url: `https://${TEST_FQDN}${TEST_TOKEN}?another=123`,
+      params: {
+        foo: true
+      },
+      expected: false,
+      msg: "foo is missing"
+    },
+    {
+      url: `https://${TEST_FQDN}${TEST_TOKEN}?foo=baz`,
+      params: {
+        foo: true
+      },
+      expected: true,
+      msg: "foo is present with some other value"
+    },
+    {
+      url: `https://${TEST_FQDN}${TEST_TOKEN}?foo=baz`,
+      params: {
+        foo: "baz"
+      },
+      expected: true,
+      msg: "foo is present with expected value"
+    },
+    {
+      url: `https://${TEST_FQDN}${TEST_TOKEN}?foo=bar`,
+      params: {
+        foo: "baz"
+      },
+      expected: false,
+      msg: "foo is present with unexpected value"
+    },
+    {
+      url: `https://${TEST_FQDN}${TEST_TOKEN}?another=123&foo=bar`,
+      params: {
+        another: true,
+        foo: "bar"
+      },
+      expected: true,
+      msg: "two parameters match"
+    },
+    {
+      url: `https://${TEST_FQDN}${TEST_TOKEN}?foo=bar&another=123`,
+      params: {
+        another: true,
+        foo: "bar"
+      },
+      expected: true,
+      msg: "order shouldn't matter"
+    },
+    {
+      url: `https://${TEST_FQDN}${TEST_TOKEN}?another=123&foo=bar`,
+      params: {
+        another: true,
+        foo: "baz"
+      },
+      expected: false,
+      msg: "two parameters, one fails to match"
+    },
+    {
+      url: `https://${TEST_FQDN}${TEST_TOKEN}?foo=baz`,
+      params: {
+        another: true,
+        foo: "baz"
+      },
+      expected: false,
+      msg: "two parameters, one is missing"
+    },
+    {
+      url: `https://${TEST_FQDN}${TEST_TOKEN}?another=123&foo=baz`,
+      params: {
+        foo: "baz",
+      },
+      expected: true,
+      msg: "unspecified parameters are ignored"
+    },
+  ];
+
+  // set up test data for prefix token tests
+  surrogatedb.surrogates[TEST_TOKEN] = surrogatedb.surrogates.noopjs;
+
+  for (let test of TESTS) {
+    // update test data with querystring parameter rules for current test
+    surrogatedb.hostnames[TEST_FQDN] = {
+      match: surrogatedb.MATCH_PREFIX_WITH_PARAMS,
+      params: test.params,
+      tokens: [TEST_TOKEN]
+    };
+
+    let surrogate = getSurrogateUri(test.url,
+      window.extractHostFromURL(test.url));
+    if (test.expected) {
+      assert.ok(surrogate, test.msg);
+      if (surrogate) {
+        assert.equal(surrogate, surrogatedb.surrogates.noopjs,
+          "got the noop surrogate extension URL");
+      }
+    } else {
+      assert.notOk(surrogate, test.msg);
+    }
+  }
+});
 
+QUnit.test("getSurrogateUri() wildcard tokens", function (assert) {
   // set up test data for wildcard token tests
-  surrogatedb.hostnames['cdn.example.com'] = 'noop';
-  surrogatedb.surrogates.noop = NOOP;
+  surrogatedb.hostnames['cdn.example.com'] = {
+    match: surrogatedb.MATCH_ANY,
+    token: 'noopjs'
+  };
+
+  // https://stackoverflow.com/a/11935263
+  function get_random_subarray(arr, size) {
+    let shuffled = arr.slice(0),
+      i = arr.length,
+      min = i - size,
+      temp, index;
+    while (i-- > min) {
+      index = Math.floor((i + 1) * Math.random());
+      temp = shuffled[index];
+      shuffled[index] = shuffled[i];
+      shuffled[i] = temp;
+    }
+    return shuffled.slice(min);
+  }
 
   // test wildcard tokens
   for (let i = 0; i < 25; i++) {
-    let url = 'http://cdn.example.com/' + _.sample(
+    let url = 'http://cdn.example.com/' + get_random_subarray(
       'abcdefghijklmnopqrstuvwxyz0123456789'.split(''),
-      _.random(5, 15)
+      utils.random(5, 15)
     ).join('');
 
     assert.equal(
-      getSurrogateURI(url, window.extractHostFromURL(url)),
-      SURROGATE_PREFIX + btoa(NOOP),
+      getSurrogateUri(url, window.extractHostFromURL(url)),
+      surrogatedb.surrogates.noopjs,
       "A wildcard token should match all URLs for the hostname: " + url
     );
   }
@@ -365,14 +579,14 @@ QUnit.test("cookie parsing (legacy Firefox add-on)", function (assert) {
 
   // compare actual to expected
   let test_number = 0;
-  for (let cookieString in COOKIES) {
-    if (COOKIES.hasOwnProperty(cookieString)) {
+  for (let cookie_str in COOKIES) {
+    if (utils.hasOwn(COOKIES, cookie_str)) {
       test_number++;
 
-      let expected = COOKIES[cookieString];
+      let expected = COOKIES[cookie_str];
 
       let actual = utils.parseCookie(
-        cookieString, {
+        cookie_str, {
           noDecode: true,
           skipAttributes: true,
           skipNonValues: true
@@ -390,20 +604,20 @@ QUnit.test("cookie parsing (YUI3)", function (assert) {
 
   let cookieString = "a=b";
   let cookies = utils.parseCookie(cookieString);
-  assert.ok(cookies.hasOwnProperty("a"), "Cookie 'a' is present.");
+  assert.ok(utils.hasOwn(cookies, "a"), "Cookie 'a' is present.");
   assert.equal(cookies.a, "b", "Cookie 'a' should have value 'b'.");
 
   cookieString = "12345=b";
   cookies = utils.parseCookie(cookieString);
-  assert.ok(cookies.hasOwnProperty("12345"), "Cookie '12345' is present.");
+  assert.ok(utils.hasOwn(cookies, "12345"), "Cookie '12345' is present.");
   assert.equal(cookies["12345"], "b", "Cookie '12345' should have value 'b'.");
 
   cookieString = "a=b; c=d; e=f; g=h";
   cookies = utils.parseCookie(cookieString);
-  assert.ok(cookies.hasOwnProperty("a"), "Cookie 'a' is present.");
-  assert.ok(cookies.hasOwnProperty("c"), "Cookie 'c' is present.");
-  assert.ok(cookies.hasOwnProperty("e"), "Cookie 'e' is present.");
-  assert.ok(cookies.hasOwnProperty("g"), "Cookie 'g' is present.");
+  assert.ok(utils.hasOwn(cookies, "a"), "Cookie 'a' is present.");
+  assert.ok(utils.hasOwn(cookies, "c"), "Cookie 'c' is present.");
+  assert.ok(utils.hasOwn(cookies, "e"), "Cookie 'e' is present.");
+  assert.ok(utils.hasOwn(cookies, "g"), "Cookie 'g' is present.");
   assert.equal(cookies.a, "b", "Cookie 'a' should have value 'b'.");
   assert.equal(cookies.c, "d", "Cookie 'c' should have value 'd'.");
   assert.equal(cookies.e, "f", "Cookie 'e' should have value 'f'.");
@@ -411,31 +625,31 @@ QUnit.test("cookie parsing (YUI3)", function (assert) {
 
   cookieString = "name=Nicholas%20Zakas; title=front%20end%20engineer";
   cookies = utils.parseCookie(cookieString);
-  assert.ok(cookies.hasOwnProperty("name"), "Cookie 'name' is present.");
-  assert.ok(cookies.hasOwnProperty("title"), "Cookie 'title' is present.");
+  assert.ok(utils.hasOwn(cookies, "name"), "Cookie 'name' is present.");
+  assert.ok(utils.hasOwn(cookies, "title"), "Cookie 'title' is present.");
   assert.equal(cookies.name, "Nicholas Zakas", "Cookie 'name' should have value 'Nicholas Zakas'.");
   assert.equal(cookies.title, "front end engineer", "Cookie 'title' should have value 'front end engineer'.");
 
   cookieString = "B=2nk0a3t3lj7cr&b=3&s=13; LYC=l_v=2&l_lv=10&l_l=94ddoa70d&l_s=qz54t4qwrsqquyv51w0z4xxwtx31x1t0&l_lid=146p1u6&l_r=4q&l_lc=0_0_0_0_0&l_mpr=50_0_0&l_um=0_0_1_0_0;YMRAD=1215072198*0_0_7318647_1_0_40123839_1; l%5FPD3=840";
   cookies = utils.parseCookie(cookieString);
-  assert.ok(cookies.hasOwnProperty("B"), "Cookie 'B' is present.");
-  assert.ok(cookies.hasOwnProperty("LYC"), "Cookie 'LYC' is present.");
-  assert.ok(cookies.hasOwnProperty("l_PD3"), "Cookie 'l_PD3' is present.");
+  assert.ok(utils.hasOwn(cookies, "B"), "Cookie 'B' is present.");
+  assert.ok(utils.hasOwn(cookies, "LYC"), "Cookie 'LYC' is present.");
+  assert.ok(utils.hasOwn(cookies, "l_PD3"), "Cookie 'l_PD3' is present.");
 
   let cookieName = "something[1]";
   let cookieValue = "123";
   cookieString = encodeURIComponent(cookieName) + "=" + encodeURIComponent(cookieValue);
   cookies = utils.parseCookie(cookieString);
-  assert.ok(cookies.hasOwnProperty(cookieName), "Cookie '" + cookieName + "' is present.");
+  assert.ok(utils.hasOwn(cookies, cookieName), "Cookie '" + cookieName + "' is present.");
   assert.equal(cookies[cookieName], cookieValue, "Cookie value for '" + cookieName + "' is " + cookieValue + ".");
 
   cookieString = "SESSION=27bedbdf3d35252d0db07f34d81dcca6; STATS=OK; SCREEN=1280x1024; undefined; ys-bottom-preview=o%3Aheight%3Dn%253A389";
   cookies = utils.parseCookie(cookieString);
-  assert.ok(cookies.hasOwnProperty("SCREEN"), "Cookie 'SCREEN' is present.");
-  assert.ok(cookies.hasOwnProperty("STATS"), "Cookie 'STATS' is present.");
-  assert.ok(cookies.hasOwnProperty("SESSION"), "Cookie 'SESSION' is present.");
-  assert.ok(cookies.hasOwnProperty("ys-bottom-preview"), "Cookie 'ys-bottom-preview' is present.");
-  assert.ok(cookies.hasOwnProperty("undefined"), "Cookie 'undefined' is present.");
+  assert.ok(utils.hasOwn(cookies, "SCREEN"), "Cookie 'SCREEN' is present.");
+  assert.ok(utils.hasOwn(cookies, "STATS"), "Cookie 'STATS' is present.");
+  assert.ok(utils.hasOwn(cookies, "SESSION"), "Cookie 'SESSION' is present.");
+  assert.ok(utils.hasOwn(cookies, "ys-bottom-preview"), "Cookie 'ys-bottom-preview' is present.");
+  assert.ok(utils.hasOwn(cookies, "undefined"), "Cookie 'undefined' is present.");
 
   // Tests that cookie parsing deals with cookies that contain an invalid
   // encoding. It shouldn't error, but should treat the cookie as if it
@@ -452,9 +666,9 @@ QUnit.test("cookie parsing (YUI3)", function (assert) {
 
   cookieString = "name=Nicholas%20Zakas; hash=a=b&c=d&e=f&g=h; title=front%20end%20engineer";
   cookies = utils.parseCookie(cookieString);
-  assert.ok(cookies.hasOwnProperty("name"), "Cookie 'name' is present.");
-  assert.ok(cookies.hasOwnProperty("hash"), "Cookie 'hash' is present.");
-  assert.ok(cookies.hasOwnProperty("title"), "Cookie 'title' is present.");
+  assert.ok(utils.hasOwn(cookies, "name"), "Cookie 'name' is present.");
+  assert.ok(utils.hasOwn(cookies, "hash"), "Cookie 'hash' is present.");
+  assert.ok(utils.hasOwn(cookies, "title"), "Cookie 'title' is present.");
   assert.equal(cookies.name, "Nicholas Zakas", "Cookie 'name' should have value 'Nicholas Zakas'.");
   assert.equal(cookies.hash, "a=b&c=d&e=f&g=h", "Cookie 'hash' should have value 'a=b&c=d&e=f&g=h'.");
   assert.equal(cookies.title, "front end engineer", "Cookie 'title' should have value 'front end engineer'.");
@@ -547,4 +761,41 @@ QUnit.test("estimateMaxEntropy", assert => {
 
 });
 
+QUnit.test("firstPartyProtectionsEnabled", assert => {
+  assert.ok(
+    utils.firstPartyProtectionsEnabled("www.google.com"),
+    "properly identifies a url pattern from our firstparties list"
+  );
+
+  assert.ok(
+    utils.firstPartyProtectionsEnabled("www.google.co.uk"),
+    "properly identifies a url pattern from our firstparties list"
+  );
+
+  assert.notOk(
+    utils.firstPartyProtectionsEnabled("foobar.com"),
+    "determines that a url not in the firstparties list is not protected by a firstparty script"
+  );
+
+  assert.ok(
+    utils.firstPartyProtectionsEnabled("www.messenger.com"),
+    "accurately IDs a site with firstparty protections covered by a wildcard url match"
+  );
+
+  assert.ok(
+    utils.firstPartyProtectionsEnabled("www.facebook.com"),
+    "wildcard pattern matching"
+  );
+
+  assert.ok(
+    utils.firstPartyProtectionsEnabled("m.facebook.com"),
+    "wildcard pattern matching"
+  );
+
+  assert.notOk(
+    utils.firstPartyProtectionsEnabled("acebook.com"),
+    "wildcard pattern matching"
+  );
+});
+
 })();
diff --git a/src/tests/tests/yellowlist.js b/src/tests/tests/yellowlist.js
index 43fa8692..40a2943e 100644
--- a/src/tests/tests/yellowlist.js
+++ b/src/tests/tests/yellowlist.js
@@ -7,6 +7,7 @@ function get_ylist() {
 }
 
 let constants = require('constants');
+let utils = require('utils');
 
 // fake server to simulate XMLHttpRequests
 let server;
@@ -209,6 +210,27 @@ QUnit.module("Yellowlist", (hooks) => {
         }
       },
 
+      // similar to "parent is on yellowlist"
+      // but parent is being added instead of already there
+      {
+        name: "Removing child while adding parent",
+        domains: {
+          'widgets.example.com': {
+            initial: constants.BLOCK,
+            add: true,
+            expected: constants.COOKIEBLOCK,
+            expectedBest: constants.COOKIEBLOCK
+          },
+          'cdn.widgets.example.com': {
+            yellowlist: true,
+            initial: constants.COOKIEBLOCK,
+            remove: true,
+            expected: constants.COOKIEBLOCK,
+            expectedBest: constants.COOKIEBLOCK
+          },
+        }
+      },
+
       // scenario from https://github.com/EFForg/privacybadger/issues/1474
       {
         name: "Parent is on yellowlist and is a PSL TLD (not in action map)",
@@ -246,6 +268,26 @@ QUnit.module("Yellowlist", (hooks) => {
         }
       },
 
+      // similar to "child is on yellowlist"
+      // but child is being added instead of already there
+      {
+        name: "Removing parent while adding child",
+        domains: {
+          'widgets.example.com': {
+            yellowlist: true,
+            remove: true,
+            initial: constants.COOKIEBLOCK,
+            expected: constants.BLOCK,
+            expectedBest: constants.BLOCK
+          },
+          'cdn.widgets.example.com': {
+            add: true,
+            expected: constants.COOKIEBLOCK,
+            expectedBest: constants.COOKIEBLOCK
+          },
+        }
+      },
+
       {
         name: "Removing parent blocks subdomains",
         domains: {
@@ -355,10 +397,10 @@ QUnit.module("Yellowlist", (hooks) => {
         // and add one for the yellowlist update assertion
         assert.expect(1 + Object.keys(test.domains).reduce((memo, domain) => {
           let data = test.domains[domain];
-          if (data.hasOwnProperty('expected')) {
+          if (utils.hasOwn(data, 'expected')) {
             memo++;
           }
-          if (data.hasOwnProperty('expectedBest')) {
+          if (utils.hasOwn(data, 'expectedBest')) {
             memo++;
           }
           return memo;
@@ -372,15 +414,17 @@ QUnit.module("Yellowlist", (hooks) => {
           if (conf.yellowlist) {
             ylistStorage.setItem(domain, true);
           }
-          if (conf.hasOwnProperty("initial")) {
+          if (utils.hasOwn(conf, "initial")) {
             badger.storage.setupHeuristicAction(domain, conf.initial);
           }
         }
 
-        // update the yellowlist making sure removed domains aren't on it
+        // update the yellowlist
         const ylist = ylistStorage.getItemClones();
         for (let domain in test.domains) {
-          if (test.domains[domain].remove) {
+          if (test.domains[domain].add) {
+            ylist[domain] = true;
+          } else if (test.domains[domain].remove) {
             delete ylist[domain];
           }
         }
@@ -393,7 +437,7 @@ QUnit.module("Yellowlist", (hooks) => {
           for (let domain in test.domains) {
             let expected, data = test.domains[domain];
 
-            if (data.hasOwnProperty('expected')) {
+            if (utils.hasOwn(data, 'expected')) {
               expected = data.expected;
               assert.equal(
                 badger.storage.getAction(domain),
@@ -402,7 +446,7 @@ QUnit.module("Yellowlist", (hooks) => {
               );
             }
 
-            if (data.hasOwnProperty('expectedBest')) {
+            if (utils.hasOwn(data, 'expectedBest')) {
               expected = data.expectedBest;
               assert.equal(
                 badger.storage.getBestAction(domain),
diff --git a/tests/requirements.txt b/tests/requirements.txt
index 8a2509dd..5bee0878 100644
--- a/tests/requirements.txt
+++ b/tests/requirements.txt
@@ -1,3 +1,4 @@
 selenium
 xvfbwrapper 
 pytest
+pytest-rerunfailures
diff --git a/tests/selenium/clobbering_test.py b/tests/selenium/clobbering_test.py
index 724b83b4..2b9160b5 100644
--- a/tests/selenium/clobbering_test.py
+++ b/tests/selenium/clobbering_test.py
@@ -39,7 +39,7 @@ class ClobberingTest(pbtest.PBSeleniumTest):
                 )
             )
             self.assertEqual(
-                self.txt_by_css("#" + selector), expected,
+                expected, self.txt_by_css("#" + selector),
                 "localStorage (%s) was not read successfully"
                 "for some reason" % selector
             )
@@ -63,7 +63,7 @@ class ClobberingTest(pbtest.PBSeleniumTest):
                 )
             )
             self.assertEqual(
-                self.txt_by_css("#" + selector), expected,
+                expected, self.txt_by_css("#" + selector),
                 "localStorage (%s) was read despite cookieblocking" % selector
             )
 
@@ -79,8 +79,8 @@ class ClobberingTest(pbtest.PBSeleniumTest):
             self.wait_for_script(
                 "return document.getElementById('referrer').textContent != '';")
             referrer = self.txt_by_css("#referrer")
-            self.assertEqual(referrer[0:8], "Referer=", "Unexpected page output")
-            self.assertEqual(referrer[8:], expected, failure_message)
+            self.assertEqual("Referer=", referrer[0:8], "Unexpected page output")
+            self.assertEqual(expected, referrer[8:], failure_message)
 
         # verify base case
         verify_referrer_header(
diff --git a/tests/selenium/cookie_test.py b/tests/selenium/cookie_test.py
index 93e70af9..b1cbb025 100644
--- a/tests/selenium/cookie_test.py
+++ b/tests/selenium/cookie_test.py
@@ -1,11 +1,11 @@
 #!/usr/bin/env python
 # -*- coding: UTF-8 -*-
+
+import pytest
 import unittest
 
 import pbtest
 
-from popup_test import get_domain_slider_state
-
 
 class CookieTest(pbtest.PBSeleniumTest):
     """Basic test to make sure the PB doesn't mess up with the cookies."""
@@ -21,6 +21,7 @@ class CookieTest(pbtest.PBSeleniumTest):
             "first_party_cookie.html"
         ), "Set 1st party cookie")
 
+    @pytest.mark.flaky(reruns=3, condition=pbtest.shim.browser_type == "firefox")
     def test_cookie_tracker_detection(self):
         """Tests basic cookie tracking. The tracking site has no DNT file,
         and gets blocked by PB.
@@ -52,111 +53,42 @@ class CookieTest(pbtest.PBSeleniumTest):
         self.load_pb_ui(SITE1_URL)
         # TODO it takes another visit (or a page reload)
         # TODO to show the domain as not-yet-blocked-but-tracking?
-        #self.assertIn(THIRD_PARTY_DOMAIN, self.notYetBlocked)
+        #sliders = self.get_tracker_state()
+        #self.assertIn(THIRD_PARTY_DOMAIN, sliders['notYetBlocked'])
         self.close_window_with_url(SITE1_URL)
 
         # go to second site
         self.load_url(SITE2_URL)
         self.load_pb_ui(SITE2_URL)
-        self.assertIn(THIRD_PARTY_DOMAIN, self.notYetBlocked)
+        sliders = self.get_tracker_state()
+        try:
+            self.assertIn(THIRD_PARTY_DOMAIN, sliders['notYetBlocked'])
+        # work around expected failure on Firefox Nightly
+        except AssertionError:
+            if not self.is_firefox_nightly():
+                raise
+
+            # https://developer.mozilla.org/en-US/docs/Web/Privacy/State_Partitioning#disable_dynamic_state_partitioning
+            # relevant network.cookie.cookieBehavior values:
+            # 5: Reject (known) trackers and partition third-party storage.
+            # 4: Only reject trackers (Storage partitioning disabled).
+            pytest.xfail("network.cookie.cookieBehavior is set to 5 in Firefox Nightly")
+
         self.close_window_with_url(SITE2_URL)
 
         # go to third site
         self.load_url(SITE3_URL)
         self.load_pb_ui(SITE3_URL)
-        self.assertIn(THIRD_PARTY_DOMAIN, self.notYetBlocked)
+        sliders = self.get_tracker_state()
+        self.assertIn(THIRD_PARTY_DOMAIN, sliders['notYetBlocked'])
         self.close_window_with_url(SITE3_URL)
 
         # revisiting the first site should cause
         # the third-party domain to be blocked
         self.load_url(SITE1_URL)
         self.load_pb_ui(SITE1_URL)
-        self.assertIn(THIRD_PARTY_DOMAIN, self.blocked)
-
-    def load_pb_ui(self, target_url):
-        """Show the PB popup as a new tab.
-
-        If Selenium would let us just programmatically launch an extension from its icon,
-        we wouldn't need this method. Alas it will not.
-
-        But! We can open a new tab and set the url to the extension's popup html page and
-        test away. That's how most devs test extensions. But**2!! PB's popup code uses
-        the current tab's url to report the current tracker status.  And since we changed
-        the current tab's url when we loaded the popup as a tab, the popup loses all the
-        blocker status information from the original tab.
-
-        The workaround is to execute a new convenience function in the popup codebase that
-        looks for a given url in the tabs and, if it finds a match, refreshes the popup
-        with the associated tabid. Then the correct status information will be displayed
-        in the popup."""
-
-        self.open_window()
-        self.load_url(self.popup_url)
-
-        # get the popup populated with status information for the correct url
-        self.switch_to_window_with_url(self.popup_url)
-        self.js("""
-/**
- * if the query url pattern matches a tab, switch the module's tab object to that tab
- */
-(function (url) {
-  chrome.tabs.query({url}, function (tabs) {
-    if (!tabs || !tabs.length) {
-      return;
-    }
-    chrome.runtime.sendMessage({
-      type: "getPopupData",
-      tabId: tabs[0].id,
-      tabUrl: tabs[0].url
-    }, (response) => {
-      setPopupData(response);
-      refreshPopup();
-      window.DONE_REFRESHING = true;
-    });
-  });
-}(arguments[0]));""", target_url)
-
-        # wait for popup to be ready
-        self.wait_for_script(
-            "return typeof window.DONE_REFRESHING != 'undefined' &&"
-            "window.POPUP_INITIALIZED &&"
-            "window.SLIDERS_DONE"
-        )
-
-        self.get_tracker_state()
-
-    def get_tracker_state(self):
-        """Parse the UI to group all third party origins into their respective action states."""
-        self.notYetBlocked = {}
-        self.cookieBlocked = {}
-        self.blocked = {}
-
-        self.driver.switch_to.window(self.driver.current_window_handle)
-
-        domain_divs = self.driver.find_elements_by_css_selector(
-            "#blockedResourcesInner > div.clicker[data-origin]")
-        for div in domain_divs:
-            origin = div.get_attribute('data-origin')
-
-            # assert that this origin is never duplicated in the UI
-            self.assertNotIn(origin, self.notYetBlocked)
-            self.assertNotIn(origin, self.cookieBlocked)
-            self.assertNotIn(origin, self.blocked)
-
-            # get slider state for given origin
-            action_type = get_domain_slider_state(self.driver, origin)
-
-            # non-tracking domains are hidden by default
-            # so if we see a slider set to "allow",
-            # it must be in the tracking-but-not-yet-blocked section
-            if action_type == 'allow':
-                self.notYetBlocked[origin] = True
-            elif action_type == 'cookieblock':
-                self.cookieBlocked[origin] = True
-            elif action_type == 'block':
-                self.blocked[origin] = True
-            else:
-                self.fail("what is this?!? %s" % action_type)
+        sliders = self.get_tracker_state()
+        self.assertIn(THIRD_PARTY_DOMAIN, sliders['blocked'])
 
 
 if __name__ == "__main__":
diff --git a/tests/selenium/dnt_test.py b/tests/selenium/dnt_test.py
index fb3fdf8b..540df776 100644
--- a/tests/selenium/dnt_test.py
+++ b/tests/selenium/dnt_test.py
@@ -75,7 +75,6 @@ class DntTest(pbtest.PBSeleniumTest):
             domain
         )
 
-    @pbtest.repeat_if_failed(3)
     def test_dnt_policy_check_should_happen_for_blocked_domains(self):
         PAGE_URL = (
             "https://efforg.github.io/privacybadger-test-fixtures/html/"
@@ -129,23 +128,23 @@ class DntTest(pbtest.PBSeleniumTest):
 
         # verify that the domain itself doesn't set cookies
         self.load_url(TEST_URL)
-        self.assertEqual(len(self.driver.get_cookies()), 0,
+        self.assertEqual(0, len(self.driver.get_cookies()),
             "No cookies initially")
 
         # directly visit a DNT policy URL known to set cookies
         self.load_url(TEST_URL + ".well-known/dnt-policy.txt")
-        self.assertEqual(len(self.driver.get_cookies()), 1,
+        self.assertEqual(1, len(self.driver.get_cookies()),
             "DNT policy URL set a cookie")
 
         # verify we got a cookie
         self.load_url(TEST_URL)
-        self.assertEqual(len(self.driver.get_cookies()), 1,
+        self.assertEqual(1, len(self.driver.get_cookies()),
             "We still have just one cookie")
 
         # clear cookies and verify
         self.driver.delete_all_cookies()
         self.load_url(TEST_URL)
-        self.assertEqual(len(self.driver.get_cookies()), 0,
+        self.assertEqual(0, len(self.driver.get_cookies()),
             "No cookies again")
 
         self.load_url(self.options_url)
@@ -156,7 +155,7 @@ class DntTest(pbtest.PBSeleniumTest):
 
         # check that we didn't get cookied by the DNT URL
         self.load_url(TEST_URL)
-        self.assertEqual(len(self.driver.get_cookies()), 0,
+        self.assertEqual(0, len(self.driver.get_cookies()),
             "Shouldn't have any cookies after the DNT check")
 
     def test_dnt_policy_check_should_not_send_cookies(self):
@@ -165,7 +164,7 @@ class DntTest(pbtest.PBSeleniumTest):
 
         # directly visit a DNT policy URL known to set cookies
         self.load_url(TEST_URL + ".well-known/dnt-policy.txt")
-        self.assertEqual(len(self.driver.get_cookies()), 1,
+        self.assertEqual(1, len(self.driver.get_cookies()),
             "DNT policy URL set a cookie")
 
         # how to check we didn't send a cookie along with request?
@@ -242,9 +241,9 @@ class DntTest(pbtest.PBSeleniumTest):
         self.assertTrue(headers is not None, "It seems we failed to get headers")
         self.assertIn('Dnt', headers, "DNT header should have been present")
         self.assertIn('Sec-Gpc', headers, "GPC header should have been present")
-        self.assertEqual(headers['Dnt'], "1",
+        self.assertEqual("1", headers['Dnt'],
             'DNT header should have been set to "1"')
-        self.assertEqual(headers['Sec-Gpc'], "1",
+        self.assertEqual("1", headers['Sec-Gpc'],
             'Sec-Gpc header should have been set to "1"')
 
     def test_no_dnt_header_when_disabled_on_site(self):
@@ -273,14 +272,14 @@ class DntTest(pbtest.PBSeleniumTest):
         self.load_url(DntTest.NAVIGATOR_DNT_TEST_URL, wait_for_body_text=True)
 
         self.assertEqual(
-            self.driver.find_element_by_tag_name('body').text,
             'no tracking (navigator.doNotTrack="1")',
+            self.driver.find_element_by_tag_name('body').text,
             "navigator.DoNotTrack should have been set to \"1\""
         )
         self.assertEqual(
+            True,
             self.js("return navigator.globalPrivacyControl"),
-            "1",
-            "navigator.globalPrivacyControl should have been set to \"1\""
+            "navigator.globalPrivacyControl should have been set to true"
         )
 
     def test_navigator_unmodified_when_disabled_on_site(self):
@@ -290,13 +289,13 @@ class DntTest(pbtest.PBSeleniumTest):
 
         # navigator.doNotTrack defaults to null in Chrome, "unspecified" in Firefox
         self.assertEqual(
-            self.driver.find_element_by_tag_name('body').text[0:5],
             'unset',
+            self.driver.find_element_by_tag_name('body').text[0:5],
             "navigator.DoNotTrack should have been left unset"
         )
         self.assertEqual(
-            self.js("return navigator.globalPrivacyControl"),
             None,
+            self.js("return navigator.globalPrivacyControl"),
             "navigator.globalPrivacyControl should have been left unset"
         )
 
@@ -309,13 +308,13 @@ class DntTest(pbtest.PBSeleniumTest):
 
         # navigator.doNotTrack defaults to null in Chrome, "unspecified" in Firefox
         self.assertEqual(
-            self.driver.find_element_by_tag_name('body').text[0:5],
             'unset',
+            self.driver.find_element_by_tag_name('body').text[0:5],
             "navigator.DoNotTrack should have been left unset"
         )
         self.assertEqual(
-            self.js("return navigator.globalPrivacyControl"),
             None,
+            self.js("return navigator.globalPrivacyControl"),
             "navigator.globalPrivacyControl should have been left unset"
         )
 
diff --git a/tests/selenium/fingerprinting_test.py b/tests/selenium/fingerprinting_test.py
index 0fadd2b1..539f00ec 100644
--- a/tests/selenium/fingerprinting_test.py
+++ b/tests/selenium/fingerprinting_test.py
@@ -1,14 +1,11 @@
 #!/usr/bin/env python
 # -*- coding: UTF-8 -*-
 
+import pytest
 import unittest
 
 import pbtest
 
-from functools import partial
-
-from pbtest import retry_until
-
 
 class FingerprintingTest(pbtest.PBSeleniumTest):
     """Tests to make sure fingerprinting detection works as expected."""
@@ -26,16 +23,6 @@ return (
   }})
 );""".format(domain))
 
-    def detected_tracking(self, domain, page_url):
-        return self.js("""let tracker_origin = window.getBaseDomain("{}"),
-  site_origin = window.getBaseDomain((new URI("{}")).host),
-  map = chrome.extension.getBackgroundPage().badger.storage.snitch_map.getItemClones();
-
-return (
-  map.hasOwnProperty(tracker_origin) &&
-    map[tracker_origin].indexOf(site_origin) != -1
-);""".format(domain, page_url))
-
     def get_fillText_source(self):
         return self.js("""
             const canvas = document.getElementById("writetome");
@@ -49,8 +36,7 @@ return (
         self.wait_for_script("return window.OPTIONS_INITIALIZED")
         self.find_el_by_css('#local-learning-checkbox').click()
 
-    # TODO can fail because our content script runs too late: https://crbug.com/478183
-    @pbtest.repeat_if_failed(3)
+    @pytest.mark.flaky(reruns=3, condition=pbtest.shim.browser_type == "firefox")
     def test_canvas_fingerprinting_detection(self):
         FIXTURE_URL = (
             "https://efforg.github.io/privacybadger-test-fixtures/html/"
@@ -65,18 +51,17 @@ return (
         # visit the page
         self.load_url(FIXTURE_URL)
 
-        # now open a new window (to avoid clearing badger.tabData)
-        # and verify results
-        self.open_window()
+        # open popup and check slider state
+        self.load_pb_ui(FIXTURE_URL)
+        sliders = self.get_tracker_state()
+        self.assertIn(
+            FINGERPRINTING_DOMAIN,
+            sliders['notYetBlocked'],
+            "Canvas fingerprinting domain should be reported in the popup"
+        )
 
-        # check that we detected the fingerprinting domain as a tracker
+        # check that we detected canvas fingerprinting specifically
         self.load_url(self.options_url)
-        # TODO unnecessary retrying?
-        self.assertTrue(
-            retry_until(partial(self.detected_tracking, FINGERPRINTING_DOMAIN, FIXTURE_URL)),
-            "Canvas fingerprinting resource was detected as a tracker.")
-
-        # check that we detected canvas fingerprinting
         self.assertTrue(
             self.detected_fingerprinting(FINGERPRINTING_DOMAIN),
             "Canvas fingerprinting resource was detected as a fingerprinter."
diff --git a/tests/selenium/google_test.py b/tests/selenium/google_test.py
new file mode 100644
index 00000000..860ea2bc
--- /dev/null
+++ b/tests/selenium/google_test.py
@@ -0,0 +1,124 @@
+#!/usr/bin/env python
+# -*- coding: UTF-8 -*-
+
+import time
+import unittest
+
+import pbtest
+
+from selenium.webdriver.common.by import By
+from selenium.webdriver.support.ui import WebDriverWait
+from selenium.webdriver.support import expected_conditions as EC
+
+
+class GoogleTest(pbtest.PBSeleniumTest):
+    """Tests first-party protection for Google."""
+
+    # TODO also test on a different Google CC TLD?
+    GOOGLE_SEARCH_DOMAIN = "www.google.com"
+    SEARCH_TERM = "Privacy Badger"
+    SEARCH_RESULT_URL = "https://privacybadger.org/"
+
+    def perform_google_search(self):
+        # perform a search
+        self.load_url(f"https://{self.GOOGLE_SEARCH_DOMAIN}/")
+        qry_el = self.driver.find_element_by_name("q")
+        qry_el.send_keys(self.SEARCH_TERM)
+        qry_el.submit()
+
+        # wait for search results
+        WebDriverWait(self.driver, 10).until(
+            EC.visibility_of_any_elements_located(
+                (By.CSS_SELECTOR, f"a[href*='{self.SEARCH_RESULT_URL}']")))
+
+    def test_unwrapping(self):
+        self.perform_google_search()
+
+        def _check_results():
+            # select all anchor elements with non-empty href attributes
+            SELECTOR = "a[href]:not([href=''])"
+            search_results = self.driver.find_elements_by_css_selector(SELECTOR)
+
+            # remove "About this result" links as they do not get cleaned
+            # (they don't match any of the `trap_link` selectors)
+            # and so they fail the rel check below
+            search_results = [a for a in search_results if (
+                a.text or
+                a.get_attribute('textContent') != self.SEARCH_RESULT_URL or
+                a.get_attribute('innerHTML') != self.SEARCH_RESULT_URL
+            )]
+
+            # verify these appear to be actual search results
+            hrefs = [link.get_attribute('href') for link in search_results]
+            assert self.SEARCH_RESULT_URL in hrefs, (
+                "At least one search result points to our homepage")
+
+            # verify that tracking attributes are missing
+            for link in search_results:
+                # only check links that point to our homepage
+                # as there is a mix of search result links and other links
+                # and not all links get cleaned
+                # and it's not clear how to select search result links only
+                href = link.get_attribute('href')
+                if self.SEARCH_RESULT_URL not in href:
+                    continue
+
+                assert not link.get_attribute('ping'), (
+                    "Tracking attribute should be missing")
+                assert not link.get_attribute('onmousedown'), (
+                    "Tracking attribute should be missing")
+                assert not link.get_attribute('data-jsarwt'), (
+                    "Tracking attribute should be missing")
+
+                assert link.get_attribute('rel') == "noreferrer noopener"
+
+            return True
+
+        time.sleep(1)
+
+        results_checker = pbtest.convert_exceptions_to_false(_check_results)
+        assert pbtest.retry_until(results_checker, times=6), (
+            "Search results still fail our checks after several attempts")
+
+    # TODO fake UA to test Firefox on Android?
+    # TODO SELECTOR = "a[href^='/url?q=']"
+    def test_no_unwrapping_when_disabled(self):
+        """Tests that Google search result links still match our selectors."""
+
+        # use the browser-appropriate selector
+        SELECTOR = "a[ping]"
+        if pbtest.shim.browser_type == "firefox":
+            SELECTOR = "a[onmousedown^='return rwt(this,']"
+
+        # turn off link unwrapping on Google
+        # so that we can test our selectors
+        self.disable_badger_on_site(self.GOOGLE_SEARCH_DOMAIN)
+
+        def _perform_search_and_check_results():
+            self.perform_google_search()
+
+            search_results = self.driver.find_elements_by_css_selector(SELECTOR)
+
+            # remove "About this result" links as they do not get cleaned
+            # (they don't match any of the `trap_link` selectors)
+            # and so they fail the rel check below
+            search_results = [a for a in search_results if (
+                a.text or
+                a.get_attribute('textContent') != self.SEARCH_RESULT_URL or
+                a.get_attribute('innerHTML') != self.SEARCH_RESULT_URL
+            )]
+
+            # check the results
+            hrefs = [link.get_attribute('href') for link in search_results]
+            assert self.SEARCH_RESULT_URL in hrefs, (
+                "At least one search result points to our homepage")
+
+            return True
+
+        results_checker = pbtest.convert_exceptions_to_false(_perform_search_and_check_results)
+        assert pbtest.retry_until(results_checker, times=6), (
+            "Search results still fail our checks after several attempts")
+
+
+if __name__ == "__main__":
+    unittest.main()
diff --git a/tests/selenium/options_test.py b/tests/selenium/options_test.py
index ce955888..358dd1c6 100644
--- a/tests/selenium/options_test.py
+++ b/tests/selenium/options_test.py
@@ -7,8 +7,6 @@ import unittest
 import pbtest
 
 from selenium.common.exceptions import (
-    ElementNotInteractableException,
-    ElementNotVisibleException,
     NoSuchElementException,
     TimeoutException,
 )
@@ -25,15 +23,15 @@ class OptionsTest(pbtest.PBSeleniumTest):
         clicker = self.driver.find_element_by_css_selector(
             'div[data-origin="{}"]'.format(origin))
         self.assertEqual(
-            clicker.get_attribute("class"),
             "clicker userset",
+            clicker.get_attribute("class"),
             failure_msg
         )
 
         switches_div = clicker.find_element_by_css_selector(".switch-container")
         self.assertEqual(
-            switches_div.get_attribute("class"),
             "switch-container " + action,
+            switches_div.get_attribute("class"),
             failure_msg
         )
 
@@ -49,11 +47,6 @@ class OptionsTest(pbtest.PBSeleniumTest):
 
     def select_domain_list_tab(self):
         self.find_el_by_css('a[href="#tab-tracking-domains"]').click()
-        try:
-            self.driver.find_element_by_id('show-tracking-domains-checkbox').click()
-        except (ElementNotInteractableException, ElementNotVisibleException):
-            # The list will be loaded directly if we're opening the tab for the second time in this test
-            pass
 
     def select_manage_data_tab(self):
         self.find_el_by_css('a[href="#tab-manage-data"]').click()
@@ -143,8 +136,8 @@ class OptionsTest(pbtest.PBSeleniumTest):
 
         # check tracker count
         self.assertEqual(
-            self.driver.find_element_by_id("options_domain_list_trackers").text,
             "Privacy Badger has decided to block 2 potential tracking domains so far",
+            self.driver.find_element_by_id("options_domain_list_trackers").text,
             "Origin tracker count should be 2 after adding origin"
         )
 
@@ -226,8 +219,8 @@ class OptionsTest(pbtest.PBSeleniumTest):
 
         # make sure only two trackers are displayed now
         self.assertEqual(
-            self.driver.find_element_by_id("options_domain_list_trackers").text,
             "Privacy Badger has decided to block 2 potential tracking domains so far",
+            self.driver.find_element_by_id("options_domain_list_trackers").text,
             "Origin tracker count should be 2 after clearing and adding origins"
         )
 
@@ -241,8 +234,11 @@ class OptionsTest(pbtest.PBSeleniumTest):
         # make sure the same number of trackers are displayed as by default
         self.select_domain_list_tab()
         error_message = "After resetting data, tracker count should return to default"
-        self.assertEqual(self.driver.find_element_by_id("options_domain_list_trackers").text,
-                         default_summary_text, error_message)
+        self.assertEqual(
+            default_summary_text,
+            self.driver.find_element_by_id("options_domain_list_trackers").text,
+            error_message
+        )
 
     def tracking_user_overwrite(self, original_action, overwrite_action):
         """Ensure preferences are persisted when a user overwrites pb's default behaviour for an origin."""
@@ -296,12 +292,13 @@ class OptionsTest(pbtest.PBSeleniumTest):
     # early-warning check for the open_in_tab attribute of options_ui
     # https://github.com/EFForg/privacybadger/pull/1775#pullrequestreview-76940251
     def test_options_ui_open_in_tab(self):
-        # open options page manually, keeping the new user intro page
+        # open options page manually
         self.open_window()
         self.load_options_page()
 
-        # switch to new user intro page
-        self.switch_to_window_with_url(self.first_run_url)
+        # open the new user intro page
+        self.open_window()
+        self.load_url(self.first_run_url)
 
         # save open windows
         handles_before = set(self.driver.window_handles)
@@ -317,7 +314,7 @@ class OptionsTest(pbtest.PBSeleniumTest):
         if num_newly_opened_windows:
             self.driver.switch_to.window(new_handles.pop())
 
-        self.assertEqual(num_newly_opened_windows, 0,
+        self.assertEqual(0, num_newly_opened_windows,
             "Expected to switch to existing options page, "
             "opened a new page ({}) instead: {}".format(
                 self.driver.title, self.driver.current_url))
diff --git a/tests/selenium/pbtest.py b/tests/selenium/pbtest.py
index b502b4ba..dbcb2e32 100644
--- a/tests/selenium/pbtest.py
+++ b/tests/selenium/pbtest.py
@@ -1,14 +1,15 @@
 # -*- coding: UTF-8 -*-
 
+import functools
 import json
 import os
+import re
 import subprocess
 import tempfile
 import time
 import unittest
 
 from contextlib import contextmanager
-from functools import wraps
 from shutil import copytree
 
 from selenium import webdriver
@@ -200,6 +201,10 @@ class Shim:
         ffp.set_preference('extensions.webextensions.uuids', '{"%s": "%s"}' %
                            (self.info['extension_id'], self.info['uuid']))
 
+        # needed for test_referrer_header()
+        # https://bugzilla.mozilla.org/show_bug.cgi?id=1720294
+        ffp.set_preference('network.http.referer.disallowCrossSiteRelaxingDefault', False)
+
         for i in range(5):
             try:
                 opts = FirefoxOptions()
@@ -230,24 +235,7 @@ class Shim:
 shim = Shim() # create the browser shim
 
 
-def if_firefox(wrapper):
-    '''
-    A test decorator that applies the function `wrapper` to the test if the
-    browser is firefox. Ex:
-
-    @if_firefox(unittest.skip("broken on ff"))
-    def test_stuff(self):
-        ...
-    '''
-    def test_catcher(test):
-        if shim.browser_type == 'firefox':
-            return wraps(test)(wrapper)(test)
-        return test
-
-    return test_catcher
-
-
-def retry_until(fun, tester=None, times=5, msg="Waiting a bit and retrying ..."):
+def retry_until(fun, tester=None, times=3, msg=None):
     """
     Execute function `fun` until either its return is truthy
     (or if `tester` is set, until the result of calling `tester` with `fun`'s return is truthy),
@@ -262,30 +250,26 @@ def retry_until(fun, tester=None, times=5, msg="Waiting a bit and retrying ...")
         elif result:
             break
 
-        if i == 0:
-            print("")
-        print(msg)
+        if msg:
+            if i == 0:
+                print("")
+            print(msg)
 
         time.sleep(2 ** i)
 
     return result
 
 
-attempts = {} # used to count test retries
-def repeat_if_failed(ntimes): # noqa
-    '''
-    A decorator that retries the test if it fails `ntimes`. The TestCase must
-    be used on a subclass of unittest.TestCase. NB: this just registers function
-    to be retried. The try/except logic is in PBSeleniumTest.run.
-    '''
-    def test_catcher(test):
-        attempts[test.__name__] = ntimes
-
-        @wraps(test)
-        def caught(*args, **kwargs):
-            return test(*args, **kwargs)
-        return caught
-    return test_catcher
+def convert_exceptions_to_false(fun, silent=False):
+    def converter(fun, silent):
+        try:
+            result = fun()
+        except Exception as e:
+            if not silent:
+                print("\nCaught exception:", str(e))
+            return False
+        return result
+    return functools.partial(converter, fun, silent)
 
 
 class PBSeleniumTest(unittest.TestCase):
@@ -318,40 +302,28 @@ class PBSeleniumTest(unittest.TestCase):
         self.test_url = self.base_url + "tests/index.html"
 
     def run(self, result=None):
-        nretries = attempts.get(result.name, 1)
-        for i in range(nretries):
-            try:
-                with self.manager() as driver:
-                    self.init(driver)
-
-                    # wait for Badger's storage, listeners, ...
-                    self.load_url(self.options_url)
-                    self.wait_for_script(
-                        "return chrome.extension.getBackgroundPage()."
-                        "badger.INITIALIZED"
-                    )
-
-                    driver.close()
-                    if driver.window_handles:
-                        driver.switch_to.window(driver.window_handles[0])
-
-                    super(PBSeleniumTest, self).run(result)
-
-                    # retry test magic
-                    if result.name in attempts and result._excinfo: # pylint:disable=protected-access
-                        raise Exception(result._excinfo.pop()) # pylint:disable=protected-access
+        with self.manager() as driver:
+            self.init(driver)
+
+            # wait for Badger's storage, listeners, ...
+            self.load_url(self.options_url)
+            self.wait_for_script(
+                "return chrome.extension.getBackgroundPage()."
+                "badger.INITIALIZED"
+            )
 
-                    break
+            driver.close()
+            if driver.window_handles:
+                driver.switch_to.window(driver.window_handles[0])
 
-            except Exception:
-                if i == nretries - 1:
-                    raise
+            super(PBSeleniumTest, self).run(result)
 
-                wait_secs = 2 ** i
-                print('\nRetrying {} after {} seconds ...'.format(
-                    result, wait_secs))
-                time.sleep(wait_secs)
-                continue
+    def is_firefox_nightly(self):
+        caps = self.driver.capabilities
+        if caps['browserName'] == "firefox":
+            version = self.driver.capabilities['browserVersion']
+            return re.search('a[0-9]+$', version) is not None
+        return False
 
     def open_window(self):
         if self.driver.current_url.startswith("moz-extension://"):
@@ -387,13 +359,11 @@ class PBSeleniumTest(unittest.TestCase):
                     time.sleep(2 ** i)
                     continue
                 raise e
-        self.driver.switch_to.window(self.driver.current_window_handle)
 
         if wait_for_body_text:
+            # wait for document.body.textContent to become truthy
             retry_until(
-                lambda: self.driver.find_element_by_tag_name('body').text,
-                msg="Waiting for document.body.textContent to get populated ..."
-            )
+                lambda: self.driver.find_element_by_tag_name('body').text)
 
     def txt_by_css(self, css_selector, timeout=SEL_DEFAULT_WAIT_TIMEOUT):
         """Find an element by CSS selector and return its text."""
@@ -472,7 +442,7 @@ class PBSeleniumTest(unittest.TestCase):
             "(function (domain) {"
             "  let bg = chrome.extension.getBackgroundPage();"
             "  let base_domain = window.getBaseDomain(domain);"
-            "  bg.badger.heuristicBlocking.blocklistOrigin(domain, base_domain);"
+            "  bg.badger.heuristicBlocking.blocklistOrigin(base_domain, domain);"
             "}(arguments[0]));"
         ), domain)
 
@@ -492,6 +462,99 @@ class PBSeleniumTest(unittest.TestCase):
         self.driver.find_element_by_id('new-disabled-site-input').send_keys(url)
         self.driver.find_element_by_css_selector('#add-disabled-site').click()
 
+    def get_domain_slider_state(self, domain):
+        label = self.driver.find_element_by_css_selector(
+            'input[name="{}"][checked]'.format(domain))
+        return label.get_attribute('value')
+
+    def load_pb_ui(self, target_url):
+        """Show the PB popup as a new tab.
+
+        If Selenium would let us just programmatically launch an extension from its icon,
+        we wouldn't need this method. Alas it will not.
+
+        But! We can open a new tab and set the url to the extension's popup html page and
+        test away. That's how most devs test extensions. But**2!! PB's popup code uses
+        the current tab's url to report the current tracker status.  And since we changed
+        the current tab's url when we loaded the popup as a tab, the popup loses all the
+        blocker status information from the original tab.
+
+        The workaround is to execute a new convenience function in the popup codebase that
+        looks for a given url in the tabs and, if it finds a match, refreshes the popup
+        with the associated tabid. Then the correct status information will be displayed
+        in the popup."""
+
+        self.open_window()
+        self.load_url(self.popup_url)
+
+        # get the popup populated with status information for the correct url
+        self.switch_to_window_with_url(self.popup_url)
+        self.js("""
+/**
+ * if the query url pattern matches a tab, switch the module's tab object to that tab
+ */
+(function (url) {
+  chrome.tabs.query({url}, function (tabs) {
+    if (!tabs || !tabs.length) {
+      return;
+    }
+    chrome.runtime.sendMessage({
+      type: "getPopupData",
+      tabId: tabs[0].id,
+      tabUrl: tabs[0].url
+    }, (response) => {
+      setPopupData(response);
+      refreshPopup();
+      window.DONE_REFRESHING = true;
+    });
+  });
+}(arguments[0]));""", target_url)
+
+        # wait for popup to be ready
+        self.wait_for_script(
+            "return typeof window.DONE_REFRESHING != 'undefined' &&"
+            "window.POPUP_INITIALIZED &&"
+            "window.SLIDERS_DONE"
+        )
+
+    def get_tracker_state(self):
+        """Parse the UI to group all third party origins into their respective action states."""
+
+        notYetBlocked = {}
+        cookieBlocked = {}
+        blocked = {}
+
+        domain_divs = self.driver.find_elements_by_css_selector(
+            "#blockedResourcesInner > div.clicker[data-origin]")
+        for div in domain_divs:
+            domain = div.get_attribute('data-origin')
+
+            # assert that this domain is never duplicated in the UI
+            self.assertNotIn(domain, notYetBlocked)
+            self.assertNotIn(domain, cookieBlocked)
+            self.assertNotIn(domain, blocked)
+
+            # get slider state for given domain
+            action_type = self.get_domain_slider_state(domain)
+
+            # non-tracking domains are hidden by default
+            # so if we see a slider set to "allow",
+            # it must be in the tracking-but-not-yet-blocked section
+            if action_type == 'allow':
+                notYetBlocked[domain] = True
+            elif action_type == 'cookieblock':
+                cookieBlocked[domain] = True
+            elif action_type == 'block':
+                blocked[domain] = True
+            else:
+                self.fail("what is this?!? %s" % action_type)
+
+        return {
+            'notYetBlocked': notYetBlocked,
+            'cookieBlocked': cookieBlocked,
+            'blocked': blocked
+        }
+
     @property
     def logs(self):
         # TODO not yet in Firefox
diff --git a/tests/selenium/pbtest_org_test.py b/tests/selenium/pbtest_org_test.py
deleted file mode 100644
index df381d9e..00000000
--- a/tests/selenium/pbtest_org_test.py
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: UTF-8 -*-
-
-import pbtest
-import unittest
-
-from selenium.webdriver.common.by import By
-from selenium.webdriver.support.ui import WebDriverWait
-from selenium.webdriver.support import expected_conditions as EC
-
-# where to run the acceptance tests
-PBTEST_ORG_URL = "https://pbtest.org/tracker"
-
-# the id of the element where test results are reported
-PBTEST_ORG_TEST_RESULTS_TABLE_ID = "results"
-
-# unicode characters we look in the results to tell if a test passed or failed
-PASS = u'Pass'
-FAIL = u'Fail'
-
-
-class PBTestDotOrgTest(pbtest.PBSeleniumTest):
-    """Run the pbtest.org website acceptance tests. Loads the pbtest.org test
-       suite and assert that none of the tests failed or are 'undefined'."""
-
-    @unittest.skip("Until we understand and fix the intermittent pbtest.org failures.")
-    #@pbtest.repeat_if_failed(5) # TODO doesn't work with unittest.skip above
-    def test_should_pass_pbtest_org_suite(self):
-        driver = self.driver
-        driver.delete_all_cookies()
-        results = {'passed': [], 'failed': [], 'undefined': []}
-        self.load_url(PBTEST_ORG_URL)
-        WebDriverWait(driver, 100).until(
-            EC.presence_of_element_located((
-                By.XPATH,
-                "//*[@id='buttons'][contains(@style, 'display: block')]")))
-        for el in driver.find_elements_by_class_name('complimentary_text'):
-            if not el.is_displayed():
-                continue
-
-            test_text = el.find_element_by_xpath('../..').text
-            if PASS in el.text:
-                results['passed'].append(test_text)
-            elif FAIL in el.text:
-                results['failed'].append(test_text)
-            elif u'undefined' in el.text:
-                results['undefined'].append(test_text)
-            else:
-                raise ValueError("Malformed test result")
-
-        # now we have all the completed test results.
-        # print a summary
-        print("\npbtest_org test results: %d passed, %d failed, %d undefined" %
-              (len(results['passed']), len(results['failed']),
-               len(results['undefined'])))
-        failed_tests = ([t for t in results['failed']] +
-                        [t for t in results['undefined']])
-
-        firefox_failures = [u'Does Privacy Badger Honor the Cookie Block List \u2717 Fail']
-        # ignore this failure on firefox
-        if pbtest.shim.browser_type == 'firefox' and failed_tests == firefox_failures:
-            return
-
-        fail_msg = "%d tests failed:\n  * %s" % (
-            len(failed_tests),
-            "\n  * ".join(failed_tests).replace(u'\u2717', 'x'),
-        )
-        self.assertTrue(len(failed_tests) == 0, msg=fail_msg)
-
-if __name__ == "__main__":
-    unittest.main()
diff --git a/tests/selenium/popup_test.py b/tests/selenium/popup_test.py
index e11701c7..c3ffb9e5 100644
--- a/tests/selenium/popup_test.py
+++ b/tests/selenium/popup_test.py
@@ -1,6 +1,7 @@
 #!/usr/bin/env python
 # -*- coding: UTF-8 -*-
 
+import pytest
 import time
 import unittest
 
@@ -12,12 +13,6 @@ from selenium.webdriver.support import expected_conditions
 from selenium.webdriver.support.ui import WebDriverWait
 
 
-def get_domain_slider_state(driver, domain):
-    label = driver.find_element_by_css_selector(
-        'input[name="{}"][checked]'.format(domain))
-    return label.get_attribute('value')
-
-
 class PopupTest(pbtest.PBSeleniumTest):
     """Make sure the popup works correctly."""
 
@@ -45,45 +40,50 @@ class PopupTest(pbtest.PBSeleniumTest):
     def open_popup(self, show_nag=False, origins=None):
         """Open popup and optionally close overlay."""
 
-        DUMMY_PAGE_URL = "https://efforg.github.io/privacybadger-test-fixtures/"
-
-        # hack to get tabData populated for the popup's tab
-        # to get the popup shown for regular pages
-        # as opposed to special (no-tabData) browser pages
-        self.open_window()
-        self.load_url(DUMMY_PAGE_URL)
-
         self.open_window()
         self.load_url(self.popup_url)
         self.wait_for_script("return window.POPUP_INITIALIZED")
 
-        # override tab ID (to get regular page popup instead of
-        # special browser page popup),
-        # optionally set the domains the popup should report,
-        # optionally ask for the new user welcome page reminder
+        # populate tabData for the popup's tab
+        # to get a regular page popup
+        # instead of a special browser page popup
+        #
+        # optionally set the domains the popup should report
+        #
+        # optionally show the new user welcome page reminder
         popup_js = (
-            "(function (origins, show_nag, DUMMY_PAGE_URL) {"
-            "chrome.tabs.query({ url: DUMMY_PAGE_URL }, (tabs) => {"
+            "(function (origins, show_nag) {"
+            ""
+            "let bg = chrome.extension.getBackgroundPage();"
+            ""
+            "chrome.tabs.getCurrent(tab => {"
+            "  bg.badger.recordFrame(tab.id, 0, tab.url);"
+            ""
+            "  for (let domain of Object.keys(origins)) {"
+            "    bg.badger.logThirdPartyOriginOnTab(tab.id, domain, origins[domain]);"
+            "  }"
+            ""
             "  chrome.runtime.sendMessage({"
             "    type: 'getPopupData',"
-            "    tabId: tabs[0].id"
+            "    tabId: tab.id"
             "  }, (response) => {"
-            "    response.seenComic = !show_nag;"
-            "    response.origins = origins;"
+            "    response.settings.seenComic = !show_nag;"
             "    setPopupData(response);"
             "    refreshPopup();"
             "    showNagMaybe();"
             "    window.DONE_REFRESHING = true;"
             "  });"
             "});"
-            "}(arguments[0], arguments[1], arguments[2]));"
+            ""
+            "}(arguments[0], arguments[1]));"
         )
-        self.js(popup_js, origins if origins else {}, show_nag, DUMMY_PAGE_URL)
-        # wait until the async getTab function is done
+        self.js(popup_js, origins if origins else {}, show_nag)
+
+        # wait until the async functions above are done
         self.wait_for_script(
             "return typeof window.DONE_REFRESHING != 'undefined'",
             timeout=5,
-            message="Timed out waiting for getTab() to complete."
+            message="Timed out waiting for popup to finish initializing"
         )
 
         # wait for any sliders to finish rendering
@@ -97,6 +97,7 @@ class PopupTest(pbtest.PBSeleniumTest):
         """Get disable button on popup."""
         return self.driver.find_element_by_id("deactivate_site_btn")
 
+    @pytest.mark.flaky(reruns=3, condition=pbtest.shim.browser_type == "firefox")
     def test_welcome_page_reminder_overlay(self):
         """Ensure overlay links to new user welcome page."""
 
@@ -135,7 +136,6 @@ class PopupTest(pbtest.PBSeleniumTest):
         self.driver.find_element_by_id("options").click()
         self.switch_to_window_with_url(self.options_url)
 
-    @pbtest.repeat_if_failed(5)
     def test_trackers_link(self):
         """Ensure trackers link opens EFF website."""
 
@@ -143,7 +143,7 @@ class PopupTest(pbtest.PBSeleniumTest):
 
         self.open_popup()
 
-        # Get all possible tracker links (none, one, multiple)
+        # Get all possible tracker links ("no" and "multiple" messages)
         trackers_links = self.driver.find_elements_by_css_selector("#pbInstructions a")
         if not trackers_links:
             self.fail("Unable to find trackers link on popup")
@@ -164,7 +164,7 @@ class PopupTest(pbtest.PBSeleniumTest):
 
         self.wait_for_page_to_start_loading(EFF_URL)
 
-        self.assertEqual(self.driver.current_url, EFF_URL,
+        self.assertEqual(EFF_URL, self.driver.current_url,
             "EFF website should open after clicking trackers link on popup")
 
         # Verify EFF website contains the linked anchor element.
@@ -197,9 +197,9 @@ class PopupTest(pbtest.PBSeleniumTest):
         self.load_url(self.options_url)
         self.wait_for_script("return window.OPTIONS_INITIALIZED")
         self.find_el_by_css('a[href="#tab-tracking-domains"]').click()
-        new_action = get_domain_slider_state(self.driver, DOMAIN)
+        new_action = self.get_domain_slider_state(DOMAIN)
 
-        self.assertEqual(new_action, "block",
+        self.assertEqual("block", new_action,
             "The domain should be blocked on options page.")
 
         # test toggling some more
@@ -219,9 +219,9 @@ class PopupTest(pbtest.PBSeleniumTest):
         self.load_url(self.options_url)
         self.wait_for_script("return window.OPTIONS_INITIALIZED")
         self.find_el_by_css('a[href="#tab-tracking-domains"]').click()
-        new_action = get_domain_slider_state(self.driver, DOMAIN)
+        new_action = self.get_domain_slider_state(DOMAIN)
 
-        self.assertEqual(new_action, "block",
+        self.assertEqual("block", new_action,
             "The domain should still be blocked on options page.")
 
     def test_reverting_control(self):
@@ -236,6 +236,11 @@ class PopupTest(pbtest.PBSeleniumTest):
 
         self.open_popup(origins={DOMAIN:"cookieblock"})
 
+        # reveal sliders
+        self.driver.find_element_by_id('expand-blocked-resources').click()
+        # TODO retry instead
+        time.sleep(1)
+
         # set the domain to user control
         # click input with JavaScript to avoid "Element ... is not clickable" /
         # "Other element would receive the click" Selenium limitation
@@ -255,13 +260,12 @@ class PopupTest(pbtest.PBSeleniumTest):
         self.find_el_by_css('a[href="#tab-tracking-domains"]').click()
 
         # assert the action is not what we manually clicked
-        action = get_domain_slider_state(self.driver, DOMAIN)
-        self.assertEqual(action, "cookieblock",
+        action = self.get_domain_slider_state(DOMAIN)
+        self.assertEqual("cookieblock", action,
             "Domain's action should have been restored.")
 
         # assert the undo arrow is not displayed
         self.driver.find_element_by_css_selector('a[href="#tab-tracking-domains"]').click()
-        self.driver.find_element_by_id('show-tracking-domains-checkbox').click()
         self.assertFalse(
             self.driver.find_element_by_css_selector(
                 'div[data-origin="{}"] a.honeybadgerPowered'.format(DOMAIN)
@@ -332,7 +336,6 @@ class PopupTest(pbtest.PBSeleniumTest):
         self.assertTrue(len(self.driver.find_elements_by_class_name('active')) == 0,
                 'error reporting should be closed again')
 
-    @pbtest.repeat_if_failed(5)
     def test_donate_button(self):
         """Ensure donate button opens EFF website."""
 
@@ -353,9 +356,140 @@ class PopupTest(pbtest.PBSeleniumTest):
 
         self.wait_for_page_to_start_loading(EFF_URL)
 
-        self.assertEqual(self.driver.current_url, EFF_URL,
+        self.assertEqual(EFF_URL, self.driver.current_url,
             "EFF website should open after clicking donate button on popup")
 
+    def test_breakage_warnings(self):
+        YLIST_DOMAIN = "jquery.com"
+        self.open_popup(origins={YLIST_DOMAIN: "cookieblock"})
+
+        def get_breakage_icon():
+            return self.driver.find_element_by_css_selector(
+                'div.clicker[data-origin="{}"] span.breakage-warning'.format(YLIST_DOMAIN))
+
+        # reveal sliders
+        self.driver.find_element_by_id('expand-blocked-resources').click()
+        # TODO retry instead
+        time.sleep(1)
+
+        # verify there is no breakage warning
+        breakage_icon = get_breakage_icon()
+        self.assertFalse(breakage_icon.is_displayed())
+
+        # manually block the yellowlisted domain
+        self.js("$('#block-{}').click()".format(YLIST_DOMAIN.replace(".", "-")))
+
+        # verify breakage warning is shown
+        breakage_icon = get_breakage_icon()
+        self.assertTrue(breakage_icon.is_displayed())
+
+        # verify breakage warning is there when reopened
+        self.open_popup(origins={YLIST_DOMAIN: "user_block"}) # TODO hack
+        breakage_icon = get_breakage_icon()
+        self.assertTrue(breakage_icon.is_displayed())
+
+    def test_slider_hiding(self):
+        YLIST_DOMAIN = "jquery.com"
+        TEST_DOMAINS = {
+            "example.com": "block",
+            YLIST_DOMAIN: "cookieblock"
+        }
+
+        def assert_hidden(sliders):
+            for slider in sliders:
+                self.assertFalse(slider.is_displayed(),
+                    "{} is visible but should be hidden".format(
+                        slider.get_attribute('data-origin')))
+
+        def assert_visible(sliders):
+            for slider in sliders:
+                self.assertTrue(slider.is_displayed(),
+                    "{} is hidden but should be visible".format(
+                        slider.get_attribute('data-origin')))
+
+        self.open_popup(origins=TEST_DOMAINS)
+        sliders = self.driver.find_elements_by_css_selector('div.clicker')
+
+        # verify we have the expected number of sliders
+        self.assertEqual(len(TEST_DOMAINS), len(sliders))
+
+        # verify sliders are hidden
+        assert_hidden(sliders)
+
+        # reveal sliders
+        self.driver.find_element_by_id('expand-blocked-resources').click()
+        # TODO retry instead
+        time.sleep(1)
+
+        # verify sliders are visible
+        assert_visible(sliders)
+
+        # reopen popup
+        self.open_popup(origins=TEST_DOMAINS)
+        sliders = self.driver.find_elements_by_css_selector('div.clicker')
+
+        # verify sliders are visible
+        assert_visible(sliders)
+
+        # verify domain is shown second in the list
+        self.assertEqual(YLIST_DOMAIN, sliders[1].get_attribute('data-origin'))
+
+        # manually block the yellowlisted domain
+        self.js("$('#block-{}').click()".format(YLIST_DOMAIN.replace(".", "-")))
+
+        # hide sliders
+        self.driver.find_element_by_id('collapse-blocked-resources').click()
+        # TODO retry instead
+        time.sleep(1)
+
+        # verify sliders are hidden
+        assert_hidden(sliders)
+
+        # reopen popup
+        TEST_DOMAINS[YLIST_DOMAIN] = "user_block" # TODO hack
+        self.open_popup(origins=TEST_DOMAINS)
+        sliders = self.driver.find_elements_by_css_selector('div.clicker')
+
+        # verify sliders are visible
+        assert_visible(sliders)
+
+        # verify breakage warning slider is at the top
+        self.assertEqual(YLIST_DOMAIN, sliders[0].get_attribute('data-origin'))
+
+        # restore the user-set slider to default action
+        self.driver.find_element_by_css_selector(
+            'div[data-origin="{}"] a.honeybadgerPowered'.format(YLIST_DOMAIN)
+        ).click()
+
+        # get back to a valid window handle as the window just got closed
+        self.driver.switch_to.window(self.driver.window_handles[0])
+
+        # reopen popup
+        TEST_DOMAINS[YLIST_DOMAIN] = "cookieblock" # TODO hack
+        self.open_popup(origins=TEST_DOMAINS)
+        sliders = self.driver.find_elements_by_css_selector('div.clicker')
+
+        # verify sliders are hidden again
+        assert_hidden(sliders)
+
+    def test_nothing_blocked_slider_list(self):
+        # enable local learning and showing non-tracking domains
+        self.load_url(self.options_url)
+        self.wait_for_script("return window.OPTIONS_INITIALIZED")
+        self.find_el_by_css('#local-learning-checkbox').click()
+        self.find_el_by_css('#show-nontracking-domains-checkbox').click()
+
+        # base case: verify blocked slider is hidden (list is collapsed)
+        self.open_popup(origins={'example.com': 'block'})
+        slider = self.driver.find_element_by_css_selector('div.clicker[data-origin="example.com"]')
+        self.assertFalse(slider.is_displayed())
+
+        # reopen popup
+        self.open_popup(origins={'example.com': 'noaction'})
+        # verify a non-tracking slider gets shown (no collapsing, just show the list)
+        slider = self.driver.find_element_by_css_selector('div.clicker[data-origin="example.com"]')
+        self.assertTrue(slider.is_displayed())
+
 
 if __name__ == "__main__":
     unittest.main()
diff --git a/tests/selenium/service_workers_test.py b/tests/selenium/service_workers_test.py
index 00da1f5d..47dac540 100644
--- a/tests/selenium/service_workers_test.py
+++ b/tests/selenium/service_workers_test.py
@@ -1,6 +1,7 @@
 #!/usr/bin/env python
 # -*- coding: UTF-8 -*-
 
+import pytest
 import unittest
 
 import pbtest
@@ -18,6 +19,7 @@ class ServiceWorkersTest(pbtest.PBSeleniumTest):
         )
         return domains
 
+    @pytest.mark.flaky(reruns=3, condition=pbtest.shim.browser_type == "firefox")
     def test_returning_to_sw_cached_page(self):
         FIXTURE_URL = (
             "https://efforg.github.io/privacybadger-test-fixtures/html/"
@@ -48,7 +50,7 @@ class ServiceWorkersTest(pbtest.PBSeleniumTest):
         domains = self.get_tab_data_domains()
         self.assertIn("efforg.github.io", domains,
             "SW page URL was not correctly attributed")
-        self.assertEqual(len(domains), 1,
+        self.assertEqual(1, len(domains),
             "tabData contains an unexpected number of entries")
 
 
diff --git a/tests/selenium/storage_test.py b/tests/selenium/storage_test.py
index d8e6c640..bf6b6ac7 100644
--- a/tests/selenium/storage_test.py
+++ b/tests/selenium/storage_test.py
@@ -45,11 +45,11 @@ class StorageTest(pbtest.PBSeleniumTest):
 
         self.check_policy_download()
         self.assertEqual(
+            "https://www.eff.org/files/cookieblocklist_new.txt",
             self.js(
                 "return chrome.extension.getBackgroundPage()."
                 "constants.YELLOWLIST_URL"
-            ),
-            "https://www.eff.org/files/cookieblocklist_new.txt"
+            ) 
         )
 
         disabled_sites = self.js(
diff --git a/tests/selenium/super_cookie_test.py b/tests/selenium/super_cookie_test.py
index de6c5dd9..0f47fdfa 100644
--- a/tests/selenium/super_cookie_test.py
+++ b/tests/selenium/super_cookie_test.py
@@ -1,6 +1,7 @@
 #!/usr/bin/env python
 # -*- coding: UTF-8 -*-
 
+import pytest
 import unittest
 
 import pbtest
@@ -30,8 +31,7 @@ class SupercookieTest(pbtest.PBSeleniumTest):
         self.find_el_by_css('#local-learning-checkbox').click()
 
     # test for https://github.com/EFForg/privacybadger/pull/1403
-    # TODO remove retrying entire test after we revert 879a74f807999a2135e4d48bb5efbd8a1beff4f8
-    @pbtest.repeat_if_failed(5)
+    @pytest.mark.flaky(reruns=3, condition=pbtest.shim.browser_type == "firefox")
     def test_async_tracking_attribution_bug(self):
         FIRST_PARTY_BASE = "eff.org"
         THIRD_PARTY_BASE = "efforg.github.io"
@@ -49,8 +49,8 @@ class SupercookieTest(pbtest.PBSeleniumTest):
 
         # an iframe from THIRD_PARTY_BASE that writes to localStorage
         self.assertEqual(
-            pbtest.retry_until(partial(self.get_snitch_map_for, THIRD_PARTY_BASE)),
             [FIRST_PARTY_BASE],
+            pbtest.retry_until(partial(self.get_snitch_map_for, THIRD_PARTY_BASE)),
             msg="Frame sets localStorage but was not flagged as a tracker.")
 
         # and an image from raw.githubusercontent.com that doesn't do any tracking
@@ -58,6 +58,7 @@ class SupercookieTest(pbtest.PBSeleniumTest):
             msg="Image is not a tracker but was flagged as one.")
 
 
+    @pytest.mark.flaky(reruns=3, condition=pbtest.shim.browser_type == "firefox")
     def test_should_detect_ls_of_third_party_frame(self):
         FIRST_PARTY_BASE = "eff.org"
         THIRD_PARTY_BASE = "efforg.github.io"
@@ -76,10 +77,11 @@ class SupercookieTest(pbtest.PBSeleniumTest):
         self.driver.refresh()
 
         self.assertEqual(
-            pbtest.retry_until(partial(self.get_snitch_map_for, THIRD_PARTY_BASE), times=3),
-            [FIRST_PARTY_BASE]
+            [FIRST_PARTY_BASE],
+            pbtest.retry_until(partial(self.get_snitch_map_for, THIRD_PARTY_BASE), times=3)
         )
 
+    @pytest.mark.flaky(reruns=3, condition=pbtest.shim.browser_type == "firefox")
     def test_should_not_detect_low_entropy_ls_of_third_party_frame(self):
         FIRST_PARTY_BASE = "eff.org"
         THIRD_PARTY_BASE = "efforg.github.io"
@@ -91,6 +93,7 @@ class SupercookieTest(pbtest.PBSeleniumTest):
         self.driver.refresh()
         self.assertFalse(self.get_snitch_map_for(THIRD_PARTY_BASE))
 
+    @pytest.mark.flaky(reruns=3, condition=pbtest.shim.browser_type == "firefox")
     def test_should_not_detect_first_party_ls(self):
         BASE_DOMAIN = "efforg.github.io"
         self.load_url((
@@ -100,6 +103,7 @@ class SupercookieTest(pbtest.PBSeleniumTest):
         self.driver.refresh()
         self.assertFalse(self.get_snitch_map_for(BASE_DOMAIN))
 
+    @pytest.mark.flaky(reruns=3, condition=pbtest.shim.browser_type == "firefox")
     def test_should_not_detect_ls_of_third_party_script(self):
         FIRST_PARTY_BASE = "eff.org"
         THIRD_PARTY_BASE = "efforg.github.io"
diff --git a/tests/selenium/surrogates_test.py b/tests/selenium/surrogates_test.py
index eff654fc..737a47ef 100644
--- a/tests/selenium/surrogates_test.py
+++ b/tests/selenium/surrogates_test.py
@@ -1,7 +1,9 @@
 #!/usr/bin/env python
 # -*- coding: UTF-8 -*-
 
+import pytest
 import unittest
+
 import pbtest
 
 from selenium.common.exceptions import TimeoutException
@@ -17,7 +19,7 @@ class SurrogatesTest(pbtest.PBSeleniumTest):
         "ga_surrogate.html"
     )
 
-    def load_ga_js_test_page(self, timeout=12):
+    def load_ga_js_fixture(self, timeout=12):
         self.load_url(SurrogatesTest.FIXTURE_URL)
         try:
             self.wait_for_and_switch_to_frame('iframe', timeout=timeout)
@@ -26,78 +28,58 @@ class SurrogatesTest(pbtest.PBSeleniumTest):
         except TimeoutException:
             return False
 
+    @pytest.mark.flaky(reruns=3, condition=pbtest.shim.browser_type == "firefox")
     def test_ga_js_surrogate(self):
+        SURROGATE_HOST = "www.google-analytics.com"
+
         # clear pre-trained/seed tracker data
         self.load_url(self.options_url)
         self.js("chrome.extension.getBackgroundPage().badger.storage.clearTrackerData();")
 
         # verify the surrogate is present
         self.load_url(self.options_url)
-        self.assertTrue(self.js(
+        assert self.js(
             "let bg = chrome.extension.getBackgroundPage();"
             "const sdb = bg.require('surrogatedb');"
-            "return sdb.hostnames.hasOwnProperty('www.google-analytics.com');"
-        ), "Surrogate is missing but should be present.")
+            f"return sdb.hostnames.hasOwnProperty('{SURROGATE_HOST}');"
+        ), "surrogate is missing but should be present"
 
         # verify site loads
-        self.assertTrue(
-            self.load_ga_js_test_page(),
-            "Page failed to load even before we did anything."
-        )
+        assert self.load_ga_js_fixture(), (
+            "page failed to load even before we did anything")
 
         # block ga.js (known to break the site)
-        self.block_domain("www.google-analytics.com")
+        self.block_domain(SURROGATE_HOST)
         # back up the surrogate definition before removing it
         ga_backup = self.js(
             "let bg = chrome.extension.getBackgroundPage();"
             "const sdb = bg.require('surrogatedb');"
-            "return JSON.stringify(sdb.hostnames['www.google-analytics.com']);"
+            f"return JSON.stringify(sdb.hostnames['{SURROGATE_HOST}']);"
         )
         # now remove the surrogate
         self.js(
             "let bg = chrome.extension.getBackgroundPage();"
             "const sdb = bg.require('surrogatedb');"
-            "delete sdb.hostnames['www.google-analytics.com'];"
-        )
-
-        # wait until this happens
-        self.wait_for_script(
-            "let bg = chrome.extension.getBackgroundPage();"
-            "const sdb = bg.require('surrogatedb');"
-            "return !sdb.hostnames.hasOwnProperty('www.google-analytics.com');",
-            timeout=5,
-            message="Timed out waiting for surrogate to get removed."
+            f"delete sdb.hostnames['{SURROGATE_HOST}'];"
         )
 
         # verify site breaks
-        self.assertFalse(
-            self.load_ga_js_test_page(),
-            "Page loaded successfully when it should have failed."
-        )
+        assert not self.load_ga_js_fixture(), (
+            "page loaded successfully when it should have failed")
 
         # re-enable surrogate
         self.open_window()
         self.load_url(self.options_url)
-        self.js(
+        self.js("(function () {"
             "let bg = chrome.extension.getBackgroundPage();"
             "const sdb = bg.require('surrogatedb');"
-            "sdb.hostnames['www.google-analytics.com'] = JSON.parse('%s');" % ga_backup
-        )
-
-        # wait until this happens
-        self.wait_for_script(
-            "let bg = chrome.extension.getBackgroundPage();"
-            "const sdb = bg.require('surrogatedb');"
-            "return sdb.hostnames.hasOwnProperty('www.google-analytics.com');",
-            timeout=5,
-            message="Timed out waiting for surrogate to get readded."
-        )
+            f"let gaSurrogate = JSON.parse('{ga_backup}');"
+            f"sdb.hostnames['{SURROGATE_HOST}'] = gaSurrogate;"
+            "}());")
 
         # verify site loads again
-        self.assertTrue(
-            retry_until(self.load_ga_js_test_page),
-            "Page failed to load after surrogation."
-        )
+        assert retry_until(self.load_ga_js_fixture), (
+            "page failed to load after surrogation")
 
 
 if __name__ == "__main__":
diff --git a/tests/selenium/website_testbed/first-party-localstorage.html b/tests/selenium/website_testbed/first-party-localstorage.html
new file mode 100644
index 00000000..ab865125
--- /dev/null
+++ b/tests/selenium/website_testbed/first-party-localstorage.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+  <head>
+  </head>
+  <body>
+    <p>Welcome to a Privacy Badger localStorage test site.</p>
+    <iframe src="https://efforg.github.io/privacybadger-test-fixtures/html/localstorage/set_ls.html"></iframe>
+  </body>
+</html>
diff --git a/tests/selenium/widgets_test.py b/tests/selenium/widgets_test.py
index d8bc2b51..b013788e 100644
--- a/tests/selenium/widgets_test.py
+++ b/tests/selenium/widgets_test.py
@@ -13,11 +13,13 @@ from selenium.common.exceptions import (
     TimeoutException
 )
 from selenium.webdriver.common.keys import Keys
+from selenium.webdriver.support.ui import Select
 
 
 class WidgetsTest(pbtest.PBSeleniumTest):
 
     FIXTURES_URL = "https://efforg.github.io/privacybadger-test-fixtures/html/"
+    FIXTURES_HOST = "efforg.github.io"
     BASIC_FIXTURE_URL = FIXTURES_URL + "widget_basic.html"
     DYNAMIC_FIXTURE_URL = FIXTURES_URL + "widget_dynamic.html"
     THIRD_PARTY_DOMAIN = "privacybadger-tests.eff.org"
@@ -126,8 +128,9 @@ class WidgetsTest(pbtest.PBSeleniumTest):
         except TimeoutException:
             self.fail("Widget frame should still be here")
 
-        self.assertFalse(
-            self.txt_by_css('body'), "Widget frame should be empty")
+        frame_text = self.txt_by_css('body')
+        if frame_text != "This page has been blocked by an extension":
+            self.assertFalse(frame_text, "Widget frame should be empty")
 
         self.driver.switch_to.default_content()
 
@@ -216,8 +219,8 @@ class WidgetsTest(pbtest.PBSeleniumTest):
         # assert all script attributes were copied
         script_el = self.driver.find_element_by_css_selector(
             'script.' + self.TYPE4_WIDGET_CLASS)
-        self.assertEqual(script_el.get_attribute('async'), "true")
-        self.assertEqual(script_el.get_attribute('data-foo'), "bar")
+        self.assertEqual("true", script_el.get_attribute('async'))
+        self.assertEqual("bar", script_el.get_attribute('data-foo'))
 
         self.assert_widget("type4")
 
@@ -253,6 +256,19 @@ class WidgetsTest(pbtest.PBSeleniumTest):
         self.assert_no_replacement()
         self.assert_widget()
 
+        # remove the site exception
+        self.load_url(self.options_url)
+        self.wait_for_script("return window.OPTIONS_INITIALIZED")
+        self.find_el_by_css('a[href="#tab-manage-widgets"]').click()
+        select = Select(self.driver.find_element_by_id('widget-site-exceptions-select'))
+        select.select_by_value(self.FIXTURES_HOST)
+        self.driver.find_element_by_id('widget-site-exceptions-remove-button').click()
+
+        # verify basic widget is replaced again
+        self.open_window()
+        self.load_url(self.BASIC_FIXTURE_URL)
+        self.assert_replacement()
+
     def test_disabling_site(self):
         self.block_domain(self.THIRD_PARTY_DOMAIN)